<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0"
    xmlns:content="http://purl.org/rss/1.0/modules/content/"
    xmlns:wfw="http://wellformedweb.org/CommentAPI/"
    xmlns:dc="http://purl.org/dc/elements/1.1/"
    xmlns:atom="http://www.w3.org/2005/Atom">
    
    

    <channel>
        <title>Slashdev</title>
        <atom:link href="http://slashdev.ca/feed.xml" rel="self" type="application/rss+xml" />
        <link>http://slashdev.ca</link>
        <description>Hardware, software, and just general tinkering</description>
        <pubDate>Thu, 02 Apr 2015 00:00:00 -0400</pubDate>
        <language>en-us</language>
        
        <item>
            <title>2.5 Steps to Perfect Bug Reports</title>
            <link>http://slashdev.ca/2015/04/02/2-5-steps-to-perfect-bug-reports/</link>
            <pubDate>Thu, 02 Apr 2015 00:00:00 -0400</pubDate>
            <guid isPermaLink="true">http://slashdev.ca/2015/04/02/2-5-steps-to-perfect-bug-reports/</guid>
            <author>jiGGaK</author>
            <description><![CDATA[<p>So you found a bug, that’s great! I want to hear from you. But first we need to have a talk. Yes, I know there are more than 140 characters below but please be patient and read all the words.</p>
<p>Why should you read all the words? It will make your developers so very happy. We are kind of like your car mechanic. You want to be friends with us, it’s in your interest. And we want to be friends too, it makes the whole experience better for everyone (bad bug reports make us <del>suicidal</del> homicidal).</p>
<h2 id="the-steps">The Steps</h2>
<p><strong>Step 0.5</strong>: Get the latest version from staging. Are you in a browser? Reload and/or clear cache. Does the software download something in order to function? Make sure it has the freshest copy.</p>
<p>Why step <em>0.5</em>? Because doing this is half way to finishing step 1.</p>
<p><strong>Step 1</strong>: Reproduce the bug. If you can’t reproduce, then I don’t really want to know about it right now. If you think you have valuable details to document (e.g. screen shots, error logs, data files) then post them in an unassigned bug report and indicate that you were unable to reproduce. If the bug is intermittent say so in the bug report.</p>
<p><strong>Step 2</strong>: Document and report the bug. I need details: links you followed, data you entered, buttons you clicked/tapped. If you are able to determine that a specific input or action is crucial to causing the bug, even better.</p>
<p>Are you in a browser? Browser version (saying <em>“latest version”</em> here is OK)  and platform version (e.g. Windows 8.1, Mac 10.10.2, Android 5.0.2, etc).</p>
<p>If you followed step 0.5 then good news! I don’t need to know the specific version of the software you were using. If for some reason you had a good reason not to follow step 0.5, then provide any relevant version numbers.</p>
]]></description>
        </item>
        
        <item>
            <title>Linux Nerd Coping in Windows</title>
            <link>http://slashdev.ca/2012/09/30/linux-nerd-coping-in-windows/</link>
            <pubDate>Sun, 30 Sep 2012 00:00:00 -0400</pubDate>
            <guid isPermaLink="true">http://slashdev.ca/2012/09/30/linux-nerd-coping-in-windows/</guid>
            <author>jiGGaK</author>
            <description><![CDATA[<figure class="">

   <a href="/articles/linux-nerd-coping-in-windows/screenshot.png" target="__blank">
      <img class="img-responsive img-thumbnail" src="/articles/linux-nerd-coping-in-windows/screenshot_width750.png">
   </a>

   <figcaption class="caption">Dark theme goodness</figcaption>
</figure>


<p>I run a triple boot setup with Windows 7, Mac OS X 10.7, and Arch Linux.  Linux
is my go-to OS but I get most of my paid work from Windows .NET and iOS
development. As a result I’ve had to spend lots of time in every ones favorite
non-unix OS. I’ve compiled a few tricks that make using Windows 7 a bit more
bearable (maybe even enjoyable) for the Linux nerd.</p>
]]></description>
        </item>
        
        <item>
            <title>SNES USB Gamepad</title>
            <link>http://slashdev.ca/2011/10/20/snes-usb-gamepad/</link>
            <pubDate>Thu, 20 Oct 2011 00:00:00 -0400</pubDate>
            <guid isPermaLink="true">http://slashdev.ca/2011/10/20/snes-usb-gamepad/</guid>
            <author>jiGGaK</author>
            <description><![CDATA[<figure class="">

   <a href="/articles/snes-usb-gamepad/gamepad.jpg" target="__blank">
      <img class="img-responsive img-thumbnail" src="/articles/snes-usb-gamepad/gamepad_width750.jpg">
   </a>

   <figcaption class="caption">Ready for some Mega Man 7</figcaption>
</figure>


<p>I was inspired for this build by an instructables user who used my
<a href="http://slashdev.ca/2010/05/25/ps3-gamepad-with-home-button">teensy ps3 gamepad</a> code to build a
<a href="http://www.instructables.com/id/SNES-Teensy-USBPS3-Gamepad/">SNES USB controller for the PS3</a>.</p>
<p>I can’t say enough good things about the <a href="http://www.pjrc.com/teensy/">Teensy</a>
development board. It’s affordable and just so damn versatile.</p>
<p><a href="https://github.com/johnburkert/YeOldeJoystick">John’s code</a> is great and all
but I just needed something to work with my <a href="http://slashdev.ca/2008/08/11/lean-mean-mediacenter-machine/">Linux media center PC</a>
so I set out to create a simpler version. Click through for some build tips,
links to the code, and a few more photos.</p>
]]></description>
        </item>
        
        <item>
            <title>ATX PSU into Bench PSU</title>
            <link>http://slashdev.ca/2011/09/24/atx-psu-into-bench-psu/</link>
            <pubDate>Sat, 24 Sep 2011 00:00:00 -0400</pubDate>
            <guid isPermaLink="true">http://slashdev.ca/2011/09/24/atx-psu-into-bench-psu/</guid>
            <author>jiGGaK</author>
            <description><![CDATA[<figure class="">

   <a href="/articles/atx-psu-into-bench-psu/IMG_4019.jpg" target="__blank">
      <img class="img-responsive img-thumbnail" src="/articles/atx-psu-into-bench-psu/IMG_4019_width750.jpg">
   </a>

   <figcaption class="caption">Bench-top power supply</figcaption>
</figure>


<p>I stumbled upon this video by Phil Levchenko showing how to turn an
<a href="http://jumperone.com/2011/06/atx-power-supply-tutorial/">ATX power supply into a bench power supply</a>.
I had an old PSU laying around and thought this would be a perfect way to give
it a new life. Phil’s video is great, but I found the video tutorial format a
bit tricky to follow at times.</p>
<p>Click through for some pictures, tips and diagrams that you may find helpful.</p>
]]></description>
        </item>
        
        <item>
            <title>Doughduino - High-tech Bread Making</title>
            <link>http://slashdev.ca/2011/09/15/doughduino-high-tech-bread-making/</link>
            <pubDate>Thu, 15 Sep 2011 00:00:00 -0400</pubDate>
            <guid isPermaLink="true">http://slashdev.ca/2011/09/15/doughduino-high-tech-bread-making/</guid>
            <author>jiGGaK</author>
            <description><![CDATA[<figure class="left">

   <a href="/articles/doughduino/doughduino.jpg" target="__blank">
      <img class="img-responsive img-thumbnail" src="/articles/doughduino/doughduino_height300.jpg">
   </a>

   <figcaption class="caption">Arduino - It Only Does Everything!</figcaption>
</figure>


<p>Several months ago a friend of mine really into making bread inquired about a
possible solution for proving bread dough and making pre-ferment starters in
the winter. You see, here in Canada winters are cold. Very cold. And heat isn’t
free. Yeast likes to be in nice warm moist conditions, but my wallet likes to
be in the cold with a thick sweater.</p>
<p>So the goal was to create an efficient device that monitors temperature and
switches a heat source on/off as necessary to maintain a constant temperature
inside of an enclosed space such as a camping cooler.</p>
<p>And here is the result! It’s based on the bare
<a href="http://itp.nyu.edu/physcomp/Tutorials/ArduinoBreadboard">minimum circuitry needed for an Arduino compatible board</a>
and then builds on top of that; character LCD display, two buttons, DS18S20
temperature sensor, and a small relay for switching an AC lamp.</p>
]]></description>
        </item>
        
        <item>
            <title>Hide Toolbar Buttons in Nautilus 3.x</title>
            <link>http://slashdev.ca/2011/05/03/hide-toolbar-buttons-in-nautilus-3-x/</link>
            <pubDate>Tue, 03 May 2011 00:00:00 -0400</pubDate>
            <guid isPermaLink="true">http://slashdev.ca/2011/05/03/hide-toolbar-buttons-in-nautilus-3-x/</guid>
            <author>jiGGaK</author>
            <description><![CDATA[<p>   <img class="img-responsive " src="/articles/hide-toolbar-buttons-in-nautilus-3-x/nautilus.png"></p>
<p>Are you as annoyed as I am about the superfluous screen real estate consumed
by the toolbar buttons in Nautilus 3? Of course you are, that’s why the 
<a href="http://www.google.com">oracle</a> brought you here.</p>
<p>To remove them, modify <code>/usr/share/nautilus/ui/nautilus-toolbar-ui.xml</code> and
comment out all the <code>&lt;toolitem&gt;</code> elements.</p>
<pre><code class="lang-xml"><span class="tag">&lt;<span class="name">ui</span>&gt;</span>
<span class="tag">&lt;<span class="name">toolbar</span> <span class="attr">name</span>=<span class="string">"Toolbar"</span>&gt;</span>
    <span class="comment">&lt;!--&lt;toolitem name="Back" action="Back"/&gt;
    &lt;toolitem name="Forward" action="Forward"/&gt;
    &lt;toolitem name="Search" action="Search"/&gt;--&gt;</span>
<span class="tag">&lt;/<span class="name">toolbar</span>&gt;</span>
<span class="tag">&lt;/<span class="name">ui</span>&gt;</span>
</code></pre>
]]></description>
        </item>
        
        <item>
            <title>Sample - Portable Mobile Game Code</title>
            <link>http://slashdev.ca/2011/04/26/sample-portable-mobile-game-code/</link>
            <pubDate>Tue, 26 Apr 2011 00:00:00 -0400</pubDate>
            <guid isPermaLink="true">http://slashdev.ca/2011/04/26/sample-portable-mobile-game-code/</guid>
            <author>jiGGaK</author>
            <description><![CDATA[<p>I’ve decided I want to try and break into the market of mobile gaming but I
needed a way to evaluate how practical it was to target multiple platforms at
once. Android and iOS are the main players right now but keeping myself open
to others seems like it would be a prudent step. And writing <em>everything</em>
from scratch multiple times is not an option.</p>
<p>If we look at all of the popular mobile platforms, they each provide some sort
of native development kit all based around a GCC toolchain with OpenGL ES 2.0.
So obviously we want to use as much portable C/C++ as possible, but what about
all the little (and not so little) differences between the platforms? I needed
to get my hands dirty and write a proof of concept.</p>
<p>   <img class="img-responsive " src="/articles/sample-portable-mobile-game-code/balldemo.png"></p>
<p>The result is a simple <a href="https://github.com/jiggak/balldemo/">bouncing ball</a>
simulation and it runs on Android, iOS, and desktop (Mac, Windows, Linux).
<a href="http://www.box2d.org/">Box2D</a> is used for the physics engine, and the rest
of the code is licensed under the permissive <a href="http://en.wikipedia.org/wiki/Beerware">beerware license</a>;
please respect the license and buy me a beer… if we ever meet.</p>
]]></description>
        </item>
        
        <item>
            <title>Canon 2 Stage Shutter Switch</title>
            <link>http://slashdev.ca/2011/03/05/canon-2-stage-shutter-switch/</link>
            <pubDate>Sat, 05 Mar 2011 00:00:00 -0500</pubDate>
            <guid isPermaLink="true">http://slashdev.ca/2011/03/05/canon-2-stage-shutter-switch/</guid>
            <author>jiGGaK</author>
            <description><![CDATA[<figure class="">

   <a href="/articles/canon-2-stage-shutter-switch/IMG_3162.jpg" target="__blank">
      <img class="img-responsive img-thumbnail" src="/articles/canon-2-stage-shutter-switch/IMG_3162_width750.jpg">
   </a>

   <figcaption class="caption">Yet another use for an arcade button</figcaption>
</figure>


<p>Here is a nifty weekend project. It’s a 2-stage shutter remote for my Canon T2i
DSLR. The red push button is a full press and the arcade button is a half press.
Since it requires less force to push the arcade button than it does the red push
button, it functions exactly as the cameras built-in shutter switch. I got the
inspiration for this project from a <a href="http://www.diyphotography.net/release_cable_for_canon_dslr">guide on diyphotography.net</a>.</p>
]]></description>
        </item>
        
        <item>
            <title>BlackBerry Push Service - Fail</title>
            <link>http://slashdev.ca/2011/02/01/blackberry-push-service-fail/</link>
            <pubDate>Tue, 01 Feb 2011 00:00:00 -0500</pubDate>
            <guid isPermaLink="true">http://slashdev.ca/2011/02/01/blackberry-push-service-fail/</guid>
            <author>jiGGaK</author>
            <description><![CDATA[<figure class="">

   <img class="img-responsive" src="/articles/blackberry-push-service-fail/graph.png">

   <figcaption class="caption">Everyone loves graphs…</figcaption>
</figure>


<p>This really is depressing. Being Canadian and all I really want to root for the
home team. Moreover I hate polluting my blog with complaints about BlackBerry
development. Alas, here we go again…</p>
<p>Todays topic: <a href="http://www.blackberry.com/developers/pushservice">BlackBerry Push Service</a>.
BlackBerry push can be routed through <em>BlackBerry Internet Service</em> or it can route through a <em>BlackBerry Enterprise Server</em>. The difference? BIS is the one you want to use if you are a developer targeting the consumer market at large. To route push notifications through BIS, you must <a href="https://www.blackberry.com/profile/?eventId=8121">request</a> to evaluate the push service. It also appears you must submit another request when you want to go live, but I haven’t made it that far.</p>
<p>This is where the problem lies. I have submitted three requests in the past two weeks with no response. Each time I submit one, I’m greeted with a friendly message:</p>
<blockquote>
<p><em>“Thank you, someone will contact you in <strong>two business days</strong>“</em></p>
</blockquote>
<p>Bottom line I can’t finish OR test my app without access to this service.</p>
<h2 id="what-about-the-other-guys-">What about the other guys?</h2>
<p>This is where it gets sad. The software I’m working on is also being developed
in parallel for Android and iOS. So what does the process look like for the
other platforms?</p>
<h3 id="android">Android</h3>
<p>The <a href="http://code.google.com/android/c2dm/">Android Cloud to Device Messaging</a>
framework also requires developers to signup to access the service. The
difference being two seconds after you fill out the signup form you are ready
to go!</p>
<p>Slightly off topic, but the C2DM API is extremely simple to use. It was a
pleasure to work with since I could use basic Unix shell scripting to send
requests to the service during testing.</p>
<h3 id="apple">Apple</h3>
<p>After you register as an iOS developer (and you drop $100 US for the privilege),
Apple gives you access to something called the <em>iOS Provisioning Portal</em> which
is a web interface for generating all manor of certificates and mobile
provisioning bits and bobs. In this portal access to the APNS (Apple Push
Notification Service) can also be enabled with a few mouse clicks… instantly.</p>
<h2 id="so-what-have-i-done-so-far-">So what have I done so far?</h2>
<p>Not wait on RIM, that’s for sure! In the last two weeks I have managed to
completely finish the iOS and Android versions of my app including full push
integration.</p>
<p>Let me say that again. In the time it’s taking RIM to <em>grant</em> me permission to
write software that uses their services, I have created the same thing on
competing platforms.</p>
]]></description>
        </item>
        
        <item>
            <title>Wire Harness Lacing - A Dead Art?</title>
            <link>http://slashdev.ca/2010/06/13/wire-harness-lacing-a-dead-art/</link>
            <pubDate>Sun, 13 Jun 2010 00:00:00 -0400</pubDate>
            <guid isPermaLink="true">http://slashdev.ca/2010/06/13/wire-harness-lacing-a-dead-art/</guid>
            <author>jiGGaK</author>
            <description><![CDATA[<figure class="">

   <a href="/articles/wire-harness-lacing-a-dead-art/IMG_2554.jpg" target="__blank">
      <img class="img-responsive img-thumbnail" src="/articles/wire-harness-lacing-a-dead-art/IMG_2554_width750.jpg">
   </a>

   <figcaption class="caption">A wire harness promoting proper dental hygiene</figcaption>
</figure>


<p>I don’t pretend to be a master of wire lacing. To be honest this is my first
attempt but I am thoroughly pleased with the results. I was inspired by a
recent article by <a href="http://www.neufeld.newton.ks.us/electronics/">Keith Neufeld</a>
in which he showed off his <a href="http://www.neufeld.newton.ks.us/electronics/?p=1091">x0xb0x Wiring Harnesses</a>.</p>
<p>This is my latest arcade joystick build incorporating my recent
<a href="http://slashdev.ca/2010/05/25/ps3-gamepad-with-home-button/">teensy++ based controller</a>.
Locating resources on the web describing the art of wire harness lacing can be
tricky as it doesn’t seem to be a popular practice but I found a decent writeup
<a href="http://www.dairiki.org/hammond/cable-lacing-howto/">here</a>. The wires on my
controller are 24 gauge so the thick string Keith used would have been overkill.
Instead I opted for waxed dental floss to wrap the wires (tip: waxed is
important as it helps the knots stay tight).</p>
]]></description>
        </item>
        
        <item>
            <title>PS3 Gamepad With Home Button</title>
            <link>http://slashdev.ca/2010/05/25/ps3-gamepad-with-home-button/</link>
            <pubDate>Tue, 25 May 2010 00:00:00 -0400</pubDate>
            <guid isPermaLink="true">http://slashdev.ca/2010/05/25/ps3-gamepad-with-home-button/</guid>
            <author>jiGGaK</author>
            <description><![CDATA[<figure class="">

   <a href="/articles/ps3-gamepad-with-home-button/IMG_2539.jpg" target="__blank">
      <img class="img-responsive img-thumbnail" src="/articles/ps3-gamepad-with-home-button/IMG_2539_width750.jpg">
   </a>

   <figcaption class="caption">Teensy++ on a breakout board</figcaption>
</figure>


<p>It’s no secret the PS3 will work with most <a href="http://slashdev.ca/2010/05/22/simple-6-button-ps3-gamepad/">USB HID gamepads or joysticks</a>.
However the Home button is something special. If you connect your sixaxis
controller to your PC and monitor button presses, the Home button comes up as
button number 13. If you then create a standard gamepad with the same button
mapping, the PS3 will refuse to recognize the Home button.</p>
<p>After some tracing of the USB traffic from an official Madcatz Street Fighter IV
FightStick I was able to come up with a solution! There are 8 bytes transfered
during the enumeration phase, just after the device sends it’s report
descriptor. Mimicking the same exchange results in the Home button functioning
correctly when button 13 is pressed.</p>
<p>I used the amazingly awesome <a href="http://www.pjrc.com/teensy/">Teensy++</a> development
board after being inspired by <a href="http://diy-machine.blogspot.com/">this guys work</a>.
I also used the report descriptor from Toodles <a href="http://www.shoryuken.com/showthread.php?t=131230">UPCB</a>
project which appears to come from the SEGA VIRTUA STICK. This descriptor is
very similar to the one from the Madcatz controller, except their is one
endpoint instead of two which simplifies things somewhat.</p>
<p>I also created a shield (pictured above) which brings several pins on the
Teensy to convenient screw terminals.</p>
<p>Source code and Eagle files are available in a <a href="https://github.com/jiggak/ps3-teensy-hid/">git repository</a>.
Code is licensed under the <a href="http://www.gnu.org/licenses/">GPL v3</a> and the PCB
design is distributed under a Creative Commons license
<a href="http://creativecommons.org/licenses/by-sa/2.5/">Attribution-ShareAlike 2.5</a>.</p>
<figure class="">

   <img class="img-responsive" src="/articles/ps3-gamepad-with-home-button/ps3-teensy-hid-v11.png">

   <figcaption class="caption">Terminal reference</figcaption>
</figure>


<p><a href="/articles/ps3-gamepad-with-home-button/ps3-teensy-hid-v11.pdf">This document</a> can be printed onto
transparency for exposing your pre-sensitized copper clad. To use this for
toner transfer, be sure to mirror the image first.</p>
<p>And a compiled version of the <a href="https://raw.githubusercontent.com/jiggak/ps3-teensy-hid/master/ps3-teensy-hid.hex">code in ihex</a>.
This is for the teensy++ 2.0. The code might work with other versions of the
teensy, but a re-compile will be required.</p>
]]></description>
        </item>
        
        <item>
            <title>Simple 6-Button PS3 Gamepad</title>
            <link>http://slashdev.ca/2010/05/22/simple-6-button-ps3-gamepad/</link>
            <pubDate>Sat, 22 May 2010 00:00:00 -0400</pubDate>
            <guid isPermaLink="true">http://slashdev.ca/2010/05/22/simple-6-button-ps3-gamepad/</guid>
            <author>jiGGaK</author>
            <description><![CDATA[<p>I built this board several months ago. It’s a USB gamepad circuit with 6 buttons mapped to correlate with the standard layout of a Street Fighter IV FightStick for the PS3.</p>
<figure class="">

   <a href="/articles/simple-6-button-ps3-gamepad/img_1735.jpg" target="__blank">
      <img class="img-responsive img-thumbnail" src="/articles/simple-6-button-ps3-gamepad/img_1735_width750.jpg">
   </a>

   <figcaption class="caption">Gamepad Circuit Board</figcaption>
</figure>



<figure class="">

   <img class="img-responsive" src="/articles/simple-6-button-ps3-gamepad/ps3-usb-hid.png">

   <figcaption class="caption">Export from EagleCAD with terminal labels</figcaption>
</figure>


<p>It’s based on <a href="http://slashdev.ca/2009/04/12/nes-usb-gamepad/">another design</a> by <a href="http://www.raphnet.net/electronique/usb_game12/index_en.php">Raphaël Assénat</a>.</p>
<p>You’ll find the source code and Eagle files <a href="https://github.com/jiggak/ps3-usb-hid">here</a>, both licensed under the GPL.</p>
<p>PS: It’ll also work just fine on a Window/Linux/Mac OS X computer as well since all operating systems come with drivers for USB HID gamepads.</p>
]]></description>
        </item>
        
        <item>
            <title>Get USB Report Descriptor with Linux</title>
            <link>http://slashdev.ca/2010/05/08/get-usb-report-descriptor-with-linux/</link>
            <pubDate>Sat, 08 May 2010 00:00:00 -0400</pubDate>
            <guid isPermaLink="true">http://slashdev.ca/2010/05/08/get-usb-report-descriptor-with-linux/</guid>
            <author>jiGGaK</author>
            <description><![CDATA[<p>Came across this handy little hack today googlin around the internetz. On
several occasions I’ve had the need to get the full device and report
descriptors from an attached USB device. Today was another one of those
occasions. If you run <a href="http://linuxmanpages.com/man8/lsusb.8.php">lsusb</a> with the <em>-v</em> flag you will get a nice verbose output, but if you locate the section that contains the report descriptor you’ll be welcomed with a typical Linux friendly message: <strong><strong> UNAVAILABLE </strong></strong>.</p>
<figure class="">

   <img class="img-responsive" src="/articles/get-usb-report-descriptor-with-linux/error.png">

   <figcaption class="caption">OH NOOZ!!1!</figcaption>
</figure>


<p>I thought to myself, self: “certainly there must be <em>some way</em> to tame this
beast?”. Wouldn’t you know it, there certainly is.</p>
]]></description>
        </item>
        
        <item>
            <title>Fixing Sigtool - Again</title>
            <link>http://slashdev.ca/2010/01/28/fixing-sigtool-again/</link>
            <pubDate>Thu, 28 Jan 2010 00:00:00 -0500</pubDate>
            <guid isPermaLink="true">http://slashdev.ca/2010/01/28/fixing-sigtool-again/</guid>
            <author>jiGGaK</author>
            <description><![CDATA[<p>A year or so ago I wrote out some instructions detailing
<a href="http://slashdev.ca/2008/03/16/using-sigtool-in-linux/">how to make SignatureTool.jar work</a>
in Unix type systems. Soon after I got word that somewhere around JDE 4.6 or 
DE 4.7, RIM actually fixed the mistake in the sigtool.  Sadly they missed one.</p>
<p>If you attempt to sign a <code>.cod</code> file larger than 64KB (ie: contains sibling
files or child files or whatever files) then you will likely get a file
created in your current working directory that looks something like
<code>kd8m34jkf/my_lame_app-1.cod</code>. When you load the file to the device it will
result in an error of some sort. The fix for this is relatively simple.
Read on for the details.</p>
]]></description>
        </item>
        
        <item>
            <title>Signing Servers Down Again</title>
            <link>http://slashdev.ca/2010/01/28/signing-servers-down-again/</link>
            <pubDate>Thu, 28 Jan 2010 00:00:00 -0500</pubDate>
            <guid isPermaLink="true">http://slashdev.ca/2010/01/28/signing-servers-down-again/</guid>
            <author>jiGGaK</author>
            <description><![CDATA[<p>It’s 10:00pm EST, Jan. 28th and RIM’s signing servers have been down for the last sixty minutes. This wouldn’t be such an issue if the rest of the BlackBerry development tool suite wasn’t such a steaming pile of crap! Quite literally the only component that works - is the compiler.</p>
<p>The simulator doesn’t sim and the signing tool doesn’t sign.  These two issues cause a serious problem.</p>
<p>First the simulator. If you take an OS 4.3.1 simulator and a device also running OS 4.3.1 the two will behave very differently in a few subtle, but important ways.  My gripe is localized to the <a href="http://www.blackberry.com/developers/docs/4.3.0api/javax/microedition/media/package-frame.html">mmapi</a> api (handles audio/video playback). Long story short, the simulator can’t be trusted so we have to debug device/OS idiosyncrasies on the device itself.</p>
<p>But hold on a second. The signing servers aren’t working so I <strong>can’t</strong> debug on the device in all it’s developer friendly glory with lack of usable debugger and lack of even something as simple as a means to read text written to <strong>freaking</strong> <a href="http://en.wikipedia.org/wiki/Standard_output">standard output</a>!</p>
<p>Thank you RIM!  Thank you for wasting my valuable time. Thank you for reminding me that no amount of money can justify writing software for this platform any longer.</p>
<p>(10:30, signing servers still not working)</p>
]]></description>
        </item>
        
        <item>
            <title>Introducing jQTemplate</title>
            <link>http://slashdev.ca/2009/06/16/introducing-jqtemplate/</link>
            <pubDate>Tue, 16 Jun 2009 00:00:00 -0400</pubDate>
            <guid isPermaLink="true">http://slashdev.ca/2009/06/16/introducing-jqtemplate/</guid>
            <author>jiGGaK</author>
            <description><![CDATA[<pre><code class="lang-html"><span class="tag">&lt;<span class="name">script</span> <span class="attr">type</span>=<span class="string">"text/javascript"</span>&gt;</span><span class="javascript">
$(<span class="built_in">document</span>).ready(<span class="function"><span class="keyword">function</span>(<span class="params"></span>) </span>{
   $(<span class="string">"#template &gt; ul"</span>).jqtemplate({
      list: [<span class="string">"So"</span>, <span class="string">"Freakin"</span>, <span class="string">"AWESOME!"</span>]
   });
});
</span><span class="tag">&lt;/<span class="name">script</span>&gt;</span>

<span class="tag">&lt;<span class="name">div</span> <span class="attr">id</span>=<span class="string">"template"</span> <span class="attr">style</span>=<span class="string">"display: none"</span>&gt;</span>
   <span class="tag">&lt;<span class="name">ul</span>&gt;</span>
      <span class="tag">&lt;<span class="name">li</span> <span class="attr">jqloop</span>=<span class="string">"{object: 'val', array: $this.list"</span>
          <span class="attr">jqtext</span>=<span class="string">"$this.val"</span> /&gt;</span>
   <span class="tag">&lt;/<span class="name">ul</span>&gt;</span>
<span class="tag">&lt;/<span class="name">div</span>&gt;</span>
</code></pre>
<p>Some time ago I started a little experiment to see what this whole <a href="http://git.slashdev.ca/linkdb/">“Web 2.0” development</a> thing was all about. The goal of the experiment was to develop a simple application without the help of any server side web framework, and instead use <a href="http://json.org/">JSON</a> as a data interchange format. All HTML, CSS, and JavaScript should be cleanly separated.</p>
<p>Cleanly separating the HTML from the JavaScript posed a challenge and thus <a href="http://slashdev.ca/jqtemplate">jQTemplate</a> was born. The concept is simple: write snippets of HTML code with annotations (in the form of special XML attributes) that can be used to transform the snippet into elements in the DOM.</p>
<p>The result I think is actually quite nice, and I love me some pretty code!</p>
]]></description>
        </item>
        
        <item>
            <title>NES USB Gamepad</title>
            <link>http://slashdev.ca/2009/04/12/nes-usb-gamepad/</link>
            <pubDate>Sun, 12 Apr 2009 00:00:00 -0400</pubDate>
            <guid isPermaLink="true">http://slashdev.ca/2009/04/12/nes-usb-gamepad/</guid>
            <author>jiGGaK</author>
            <description><![CDATA[<figure class="left">

   <img class="img-responsive" src="/articles/nes-usb-gamepad/img_1733-300x225.jpg">

   <figcaption class="caption">Assembled controller</figcaption>
</figure>


<p>This is mainly a show and tell post.  What we have here is a NES controller that has been converted into a USB HID device.  This means it can be connected to a computer without installing any drivers (Linux, Mac OS X, and Windows XP).</p>
<p>The circuit, PCB design, and firmware for the Atmega8 micro-controller are courtesy of <a href="http://www.raphnet.net/electronique/snes_nes_usb/index_en.php">Raphaël Assénat</a>. His website is a veritable cornucopia of awesome circuitry.  And the best part? All of his work is fully documented and provided for use under the GPL license where applicable.</p>
<p>Now the show part is over, time for the tell.</p>
]]></description>
        </item>
        
        <item>
            <title>A Notch in the Cross Platform Blackberry Development Belt</title>
            <link>http://slashdev.ca/2009/03/11/a-notch-in-the-cross-platform-blackberry-development-belt/</link>
            <pubDate>Wed, 11 Mar 2009 00:00:00 -0400</pubDate>
            <guid isPermaLink="true">http://slashdev.ca/2009/03/11/a-notch-in-the-cross-platform-blackberry-development-belt/</guid>
            <author>jiGGaK</author>
            <description><![CDATA[<p>In a <a href="http://slashdev.ca/2008/04/03/blackberry-development-using-linux">previous post</a> I listed 4 key items needed for BlackBerry development:</p>
<ol>
<li>Rapc compiler</li>
<li>Signature tool</li>
<li>Simulator</li>
<li>Javaloader</li>
</ol>
<p>At the time of writing the first two worked fine. The third, Simulator, is <a href="http://slashdev.ca/2008/03/27/blackberry-simulator-in-linux-sort-of">if’y at best</a>. And the fourth was just not possible.</p>
<p>Until now. In late December, a saviour by the name of Nicolas Vivien dropped by the <a href="http://www.netdirect.ca/software/packages/barry/">barry</a> mailing list to let everyone know that he was hard at work on reverse engineering the Javaloader USB protocol. Within a few weeks he had developed a proof of concept that enabled users to load cod files to the BlackBerry.</p>
<p>Since then several developers (including myself) have chipped in to implement all of the crucial aspects of the Javaloader needed for day-to-day use.</p>
]]></description>
        </item>
        
        <item>
            <title>Bug Fixes - Arduino LCD Library</title>
            <link>http://slashdev.ca/2008/09/19/bug-fixes-arduino-lcd-library/</link>
            <pubDate>Fri, 19 Sep 2008 00:00:00 -0400</pubDate>
            <guid isPermaLink="true">http://slashdev.ca/2008/09/19/bug-fixes-arduino-lcd-library/</guid>
            <author>jiGGaK</author>
            <description><![CDATA[<p>Just a quick update on the <a href="http://slashdev.ca/arduino-lcd-library">Arduino LCD Library</a> (bring it to version 0.3). I have worked many hours to iron out all the bugs in the code that checks the LCD modules busy flag.  This is the part of the LCD modules controller that tells the arduino it’s in the middle of an internal operation.</p>
<p>Hopefully this fixes the sporadic behavior people have reported with their LCD’s.  It certainly fixes the problem with the two LCD’s I have tested.</p>
<p>I also added a <a href="https://github.com/jiggak/arduino-lcd/blob/master/ref/lcd_arduino.pdf">schematic</a> to the package. It just outlines where to connect VCC, GND and where to put the 10K pot.</p>
]]></description>
        </item>
        
        <item>
            <title>Lean Mean Mediacenter Machine</title>
            <link>http://slashdev.ca/2008/08/11/lean-mean-mediacenter-machine/</link>
            <pubDate>Mon, 11  Aug 2008 00:00:00 -0400</pubDate>
            <guid isPermaLink="true">http://slashdev.ca/2008/08/11/lean-mean-mediacenter-machine/</guid>
            <author>jiGGaK</author>
            <description><![CDATA[<p>A short time ago <a href="http://handbrake.fr/">Handbrake</a> began to ship with default encoding settings for the “Normal” profile using 2-pass h264 encoding. Sadly my <a href="http://slashdev.ca/xbox-remote-onoff">XBox</a> and <a href="http://xbmc.org/">XBMC</a> just weren’t up to the task of decoding all those fancy h264 bits in software anymore.</p>
<p>Naturally instead of adjusting the encoding parameters, I decided to begin the hunt for a new video player… oh and it has to be cheaper than that <a href="http://www.apple.com/appletv/">AppleTV</a> thing since it does h264.  It also has to be similarly quiet, power efficient, and small.</p>
<figure class="left">

   <a href="/articles/lean-mean-mediacenter-machine/finished_case.jpg" target="__blank">
      <img class="img-responsive img-thumbnail" src="/articles/lean-mean-mediacenter-machine/finished_case_width300.jpg">
   </a>

   <figcaption class="caption">Not quite an Apple TV</figcaption>
</figure>


<p>Well this is the result. It’s a bit bigger than an AppleTV but it’s certainly quiet and power efficient. And I actually quite like the look of it.</p>
]]></description>
        </item>
        
        <item>
            <title>MenuItem Demystified</title>
            <link>http://slashdev.ca/2008/05/07/menuitem-demystified/</link>
            <pubDate>Wed, 07 May 2008 00:00:00 -0400</pubDate>
            <guid isPermaLink="true">http://slashdev.ca/2008/05/07/menuitem-demystified/</guid>
            <author>jiGGaK</author>
            <description><![CDATA[<p>I’ve always been a bit confused as to what exactly the parameters to the <a href="http://www.blackberry.com/developers/docs/4.2api/net/rim/device/api/ui/MenuItem.html#MenuItem%28java.lang.String,%20int,%20int%29">MenuItem</a> constructor do.  Common practise for me, and others I assume, is to simply ignore the ordinal and priority parameters and override the <a href="http://www.blackberry.com/developers/docs/4.2api/net/rim/device/api/ui/Screen.html#makeMenu%28net.rim.device.api.ui.component.Menu,%20int%29">Screen.makeMenu</a> method to explicitly define order.</p>
<p>While this is effective, it has a few caveats:</p>
<ul>
<li>makeMenu gets messy</li>
<li>separators must be added explicitly</li>
<li>doesn’t play nice with context menu items added by framework</li>
</ul>
]]></description>
        </item>
        
        <item>
            <title>Simulator in Linux - Slightly More Reliable</title>
            <link>http://slashdev.ca/2008/04/10/simulator-in-linux-slightly-more-reliable/</link>
            <pubDate>Thu, 10 Apr 2008 00:00:00 -0400</pubDate>
            <guid isPermaLink="true">http://slashdev.ca/2008/04/10/simulator-in-linux-slightly-more-reliable/</guid>
            <author>jiGGaK</author>
            <description><![CDATA[<figure class="">

   <a href="/articles/simulator-in-linux-slightly-more-reliable/debug-blackberry-linux.png" target="__blank">
      <img class="img-responsive img-thumbnail" src="/articles/simulator-in-linux-slightly-more-reliable/debug-blackberry-linux_width750.png">
   </a>

   <figcaption class="caption">Debug session with eclipse in Linux</figcaption>
</figure>


<p>Disclaimer: I am not an expert with <a href="http://www.winehq.org">wine</a> nor have I ever claimed to be. But if you setup an override for the msxml dll it seems as though the BlackBerry simulator is a bit more reliable in Linux. In fact, the JDWP seems to actually work for debugging  your applications.</p>
]]></description>
        </item>
        
        <item>
            <title>BlackBerry Development Using Linux</title>
            <link>http://slashdev.ca/2008/04/03/blackberry-development-using-linux/</link>
            <pubDate>Thu, 03 Apr 2008 00:00:00 -0400</pubDate>
            <guid isPermaLink="true">http://slashdev.ca/2008/04/03/blackberry-development-using-linux/</guid>
            <author>jiGGaK</author>
            <description><![CDATA[<p>Now this process isn’t 100% ideal. If you are an experienced developer you probably already know you need four key components.</p>
<ol>
<li>Rapc compiler</li>
<li>Signature tool</li>
<li>Simulator</li>
<li>Javaloader</li>
</ol>
<p>The first two components works fabulously in Linux. The second (signature tool) needs a <a href="http://slashdev.ca/2008/03/16/using-sigtool-in-linux">kick in the pants</a> to work (shame shame shame!).</p>
<p>The third is <a href="http://slashdev.ca/2008/03/27/blackberry-simulator-in-linux-sort-of">hit or miss</a> when using <a href="http://www.winehq.org/">Wine</a>. So a less painful option is to put windows in a virtual machine and run the simulator there (more on that later).</p>
<p>And the fourth I just can’t get past.  There is the <a href="http://sourceforge.net/projects/barry">barry project</a> which has made impressive progress in the last few months and lists javaloader support as on the roadmap for milestone 4.  RIM, if you have any sympathy for us non-windows users show these guys some love and <a href="https://lists.sourceforge.net/lists/listinfo/barry-devel">send them</a> some specs for heaven sakes!</p>
<p>This article presents the basics for compiling, signing, and debugging BlackBerry applications with Linux.</p>
]]></description>
        </item>
        
        <item>
            <title>MDS Simulator... in Linux</title>
            <link>http://slashdev.ca/2008/04/03/mds-simulator-in-linux/</link>
            <pubDate>Thu, 03 Apr 2008 00:00:00 -0400</pubDate>
            <guid isPermaLink="true">http://slashdev.ca/2008/04/03/mds-simulator-in-linux/</guid>
            <author>jiGGaK</author>
            <description><![CDATA[<p>This was actually pretty trivial since the MDS simulator is pure Java, and a good portion of it is actually just <a href="http://tomcat.apache.org/">Tomcat</a>.  Since <a href="http://tomcat.apache.org/">Tomcat</a> is not developed by RIM, the chances where pretty good that there where no hard coded <a href="http://slashdev.ca/2008/03/16/using-sigtool-in-linux">backslash directory separators</a> (no, I will never let that go) ;)</p>
<figure class="">

   <a href="/articles/mds-simulator-in-linux/screenshot-jde43-mds-linux.png" target="__blank">
      <img class="img-responsive img-thumbnail" src="/articles/mds-simulator-in-linux/screenshot-jde43-mds-linux_width750.png">
   </a>

   <figcaption class="caption">MDS simulator log output</figcaption>
</figure>


]]></description>
        </item>
        
        <item>
            <title>BlackBerry Simulator in Linux - Sort of</title>
            <link>http://slashdev.ca/2008/03/27/blackberry-simulator-in-linux-sort-of/</link>
            <pubDate>Thu, 27 Mar 2008 00:00:00 -0400</pubDate>
            <guid isPermaLink="true">http://slashdev.ca/2008/03/27/blackberry-simulator-in-linux-sort-of/</guid>
            <author>jiGGaK</author>
            <description><![CDATA[<figure class="left">

   <a href="/articles/blackberry-simulator-in-linux-sort-of/screenshot-blackberry-8800-simulator.png" target="__blank">
      <img class="img-responsive img-thumbnail" src="/articles/blackberry-simulator-in-linux-sort-of/screenshot-blackberry-8800-simulator_height200.png">
   </a>

   <figcaption class="caption">8800 Simulator in Wine/Linux</figcaption>
</figure>


<p>Call me crazy but I just can’t seem to accept that if you want to (or have to) write BlackBerry software you’re stuck with Windows. It bugs me.</p>
<p>There is good news and bad news regarding the simulator. The good news is with a recent version of <a href="http://www.winehq.org/">Wine</a> you can actually get the BlackBerry simulator to run. The bad news is that it’s a bit buggy, and debugging hardly works at all.</p>
]]></description>
        </item>
        
        <item>
            <title>Using sigtool in Linux</title>
            <link>http://slashdev.ca/2008/03/16/using-sigtool-in-linux/</link>
            <pubDate>Sun, 16 Mar 2008 00:00:00 -0400</pubDate>
            <guid isPermaLink="true">http://slashdev.ca/2008/03/16/using-sigtool-in-linux/</guid>
            <author>jiGGaK</author>
            <description><![CDATA[<p>Being obsessive and all, I decided to sit down and figure out why the signature tool doesn’t seem to work in Linux. After all it’s a rather trivial Java application. I suspected from the start that the symptom was some sloppy programming on RIM’s part, hard coding Windows style path names and my suspicion was correct. After modifying two class files and reassembling SignatureTool.jar the signature tool worked like a charm!</p>
<p>I don’t know what the legality is regarding redistribution of RIM’s development tools, specifically ones that have been modified so what follows is a description of the steps required to modify SignatureTool.jar to work in a Unix style file system (forward slash for directory separators).</p>
]]></description>
        </item>
        
        <item>
            <title>Updated Arduino LCD Library</title>
            <link>http://slashdev.ca/2008/03/09/updated-arduino-lcd-library/</link>
            <pubDate>Sun, 09 Mar 2008 00:00:00 -0500</pubDate>
            <guid isPermaLink="true">http://slashdev.ca/2008/03/09/updated-arduino-lcd-library/</guid>
            <author>jiGGaK</author>
            <description><![CDATA[<p>I received an email from <a href="http://www.neufeld.newton.ks.us/electronics/">Keith Neufeld</a> (awesome electronics blog) about my Arduino LCD library with some tips on how to improve it.  So over the weekend I dived in and did just that.</p>
<p>Specifically, this version removes the hard coded delays after each command is sent to the LCD and checks the LCD’s busy flag. This is a cleaner approach and should mean that the library works more reliably with various LCD modules (hopefully). The setup method has been cleaned up as well to make initialization by instruction <em>just work</em> without any hacks.</p>
<p>Of course, this does mean that the RW pin on the LCD must be connected to the Arduino instead of connecting to ground.</p>
<p>As before, see the <a href="http://slashdev.ca/arduino-lcd-library">Arduino LCD Library</a> page to get the latest version of the code.</p>
]]></description>
        </item>
        
        <item>
            <title>Arduino + HD44780 LCD Module</title>
            <link>http://slashdev.ca/2008/01/13/arduino-hd44780-lcd-module/</link>
            <pubDate>Sun, 13 Jan 2008 00:00:00 -0500</pubDate>
            <guid isPermaLink="true">http://slashdev.ca/2008/01/13/arduino-hd44780-lcd-module/</guid>
            <author>jiGGaK</author>
            <description><![CDATA[<p>I’ve written a library for interfacing the Arduino with HD44780 based LCD modules. For now it lives here on my site, but if it’s popular enough it might need to move somewhere like the <a href="http://www.arduino.cc/playground/">Arduino Playground</a>.</p>
<p>Check out the <a href="http://slashdev.ca/arduino-lcd-library">Arduino LCD Library</a> page for more details.</p>
<figure class="">

   <img class="img-responsive" src="/articles/arduino-hd44780-lcd-module/arduino_lcd.gif">

   <figcaption class="caption">Sample animation demo</figcaption>
</figure>

]]></description>
        </item>
        
        <item>
            <title>BlackBerry Development with Ant &amp; Eclipse</title>
            <link>http://slashdev.ca/2007/05/30/blackberry-development-with-ant-eclipse/</link>
            <pubDate>Wed, 30 May 2007 00:00:00 -0400</pubDate>
            <guid isPermaLink="true">http://slashdev.ca/2007/05/30/blackberry-development-with-ant-eclipse/</guid>
            <author>jiGGaK</author>
            <description><![CDATA[<p>In this two part series I’m going to try my best to describe how I use <a href="http://ant.apache.org/">Apache Ant</a> and <a href="http://www.eclipse.org/">Eclipse</a> to write/debug software for the BlackBerry platform.</p>
]]></description>
        </item>
        
        <item>
            <title>Top 5 Dream Jobs</title>
            <link>http://slashdev.ca/2007/01/21/top-5-dream-jobs/</link>
            <pubDate>Sun, 21 Jan 2007 00:00:00 -0500</pubDate>
            <guid isPermaLink="true">http://slashdev.ca/2007/01/21/top-5-dream-jobs/</guid>
            <author>jiGGaK</author>
            <description><![CDATA[<p>So I’m watching <a href="http://imdb.com/title/tt0146882/">High Fidelity</a> and thought I would make a top 5 list of my own.</p>
<p>So top 5 dream jobs:</p>
<ul>
<li>Robot maker</li>
<li>Prop maker for the movie industry</li>
<li>Google Python developer</li>
<li>Bar owner</li>
<li>BlackBerry software developer</li>
</ul>
<p>I don’t really want to be a BlackBerry developer but I had a hard time coming up with a 5th so I just put what I am currently doing (check out <a href="http://www.canada.com/bbtv/">bbTv</a>).</p>
]]></description>
        </item>
        
        <item>
            <title>You know what I&#39;m tired of?</title>
            <link>http://slashdev.ca/2007/01/21/you-know-what-im-tired-of/</link>
            <pubDate>Sun, 21 Jan 2007 00:00:00 -0500</pubDate>
            <guid isPermaLink="true">http://slashdev.ca/2007/01/21/you-know-what-im-tired-of/</guid>
            <author>jiGGaK</author>
            <description><![CDATA[<p>You know what I’m tired of? I’m sick of people in my MSN list having HUGE nick names. I come from a time when ICQ was the messenger and even then it was a cute little gimmick that people familiar with IRC laughed at. Regardless a nick name should be one to three words long at the most! None of these phrases a half a paragraph long telling a life story. Also, whoever thought of the “Buddy Icon” should be shot.</p>
<p>Well that’s not fair, it can be cool if you use something like Spider Man or Optimus Prime. But these people these days seem to want to use some picture of themselves smiling having fun with all their smiling friends. I don’t want to see you and your friends having fun. I want to see something clever and original.</p>
<p>So with that said, I’m out. I’m not doing anything interesting these days so I should probably put “something” on this damn blog.</p>
]]></description>
        </item>
        
        <item>
            <title>USB Mouse + Arcade Trackball</title>
            <link>http://slashdev.ca/2006/09/18/usb-mouse-arcade-trackball/</link>
            <pubDate>Mon, 18 Sep 2006 00:00:00 -0400</pubDate>
            <guid isPermaLink="true">http://slashdev.ca/2006/09/18/usb-mouse-arcade-trackball/</guid>
            <author>jiGGaK</author>
            <description><![CDATA[<p>   <a href="/articles/usb-mouse-arcade-trackball/../../arcade-trackball/trackball-13.jpg" target="__blank">
      <img class="img-responsive img-thumbnail left" src="/articles/usb-mouse-arcade-trackball/../../arcade-trackball/trackball-13_width128.jpg">
   </a></p>
<p>Ok, so you have an arcade joystick which you either <a href="http://x-arcade.com/arcade_parts.shtml">built</a> or <a href="http://x-arcade.com/tankstick-arcade-game.shtml">bought</a> but you really want to play some “Golden Tee” or “Marble Madness”.  Well you could buy an <a href="http://x-arcade.com/arcade_trackball_part.shtml">arcade trackball</a> already assembled, or if you are lucky enough to find one for cheap at a surplus store you can be a man and build one yourself.</p>
<p>Check out the <a href="http://slashdev.ca/arcade-trackball">Arcade Trackball</a> page for details on how to connect a USB mouse to an arcade trackball.  Your drunkin’, arcade gamin’, buddies will be super impressed.</p>
]]></description>
        </item>
        
    </channel>
</rss>
