I watched this interview with Steve Gibson about the Bitcoin crypto currency. The Bitcoin software for online peer-to-peer banking was developed by Satoshi Nakamoto (中本 哲史) and it is available at bitcoin.org.
Basically every block of Bitcoins is a solution of a cryptographic equation. I.e. instead of a scarce metal (such as gold), the currency uses hard computational problems as a proof of work. Standard asymmetric encryption is used to digitally sign transactions. The proof of work is also used to cryptographically strengthen a chain of transactions in order to prevent double-spending of coins (see Bitcoin publication for more details). The only known attack requires the attacker to have more computational power at his/her disposal than the entire network of Bitcoin clients.
There’s a number of organisations and shops which already accept Bitcoins (see Bitcoin.it for a list of sites that accept Bitcoins). Furthermore there are several traders which will exchange Bitcoins for US dollars, Euros, and other currencies (there is an early review of Bitcoin exchanges). According to Bitcoin Charts the exchange rate currently is around 0.9 USD/BTC
Update:
There are concerns that Bitcoin will suffer a deflationary spiral because the total amount of currency is limited. Of course if this is a real problem one could start a new peer-to-peer currency with a built-in controlled inflation.
Update:
Here’s a nice video giving a quick introduction to Bitcoin.
To put it simply – I now realize it’s impossible to understand how your life is going without some careful observation. There’s a lot of time each day, and knowing where that time goes, what you ate, what you did and didn’t do… it’s almost impossible to get a good picture of your life without some kind of measuring.
I realised that one could develop a small time tracker in Ruby quite easily. The tracker shown below will ask you questions after showing you the answers of the previous 7 days. In the morning it asks questions of your plans and in the evening it asks you questions in review. You can also run the script multiple times and skip through the questions where you don’t want to modify the answer. I have tried to keep it simple. Quoting from another article by Sebastian Marshall:
Second, remember to start simple. This is to build up momentum and make a workable system you actually use. Do it every day. If you miss a day or two or three, fill in from memory as best as you can. If you fell off a cliff for a while, just reboot. Don’t beat yourself up too much – it solves nothing. We all fall off a cliff sometimes. Also, remember the gains made from living more purposefully are forever – the time you’ve spent well will remains well-spent even if you fall off for a while sometimes. Most people don’t even try, which is why most people don’t succeed.
#!/usr/bin/env rubyrequire'readline'require'fileutils'require'rexml/document'includeREXMLdeftrack(log,previous,tag,query)previous.each_with_indexdo|prev,i|ifprevifprev.elements[tag]puts"#{previous.size-i} day(s) ago: #{prev.elements[tag].text}"endendenditem=log.elements[tag]item=log.add_elementtagunlessitemifitem.textline="-> #{query} (#{item.text})? "elseline="-> #{query}? "end# print line; STDOUT.flush# text = STDIN.readline.gsub /[ \r\n]*$/, ''text=Readline.readlinelineitem.text=textunlesstext.empty?endifFile.exist?'track.xml'doc=File.open('track.xml','r'){|f|Document.newf}elsedoc=Document.newdoc.add_element'track'endtime=Time.newt="%4d/%2d/%2d"%[time.year,time.month,time.day]log=doc.root.elements["log[@date='#{t}']"]previous=(1..7).collectdo|i|timep=time-86400*itp="%4d/%2d/%2d"%[timep.year,timep.month,timep.day]doc.root.elements["log[@date='#{tp}']"]end.reverseunlessloglog=Element.new'log'log.add_attribute'date',tdoc.root.add_elementlogendlist=[]list+=[['wakeup','At what time did you get up'],['sleep','How long did you sleep'],['wellness','Do you feel well'],['objective','What\'s the objective for today']]iftime.hour>=14list+=[['description','What did you do today'],['food','What did you eat'],['positive','What did I do right to move me towards my goals'],['toimprove','What would I do differently if I had the day to live over']]endlist.each{|tag,query|tracklog,previous,tag,query}File.open'track.xml.part','w'do|f|doc.writefendFileUtils.mv'track.xml.part','track.xml'
I will try to play with this for some time and see whether it has any benefits.
I decided to purchase a Wii Remote to do some small gaming projects in my spare time. The Wii has been around for four years now and it usually comes with the Wii Sports game (I especially enjoyed playing the bowling game with a group of 4 players). Using a PC running GNU/Linux one can communicate with the Wii Remote using the software packages wmgui and wminput. I’ve made a small demonstration video.
The Wii Remote has a 3-axis accelerometer, an IR camera with a microcontroller producing the coordinates of the 10 brightest dots, and several buttons (arrows, A, B, -, Home, +, 1, and 2). Furthermore there are 4 LEDs and a rumble motor. The device uses the Bluetooth standard for wireless communication.
Note that more recently Nintendo started shipping the Wii MotionPlus which adds two gyroscopes for measuring the rotational speed along two axes.
You can download Battle Isle 1 (Moon of Chromos) free of charge at Abandonia and you can run it under GNU/Linux using DOSBox (update: DOSBox also runs on Windows and MacOS).
Battle Isle is a turn-based strategy game.
The game can be played against the computer as well as against another human player.
It always runs in split-screen mode.
I.e. each player specifies the moves using half of the screen.
Here’s how to run the game (under GNU/Linux) after downloading it
unzip 'Battle Isle 93 - The Moon of Chromos.zip'cd BI193
dosbox MOON.EXE -exitcd ..
First player keys
'⇦', '⇨', '⇩', and '⇧' to move the cursor
'⏎' and cursor movement to select action
Second player keys
'x', 'v', 'c', and 'd' to move the cursor
'ctrl' and cursor movement to select action
Here’s a gameplay video of the Amiga version of the game.