<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Jason Madigan</title><link>https://jasonmadigan.com/</link><description>Notes on software, side projects, and other curiosities by Jason Madigan.</description><language>en-us</language><lastBuildDate>Wed, 01 Jan 2025 12:01:00 +0000</lastBuildDate><atom:link href="https://jasonmadigan.com/index.xml" rel="self" type="application/rss+xml"/><item><title>Adding shopping list items via Home Assistant voice commands</title><link>https://jasonmadigan.com/posts/2025-01-01-home-assistant-voice-shopping-lists/</link><pubDate>Wed, 01 Jan 2025 12:01:00 +0000</pubDate><guid>https://jasonmadigan.com/posts/2025-01-01-home-assistant-voice-shopping-lists/</guid><description>&lt;p>I recently got access to a couple of &lt;a href="https://www.home-assistant.io/voice-pe/">Home Assistant Voice Previews&lt;/a>, and wanted a way to quickly add items to my shopping list using voice commands. The built-in intents for adding todo list items are kind of wordy, and I liked how Alexa had a simple &amp;ldquo;Alexa add foo&amp;rdquo; shortcut to add items to a default shopping list.&lt;/p>
&lt;p>After some tinkering, I came up with a simple setup that uses Home Assistant’s &lt;code>conversation&lt;/code> integration, &lt;code>intent_script&lt;/code>, and a few custom sentences to streamline the process.&lt;/p></description></item><item><title>Holiday time - bulk declining Google Calendar events</title><link>https://jasonmadigan.com/posts/2017-07-03-declining-google-calendar-events-en-masse/</link><pubDate>Mon, 03 Jul 2017 19:00:00 +0000</pubDate><guid>https://jasonmadigan.com/posts/2017-07-03-declining-google-calendar-events-en-masse/</guid><description>&lt;p>I&amp;rsquo;m getting married in a few weeks, so recently I wanted a way to decline about 3 weeks worth of Google Calendar events en-masse. Since I was using Google Apps for our organisation&amp;rsquo;s calendar, I found the easiest way to accomplish this was to bust out some &lt;a href="https://www.google.com/script/start/">Google Apps Scripting&lt;/a>, which lets you script a number of Google Apps in your domain, including the &lt;a href="https://developers.google.com/apps-script/reference/calendar/calendar-event">Calendar&lt;/a>.&lt;/p>
&lt;p>See an example below on how to bulk decline Google Calendar events using Google Apps Scripting - you&amp;rsquo;ll just need a calendar name &amp;amp; a date range and run this via the script console:&lt;/p></description></item><item><title>High Altitude Adventures - Part 3</title><link>https://jasonmadigan.com/posts/2013-07-04-high-altitude-adventures-part-3/</link><pubDate>Thu, 04 Jul 2013 21:00:00 +0000</pubDate><guid>https://jasonmadigan.com/posts/2013-07-04-high-altitude-adventures-part-3/</guid><description>&lt;p>A few weeks ago, I was mostly ready to launch. We&amp;rsquo;d bought an N30 cylinder of Helium from &lt;a href="http://www.irishpartysupplies.ie">Irish Party Supplies&lt;/a>, containing 7.82m³ of Helium - enough for roughly two launches of a standard sized 1000g balloon. Previously, I&amp;rsquo;d thought hydrogen would be a better choice, but considering it was a first launch we decided to play it safe (after having a gas seller painstakingly explain the various ways in which Hydrogen tanks can explode).&lt;/p></description></item><item><title>High Altitude Adventures - Part 2</title><link>https://jasonmadigan.com/posts/2013-04-24-high-altitude-adventures-part-2/</link><pubDate>Wed, 24 Apr 2013 21:20:00 +0000</pubDate><guid>https://jasonmadigan.com/posts/2013-04-24-high-altitude-adventures-part-2/</guid><description>&lt;p>Following on from my previous post, I&amp;rsquo;m going to go into a little more detail as to what we&amp;rsquo;re planning and what I&amp;rsquo;ve built so far - hopefully it will be of interest!&lt;/p>
&lt;p>The payload (or safeload as I&amp;rsquo;m now calling it) is now complete. It consists of:&lt;/p>
&lt;ul>
&lt;li>&lt;a href="http://www.amazon.co.uk/gp/product/B007TQ6TSK/ref=as_li_qf_sp_asin_tl?ie=UTF8&amp;amp;camp=1634&amp;amp;creative=6738&amp;amp;creativeASIN=B007TQ6TSK&amp;amp;linkCode=as2&amp;amp;tag=jasomadi-21">An Arduino Mega 2560&lt;/a>&lt;/li>
&lt;li>&lt;a href="http://www.amazon.co.uk/gp/product/B008FZIZUE/ref=as_li_ss_tl?ie=UTF8&amp;amp;camp=1634&amp;amp;creative=19450&amp;amp;creativeASIN=B008FZIZUE&amp;amp;linkCode=as2&amp;amp;tag=jasomadi-21">MTK3339 GPS&lt;/a>&lt;/li>
&lt;li>&lt;a href="http://www.amazon.co.uk/gp/product/B0084DP4CY/ref=as_li_ss_tl?ie=UTF8&amp;amp;camp=1634&amp;amp;creative=19450&amp;amp;creativeASIN=B0084DP4CY&amp;amp;linkCode=as2&amp;amp;tag=jasomadi-21">Radiometrix NTX2&lt;/a> (434.650MHz @ 10mW)&lt;/li>
&lt;li>&lt;a href="http://www.amazon.co.uk/gp/product/B003XDQUQE/ref=as_li_ss_tl?ie=UTF8&amp;amp;camp=1634&amp;amp;creative=19450&amp;amp;creativeASIN=B003XDQUQE&amp;amp;linkCode=as2&amp;amp;tag=jasomadi-21">Xexun TK102 GPS Tracker&lt;/a>&lt;/li>
&lt;li>&lt;a href="http://www.amazon.co.uk/gp/product/B004AP9FSE/ref=as_li_ss_tl?ie=UTF8&amp;amp;camp=1634&amp;amp;creative=19450&amp;amp;creativeASIN=B004AP9FSE&amp;amp;linkCode=as2&amp;amp;tag=jasomadi-21">Veho Muvi HD 1080p Camcorder&lt;/a>&lt;/li>
&lt;li>&lt;a href="http://www.amazon.co.uk/gp/product/B006CHEUSI/ref=as_li_ss_tl?ie=UTF8&amp;amp;camp=1634&amp;amp;creative=19450&amp;amp;creativeASIN=B006CHEUSI&amp;amp;linkCode=as2&amp;amp;tag=jasomadi-21">Siemens TC35 RS232 GSM modem&lt;/a>&lt;/li>
&lt;/ul>
&lt;p>&lt;img src="https://dl.dropboxusercontent.com/u/1336005/blog/payload.jpg" alt="Payload">&lt;/p></description></item><item><title>High Altitude Adventures</title><link>https://jasonmadigan.com/posts/2013-04-02-high-altitude-adventures/</link><pubDate>Tue, 02 Apr 2013 21:00:00 +0000</pubDate><guid>https://jasonmadigan.com/posts/2013-04-02-high-altitude-adventures/</guid><description>&lt;p>A few weeks ago, I spied a video on YouTube via Reddit - some guys had gotten together and put some cameras high up into the atmosphere (100,000ft, ~30km). I looked at it and thought it seemed like a good use of time. I got talking to &lt;a href="http://blog.danielvagg.com/blog/">a friend of mine&lt;/a> at work about the possibilites of launching something like this from Ireland. As it turned out, some people from launched successfully from Kerry &lt;a href="https://www.youtube.com/watch?v=cqGoFAts1ag">a few years back&lt;/a>.&lt;/p></description></item><item><title>Jekyll</title><link>https://jasonmadigan.com/posts/2011-03-02-jekyll/</link><pubDate>Sat, 02 Mar 2013 21:00:00 +0000</pubDate><guid>https://jasonmadigan.com/posts/2011-03-02-jekyll/</guid><description>&lt;p>Way back in November, 2008, I read an &lt;a href="http://tom.preston-werner.com/2008/11/17/blogging-like-a-hacker.html">article&lt;/a> by Tom Preston-Werner which detailed his approach to blogging and blogging software. For years I&amp;rsquo;ve been trying to use one terrible CMS or another. The idea of sitting down to write &lt;em>yet another&lt;/em> CMS to tackle some of the issues I have with blogging software really didn&amp;rsquo;t appeal to me. Remembering his article, I started poking with &lt;a href="http://github.com/mojombo/jekyll">Jekyll&lt;/a>. I had a pretty good idea of what I wanted:&lt;/p></description></item><item><title>Irish Weather app live on the App Store</title><link>https://jasonmadigan.com/posts/2009-12-16-irish-weather-app-live-on-the-app-store/</link><pubDate>Wed, 16 Dec 2009 21:00:00 +0000</pubDate><guid>https://jasonmadigan.com/posts/2009-12-16-irish-weather-app-live-on-the-app-store/</guid><description>&lt;p>I was bored three weekends ago and had an idea for a simple Irish weather app. Met Eireann have tons of great data available to the public, but finding the good stuff was a little fiddly. Anyway, after a weekend of work in Photoshop and Xcode, I had a pretty nice app. It was finally approved late last night. It&amp;rsquo;s free to download, so feel free to give it a spin.&lt;/p></description></item><item><title>The day a Time Capsule died</title><link>https://jasonmadigan.com/posts/2009-11-25-the-day-a-time-capsule-died/</link><pubDate>Wed, 25 Nov 2009 21:00:00 +0000</pubDate><guid>https://jasonmadigan.com/posts/2009-11-25-the-day-a-time-capsule-died/</guid><description>&lt;p>This is the first Apple product I&amp;rsquo;ve owned that&amp;rsquo;s died. The hard drive seems to be fine though. Plugged it into another machine and it works just fine. I guess all that heat killed the logicboard. I guess it had been warning me with a few months though - its DHCP server had become very flakey over the past few weeks.&lt;/p>
&lt;p>Oh well, time to dust off my old dependable WRT54GL.&lt;/p></description></item><item><title>Node.js - Event driven, non-blocking web servers written in JavaScript</title><link>https://jasonmadigan.com/posts/2009-11-23-node-js-event-driven-non-blocking-web-servers-written-in-javascript/</link><pubDate>Mon, 23 Nov 2009 21:00:00 +0000</pubDate><guid>https://jasonmadigan.com/posts/2009-11-23-node-js-event-driven-non-blocking-web-servers-written-in-javascript/</guid><description>&lt;p>&lt;strong>Update - 2015-09-11 while porting posts: This Node.js thing turned out to be a pretty big deal&lt;/strong>&lt;/p>
&lt;p>I&amp;rsquo;ve been fiddling with &lt;a href="http://github.com/ry">Ryan Dahl&amp;rsquo;s&lt;/a> &lt;a href="http://github.com/ry/node">Node.js&lt;/a> event driven I/O framework for the V8 JavaScript VM over the past couple of days. It&amp;rsquo;s probably the coolest piece of software I&amp;rsquo;ve come across in ages, and it really builds upon one of JavaScript&amp;rsquo;s core strengths: event driven programming. If you&amp;rsquo;ve been looking to brush up on your event driven programming, it&amp;rsquo;s seriously worth taking the time to play with. As part of his work on Node, Ryan has also released a seriously cool tiny &lt;a href="http://github.com/ry/http-parser">HTTP parser&lt;/a> in C (and used by Node). At 128 bytes per connection, it&amp;rsquo;s perfect for use in any embedded environment which could do with some HTTP love, like the &lt;a href="http://www.arduino.cc/">Arduino&lt;/a>.&lt;/p></description></item><item><title>Bluetooth/USB tethering &amp; MMS for O2 Ireland with iPhone OS 3.0</title><link>https://jasonmadigan.com/posts/2009-03-19-bluetooth-usb-tethering-and-mms-for-o2-ireland-with-iphone-os-3-0/</link><pubDate>Thu, 19 Mar 2009 21:00:00 +0000</pubDate><guid>https://jasonmadigan.com/posts/2009-03-19-bluetooth-usb-tethering-and-mms-for-o2-ireland-with-iphone-os-3-0/</guid><description>&lt;p>&lt;strong>Update #2: These carrier settings will work with Beta 2 also. Also,
Safari likes to attach a .zip extension to the ipcc, so either rename
the downloaded file minus the extension or use Firefox/curl something
else to download the updated carrier settings.&lt;/strong>&lt;/p>
&lt;p>&lt;strong>Update: Updated the MMS proxy settings, the previous version was using
an old proxy. To update just re-download the carrier settings and apply
an update once more.&lt;/strong>&lt;/p>
&lt;p>After a little dicking around prompted by some stuff I noticed on
twitter, I cobbled together this updated carrier bundle for O2 Ireland
to enable USB/Bluetooth tethering for iPhone OS 3.0. This also enables
the sending/recieving of MMS messages a new photo button will appear in
Messages.app to send pictures as MMS messages.&lt;/p></description></item><item><title>Trip report - fowadublin</title><link>https://jasonmadigan.com/posts/2009-03-09-trip-report-fowadublin/</link><pubDate>Mon, 09 Mar 2009 21:00:00 +0000</pubDate><guid>https://jasonmadigan.com/posts/2009-03-09-trip-report-fowadublin/</guid><description>&lt;p>I attended FOWA Dublin Friday last, and had a pretty good time. The
speakers were the main reason I attended, with DHH &amp;amp; Simon Willison
delivering particularly great talks. There were a couple of things that
bugged me about the event setup. Not to be a jerk or anything, but
there&amp;rsquo;s a few points I hope the
&lt;a href="http://www.carsonified.com/fowa/">Carsonified&lt;/a> guys take a look at and
fix in time for next year:&lt;/p>
&lt;ul>
&lt;li>Poor WiFi - I know the guys have apologised about this already, but
it stuck in most people&amp;rsquo;s craw and I guess it bears repeating. With
400 odd people milling about with iPhones and Macs some decent WiFi
would&amp;rsquo;ve been nice.&lt;/li>
&lt;li>Socialising is kind of hard when you&amp;rsquo;ve got absolutely no room to
move.&lt;/li>
&lt;li>I don&amp;rsquo;t really care about toilets, but I heard there was only one
bathroom for guys and one for girls.&lt;/li>
&lt;li>Lack of freebies. The tickets were pretty pricey (although I&amp;rsquo;d guess
individuals paying for their own tickets were in the minority).
Basically the only thing given away was a name-tag &amp;amp; holder. Free
coffee for breaks or something would&amp;rsquo;ve gone down nicely.&lt;/li>
&lt;/ul></description></item><item><title>Using cookies to calculate a user's timezone</title><link>https://jasonmadigan.com/posts/2009-01-17-using-cookies-to-calculate-a-users-timezone/</link><pubDate>Sat, 17 Jan 2009 21:00:00 +0000</pubDate><guid>https://jasonmadigan.com/posts/2009-01-17-using-cookies-to-calculate-a-users-timezone/</guid><description>&lt;p>A few days ago I &lt;a href="http://github.com/entp/xtt/tree/master">discovered&lt;/a> a
quick &amp;amp; easy way few to use cookies to help your Rails app get a user&amp;rsquo;s
timezone, without prompting. It&amp;rsquo;s pretty easy to implement:&lt;/p>
&lt;p>First up: set a cookie, any cookie:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-javascript" data-lang="javascript">&lt;span class="line">&lt;span class="cl">&lt;span class="kd">var&lt;/span> &lt;span class="nx">date&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="k">new&lt;/span> &lt;span class="nb">Date&lt;/span>&lt;span class="p">();&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">// returns offset from GMT in minutes
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">&lt;/span>&lt;span class="kd">var&lt;/span> &lt;span class="nx">offset&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="nx">date&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="nx">getTimezoneOffset&lt;/span>&lt;span class="p">();&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">// set a cookie however you see fit, I like to use jQuery.cookie
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">&lt;/span>&lt;span class="nx">$&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="nx">cookie&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s1">&amp;#39;timezone&amp;#39;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="nx">offset&lt;/span>&lt;span class="p">);&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Then, in application.rb or wherever you like:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-ruby" data-lang="ruby">&lt;span class="line">&lt;span class="cl">&lt;span class="k">def&lt;/span> &lt;span class="nf">browser_timezone&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">return&lt;/span> &lt;span class="kp">nil&lt;/span> &lt;span class="k">if&lt;/span> &lt;span class="n">cookies&lt;/span>&lt;span class="o">[&lt;/span>&lt;span class="ss">:timezone&lt;/span>&lt;span class="o">].&lt;/span>&lt;span class="n">blank?&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="sb">`browser_timezone ||= begin
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="sb"> min = cookies[:timezone].to_i
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="sb"> TimeZone[(min + (-2 * min)).minutes]
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="sb"> end
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="sb">end
&lt;/span>&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>The cookie gives you minutes from GMT, but `ActiveSupport::TimeZone@
expects seconds from GMT.&lt;/p></description></item><item><title>An iPhone app is born</title><link>https://jasonmadigan.com/posts/2008-12-27-an-iphone-app-is-born/</link><pubDate>Sat, 27 Dec 2008 21:00:00 +0000</pubDate><guid>https://jasonmadigan.com/posts/2008-12-27-an-iphone-app-is-born/</guid><description>&lt;p>&lt;a href="http://www.feedhenry.com/">We&lt;/a> finally saw our first iPhone app land on
the App Store a couple of days ago. iPhone app development is pretty
wonderful in comparison to some of the other crapheaps out there, but
it&amp;rsquo;s also pretty damn nice by itself too. It was a ton of fun to write,
and it was nice to do something like it for a local paper, &lt;a href="http://www.munster-express.ie/">The Munster
Express&lt;/a>.&lt;/p>
&lt;p>Check it out
&lt;a href="http://ax.itunes.apple.com/WebObjects/MZStore.woa/wa/browserRedirect?url=itms%253A%252F%252Fax.itunes.apple.com%252FWebObjects%252FMZStore.woa%252Fwa%252FviewSoftware%253Fid%253D300295436%2526mt%253D8">here&lt;/a>&lt;/p></description></item><item><title>JavaScript flexes its muscles</title><link>https://jasonmadigan.com/posts/2008-09-04-javascript-flexes-its-muscles/</link><pubDate>Thu, 04 Sep 2008 21:00:00 +0000</pubDate><guid>https://jasonmadigan.com/posts/2008-09-04-javascript-flexes-its-muscles/</guid><description>&lt;p>It&amp;rsquo;s an exciting time for JavaScript developers. Over the past few
months, we&amp;rsquo;ve seen all sorts of cool things coming our way. We&amp;rsquo;ve seen
new fast, heavily optimised JavaScript virtual machines such as
WebKit&amp;rsquo;s&lt;a href="http://webkit.org/blog/189/announcing-squirrelfish/">SquirrelFish&lt;/a>,
Mozilla&amp;rsquo;s &lt;a href="https://wiki.mozilla.org/JavaScript:TraceMonkey">TraceMonkey&lt;/a>
and, most recently, Google&amp;rsquo;s &lt;a href="http://code.google.com/p/v8/">V8&lt;/a>. We&amp;rsquo;ve
seen all kinds of cool things done with these new VMs, perhaps the
coolest (to my mind) is running dynamic languages such as Ruby in the
browser - see
&lt;a href="http://macournoyer.wordpress.com/2008/09/02/ruby-on-v8/">here&lt;/a>.&lt;/p>
&lt;p>We&amp;rsquo;ve also seen the effective death of the ECMAScript 4 proposal and
seen it reborn as ECMAScript Harmony. To top things off, we&amp;rsquo;ve also seen
some very interesting new JavaScript frameworks designed specifically
with complex client-side web applications such as
&lt;a href="http://www.sproutcore.com/">SproutCore&lt;/a> and, just today, &lt;a href="http://cappuccino.org/">Cappccino &amp;amp;
Objective-J&lt;/a>. The web development world is
evolving too quickly for the current model of standards adoption remain
sustainable, and it&amp;rsquo;s nice to see that developers like those behind
Cappuccino get it.&lt;/p></description></item><item><title>Reinventing the wheel, just to see what all the fuss is about.</title><link>https://jasonmadigan.com/posts/2008-05-24-reinventing-the-wheel-just-to-see-what-all-the-fuss-is-about/</link><pubDate>Sat, 24 May 2008 21:00:00 +0000</pubDate><guid>https://jasonmadigan.com/posts/2008-05-24-reinventing-the-wheel-just-to-see-what-all-the-fuss-is-about/</guid><description>&lt;p>I&amp;rsquo;ve been amassing a small army of broken arduinos over the past two
months, but now I have &lt;strong>something&lt;/strong> to show for it - the bones of a
working (but altogether bulky) GPS tracker. The code I used seems kind
of nasty to me, mostly because the bit-banging used for serial
communication to try to ensure no data is missed in transition. The
Arduino IDE is okay I guess (for a Java app), but if you like Ruby you
may want to check out &lt;a href="http://rad.rubyforge.org/">RAD&lt;/a>. Looks like RAD
only works with version 10 of the arduino SDK right now though.&lt;/p></description></item><item><title>An end to a ridiculous restore path</title><link>https://jasonmadigan.com/posts/2008-02-12-an-end-to-a-ridiculous-restore-path/</link><pubDate>Tue, 12 Feb 2008 21:00:00 +0000</pubDate><guid>https://jasonmadigan.com/posts/2008-02-12-an-end-to-a-ridiculous-restore-path/</guid><description>&lt;p>Finally. Restoring an iPhone is no longer quite so painful. No more
jumping through hoops downgrading to 1.1.1 and slowly clawing your way
back up to 1.1.3 with all manner of ridiculous soft updates. Thanks to
Zibree&amp;rsquo;s
&lt;a href="http://zibree.blogspot.com/2008/02/ziphone-updated.html">ZiPhone&lt;/a>, you
no longer need to beg and plead with your iPhone to play along with you
for two hours to get your iPhone back in working order. Unlocking,
activating &amp;amp; jailbreaking any iPhone is now incredibly simple and fast.&lt;/p></description></item><item><title>Software Unlock for OOTB 1.1.2 &amp; 1.1.3 iPhones</title><link>https://jasonmadigan.com/posts/2008-02-08-software-unlock-for-ootb-1-1-2-and-1-1-3-iphones/</link><pubDate>Fri, 08 Feb 2008 21:00:00 +0000</pubDate><guid>https://jasonmadigan.com/posts/2008-02-08-software-unlock-for-ootb-1-1-2-and-1-1-3-iphones/</guid><description>&lt;p>Mister George Hotz has come through for us once again, with a &lt;a href="http://iphonejtag.blogspot.com/2008/02/11246unlock-good-enough-for-prize.html">software
based
unlock&lt;/a>
for out of the box 1.1.2 &amp;amp; 1.1.3 iPhones. Now would be a good time to
buy one. It uses a delightful IPSF based method but this one doesn&amp;rsquo;t
zero out your seczones. So should Apple lose their minds in the future
and include a bootloader update in a future software release you won&amp;rsquo;t
end up with a complete brick.&lt;/p></description></item><item><title>1.1.3 - IPSF Keep's On Truckin'</title><link>https://jasonmadigan.com/posts/2008-01-25-1-1-3-ipsf-keeps-on-truckin/</link><pubDate>Fri, 25 Jan 2008 21:00:00 +0000</pubDate><guid>https://jasonmadigan.com/posts/2008-01-25-1-1-3-ipsf-keeps-on-truckin/</guid><description>&lt;p>Like I thought, IphoneSimFree&amp;rsquo;s unlock continues to work with recent
iPhone updates. Taking the baseband out of lockdown requires a little
minicom pockery until we see a patched lockdownd - I&amp;rsquo;ll look into
patching it this weekend.&lt;/p></description></item><item><title>Lightweight, fast Rails stack - Thin &amp; nginx</title><link>https://jasonmadigan.com/posts/2008-01-24-lightweight-fast-rails-stack-thin-and-nginx/</link><pubDate>Thu, 24 Jan 2008 21:00:00 +0000</pubDate><guid>https://jasonmadigan.com/posts/2008-01-24-lightweight-fast-rails-stack-thin-and-nginx/</guid><description>&lt;p>Since purchasing a
&lt;a href="http://www.slicehost.com" title="http://www.slicehost.com">slice
of heaven&lt;/a> a few days ago, I&amp;rsquo;ve setup a very lightweight Rails stack
consisting of
&lt;a href="http://code.macournoyer.com/thin/" title="http://code.macournoyer.com/thin/">Thin&lt;/a>
&amp;amp; &lt;a href="http://nginx.net/" title="http://nginx.net/">nginx&lt;/a> for my
Rails needs. Since I went for a slice with just 256MB of RAM, memory
consumption becomes a pretty serious issue. nginx has been around for
quite a while now, and has recently started to become more and more
popular in Rails deployments due to the fact that&amp;rsquo;s incredibly
lightweight, very fast and stable - perfect not only for VPS jerks like
me, but for anyone who really doesn&amp;rsquo;t feel it&amp;rsquo;s necessary to run Apache
for static content/cluster proxying/load balancing. Thin is something I
came across very recently and I decided to try is as a replacement for
mongrel since I&amp;rsquo;d heard some great things about it, even if it is still
alpha. It&amp;rsquo;s performance in comparison to mongrel (even with a tacked on
event machine) looks very impressive on paper.&lt;/p></description></item><item><title>1.1.2 OTB Unlocked (Hardware)</title><link>https://jasonmadigan.com/posts/2008-01-18-1-1-2-otb-unlocked-hardware/</link><pubDate>Fri, 18 Jan 2008 21:00:00 +0000</pubDate><guid>https://jasonmadigan.com/posts/2008-01-18-1-1-2-otb-unlocked-hardware/</guid><description>&lt;p>Some semi-good news for poor sods with 1.1.2 out of the box iPhones
reached my eyes &amp;amp; ears this morning - 1.1.2 iPhones with the v4.6
bootloader can now have their bootloader downgraded to 3.9 and then
unlocked. Unfortunately this remains a hardware testpoint method for the
time being. If you&amp;rsquo;re brave and fearless you can follow geohot&amp;rsquo;s guide
to doing this
&lt;a href="http://iphonejtag.blogspot.com/2008/01/112-otb-unlocked.html">here&lt;/a>&lt;/p>
&lt;p>A 1.1.3 jailbreak still seems to be a ways off, with the good old
symbolic link method seemingly neutered.&lt;/p></description></item><item><title>iPhone bootloader changes</title><link>https://jasonmadigan.com/posts/2007-11-19-iphone-bootloader-changes/</link><pubDate>Mon, 19 Nov 2007 21:00:00 +0000</pubDate><guid>https://jasonmadigan.com/posts/2007-11-19-iphone-bootloader-changes/</guid><description>&lt;p>For anyone thinking of purchasing an iPhone in the near future, be aware
that Apple is now shipping iPhones with an updated bootloader
(4.6_M3S2) which has seen the a number of unlocking avenues closed.&lt;/p>
&lt;p>All iPhone&amp;rsquo;s shipped after week 45 are very likely to have 1.1.2
pre-installed with this new bootloader - you can check to see the week
of manufacture by looking at the devices serial number (e.g.xxx45xxxxxx
means it was manufactured during week 45) or by issuing the following
command within a shell:&lt;/p></description></item><item><title>Turbo SIM working with downgraded 1.1.1</title><link>https://jasonmadigan.com/posts/2007-10-07-turbo-sim-working-with-downgraded-1-1-1/</link><pubDate>Sun, 07 Oct 2007 21:00:00 +0000</pubDate><guid>https://jasonmadigan.com/posts/2007-10-07-turbo-sim-working-with-downgraded-1-1-1/</guid><description>&lt;p>I was pretty sure this would be possible, but reports about this working
out there are sketchy at best so I wanted to put it to the test. Since I
now have a test iPhone to break before selling it on, I upgraded it to
1.1.1 to dump the filesystem over the past few days. I also got to test
to see if the upgraded modem baseband firmware would still work with a
TurboSIM. To test, I downgraded from 1.1.1 to 1.02 - the modem firmware
obviously remains intact from 1.1.1. Everything works as before with
baseband version 03.14.08_G. I was half expecting to maybe run into
some issues with Applesaft, as 04.01.13_G reads the AT&amp;amp;T IMSI three
times as opposed to one, but all seems fine.&lt;/p></description></item><item><title>Meteor GPRS/EDGE fix</title><link>https://jasonmadigan.com/posts/2007-10-07-meteor-gprs-edge-fix/</link><pubDate>Sun, 07 Oct 2007 21:00:00 +0000</pubDate><guid>https://jasonmadigan.com/posts/2007-10-07-meteor-gprs-edge-fix/</guid><description>&lt;p>I should probably stop posting about the iPhone, but hey, what can I say&lt;/p>
&lt;ul>
&lt;li>this little device has captured my heart.&lt;/li>
&lt;/ul>
&lt;p>To get GPRS/EDGE working with Meteor and your iPhone is pretty simple,
all we need is a proxy auto-config file:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-javascript" data-lang="javascript">&lt;span class="line">&lt;span class="cl">&lt;span class="kd">function&lt;/span> &lt;span class="nx">FindProxyForURL&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="nx">url&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="nx">host&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">if&lt;/span> &lt;span class="p">(&lt;/span>&lt;span class="nx">isInNet&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="nx">myIpAddress&lt;/span>&lt;span class="p">(),&lt;/span> &lt;span class="s2">&amp;#34;10.0.0.0&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="s2">&amp;#34;255.0.0.0&amp;#34;&lt;/span>&lt;span class="p">))&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">return&lt;/span> &lt;span class="s2">&amp;#34;PROXY 10.85.85.85:8799&amp;#34;&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">}&lt;/span> &lt;span class="k">else&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">return&lt;/span> &lt;span class="s2">&amp;#34;DIRECT&amp;#34;&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Save this as &lt;code>proxy.pac&lt;/code> and pop this into &lt;code>/private/var/root&lt;/code>. Next add
the following key to
&lt;code>private/var/root/Library/Preferences/SystemConfiguration/preferences.plist&lt;/code>:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-xml" data-lang="xml">&lt;span class="line">&lt;span class="cl">&lt;span class="nt">&amp;lt;key&amp;gt;&lt;/span>Proxies&lt;span class="nt">&amp;lt;/key&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nt">&amp;lt;dict&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;lt;key&amp;gt;&lt;/span>ProxyAutoConfigEnable&lt;span class="nt">&amp;lt;/key&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;lt;integer&amp;gt;&lt;/span>1&lt;span class="nt">&amp;lt;/integer&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;lt;key&amp;gt;&lt;/span>ProxyAutoConfigURLString&lt;span class="nt">&amp;lt;/key&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;lt;string&amp;gt;&lt;/span>file:///private/var/root/proxy.pac&lt;span class="nt">&amp;lt;/string&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nt">&amp;lt;/dict&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>And that should be it. I haven&amp;rsquo;t actually tested this yet, so if some
kind soul would be good enough to that would be great. Any HTTP traffic
should now get routed over Meteor&amp;rsquo;s proxy. Mail probably won&amp;rsquo;t work,
I&amp;rsquo;ll try to fix this when I get my hands on a Meteor SIM.&lt;/p></description></item><item><title>Symbolic links are pretty cool - read access to the 1.1.1 filesystem</title><link>https://jasonmadigan.com/posts/2007-10-05-symbolic-links-are-pretty-cool-read-access-to-the-1-1-1-filesystem/</link><pubDate>Fri, 05 Oct 2007 21:00:00 +0000</pubDate><guid>https://jasonmadigan.com/posts/2007-10-05-symbolic-links-are-pretty-cool-read-access-to-the-1-1-1-filesystem/</guid><description>&lt;p>On 1.02:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">&lt;span class="nb">cd&lt;/span> /var/root
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">mv Media backup
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">ln -s / Media
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Restore to 1.1.1, run the latest version of iphuc. Media is now / for
1.1.1.&lt;/p>
&lt;p>&amp;lsquo;sup MobileStore.app. Now to pop in kmem and get read/write access.&lt;/p></description></item><item><title>Turbo SIM / Hardware unlock remain working</title><link>https://jasonmadigan.com/posts/2007-09-28-turbo-sim-hardware-unlock-remain-working/</link><pubDate>Fri, 28 Sep 2007 21:00:00 +0000</pubDate><guid>https://jasonmadigan.com/posts/2007-09-28-turbo-sim-hardware-unlock-remain-working/</guid><description>&lt;p>As I sort of suspected, the IMSI read flaw in the iPhone&amp;rsquo;s baseband has
yet to be patched, so Turbo SIM&amp;rsquo;s should still work with 1.1.1. In
addition it should be noted that unlocking via hardware using geohot&amp;rsquo;s
method should always work, regardless of updates.&lt;/p>
&lt;p>The problem, of course, is that in order to actually use your unlocked
phone you need to activate it. And this can&amp;rsquo;t be done without having
write access to the iPhone&amp;rsquo;s filesystem. iPhoneSimFree.com reported that
their software unlock remains working, but without a way of activating
1.1.1 iPhone&amp;rsquo;s this can&amp;rsquo;t really be confirmed.&lt;/p></description></item><item><title>iPhone relocked</title><link>https://jasonmadigan.com/posts/2007-09-27-iphone-relocked/</link><pubDate>Thu, 27 Sep 2007 21:00:00 +0000</pubDate><guid>https://jasonmadigan.com/posts/2007-09-27-iphone-relocked/</guid><description>&lt;p>We knew this would happen weeks ago. Most of us knew that the iPhone was
going to be locked down for third party applications as well as SIM
unlocks. It isn&amp;rsquo;t possible (currently) to jailbreak an iPod touch and
the same can now be said of any iPhone running 1.1.1. iTunes no longer
communicates &lt;strong>with&lt;/strong> the iPhone, instead iTunes listens for commands
sent &lt;em>from&lt;/em> the iPhone. This means listening for keys is no longer
possible, which means decrypting ramdisks is also no longer possible.
The whole thing is a tremendous pain in the ass but absolutely nobody
can say this wasn&amp;rsquo;t expected. Just deal with it and accept it; we all
knew what we were getting ourselves in for.&lt;/p></description></item><item><title>Guide to unlocking your iPhone with a Turbo SIM</title><link>https://jasonmadigan.com/posts/2007-08-16-guide-to-unlocking-your-iphone-with-a-turbo-sim/</link><pubDate>Thu, 16 Aug 2007 21:00:00 +0000</pubDate><guid>https://jasonmadigan.com/posts/2007-08-16-guide-to-unlocking-your-iphone-with-a-turbo-sim/</guid><description>&lt;p>Since receiving my Turbo SIM yesterday and successfully getting it to
work with O2 Ireland, I thought I&amp;rsquo;d write up a clear, easy to understand
guide outlining the process.&lt;/p>
&lt;p>&lt;em>Disclaimer: If you break something it&amp;rsquo;s your own stupid fault
jerkface.&lt;/em>&lt;/p>
&lt;h2 id="what-you-will-need">What you will need&lt;/h2>&lt;h2 id="an-iphone">An iPhone&lt;/h2>&lt;p>Your iPhone will need to be Jailbroken, have SSH installed and it will
need to have been activated using AT&amp;amp;T&amp;rsquo;s ICCID (use iASign). If you
don&amp;rsquo;t know what any of this means, do some reading. There are a million
zillion guides out there explaining the procedures for doing these
things. If, after reading, you still don&amp;rsquo;t know what any of this means,
this method is not for you. Wait for a software based unlock.&lt;/p></description></item><item><title>iPhone - Working perfectly with O2 Ireland</title><link>https://jasonmadigan.com/posts/2007-08-15-iphone-working-perfectly-with-o2-ireland/</link><pubDate>Wed, 15 Aug 2007 21:00:00 +0000</pubDate><guid>https://jasonmadigan.com/posts/2007-08-15-iphone-working-perfectly-with-o2-ireland/</guid><description>&lt;p>My Turbo SIM arrived today and with little effort whatsoever I had my
iPhone working fine with my carrier, O2 Ireland. Everything works,
calls/SMS/data (GPRS at an amazing 35kbps).&lt;/p></description></item><item><title>TurboSIM iPhone unlock - confirmed working</title><link>https://jasonmadigan.com/posts/2007-08-13-turbosim-iphone-unlock-confirmed-working/</link><pubDate>Mon, 13 Aug 2007 21:00:00 +0000</pubDate><guid>https://jasonmadigan.com/posts/2007-08-13-turbosim-iphone-unlock-confirmed-working/</guid><description>&lt;p>Two iPhone users have reported that their TurboSIMs have been
successfully used to unlock their iPhones. Both have warned that the
device is quite fragile and can be destroyed if forced into a SIM slot,
so be careful.&lt;/p>
&lt;p>Ozbimmer, another member of the Hackint0sh forums
&lt;a href="http://www.bladox.com/forum/viewtopic.php?p=2236#2236">posted&lt;/a> to
confirm that his Turbo SIM works as expected. Zf_ was also kind enough
to provide a quick guide:&lt;/p>
&lt;ul>
&lt;li>First, your phone must be activated (with the AT&amp;amp;T SIM),
jailbreaked, and with SSH and vim. Refer to previous tutorials to do
that.&lt;/li>
&lt;li>Download the port of &lt;a href="http://www.hackint0sh.org/forum/showpost.php?p=15335&amp;amp;postcount=16">Bladox
utilities&lt;/a>
on your computer, extract it on your computer (you need the binary
file turbo-app)&lt;/li>
&lt;li>Download AppleSaft 0.92 from Bladox (see the link on their forum,
don&amp;rsquo;t remember it), extract it on your computer (you need the .trb
file)&lt;/li>
&lt;li>Turn on your phone with Turbo SIM + AT&amp;amp;T subscription&lt;/li>
&lt;li>Disable CommCenter - ssh to your phone, vim
/System/Library/LaunchDaemons/com.apple.CommCenter.plist add:&lt;br>
@&lt;br>
&lt;key>Disabled&lt;/key>&lt;true/>&lt;br>
@&lt;/li>
&lt;li>If you don&amp;rsquo;t like vim, you can do this modification on your desktop
computer (iPhuc/iPhoneInterface getfile, modify the file, and
putfile)&lt;/li>
&lt;li>Reboot&lt;/li>
&lt;li>Copy turbo-app to your phone (for example in /opt/bladox)&lt;/li>
&lt;li>Copy applesaft.trb to your phone (for example in /tmp)&lt;/li>
&lt;li>ssh to your phone, set the executable permission to turbo-app (chmod
a+x /opt/bladox/turbo-app) and run it with /opt/bladox/turbo-app
/tmp/applesaft.trb. It should take approximately 30 seconds and you
shouldn&amp;rsquo;t see any error. Please panic if you see one.&lt;/li>
&lt;li>Reenable CommCenter - ssh to your phone, vim
/System/Library/LaunchDaemons/com.apple.CommCenter.plist and delete
the lines you added previously&lt;/li>
&lt;li>Reboot&lt;/li>
&lt;li>Go into Settings/Phone/SIM Applications/Apple Saft and choose Set&lt;/li>
&lt;li>Turn off your phone&lt;/li>
&lt;li>Turn on your phone with Turbo SIM + your subscription and test.&lt;/li>
&lt;/ul></description></item><item><title>Unlocking the iPhone</title><link>https://jasonmadigan.com/posts/2007-08-08-unlocking-the-iphone/</link><pubDate>Wed, 08 Aug 2007 21:00:00 +0000</pubDate><guid>https://jasonmadigan.com/posts/2007-08-08-unlocking-the-iphone/</guid><description>&lt;p>There are two available solutions for unlocking the iPhone at the
moment, and both hinge upon a &amp;ldquo;flaw&amp;rdquo; in the iPhone&amp;rsquo;s baseband. All
shipped iPhones are locked with a PN (personalized network) lock to
at&amp;amp;t. The iPhone, upon startup, enforces this PN lock by reading the
included at&amp;amp;t SIM card&amp;rsquo;s
&lt;a href="http://en.wikipedia.org/wiki/International_Mobile_Subscriber_Identity">IMSI&lt;/a>
two times initially at startup to ensure the IMSI is that of at&amp;amp;t. The
third and subsequent reads of the IMSI during the normal operation of
the iPhone is not checked to ensure it is that of at&amp;amp;t.&lt;/p></description></item><item><title>iPhone JTAG Interface discovered</title><link>https://jasonmadigan.com/posts/2007-08-02-iphone-jtag-interface-discovered/</link><pubDate>Thu, 02 Aug 2007 21:00:00 +0000</pubDate><guid>https://jasonmadigan.com/posts/2007-08-02-iphone-jtag-interface-discovered/</guid><description>&lt;p>George Hotz (geohot) over at #iphone.unlock on Undernet finally uncovered the iPhone Baseband&amp;rsquo;s (S-Gold 2) &lt;a href="http://en.wikipedia.org/wiki/Joint_Test_Action_Group">JTAG&lt;/a> interface, which means an unlocking solution (albeit hardware based for the moment) is within reach. Geohot initally thought the JTAG interface may have been been located in the dock, but his search proved fruitless. Accessing these traces is incredibly difficult because the board has many layers and blind via&amp;rsquo;s, and in the end could only be done by removing the S-Gold 2 from the baseband board altogether, which meant wrecking the board.&lt;/p></description></item><item><title>Why you shouldn't place your trust in someone else's code</title><link>https://jasonmadigan.com/posts/2007-06-03-why-you-shouldnt-place-your-trust-in-someone-elses-code/</link><pubDate>Sun, 03 Jun 2007 21:00:00 +0000</pubDate><guid>https://jasonmadigan.com/posts/2007-06-03-why-you-shouldnt-place-your-trust-in-someone-elses-code/</guid><description>&lt;p>About two years ago I used to regularly play World of Warcraft;
something which I&amp;rsquo;m not particularly proud of. While doing so I managed
and maintained a small community site for our guild. Our guild was
comprised of several members of the somethingawful forums and, as such,
our humour tended to be a little more odd than most. If you&amp;rsquo;ve laughed
at something morally bankrupt on the internet, chances are it originated
on the forums there. After a few months, we formed a chilled out
raidgroup and started regularly raiding dungeons. This meant we&amp;rsquo;d need
some system for distributing loot amongst ourselves lest we find
ourselves in a position where people&amp;rsquo;s
&lt;a href="http://en.wikipedia.org/wiki/Poopsocking">poopsockery&lt;/a> go unrewarded.
We settled on a system called DKP, or Dragon Kill Points. Basically when
you attend raids you bid on loot, and your bid is divided amongst all
those present such that people who attend more get more loot. To
implement this, we settled with a popular PHP script called
&lt;a href="http://www.eqdkp.com">EQDKP&lt;/a> to manage our points.&lt;/p></description></item><item><title>Runt - SVG &amp; Rails</title><link>https://jasonmadigan.com/posts/2007-05-28-runt-svg-and-rails/</link><pubDate>Mon, 28 May 2007 21:00:00 +0000</pubDate><guid>https://jasonmadigan.com/posts/2007-05-28-runt-svg-and-rails/</guid><description>&lt;p>While developing Runt over the past few months it became obvious mid-way
through development that the integration of graphing was somewhat of an
afterthought. That&amp;rsquo;s okay though because we&amp;rsquo;re agile, right?&lt;/p>
&lt;p>Graphing SNMP data in Rails applications (or any other application for
that matter) is difficult for a number of reasons:&lt;/p>
&lt;ul>
&lt;li>
&lt;p>What the hell do I graph?&lt;/p>
&lt;ul>
&lt;li>SNMP data is so varied in scope that we need to narrow our scope
in order to graph something useful. We don&amp;rsquo;t want to graph
&lt;strong>sysName&lt;/strong> against &lt;strong>sysDescr&lt;/strong> because that&amp;rsquo;s stupid and
completely useless.&lt;/li>
&lt;li>Graphs obviously need need be composed of numerical data, so any
SNMP data composed of strings is likely going to be useless.&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>
&lt;p>Right, so what kind of data types should we be looking at (assuming
we&amp;rsquo;re working with protocol version 2c)?&lt;/p></description></item><item><title>Out with the old</title><link>https://jasonmadigan.com/posts/2007-05-21-out-with-the-old/</link><pubDate>Mon, 21 May 2007 21:00:00 +0000</pubDate><guid>https://jasonmadigan.com/posts/2007-05-21-out-with-the-old/</guid><description>&lt;p>In the midst of some downtime, I finally got around to doing something
I&amp;rsquo;d planned to do for 2 or 3 years; give
&lt;a href="http://www.autosystems.ie/">autosystems.ie&lt;/a> a complete
rewrite/redesign. At the moment the homepage is a mess of static content
and things don&amp;rsquo;t get much better when we look at the shopping cart
system. The shopping cart as it stands right now is a pretty hacked up
version of &lt;a href="http://www.oscommerce.com/">OSCommerce&lt;/a> which has been
slowly disintegrating over the past year. No less than 4 times in the
past year I&amp;rsquo;ve had a call from my brother where it had broken
unexpectedly, seemingly without any user interaction whatsoever.&lt;/p></description></item><item><title>Runt - almost ready for release</title><link>https://jasonmadigan.com/posts/2007-05-19-runt-almost-ready-for-release/</link><pubDate>Sat, 19 May 2007 21:00:00 +0000</pubDate><guid>https://jasonmadigan.com/posts/2007-05-19-runt-almost-ready-for-release/</guid><description>&lt;p>For the past few months at &lt;a href="http://www.wit.ie/">college&lt;/a> I&amp;rsquo;ve been
developing a web-based Rails application called Runt; Ruby Network Tool.
It&amp;rsquo;s a small application which displays nicely formatted, up to the
second SNMP data from pretty much any device attached to your network.
If you&amp;rsquo;re after specific data from specific devices, you simply load a
custom MIB for that device and Runt can get data from it. It features a
sort of tacked on ability to graph interface traffic for a given device
also, but it really doesn&amp;rsquo;t feel all that at home in the application
itself at the moment for a variety of reasons. I&amp;rsquo;d like to expand upon
this a lot with later releases, but I find myself hindered with current
browser SVG support (at the moment RUNT uses Gruff to generate static
PNG graphs each pass).&lt;/p></description></item></channel></rss>