Skip to content

{ Author Archives }

Exotic VPN support!

It would be cool is someone added support to network Network Manager for the following “VPN”s.

  • nstx or iodine, tunneling over DNS
  • ssh, tunneling over ssh
  • http, tunneling over that “wonderful” web protocol

It would be also good if we could enter proxy servers for particular locations – in many locations in Australia they are mandatory.

Resume

Here is a copy of my Resume. You can find it in PDF form or plain TXT form.

Going to FreePlay

Well, I am going to FreePlay this weekend. I will be giving a talk about FOSS Game Development called “The best things in life are free”. If you are in Melbourne and have nothing to do on Saturday, why not come a long and see some cool talks?

I am running the Gaming Miniconf at LCA 2008 (I also ran it at 2007) which I will be advertising. I have also managed to organised to have linux.conf.au 2008 postcards given out at the registration desk, which is pretty cool.

Skimpy, Scheme in Python

For something a bit different, I decided to work on making embedding Scheme in Python easier. I’ve previously been using the cool PyScheme, however it hasn’t been updated in quite a long time (since 2004) and is quite slow.

The reason I would want to do something crazy like this is that Thousand Parsec use a subset of Scheme called TPCL. The is used to transmit information from the server to clients about rules for creating designs. Servers also need to be able to parse TPCL for “dumb clients” which can’t parse TPCL for themselves.

Recent developments by DystopicFro on his Summer of Code project, a Ruleset Development Environment have meant that he also needs the ability to parser TPCL (and specifically the ability to detect errors). This got us chatting about PyScheme and it’s inadequacies.

What I have decided to do is create a module called SchemePy (pronounced Skimpy). On platforms where speed is of no concern, we will fall back to using a modified version of PyScheme. However, we can also use C scheme systems such as Guile (or other libraries) to improve speed.

Why have multiple implementations? It stops us from using custom things in one scheme implementation which are not compatible with other implementations. It also makes installation easier for the user, as they are much more likely to already have a compatible scheme library installed. Different scheme’s also have different speed advantages.

So far I have got the Guile wrapper 95% working. It’s written mainly in Python using ctypes. I needed a small C helper module as well because of the extensive Macro’s used by Guile. So far, you can convert between Guile and Python types easily, you can register Python functions into the Guile context and exceptions are caught. There is also the ability to pass python objects thru the Scheme environment to Python functions. I would like to thank the guys who hang out on #guile for all their help, it has made doing this wrapper much easier.

I’m happy enough with the outcome. My guess it will be between 10 and 20 times faster then PyScheme, but I’ve yet to do any benchmarking. I’m going to move to wrapping mzscheme too soon enough. It should be much easier to do now that I have gotten most of the hard stuff sorted out. I think a lot of it will be common between the implementations.

What I really need to do is get a test-suit working. Once I have more then one implementation working it will be very important to make sure that they all work the same way, the only way I can see to do that properly is to have a test suite which I can run every implementation against.

One thing which might be really cool to investigate is using a similar system to lython which compiles Lisp s-expressions directly to python byte code. If this was done well it should be the fastest method as it would mean no type conversion needs to be done.

Overall this has been quite a good learning experience. I have improve my ctype skills quite a lot (this wasn’t my first ctypes wrapper, that being libmng-py, a Python wrapper around libmng). I also understand how Scheme works quite a lot better now.

I’m free!

I have been meaning to post here for quite a while but have been busy doing nothing.

As anyone who chats on IRC with me knows, I got my “Eligible to Graduate” letter from my University. This means that as of the 31st of July I will officially have both a “Bachelor of Engineering (Information Technology and Telecommunications)” and a “Bachelor of Arts” in Philosophy. I’ve been studying at Uni for 5+1/2 years, so I will be glad to finally leave. The last 6 months of Uni have been the most enjoyable because I have spent most of the time working on my Honours project, I did pretty well (ended up with 94% which is a High Distinction).

I’ve been working on a little contract that I picked up off the Linux Australia jobs list. Sadly it’s not open source, but it should tide me over for about a month. I badly need to update my Resume as I haven’t needed it for about 4 years.

I’m still yet to calculate the numbers to work out if going commercial with my Honours project is going to be worth pursuing. David Rowie has been giving me some advice and templates to work with. He has been working embedded Asterisk which is very cool.

My Honours Project – All done!

Well, as of Wednesday I have completed my Honours project. On Wednesday I gave my final presentation for the project and it went really well (at least for me). It is a great relief to have finally “finished” something which I have been working on for a good 10 months of my life.  I have spent the last couple of days recovering.

The day was way more stressful then it needed to be. I needed quite a bit of time to setup for my presentation (I need to setup 8 telephones at various locations and get the power supply and such working. However, the room I had been scheduled to give my presentation room which was being used all morning. It then took us ages to find a room which I could use, we ended up using the student study room.

The demonstration worked pretty well. I had two problems, but neither of them where significant or really noticed by the moderator or supervisor.

My documentation turned out pretty good too. I was required to produce two documents, the first was a “ Final Report” which covered what I actually did. The second was as a “Technical Document“, my supervisor suggested I do this in the form of a data sheet for my project. I’ve attached both the documents here for people to have a look over.

So where do I go from here? Most people just stop once they had done their final project. The University has some strange rules about collaboration on Honours projects, so I wasn’t able to do this project as an piece of Open Source Hardware. Now however that restriction has been lifted, over the next couple of months I hope to move it all to Open Source.

It also turns out that a guy working on embedded Asterisk lives just around the corner from me. I invited him along to my presentation and he is now helping me pursue getting this device on to the market.

At the current price point, it looks likes is it possible to do the 8 FXS channel USB device for around $US 300. Hopefully, we can get this down even lower, ultimately my end target is for it to be half that price. If you are interested in the device (either as a developer or as an end user) I would love to hear from you.

Almost there..

Well, I’ve almost finished my Honours project, less then a week left until it’s done. I have been working on this project officially for almost a year now, however it’s original inception occurred about 2 and a half years ago.

For those who don’t know, my project is to build a budget 8 line computer to telephone interface. My hope was to eventually be able to sell the device for $US 150, allowing somebody to interface a whole house cheaply. The design is nothing more then a glorified ADC/DAC device – the computer its connected to does all the work.

I have built a prototype board which is working a lot better then expected, you can see it below. I will however be glad when I can get back to just working on the board instead of writing all this documentation. Anyway, I should get back to it.

CFXS Try2 PCB Board

TV Idiots

People are continually talking about the end of Television. The TV executives blame people downloading off the Internet via “peer to peer” for there gradual decline. TV series are a huge part of most television programming, viewers get hooked and then continually tune in.

However, the idiots who schedule TV series are ruining them for everyone. TV series need consistent time slots to keep building suspense and grow viewers. Having inconsistent breaks and time slots ruins that processes and drives ratings down. How are people going to know to tune in to the program if they can never be sure it’ll be on?

Inconsistent breaks and timing killed Lost and Prison Break for me, the breaks ruined the suspense both programs rely on and I’m no longer watching either. The recent break in Heroes really dampened the enthusiasm I had for the program.

Another huge problem which happens very often in Australian TV is that they mix old episodes with new episodes to make seasons longer. This confuses continuing stories and characters which have died randomly reappear. As well, they continually advertise things as new episodes when they are actually airing repeats. They are particularly bad with programs like NCIS or Law and Order.

Why are commercial TV stations trying to destroying themselves?

Compare this to our national broadcaster ABC, which now has full VOD casts of all their productions. I don’t have to worry about missing things like the Chaser as I can just go and download them later.

Using Tailor to go to git

As our code repositories for Thousand Parsec where down anyway (because of the host being compromised), we decided to do something we had been thinking about for a while. We converted all our code repositories to git.

We had previously been using darcs, however the unbounded memory usage was getting out of hand. The straw which broke the camel’s back was when nash couldn’t even checkout the web repository because darcs kept getting killed by the Out of Memory Manager (on a machine which has more then 512Mb of RAM).

After much discussion we decided to move to git. The biggest reason we choose to use git was that we didn’t want to get stuck with another non-mainstream SCM system. With large people like Xorg, the Linux Kernel and many others, I’m pretty sure git will become the SCM of choice in the near future.

As I had previously had a large amount of experience converting the darcs repositories to subversion (for our mirrors), I was put in charge of converting the repositories to git. As previously, I used Tailor.

The first problem is that darcs has git repository support. The suppose solution to this is using disjunct working directories. However, git did not appear to like this, I need to hack up the source code to get it to work. I’ve submitted the patches back the Tailor repository and they have already been included!

Another problem I ran into was that I don’t have a machine which has enough memory to convert the web repository! I don’t have a computer with more then 768mb of ram (feel free to send me some more if you want! :P). Luckily thanks to the Summer of Code, a student who goes by the name cherez (who I was very disappointed we didn’t have enough slots to select) gave me a shell account on his machine with 4Gb of Ram.

As a result of converting to git, I was also able to merge the development and stable branches (of both tpclient-pywx and libtpclient-py) into one repository. This was a little bit trickier then I would have liked, it involved finding the branch point manually and then telling tailor about it, in the end it worked out. You can find a copy of the config I used for branching here.

You can see the results of our conversion at our gitweb.

I have to say, I’m amazed by git. Every single operation is very, very fast, I guess it’s why they called themselves “Git – Fast Version Control System”. Another thing that amazes me is the size of the repositories, under darcs our repositories where about 4Gb, with git they are around 200Mb! Overall, I’m happy with our choice.

Doh! Pictures gone…

The server I run my blog on got hacked. In a hurry to make a backup of everything before taking the site down I forgot to copy across all the pictures in my blog. I’m now hosting my blog on wordpress.com so I don’t have to deal with all the maintenance problems of running WordPress myself.