<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Posts on Jason Madigan</title><link>/posts/</link><description>Recent content in Posts on Jason Madigan</description><generator>Hugo</generator><language>en-us</language><lastBuildDate>Wed, 01 Jan 2025 12:01:00 +0000</lastBuildDate><atom:link href="/posts/index.xml" rel="self" type="application/rss+xml"/><item><title>Adding shopping list items via Home Assistant voice commands</title><link>/posts/2025-01-01-home-assistant-voice-shopping-lists/</link><pubDate>Wed, 01 Jan 2025 12:01:00 +0000</pubDate><guid>/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>/posts/2017-07-03-declining-google-calendar-events-en-masse/</link><pubDate>Mon, 03 Jul 2017 19:00:00 +0000</pubDate><guid>/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>/posts/2013-07-04-high-altitude-adventures-part-3/</link><pubDate>Thu, 04 Jul 2013 21:00:00 +0000</pubDate><guid>/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>/posts/2013-04-24-high-altitude-adventures-part-2/</link><pubDate>Wed, 24 Apr 2013 21:20:00 +0000</pubDate><guid>/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>/posts/2013-04-02-high-altitude-adventures/</link><pubDate>Tue, 02 Apr 2013 21:00:00 +0000</pubDate><guid>/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>/posts/2011-03-02-jekyll/</link><pubDate>Sat, 02 Mar 2013 21:00:00 +0000</pubDate><guid>/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>/posts/2009-12-16-irish-weather-app-live-on-the-app-store/</link><pubDate>Wed, 16 Dec 2009 21:00:00 +0000</pubDate><guid>/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>/posts/2009-11-25-the-day-a-time-capsule-died/</link><pubDate>Wed, 25 Nov 2009 21:00:00 +0000</pubDate><guid>/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>/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>/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>/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>/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>/posts/2009-03-09-trip-report-fowadublin/</link><pubDate>Mon, 09 Mar 2009 21:00:00 +0000</pubDate><guid>/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>/posts/2009-01-17-using-cookies-to-calculate-a-users-timezone/</link><pubDate>Sat, 17 Jan 2009 21:00:00 +0000</pubDate><guid>/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" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-javascript" data-lang="javascript">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#66d9ef">var&lt;/span> &lt;span style="color:#a6e22e">date&lt;/span> &lt;span style="color:#f92672">=&lt;/span> &lt;span style="color:#66d9ef">new&lt;/span> Date();
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e">// returns offset from GMT in minutes
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e">&lt;/span>&lt;span style="color:#66d9ef">var&lt;/span> &lt;span style="color:#a6e22e">offset&lt;/span> &lt;span style="color:#f92672">=&lt;/span> &lt;span style="color:#a6e22e">date&lt;/span>.&lt;span style="color:#a6e22e">getTimezoneOffset&lt;/span>();
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e">// set a cookie however you see fit, I like to use jQuery.cookie
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e">&lt;/span>&lt;span style="color:#a6e22e">$&lt;/span>.&lt;span style="color:#a6e22e">cookie&lt;/span>(&lt;span style="color:#e6db74">&amp;#39;timezone&amp;#39;&lt;/span>, &lt;span style="color:#a6e22e">offset&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" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-ruby" data-lang="ruby">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#66d9ef">def&lt;/span> &lt;span style="color:#a6e22e">browser_timezone&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#66d9ef">return&lt;/span> &lt;span style="color:#66d9ef">nil&lt;/span> &lt;span style="color:#66d9ef">if&lt;/span> cookies&lt;span style="color:#f92672">[&lt;/span>&lt;span style="color:#e6db74">:timezone&lt;/span>&lt;span style="color:#f92672">].&lt;/span>blank?
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#e6db74">`browser_timezone ||= begin
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#e6db74"> min = cookies[:timezone].to_i
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#e6db74"> TimeZone[(min + (-2 * min)).minutes]
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#e6db74"> end
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#e6db74">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>/posts/2008-12-27-an-iphone-app-is-born/</link><pubDate>Sat, 27 Dec 2008 21:00:00 +0000</pubDate><guid>/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>Ruby Christmas</title><link>/posts/2008-12-21-ruby-christmas/</link><pubDate>Sun, 21 Dec 2008 21:00:00 +0000</pubDate><guid>/posts/2008-12-21-ruby-christmas/</guid><description>&lt;p>Thanks &amp;ldquo;whoever you are&amp;rdquo; :http://pastie.org/344030.&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-ruby" data-lang="ruby">&lt;span style="display:flex;">&lt;span> &lt;span style="color:#e6db74">&amp;#34;/|&amp;#34;&lt;/span>\
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#e6db74">&amp;#34;/wl)e&amp;#34;&lt;/span>;eval(\
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#e6db74">&amp;#34;A | A&amp;#34;&lt;/span>\
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#e6db74">&amp;#34;A | A&amp;#34;&lt;/span>\
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> \
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#e6db74">&amp;#34;InHhL&amp;#34;&lt;/span>\
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#e6db74">&amp;#34;,Z,%w{-&amp;#34;&lt;/span>\
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#e6db74">&amp;#34;,Y&amp;amp;/LH,L*&amp;#34;&lt;/span>\
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#e6db74">&amp;#34;cCnd,Hh&amp;amp;/d,&amp;#34;&lt;/span>\
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#e6db74">&amp;#34;YCB/Hh,Y&amp;amp;YHh,&amp;#34;&lt;/span>\
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#e6db74">&amp;#34;L&amp;amp;xHh,L*v*nHh,*&amp;#34;&lt;/span>\
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#e6db74">&amp;#34;&amp;amp;ghHh,n&amp;amp;nHh,H*nHh&amp;#34;&lt;/span>\
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#e6db74">&amp;#34;,*q*v*nHh,Hw*qv*Hh}&amp;#34;&lt;/span>\
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#e6db74">&amp;#34;Iq&amp;amp;n*L,Z,[,n&amp;amp;qK,n&amp;amp;qK,&amp;#34;&lt;/span>\
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#e6db74">&amp;#34;@TwC,LH/&amp;amp;ng,gLBbL@K,@Th&amp;#34;&lt;/span>\
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#e6db74">&amp;#34;/**,YC/k*d,Hh/*QdL@K,@FCB&amp;#34;&lt;/span>\
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#e6db74">&amp;#34;/,cQqq&amp;amp;ng,=/CcL@K,@F&amp;amp;v*,RBb&amp;#34;&lt;/span>\
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#e6db74">&amp;#34;y,g*mL!@K,@S&amp;amp;x,mQ/LhQqL,dBm=&amp;amp;&amp;#34;&lt;/span>\
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#e6db74">&amp;#34;ng@K,@S*v*n,dBckL,Q-Hy=&amp;amp;ng@K,@E&amp;#34;&lt;/span>\
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#e6db74">&amp;#34;&amp;amp;ghH,d&amp;amp;/L,Q-gqCbb&amp;amp;ng@K,@N&amp;amp;n*,/Qng&amp;#34;&lt;/span>\
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#e6db74">&amp;#34;*L,LH*==&amp;amp;ng@K,@T*n,H/yL,Q-cQHch&amp;amp;ng@&amp;#34;&lt;/span>\
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#e6db74">&amp;#34;K,@Eq*v*n,&amp;amp;CL,=&amp;amp;=&amp;amp;ng@K,@Tw*qv*,mCnk*y&amp;#34;&lt;/span>\
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#e6db74">&amp;#34;L,=QHch&amp;amp;ng@,]IDAJJA2)J*Qch,dC,U&amp;amp;UI=/&amp;amp;nH&amp;#34;&lt;/span>\
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#e6db74">&amp;#34;,@&lt;/span>&lt;span style="color:#ae81ff">\n&lt;/span>&lt;span style="color:#e6db74">On,Hh*,&lt;/span>&lt;span style="color:#ae81ff">\#&lt;/span>&lt;span style="color:#e6db74">{nHhL[&amp;amp;]},dQy,CY,MQHzmQL,my,&amp;#34;&lt;/span>\
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#e6db74">&amp;#34;H/B*,qCv*,gQv*,HC,m*:&lt;/span>&lt;span style="color:#ae81ff">\n&lt;/span>&lt;span style="color:#e6db74">@I&amp;amp;JdCwnHCD2),dC,UjU&amp;#34;&lt;/span>\
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#e6db74">&amp;#34;I=/&amp;amp;nH,@,,,&lt;/span>&lt;span style="color:#ae81ff">\#&lt;/span>&lt;span style="color:#e6db74">{q&amp;amp;n*L[j]}&lt;/span>&lt;span style="color:#ae81ff">\n&lt;/span>&lt;span style="color:#e6db74">@I*ndI=/&amp;amp;nHDD&amp;amp;,ZZ,A)&amp;#34;&lt;/span>\
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#e6db74">&amp;#34;?,@,,&amp;#34;&lt;/span>\
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#e6db74">&amp;#34;,G@,:&amp;#34;&lt;/span>\
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#e6db74">&amp;#34;,@,,,&amp;#34;&lt;/span>\
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#e6db74">&amp;#34;Gnd,Q&amp;#34;&lt;/span>\
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#e6db74">&amp;#34;@)I=/&amp;#34;&lt;/span>\
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#e6db74">&amp;#34;&amp;amp;nH,@,n*w,v*/L&amp;amp;Cn,CY,RBby!&lt;/span>&lt;span style="color:#ae81ff">\n&lt;/span>&lt;span style="color:#e6db74">@I*nd&amp;#34;&lt;/span>\
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#e6db74">&amp;#34;I&amp;#34;&lt;/span>&lt;span style="color:#f92672">.&lt;/span>tr(&lt;span style="color:#e6db74">&amp;#39; ID/VHLYGBqCA&amp;amp;|*UQJ=Z@K,&amp;#39;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#e6db74">&amp;#39;+;(r/tsfAulo1i8e|a.p=&amp;#34;, &amp;#39;&lt;/span>))
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div></description></item><item><title>JavaScript flexes its muscles</title><link>/posts/2008-09-04-javascript-flexes-its-muscles/</link><pubDate>Thu, 04 Sep 2008 21:00:00 +0000</pubDate><guid>/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>/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>/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>iRot - iPhone development is fun</title><link>/posts/2008-02-18-irot-iphone-development-is-fun/</link><pubDate>Mon, 18 Feb 2008 21:00:00 +0000</pubDate><guid>/posts/2008-02-18-irot-iphone-development-is-fun/</guid><description>&lt;p>Over the weekend I decided to try my hand at a little iPhone
development. My Objective-C skill is non-existant, and my C skill is
incredibly rusty - but I pressed on. First up was installation of the
toolchain required to compile native applications. This one was tough,
very tough. After much swearing and shouting, I finally managed to get
it to install. The iPhone dev team&amp;rsquo;s official instructions were of help
right up until&lt;/p></description></item><item><title>An end to a ridiculous restore path</title><link>/posts/2008-02-12-an-end-to-a-ridiculous-restore-path/</link><pubDate>Tue, 12 Feb 2008 21:00:00 +0000</pubDate><guid>/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>/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>/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>/posts/2008-01-25-1-1-3-ipsf-keeps-on-truckin/</link><pubDate>Fri, 25 Jan 2008 21:00:00 +0000</pubDate><guid>/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>/posts/2008-01-24-lightweight-fast-rails-stack-thin-and-nginx/</link><pubDate>Thu, 24 Jan 2008 21:00:00 +0000</pubDate><guid>/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>/posts/2008-01-18-1-1-2-otb-unlocked-hardware/</link><pubDate>Fri, 18 Jan 2008 21:00:00 +0000</pubDate><guid>/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>Dearest NVIDIA,</title><link>/posts/2008-01-04-dearest-nvidia/</link><pubDate>Fri, 04 Jan 2008 21:00:00 +0000</pubDate><guid>/posts/2008-01-04-dearest-nvidia/</guid><description>&lt;p>Please please please fire whoever is in charge of naming conventions. I
present to you, dear readers, the 8800 series in order of performance:&lt;/p>
&lt;ul>
&lt;li>8800 GS 384MB&lt;/li>
&lt;li>8800 GS 768MB&lt;/li>
&lt;li>8800 GTS 320MB&lt;/li>
&lt;li>8800 GTS 640MB&lt;/li>
&lt;li>8800 GT 256MB&lt;/li>
&lt;li>8800 GT 512MB&lt;/li>
&lt;li>8800 GTS 512MB&lt;/li>
&lt;li>8800 GTX 768MB&lt;/li>
&lt;li>8800 ULTRA 768MB&lt;/li>
&lt;/ul>
&lt;p>Remember the old days when explaining what graphics card you had went
something like this?&lt;/p>
&lt;p>&amp;ldquo;So yeah, what kind of graphics card do you have?&amp;rdquo;&lt;/p></description></item><item><title>ROT13 in Ruby</title><link>/posts/2007-12-19-rot13-in-ruby/</link><pubDate>Wed, 19 Dec 2007 21:00:00 +0000</pubDate><guid>/posts/2007-12-19-rot13-in-ruby/</guid><description>&lt;p>Ruby&amp;rsquo;s string lib is pretty cool ok:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-ruby" data-lang="ruby">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#e6db74">&amp;#34;babby&amp;#34;&lt;/span>&lt;span style="color:#f92672">.&lt;/span>tr(&lt;span style="color:#e6db74">&amp;#34;A-Ma-mN-Zn-z&amp;#34;&lt;/span>,&lt;span style="color:#e6db74">&amp;#34;N-Zn-zA-Ma-m&amp;#34;&lt;/span>)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f92672">=&amp;gt;&lt;/span> &lt;span style="color:#e6db74">&amp;#34;onool&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div></description></item><item><title>iPhone bootloader changes</title><link>/posts/2007-11-19-iphone-bootloader-changes/</link><pubDate>Mon, 19 Nov 2007 21:00:00 +0000</pubDate><guid>/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>Meteor GPRS/EDGE fix</title><link>/posts/2007-10-07-meteor-gprs-edge-fix/</link><pubDate>Sun, 07 Oct 2007 21:00:00 +0000</pubDate><guid>/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" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-javascript" data-lang="javascript">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#66d9ef">function&lt;/span> &lt;span style="color:#a6e22e">FindProxyForURL&lt;/span>(&lt;span style="color:#a6e22e">url&lt;/span>, &lt;span style="color:#a6e22e">host&lt;/span>) {
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#66d9ef">if&lt;/span> (&lt;span style="color:#a6e22e">isInNet&lt;/span>(&lt;span style="color:#a6e22e">myIpAddress&lt;/span>(), &lt;span style="color:#e6db74">&amp;#34;10.0.0.0&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;255.0.0.0&amp;#34;&lt;/span>)) {
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#66d9ef">return&lt;/span> &lt;span style="color:#e6db74">&amp;#34;PROXY 10.85.85.85:8799&amp;#34;&lt;/span>;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> } &lt;span style="color:#66d9ef">else&lt;/span> {
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#66d9ef">return&lt;/span> &lt;span style="color:#e6db74">&amp;#34;DIRECT&amp;#34;&lt;/span>;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> }
&lt;/span>&lt;/span>&lt;span style="display:flex;">&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></description></item><item><title>Turbo SIM working with downgraded 1.1.1</title><link>/posts/2007-10-07-turbo-sim-working-with-downgraded-1-1-1/</link><pubDate>Sun, 07 Oct 2007 21:00:00 +0000</pubDate><guid>/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>Symbolic links are pretty cool - read access to the 1.1.1 filesystem</title><link>/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>/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" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>cd /var/root
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>mv Media backup
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>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>/posts/2007-09-28-turbo-sim-hardware-unlock-remain-working/</link><pubDate>Fri, 28 Sep 2007 21:00:00 +0000</pubDate><guid>/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>/posts/2007-09-27-iphone-relocked/</link><pubDate>Thu, 27 Sep 2007 21:00:00 +0000</pubDate><guid>/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>iPhone - Voicemail Notification</title><link>/posts/2007-09-15-iphone-voicemail-notification/</link><pubDate>Sat, 15 Sep 2007 21:00:00 +0000</pubDate><guid>/posts/2007-09-15-iphone-voicemail-notification/</guid><description>&lt;p>I&amp;rsquo;ve noticed some weird issues regarding certain kinds of SMS messages
not being delivered properly to my iPhone. Specifically, voicemail alert
alerts sent by SMS never land in my inbox at all. After doing a little
digging, it seems that the iPhone&amp;rsquo;s baseband has trouble interpreting
incoming SMS messages coming from &lt;a href="http://en.wikipedia.org/wiki/Short_code">short
codes&lt;/a>.&lt;/p>
&lt;p>Since short codes are used quite a bit in Europe for promotions, banking
and the like I should think that the firmware shipping on European
iPhone&amp;rsquo;s will have fixed this. In the meantime we&amp;rsquo;ll have to keep
digging to try to find a workaround.&lt;/p></description></item><item><title>iPhone - Voicemail Button</title><link>/posts/2007-09-13-iphone-voicemail-button/</link><pubDate>Thu, 13 Sep 2007 21:00:00 +0000</pubDate><guid>/posts/2007-09-13-iphone-voicemail-button/</guid><description>&lt;p>You can use your iPhone&amp;rsquo;s Voicemail button to call your local carriers
voicemail number by doing the following:&lt;/p>
&lt;ul>
&lt;li>Disable your SIM PIN, if enabled.&lt;/li>
&lt;li>SSH into your iPhone - I&amp;rsquo;m going to assume your iPhone has been
jailbroken, has SSH installed and the latest BSD Subsystem
installed.&lt;/li>
&lt;li>The latest BSD Subsystem (1.5) comes with minicom, but you&amp;rsquo;ll need
to generate a configuration file for it to interact with the
baseband. You&amp;rsquo;ll need to create &lt;code>/local/etc/&lt;/code> in &lt;code>/usr/&lt;/code>.&lt;/li>
&lt;li>In &lt;code>/usr/local/etc/&lt;/code>, run &lt;code>nano minirc.dfl&lt;/code> and paste
&lt;code>pu port /dev/tty.baseband&lt;/code>&lt;/li>
&lt;li>Save the file, &lt;code>CTRL-O&lt;/code>, exit nano &lt;code>CTRL-X&lt;/code>&lt;/li>
&lt;li>Disable the commcenter -
&lt;code>launchctl unload -w /System/Library/LaunchDaemons/com.apple.CommCenter.plist&lt;/code>&lt;/li>
&lt;li>Run@ minicom@&lt;/li>
&lt;li>Run@ AT+CSVM=1,&amp;ldquo;171&amp;rdquo; `where 171 is your carriers voicemail number
&lt;ul>
&lt;li>Exit minicom - &lt;code>CTRL-a&lt;/code>, then `q@&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>Restart the commcenter
&lt;code>- launchctl load -w /System/Library/LaunchDaemons/com.apple.CommCenter.plist&lt;/code>&lt;/li>
&lt;li>Done!&lt;/li>
&lt;/ul></description></item><item><title>Mail.app - IMAP Niggles</title><link>/posts/2007-08-24-mail-app-imap-niggles/</link><pubDate>Fri, 24 Aug 2007 21:00:00 +0000</pubDate><guid>/posts/2007-08-24-mail-app-imap-niggles/</guid><description>&lt;p>I&amp;rsquo;d always used one single email account and tried, wherever possible,
to keep these accounts completely separate from one another. At work I
now find myself using two IMAP accounts, one for work and one personal
account. Setting the accounts up is a doddle, but I noticed that
messages I was sending from my work account where not getting stored in
my mailbox.&lt;/p>
&lt;p>After some fiddling I found that to have messages sent from one account
stored in the sent mailbox for that account, you need to explicitly tell
Mail.app what each of the server-side folders are to be used for. To
specify this, click on them and go to Mailbox &amp;gt;Use this mailbox for &amp;gt;
Sent/Drafts/Trash. I just thought I&amp;rsquo;d share in case anyone else comes up
against this problem.&lt;/p></description></item><item><title>Guide to unlocking your iPhone with a Turbo SIM</title><link>/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>/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;h1 id="what-you-will-need">What you will need&lt;/h1>
&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>/posts/2007-08-15-iphone-working-perfectly-with-o2-ireland/</link><pubDate>Wed, 15 Aug 2007 21:00:00 +0000</pubDate><guid>/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>/posts/2007-08-13-turbosim-iphone-unlock-confirmed-working/</link><pubDate>Mon, 13 Aug 2007 21:00:00 +0000</pubDate><guid>/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>/posts/2007-08-08-unlocking-the-iphone/</link><pubDate>Wed, 08 Aug 2007 21:00:00 +0000</pubDate><guid>/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>Even more iPhone first impressions (because I own this one)</title><link>/posts/2007-08-02-even-more-iphone-first-impressions-because-i-own-this-one/</link><pubDate>Thu, 02 Aug 2007 21:00:00 +0000</pubDate><guid>/posts/2007-08-02-even-more-iphone-first-impressions-because-i-own-this-one/</guid><description>&lt;p>I had a nice surprise waiting for me when I arrived home yesterday. I was like a kid at Christmas opening the box for this thing. I hadn&amp;rsquo;t been so excited about a gadget for a long time. As mentioned a few posts ago, I&amp;rsquo;d gotten to play with one at work over the past few weeks but nothing compares to owning one and getting to play with one on your own time. The design, as with all things Apple, is elegant, simple and gorgeous. The screen is amazingly bright and it&amp;rsquo;s resolution of 320x480 at 160PPI is incredible. In my spare time this evening I&amp;rsquo;ve toyed a little with some development/design for an iPhone interface for Runt. I&amp;rsquo;ll post some more about this over the next few days or whenever I get a chance. It means so much to have a real browser in a mobile phone.&lt;/p></description></item><item><title>iPhone JTAG Interface discovered</title><link>/posts/2007-08-02-iphone-jtag-interface-discovered/</link><pubDate>Thu, 02 Aug 2007 21:00:00 +0000</pubDate><guid>/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>Quick &amp; Easy Wordpress Optimisation</title><link>/posts/2007-07-23-quick-and-easy-wordpress-optimisation/</link><pubDate>Mon, 23 Jul 2007 21:00:00 +0000</pubDate><guid>/posts/2007-07-23-quick-and-easy-wordpress-optimisation/</guid><description>&lt;p>Here&amp;rsquo;s two quick and easy steps you can take to increase your Wordpress
sites speed:&lt;/p>
&lt;h2 id="enable-wordpresss-object-caching">Enable Wordpress&amp;rsquo;s Object Caching&lt;/h2>
&lt;p>Add define(&amp;lsquo;ENABLE_CACHE&amp;rsquo;, true); to your wp-config.php to enable
Wordpress&amp;rsquo;s built in &lt;a href="http://codex.wordpress.org/Function_Reference/WP_Cache">object
caching&lt;/a> and
Wordpress will begin caching all sorts of database queries resulting in
an instantaneous performance boost.&lt;/p>
&lt;h2 id="install-wp-cache-2">Install WP-Cache 2&lt;/h2>
&lt;p>&lt;a href="http://mnm.uib.es/gallir/wp-cache-2/">WP-Cache&lt;/a> is a plugin which
serializes and caches posts to disk for quick retrieval. It&amp;rsquo;s also smart
enough to keep serialized data on the disk up to date so it won&amp;rsquo;t serve
stale content.&lt;/p></description></item><item><title>iPhone - First Impressions</title><link>/posts/2007-07-11-iphone-first-impressions/</link><pubDate>Wed, 11 Jul 2007 21:00:00 +0000</pubDate><guid>/posts/2007-07-11-iphone-first-impressions/</guid><description>&lt;p>At work today I finally got my hands on an iPhone. It was everything I&amp;rsquo;d
hoped for. Beautiful design, much smaller than I&amp;rsquo;d imagined and pretty
sturdy. I played around with viewing a movie, playing with the camera
and generally poking about the parts of the phone which didn&amp;rsquo;t require
the GSM radio. I want one. I mean, I wanted one before but without
having held and used one it&amp;rsquo;s very easy to dismiss purchasing it by
saying to yourself &amp;ldquo;Oh, I&amp;rsquo;ll wait, you know firsthand what first gen
Apple hardware is like&amp;rdquo; or &amp;ldquo;But, but 3G!&amp;rdquo;. I&amp;rsquo;m very tempted to take the
plunge and import one in the hope that the radio will get unlocked quite
soon.&lt;/p></description></item><item><title>Oh Steve</title><link>/posts/2007-06-13-oh-steve/</link><pubDate>Wed, 13 Jun 2007 21:00:00 +0000</pubDate><guid>/posts/2007-06-13-oh-steve/</guid><description>&lt;p>You cad, you.&lt;/p>
&lt;blockquote>
&lt;p>But but but you guys you don&amp;rsquo;t understand! A poorly written
application could crash AT&amp;amp;T&amp;rsquo;s network!&lt;/p>
&lt;/blockquote>
&lt;p>I&amp;rsquo;d sort of expected that Apple would end up giving developers access to
a Widget-like API for the iPhone. It&amp;rsquo;s disappointing that it turned out
to be true but I guess it&amp;rsquo;s sort of good news for dorky web developers
like me. It&amp;rsquo;s still a complete cop-out, though. Regardless of how neat
AJAX Web 2.0 (jesus I really hate referring to things as Web 2.0)
applications can be made to be to look and perform, it&amp;rsquo;s still
absolutely no substitute to having access to OS X&amp;rsquo;s core cocoa APIs such
as Core Image, Core Video, Core Audio and Core Animation (well, assuming
the iPhone is running Leopard). Which reminds me, I really should get to
leafing through that Objective-C book I bought a while ago.&lt;/p></description></item><item><title>Why you shouldn't place your trust in someone else's code</title><link>/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>/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>/posts/2007-05-28-runt-svg-and-rails/</link><pubDate>Mon, 28 May 2007 21:00:00 +0000</pubDate><guid>/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>/posts/2007-05-21-out-with-the-old/</link><pubDate>Mon, 21 May 2007 21:00:00 +0000</pubDate><guid>/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>Bloggin' the Blogosphere (Web two point oh)</title><link>/posts/2007-05-19-bloggin-the-blogosphere-web-two-point-oh/</link><pubDate>Sat, 19 May 2007 21:00:00 +0000</pubDate><guid>/posts/2007-05-19-bloggin-the-blogosphere-web-two-point-oh/</guid><description>&lt;p>I never thought I&amp;rsquo;d actually have any use for a blog (and to be honest
I&amp;rsquo;d always found myself struggling to see why other people needed them
too), but I guess what with working on new projects and having finally
completed college I could do with some place to organise my ramblings,
so here we are.&lt;/p>
&lt;p>I&amp;rsquo;d been meaning to put together an online portfolio with quite some
time now, so I guess now is as good a time as any.&lt;/p></description></item><item><title>Runt - almost ready for release</title><link>/posts/2007-05-19-runt-almost-ready-for-release/</link><pubDate>Sat, 19 May 2007 21:00:00 +0000</pubDate><guid>/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>