JRuby, Rails and Development mode

Well, that was fun…  I spent quite a bit of time today beating my head against a “memory leak” only to remember that JRuby + Rails + Development mode = very leaky.  Switch to production mode and the problem goes away.

A simple little Rails app with one controller and one model is all that is needed to exercise the problem.  Run rails in development mode, and hit it with requests, memory usage soon skyrockets and the app starts to fall over.  Switch to production mode and the same app runs really nicely 🙂

Funky Clock 2 is up and running

Funky clock is installed and working really nicely 🙂

I had a little trouble with the digital inputs as the pull down resistors I used were 100K instead of 10K.  Also for some reason I was unable to read port E2 at all.  Once I moved that input to port C4 and replaced the resistors everything started working as expected 🙂

Temperature sensor

weekly graph
I added a LM35 temperature sensor to the unit measuring the water level in my main tanks.  After a mild calibration issue (shown above) it seems to be reading very close to the actual temperature 🙂

daily graph

I find it amazing how much I am enjoying having this data.  Very silly 🙂

Funky Clock 2.0

Here is Funky Clock 2.0, well the processor board anyway.

I have several PIC18F452 in the PLCC package, so I decided to see if I could get that working.
My forth is running on it and I am implementing a new UI for the clock allowing the time to be set using a really cool dial/switch combo.
To connect to the new board I’ve made another daughter board that has the power connector, quadrature dial button thingy and a serial connection plug.  I have made a little RS232 adapter using a MAX232 chip and a hand full of capacitors placed into a DB9 head shell with some pins sticking out of one end and a DB9 on the other.  When I plug the adapter into my Funky Clock it is powered from the Funky Clock and I am able to send code and commands to it via a terminal emulator 🙂
It all works really nicely 🙂


Unless you’ve been living under a rock recently you’ll know that the Playstation 3 is now wide open for home brew code.  I’ve been having some fun running my  own code on my PS3 🙂  The PSL1GHT wiki contains all the information necessary to set up a development environment.

More on the Funky Clock

I had another one of the LED arrays around the place and decided to see if I could drive it directly from the PIC port pins.  It seems I can, and the results are much better than my much more complicated previous setup.  Of course it uses up almost all of the PIC18F4550’s port pins.  All of port A, B, D and E 😉

The thing I was really happy about was that the code I had written for the old hardware needed very little changes to work.  Forth is really good like that.  All I had to do was change the low level code that actually hits the hardware, and the higher level stuff just worked 🙂

The Funky Clock

We have a problem in our house.  The youngest has a habit of waking the whole house at a time that is not pleasing to the rest of us.  We put a clock in his room, but that didn’t help much because the monster child can’t read yet.

As with everything I decided a technological solution MUST be the best, so I present, the funky clock.
The dual colour LED array is from Sparkfun.  It is driven using two 74595 chips for the columns and a pair of ULQ2003 chips for the rows (because I didn’t have a ULM2008 chip).  The brain of the thing is a PIC18F4550 running my native code compiling forth which I control over USB.  I plan to produce a screen cast showing this in action at some stage.
I wanted to make the whole thing fit behind the display, so I was forced to put the processor and the LED driver hardware on their own boards.
The top of the processor board.
The bottom of the processor board.
The LED driver board.  I was really pleased with this one.  The 74595s are positioned so that they line up with the correct pins on the LED matrix so I didn’t need to run as many wires.  This meant that I had to rotate one of them 180 .
The bottom of the LED driver board.
The power board plugs into the processor board using the same connector as the PICkit 3.
All four parts of the clock fit together nicely 🙂
I’ve set it up to display the hour in the main display area.  Blink the bottom left LED every second to let me know it is working, and display the minute in binary on the bottom row.  When it is bed time the hour is displayed in red, and when it is time to get up the hour is green.
I doubt it will make any difference, but I had fun making the funky clock 🙂
It is amazing how easy it is to develop on the thing using forth on the actual hardware.

: CLOCK-TASK ( -- )

        7 GREEN C@ 80 OR  MINUTES C@ OR 7 GREEN C!

It was so much fun making a forth from scratch.  It is based very loosely on jonesforth in that it implements many of the same kernel words, however it differs in that it generates subroutine threaded code instead of being token threaded.  I have also implemented a very simple co-operative task switcher.  The above task is responsible for setting up the display.  I have two other tasks running, one that drives the LEDs and another that updates the time.  While these tasks are running I am also still able to interact with the forth system via the virtual serial port over USB.
I want to thank my Dad again for all his help with the hardware.

DeltaSync decompression progress

After quite some time I finally have some code that seems to decompress the message data returned from Windows Live via the DeltaSync protocol.

The code is AWFUL, but the results are looking pretty good.

X-Message-Delivery: Vj0xLjE7dXM9MDtsPTA7YT0wO0Q9MTtTQ0w9MA==

X-Message-Status: n:0

X-SID-PRA: Daniel Parnell <me@danielparnell.com>

X-Message-Info: JGTYoYF78jHVrAq/T4xfKLLpTvwPwE0t6g/vyq6tyzbqln5iNnXwcSMg41wQCSulCxd5N8UB57Lq6un/ug7i0YsGX30yo+pm

Received: from randymail-a4.g.dreamhost.com ([]) by bay0-mc8-f11.bay0.hotmail.com with Microsoft SMTPSVC(6.0.3790.2668);

Thu, 29 Jan 2009 16:06:38 -0800

Received: from 192-168-1-101.tpgi.com.au (60-241-72-192.static.tpgi.com.au [])

(using TLSv1 with cipher AES128-SHA (128/128 bits))

(No client certificate requested)

by randymail-a4.g.dreamhost.com (Postfix) with ESMTP id 97A67194DD3

for <danielparnell@live.com>; Thu, 29 Jan 2009 16:06:26 -0800 (PST)

Message-Id: <8EEE4310-25CC-47BE-8FCB-330EBCD75A21@danielparnell.com>

From: Daniel Parnell <me@danielparnell.com>

To: danielparnell@live.com

Content-Type: multipart/mixed; boundary=Apple-Mail-33–583770588

Mime-Version: 1.0 (Apple Message framework v930.3)

Subject: more test messages

Date: Fri, 30 Jan 2009 11:06:23 +1100

X-Mailer: Apple Mail (2.930.3)

Return-Path: me@danielparnell.com

X-OriginalArrivalTime: 30 Jan 2009 00:06:38.0411 (UTC) FILETIME=[9F1AB1B0:01C9826E]


Content-Type: text/plain;



Content-Transfer-Encoding: 7bit

this is another test message


Content-Disposition: attachment;

filename=”AGL Energy Advisor.zip”

Content-Type: application/zip;


name=”AGL Energy Advisor.zip”

Content-Transfer-Encoding: base64

















And so on.  Once I’ve got things cleaned up a bit more I hope to post what I’ve been able to come up with.