May 29
Remote desktop and file sharing between OS X and Linux (Ubuntu is the one I’m using). They should just work, right? Well, sort of. I tried various implementations of VNC for remote desktop. They are all slow. Keyboard doesn’t quite work because Gnome’s keyboard mapping is currently broken in Ubuntu Feisty Fawn. As for file sharing, I tried both Samba and NFS. The former requires quite some set up and is not very stable between OS X and Ubuntu. The latter requires the UID on both systems to be the same. I was not happy with any of these solutions. So I didn’t a little more research and ultimately settled down on the following two pieces of software:
- FreeNX for remote desktop. It’s free and easy to install. You can get the OS X client from NoMachine. The speed of it just blows any VNC implementation and even Windows Remote Desktop away. I’m using it with a 54M connection and 1920 by 1200 resolution. It feels as if I’m using a local machine.
- Netatalk for file sharing. It’s just a open source implementation of the AppleTalk Protocol Suite. Because of that, OS X can connect to a Netatalk server very naturally. The speed is also very fast.
Both of these two servers can be installed from the Ubuntu repository. You just use the afp protocol to connect to Netatalk. As I mentioned above, the NX client can be downloaded from NoMachine.
May 09
Recently there has been a heated discussion about the comparison between Ron Jeffries’s way of solving Sudoku with TDD and Peter Norvig’s solution. After reading all the comments, I have to say that it’s a stupid discussion. I have at least two reasons.
First, Sudoku is not the appropriate topic to base the comparison on. It’s the kind of problem that requires relatively complex algorithm but has well defined requirement. In this case, the requirement is: Solve the Sudoku. But if you ask the majority of business application developers what kind of requirement they get, the answer will most likely be something like “Make it work”, “I can tell you. But don’t expect the same answer six months from now.” or “Requirement? We are not sure”. That’s the challenge the main audiences of TDD are facing. Whoever says you don’t need TDD in this kind of situation must be either a genius or insane. No, let me rephrase that. They are just insane.
Second, Ron Jeffries’s example is terrible. He seems like the perfect guy to reference if you want to badmouth Agile and TDD. He made it sound as if TDD eliminates the need for upfront design. That’s not what we do! Brainstorm/design sessions happen a lot more often in an Agile team than in a traditional development team. TDD is there to insure that we don’t write unnecessary code and all the code we write are covered by tests. These tests are usually white box tests. We already know how we want to implement it. We just want to make sure it works and continues to work over time. There are, however, times when we have to write black box tests. That’s when we were given a chunk of legacy code that nobody knows how it’s supposed to work. We have no choice but to gather the up-to-date requirements, write test to demonstrate them and refactor/rewrite the legacy code to be readable and working.
That’s my take on this debate. Ron Jeffries is not a good representative of Agile. There are better guys out there.
May 01
I purchased a license of ecto a while ago. It’s a very nice blogging tool. Maybe even one of the best. But I haven’t been able to use it since I moved to WordPress. It just hangs when trying to retrieve the categories for the posts. After a couple of months, I actually found a fix for it yesterday. I though I can start using ecto again but my happiness didn’t last too long. Ecto doesn’t let me pick any formatting. It totally kills me because I use Markdown and need formatting to preview my posts. This problem seems to be caused by WordPress not sending any formatting options to blog clients. I guess I’m out of luck with ecto here. Luckily I still have the one editor that rules them all – TextMate (Sorry, Emacs). It can post, retrieve and preview MarkDown or Textile. I do have to manually create the header but that just further proves my geek status. This is the first post I wrote with TextMate. We’ll see how it goes.