Tag Archives: Facebook

Java and Yosemite

"To view this web content, you need to install the Java Runtime Environment."
“To view this web content, you need to install the Java Runtime Environment.”

Ever since upgrading from OS X 10.9 to Yosemite (10.10) I’ve been getting the above error message periodically. As far as I know I have no software that needs Java to run.

When I asked on Twitter, the most common suggestion was that it was the Adobe updater. But I don’t have PhotoShop or anything else likely installed.

I checked the system logs, but, again, nothing.

The final obvious — for a fairly broad definition of “obvious” — was in System Preferences. If you look in the “Users” pane, you can find a list of “Login items,” programs that are started when the computer boots. (I figured this wasn’t likely since the alert pops up at all time but it was worth checking.)

think I found the solution but I found some interesting (if you’re geeky) new commands that I thought I’d talk about before I document the actual solution.

So the underlying system that the Mac uses to start programs periodically is called ‘launchd’ (or “launch daemon”). It’s kind of an amalgam of init and cron and a bunch of other standard Unix processes, a concept that is controversial in some circles. The interface, I found, isn’t terribly intuitive.

In addition to the long-running process, there’s a configuration program called ‘launchctl.’ The man page runs to several pages. ‘launchctl help’ is only slightly shorter.

I find the ‘list’ subcommand in the “legacy” section and give it a try:

$ launchctl list | grep -i java
- 0 com.apple.java.updateSharing
98767 0 com.apple.java.InstallOnDemandAgent
$

The columns are Process, Status and Label. So we can see that Apple’s Install On Demand Agent is running but not what triggered it.

There’s also a sub-command called ‘procinfo’. It’s not even “legacy” so it must be good… I certainly can’t complain about the volume of information, though I couldn’t claim to understand a good chunk of it.

Ah, but then I see ‘blame’ which the help tells me ‘Prints the reason a service is running.’ Ooh, yes please!

$ launchctl blame 98767
Usage: launchctl blame <service-target>
$

Er, so what’s a service-target?

Anyway, long story short, I find that the text in the man page isn’t entirely clear and that I need to do this:

$ launchctl blame pid/98767/com.apple.java.InstallOnDemandAgent
Not privileged to signal service.
$

So, I don’t know. (If anyone could give me a sample command I’d be grateful!)

But, after all this messing around I did find something. The configuration for ‘launchd’ is scattered around the filesystem in directories like ‘~/Library/LaunchAgents’. I grep’d in that directory for “java” and found a single reference to it in an application that I installed ages ago and never used. The file is called “com.facebook.videochat.stephend.plist”. I deleted it and the other binaries related to it and then restarted.

Clean so far…

Facebook IPO Fail?

This is really starting to bug me. Nearly a week after Facebook’s IPO and the papers are still saying that it was a failure. It wasn’t, or at least, whether or not is was depends on who you are. And I suspect you prefer the winner to the so-called losers.

Let’s start with the basics. What is an IPO? It’s simple: a company sells a part of itself in exchange for cash. In the physical world, that’s the same as me making something and selling it to you. For the sake of this example, let’s say that I sell it to you for 1.

And what’s the share price? Well, once the IPO has completed, someone else can buy a share from you. The share price is basically just the price that you can agree on. Maybe you could sell it for 1.20. In this scenario, you just made 20%. Well done you.

And what about me? Well, I’ve made nothing more.

Let’s apply that back to Facebook. The initial price was $38. That’s the amount that Facebook got for each share. Let’s say that, as many expected, the share price rocketed to $50. Who benefits? From my example above, it should be clear that it would mostly be the people who bought the shares. The banks, the speculators. In short: not Facebook.

It doesn’t take a lot of thought to realise why the share price would rise so rapidly on the first day. Is it because the value of the stock increases rapidly in only a few hours? Or is it because the stock was originally underpriced? Contrary to what you read in a lot of papers, a rapid rise on the day of the IPO really means that the banks did a poor job of pricing the shares and that the company made far less money than they should have.

(To be clear, Facebook benefits from having a higher share price over time. I’m just talking here about the price rocketing on day one.)

Facebook wanted to get the most money possible out of the shares that they were offering. It turns out that the did an excellent job. They sold them for $38 and by the end of the day the market pretty much agreed. They left very little money on the table.

So unless you feel sorry for the banks or the speculators who failed to make a quick buck, the Facebook IPO was actually pretty successful.