Bitcoin and the Byzantine Generals’ Problem

One of the main problems that Bitcoin solves is how to stop double spending. This is a hard problem to solve in a distributed currency, and is the reason why a lot of early digital currencies relied on a central server for storing the transaction history.

The creator of Bitcoin Satoshi Nakamoto describes how Bitcoin solves the double-spend problem in this email. It’s an extremely elegant solution, and Satoshi presents it in an easy-to-understand way.

Mnemonics for Maths

I have been studying maths for quite a few years now, but I still find it a struggle to remember various formulas/equations, especially when starting a new topic. I’ve been thinking about developing my own mnemonic system for math symbols to help me memorize equations easily.

I would need to relate various mathematical operators to something else that is easy to visualize. The bracketing of expressions is problematic, you would need to have a way of visualizing a collection of things that the operator acts on.

I think that having a mnemonic system for maths would help internalize the ideas and models within a domain. It’s obviously still a work in progress!

Long-Term Unemployment and Job Prospects

There is a very scary article on the Atlantic about how you essentially become shunned by employers after 6 months of unemployment. It is about an experiment by Rand Ghayad of Northeastern University. He applied for 600 job openings using fake resumes, within which he varied 3 factors – how long the applicant had been out of work, how often they had switched jobs, and how much experience they have. What he found is that how long you’ve been out of work is the most important thing that employers look at. People prefer to hire someone with no experience, than someone that has been out of a job for more than 6 months. Scary stuff.

Reflections on Google Code Jam

Last weekend I competed in the qualification round of Google Code Jam. I went into it cold (i.e. not having read any of the previous problem sets), and found it a little harder than I expected. The first 2 questions were easy. The last 2 were easy in principle, but I found my implementation didn’t scale well to the large data sets, given the limits involved. I still got well over the required score to get me into the next round.

My take-aways from the process are as follows:

Continue reading “Reflections on Google Code Jam”

Bug with streaming audio to Apple TV

So it appears that there is a occasionally a problem in streaming music to the Apple TV from the Mac. The symptom is that you can see the “Audio TV” device in your Sound -> Output window, but every time you try to select it, the selection reverts to the “Internal Speakers” line.

The easiest way to reset this, is to go up to the menu bar at the top of the screen and switch off your Wifi Network, leave it off for a second, then switch it back on. When you reconnect to your wifi network you should be able to select the “Apple TV” device in your Sound/Output pane in the System Preferences.

Reflections on 2012

Well, it’s been ages since I posted last. Not terribly good, seeing as one of my New Year’s resolution was to write a lot more. To be fair, I have actually been writing. Just not on my blog.

Reflections on 2012

2012 was a pretty good year for Helen and I. Probably the highlight of the year was going over to the Emmy Awards in New York. Helen was one of the people nominated for an award for her work on a TV documentary episode with Adam Savage “Curiosity – Can you live forever?”. We had an absolute blast in New York.
Continue reading “Reflections on 2012”

Restarting Fitbit on the Mac

I seem to have a problem with my Fitbit Ultra and my Mac Air running OS/X 10.8. What happens is the fitbit daemon doesn’t seem to work properly if I suspend the notebook by closing the lid. After awakening, my Fitbit profile never seems to update with the latest data from the device. A solution to this problem is to restart the fitbit daemon. You can use launchctl to stop and restart the daemon, which should mean that your data then gets transferred from the device properly.

sudo launchctl stop com.fitbit.fitbitd
sudo launchctl start com.fitbit.fitbitd