Wednesday, December 14, 2011

Stuck in Blender Past

Work on Sedition has picked up a little. I multitask projects like crazy, it keeps me from getting burned out on any one project, though progress on any given project feels glacial at times.

Anyways, I use the awesome Blender for my 3D models in Sedition, and export them as Quake "MD2" files. I'm a programmer by trade, not so much a digital artist. I selected the MD2 format because, it's simple, compact, has a well documented schema, and supports key framed vertex animation. Also, because Blender 2.49 supported exporting to the format. As I write Blender, is up to 2.60. (Actually 2.61 came out today). The 2.5x release was  major overhaul of Blender, most if not all Python scripts written against older versions will not work.

There is no Blender 2.50+ supported MD2 exporter, I've thought at times about writing one; I did make heavy modifications to the older exporter, to fix a lot of bugs it had with index organization in animated meshes. I would have released it, but I also broke/removed some features that I don't use in Sedition, such as "GL Commands". The latest Blender is beautiful and slick.

I have an asset for Sedition that for some reason displays incorrectly in Blender 2.49, though it exports correctly.

Asset for upcoming Sedition feature "HyperBombs"
The material renders all wrong in Blender 2.49, only the
center sphere is supposed to be red.
I opened the asset in Blender 2.60 and it was perfect.

The same file opened in Blender 2.60. 

Working with my exporter was probably one of my least favorite part of working on Sedition. I'd really love to work in Blender 2.60 and I'd really love to be able to "pay it forward" by making a new reporter, but I fear I would loose my sanity in the attempt. If there were an easy way to debug Blender Python scripts besides copious print statements, I think we'd have seen more exporters already. 


Saturday, December 3, 2011

New Graphical Programming Tool for Arduinos

I've mentioned before that I'm a beg fan of the graphical programming paradigm as an educational tool.


Is probably the most exciting embedded development "GP" tool I've seen yet. It's well done, and it integrates into the Ardiuno IDE very nicely.


Tuesday, November 29, 2011

The Leaf Barge

I live in a 15 year old suburban neighborhood in North Carolina. I've only been in the house for 6 years. More than likely, the neighborhood was carved out of prehistoric forest in the early 90's. About half of my backyard is "wooded" and most of the trees are much older than 15 years. Every autumn, an epic (and I'd add "futile", but never in my wife's presence) battle is waged against the leaves. I've got a few large oak trees, and a Bradford Pear, and a "Gum" tree, and a few that I have no clue what they are, but they all fall into one Genus I call "leaf droppers", somewhere between 50-60 in total.

The battleground.

Monday, November 28, 2011

Tiny Gecko ^h^h^h^h^h^h^h^h^h^h + Microchip Wifi Project update.

I finally got my 1.27mm headers in today. They were coming in from China after all.... I didn't pay a lot of attention when I ordered.

Anyways, to recap: the guys at Farnel hooked me up with this wifi board. I planned to use it with my Tiny Gecko demo board. The Microchip board is heavily geared toward using it with PIC processors, but they release the source code to a tcp/ip stack. My plan was to port the Microchip stack to run on the Gecko, shimming in Gecko-native SPI and interrupt code in place of the PIC code.

While I was waiting for my headers, I figured I'd start working on the port, so that when the headers arrived, I'd be almost ready to connect it to my Gecko. I got about 1/3 of the way into it, and realized I was doing more work than it was worth. I decided to scrap the idea of porting the code. I'm just going to use a PIC chip, and treat it like a high level tcp/ip "black box". I'll use a UART, or maybe SPI port to send and receive socket data, and let the PIC do all the heavy lifting. Hopefully, this means I can mostly use the Microchip code "out of the box", and make a simple serial messaging protocol. This also means I can also make it portable so that it's not just for the Gecko.

I just ordered a few PIC chips and a PICKIT 3. I had always planned to get around to exploring the PIC line of chips, but now I have a good excuse.


Monday, November 21, 2011

Tiny Gecko + Microchip Wifi Project.

The good folks over at Farnel (Newark in North America) got me hooked up with a 802.11b "Wifi" board that uses a 3 wire, "SPI" interface to do Wifi.

You can find it here:

I've decided to combine it with my Tiny Gecko board, I'm not sure what I'll do with it yet, it may not even be a permanent marriage of devices. (Both of these devices fall into the category of "I acquired these cool shiny toys without an actual purpose in mind, but just that they looked cool"). My purpose is to just see how easy it is to get up and running with an embedded wifi setup, and get inspired for some other uses along the way.

In this first of several posts about this effort I will focus on my first impressions with the MRF24WB0MA wifi board.

Monday, November 14, 2011

"Sempliduino", My jaunt into Arduinoland.

I've always thought the Arduino was a really cool idea, it lowers the barrier to entry for people without an engineering and/or software background to get their nerd on. Code jockey that I am, I always thought the Ardiuno seemed a little to "beginner" for me. On the other hand, I'm always trying to think of ways to help get my kids interested coding and electronics (eg, see Scratch, more about that later).

Hardware wise, the Arduino at its core is not much more than an ATmega microcontroller, with some convenience hardware(USB serial, voltage regulator, reset button, etc), and a configuration of headers for Arduino add on boards called "shields".

As usual, I dont know exactly what I'm going to get my kids to do with them yet, but I decided that I would order some Mega 28s and some 16 mhz crystals and slap together my own 'duinos on the cheap. Since there are already Adruino minis, and nanos, picos,and femtos, I decided call mine "Sempliduino" which comes from "semplice" and  "Adrduino", the former being Italian for "simple". Yeah, I'm sure that makes no sense to an Italian speaker, but I Googled it and it wasn't taken, so it sticks.

Sempliduino 1.0

Wednesday, November 9, 2011

"Junk" mail

I order stuff from time to time from Jameco Electronics. That's put me on their mailing list for marketing email as well as their paper catalogs. I'm pretty "spam" averse, and regularly delete even emails I'd signed up to receive. When I'm getting close to a new hobby budget cycle, or I have a project I need parts for, I start holding on to the emails form companies I've bought from in the past. I actually read some of them, looking for specials or deals. Jameco actually seems to do a good job of making marketing emails entertaining to read(which, I suppose is the point of good marketing). 

Anywho, I spotted this in a Jameco email today:

Saturday, November 5, 2011

.Net Micro Framework - LCD driver.

I have a loooong running project I come back to from time to time to get the .Net Micro Framework running on one of these boards. They are an ARM 7 TDMI based boards with 16k internal ram, 265 k internal flash, as well as 1 meg of external ram and 4 megs of external flash. It basically exposes most of the processors free pins, and add handy things like voltage regulator, crystal, and an FTDI usb/uart for uploading firmware via the built in bootloader on the LPC22xx chips. It has a 20 pin JTAG connector too, which is what I usually use.

My LCD setup, the LPC2294 is the red pcb in the lower right,
the red pcb in the upper left is a Open Logic Analyser
from Dangerous Prototypes. The car sticker on my desk is a
"gift" from my son :)

Friday, October 28, 2011

Hey Microsoft!

Give me a Windows Phone 7, and I will port Sedition. I promise! I love C#, I love XNA, and I've got an app that's architecturally fit for an Android --> WP7 port.  

That is all.

Thursday, October 27, 2011

In defense of Ada in Defense.

I read an interesting article about the F-22 Raptor fighter on Wired today, and it lead me to check out the Wikipedia page for it and I ran across a startling statement. The bill for upgrading America's fleet of 185 aircrafts' hardware and software has doubled from the original $8 billion to $16 billion. According to a defense analyst, the primary cause for this increase is the use of the Ada programming language for the system software.


Friday, October 21, 2011

What could you build with only 7400 chips?

The 7400 competition at Dangerous Prototypes is amazing, I had for a nanosecond considered it, but thought that one couldn't make anything as cool as what you could do with a microcontroller. Boy was I wrong.


Energy Micro EFM32 "Tiny Gecko" Developer Board

I recently attended a seminar featuring the EFM32 Gecko processor from Energy Micro, an ARM Cotex M3 architecture based chip, with a focus on ultra low energy applications. I enjoyed the seminar a lot, though I'm not sure if that was due in part to the change of pace from my day job. The seminar was 20 minutes from my house, and attendees recieved a EFM32 starter kit.

Energy Micro is a relatively new chip manufacture based in Norway.

Thursday, October 13, 2011

Latest Developments.

I'll keep this one short and sweet....

For those of you keeping score at home:
  • My day job is especially hectic, we have milestones approaching, and in the video game industry especially, that means you work long hours.
  • Haven't touched Sedition in a few weeks. I need to get back to it.
  •  I started back up with my .Net micro framework work. I've now got 5 Olimex LPC h2294 boards in anticipation of doing neat stuff, all with a rich embedded environment like the dnmf. I'm currently getting re acquainted with what I left off almost 9 months ago. I have a SD driver, that does not work (I plane to sic one of my logic analyzers on that), and I've started writing a Nokia 5110 LCD driver.
  • Still sometimes daydream about writing code in Scala. Or Cowbell(tm) :)
  • Oh, and I just scored an STM32F4 Discovery Board (currently free! At least to US addresses, not sure about everyone else). This thing looks to be amazing, the specs put the 2294's to shame (to be fair, the 2294 has been around for quite a while, the Olimex boards are still a great value at Sparkfun.). The least I can do is make a blog post about my experience with it. I really want to use the DSP capabilities of it, mostly because I know nothing about DSP. 

Tuesday, September 20, 2011

More Cowbell

I've been playing with Scala a bit since my last post, I actually took a little hiatus from Sedition to avoid burnout...

Scala is a very sexy language, it's very hard not to crack a sheepish grin when reading about it's features.

for instance:

class Foo[T <: { def bar(): Int }]

Tuesday, September 13, 2011

Scala and Random musings

I've always been a programming language geek. I love learning new programming languages, though C++ and C# (and to a lesser extent Java and Ada) have paid my mortgage over the years.

I'm more of a fan of statically typed languages, but when I have to, I can feel my way around Python. Windows Power Shell is also a fantastic dynamic language that doesn't get the credit it deserves. I'll admit the syntax can take a little getting used to, and if you don't use it frequently, you will forget a lot of it.

For a reason I can't remember now, I recently read about Scala. (Wikipedia) I'd heard its name thrown around for a few years, but never really looked much into it. If a language is not available for production use for me, I have a little less incentive to check it out. Scala's primary platform is the JVM, and it can also run on Android's Dalvik without too much fuss. There is a .Net variant that uses the Java-.Net bridge/abstraction framework IKVM, but it is apparently not quite ready for prime time.

Tuesday, September 6, 2011

Faster horses couldn't drag me away.

Henry Ford once said: "If I had asked people what they wanted, they would have said faster horses".

The profound truth to this is that 'customers' are often much better at describing their problems than coming up with solutions. Engineers too often are better at coming up with solutions than they are in seeing the true problems. The key to getting things done as an Engineer is to recognize when you are attempting to make a faster horse instead of inventing a car. You have to work with your 'customers' (be they clients, other departments, or even other engineers, consuming your code), to come up with the solution that matches the right problem.

I have thought this for a long time, and I blog about it, but I do it too all the time. It's very easy to fall into a trap, it's often hard to tell when you're building faster horses until your halfway done building them. Customers often give you a solution instead of a problem ( eg: "I need a file browser with twelve bookmark buttons", instead of "I need a faster workflow for frequent opening of files"). It's all to easy to build that fancy file browser, only to find out later the button for launching the browser was nested too deep in the UI, and moving it would have solved 99% of users problems.


Saturday, September 3, 2011

Busy bee.

Usually, when I'm not posting, I'm working on things to post about, or Sedition.

I have a new version I'm putting out later today, with a ton of new features and polish.

I need to do some more heavy duty optimization. Some of my recent optimization seem to make the general framerate appear less stable, even though the code is doing less, and the frames are consistently rendering in less time.

I cannot wait to get back to hardware stuff!


Tuesday, August 23, 2011

The missing link in my master plan.

Despite the risk of initiating a Singularity Event, one of my ultimate goal in self educating in electronics and embedded design and programming is to make robots. Not just robots for the sake of robotdom, but robots that are useful in everyday life.

I'm not sure I have figured out in what way I want my first robot to be useful, but I think I now have enough of an idea formed albeit vauge of what tech I want to use.

I just got this slice of nerd heaven from FedEx this morning:

It's got a 433 Mhz Transceiver in it, and a TI MSP 430 microcontroller, among other things.

Anyways, I decided it will serve as a "Command and Control" for my first robot. I will also use one of my LPC22XX boards running .Net Microframework as the high level "brain" for the bot.

Now to find  use for it :)


Monday, August 15, 2011

Still Here.

Do not fear, I will not let this blog bitrot :)

It is funny how many cool blogs end with sparse posts about "Gee it's been a while, I'll do better", then go cold.

Or it's not funny I suppose. It's sad.

*I*ll do better.

Here are some of the things I'd like to post about in the near future:

Soon I will work on my long promised Attiny capacitance touch library for actual release. Last time I worked on AVR stuff, was on the old AVR Studio 4.x, the new version 5 looks nice and shiny, I have heard it is WPF based. Swell!

I have a post about a CPLD project I've been working on half written.

I'd also like to write about one project near to my heart, my .Net Micro Framework port to a custom LPC 22XX based board.

I also will continue my write up on the word clock.


Wednesday, July 20, 2011


After many months, and even a good deal of schedule slippage, I uploaded my game, Sedition, to the Android market. You can find it here:

Sedition Ad-Supported  and  Sedition Ad Free

I also have a Blog dedicated to my software endeavors, DigitalPopcorn

My baby

(Apologies to anyone reading this who might not be able to access it in the Android Market, I plan to expand offer to additional countries soon, as well as other distribution channels.)

Anyways, it is still in "Beta", but here is a run down of some of the technical/design details of it:

Android Library Management for publishing multiple editions of an android app

[UPDATE 12/30/11: This post is a little out of date, I recently updated to r16 of the ADK, and eclipse 'Indigo' (3.7). I had to play around with the library settings to make the dex process happy, and the settings actually make a little more sense now. I'll make a new post]

Sorry for the long title, but I spent a frustratingly long time( hours ) doing something that should have been achievable in seconds.  My hopes are that I am able to document the steps needed here well enough that someone can save themselves some time.

As a last step before publishing, I needed to be able to quickly make two versions of Sedition, an Ad-supported version, and an Ad-free, paid version. In the Android market applications are distinguished from one another by the "package" property in your AndroidManifest.xml file. So simple, change your manifest name and re-build. Not so fast, the resources in your application, eg the files that get assigned an id in the infamous "R" class, are built to live in that class. So when you change your package, any code that references anything in your R class will break. For me this resulted in over 100 errors. I have some final static variables in that help me define code behavior for any given flavor of build. This was the closest I ever got to a #ifdef type mechanism that I mentioned a few months ago. Unfortunately, there is no solution for changing manifest files in a similar manner.

The conventional wisdom of the Web suggests moving your application into an android library, then make two new "Applications" that then link to the library, like so:

This is what I did. It should, by all accounts, have been quick. It wasn't, there were a ton of booby traps, and unless you have innate knowedge of the inner workings of the android build tools, it's a little bit of a mysterious beast. Here's what I did:

Friday, July 15, 2011

Almost Live

My game, unless something goes wrong at the last minute, will get submitted to the Android Market this weekend. It's far from "done", but I think it is a solid "Beta" level app. All the planned features are mostly working.

I figured it was about time I opened up a little more about it....

Without any fanfare, here is:

Wednesday, July 6, 2011


I got a chance finally to play around with my Papilio One board, and the Button/LED Wing I got.

I'm fascinated by VHDL, though I'd consider myself a 'novice'. 

I think something may be amiss with my board, or the wing. 

I wrote some trivial 'hello world' VHDL, I made a component that I can "wire up" (technical term) to either the high side or low side of a wing. (The Papilio has 3 16 bit wing sockets, but the Button Wing is 8 bit, and can occupy either half of a wing).

So my component looks like this:

Monday, July 4, 2011

Back in the solder again

I finally made an initial release of my game, Sedition, not yet on the market, but to a few people I know personally. It is not complete, I'm torn whether to call it 'alpha' or 'beta' at this point. At any rate I intend to 'flip the switch' and Google's and Amazon's markets within a week or so. More on that in a future post.

I also have a Blog dedicated to my game and any future software I release: Digital Popcorn

Anyways, one thing that working on this game has kept me from is doing hardware hacks. Now that development efforts have (hopefully) peaked on Sedition, I want to get back into it.

Thursday, June 30, 2011

Conductive Ink

You can sort of already do this with graphite, aka pencil lead, though the conductivity is lower. You can mix powdered graphite and glue to get conductive glue.

Also, I have had a "conductive paint pen" in my lab for 2 years,(and for much less than $50) so this seems more evolutionary than revolutionary. Neat all the same.


PS. My Wife and family are out of town, so I have a little extra free time over the next week or so. My game will go to beta/alpha testers this weekend, and I'll put it on the market within a week or two. I know I keep saying it, but I will post about it then. It has consumed a whole lot of my time, and distracted me from other things that I love. I feel like I am 9 months pregnant and ready to deliver this thing.

Saturday, June 18, 2011

North Carolina Maker Faire.

I dragged my family to the North Carolina Maker Faire today, though in the end, my wife probably had more fun than all of us.

I was absolutely giddy when I came across these:

This picture doesn't convey how tiny this thing is. For reference, check it out on the left
in the next picture. You can buy these here: Synthetos Word Clock

The booth was run by this group: 

They had some really high end looking clocks. 

Ok, this has motivated me to get working on continuing my word-clock series.

Sunday, June 12, 2011

Pre-shaved Yaks.

I wanted a way to keep track of bugs in my Android Game (I know, I promised a big reveal, it's really soon). I'm getting to the point that I have tons of loose ends and TODO's that I wanted collected in a central location. I am a one man dev team, so I thought I'd keep it simple and just use a spreadsheet. That fell apart before I really got started. I once worked on a project, right out of college, a long time ago, that used a spreadsheet in source control to track bugs. It was as bad as it sounds.

Anyways, there are a number of open source bug tracking systems out there. Almost all are web based. I'm not a web-developer. Every time I try to do something that involves setting up a web server, it's a frustrating exercise in shaving yaks.

Thursday, June 2, 2011

Music in Android. (Nothing to see hear Googlers)

(Yes I'm cheating from my bye-week on Blog posting for a mini rant)

I have to put music in my game. Why? Because games have music. I almost always disable the music, and often the sound on a mobile device if I am playing a game. Most mobile games do not do music well, and frankly I have low hopes for my game, since I have no musical talent. But it's just one of those things, that make a game complete, and lest ye forget, my main goal of making my game is self education and improvement. (Making a few bucks would be nice, but I'm not exactly reserving chartered jets at this point). So I have just a slight hope that maybe I can pull something off musically that ends up being pretty neat. The hard part with music in a game is that it has to be complementary and subtle, not obnoxious, but at the same time catchy. Nintendo does this masterfully. (obnoxious is in the ear of the beholder)

The Jet Creator tool/API in the Android SDK, is really a neat concept. You import music files(midi) and slice and dice them into "segments" that you can queue and play. You can also trigger clips(segments?) to play, and get callbacks in your code when certain events happen with the music.

The big letdown with all of this (besides my realization that making good game music is really really hard), is that the implementation and documentation for the system in the android SDK is seriously lacking. Most web searches result in 1) duplications of the SDK doc, or 2) other forums/blog lamenting the lack of documentation. My sincere apologies if Google brought you here seeking the same knowledge. Add this post to the list of the latter type of search hits.


P.S. yes the misspelling in the post title is a lame pun.

Friday, May 27, 2011

Life is what happens when....

I probably wont get a real post out this week. No, it isn't blogapathy, life and work is a little hectic right now.
Next up will be my game announcement though. Then maybe I can get back to hacking :)


Monday, May 23, 2011

Lot's todo

All developers are familiar with the infamous "//TODO" comment in code. It means "I know this code is not finished and will need work", or "I have deadlines and Fred's code is broken so this is the best that can be done until he fixes his library".  The problem is that these thing can linger forever. I know, I'm guilty of it myself.

Who hasn't seen things like:

//TODO fix after June

(But that comment was checked in 2 years ago)

//TODO see Fred for a fix.

(Fred doesn't work there anymore, by the way).

Amongst the many code quality techniciques and policies, such as unit testing, treating warnings as errors, and using static analysis tools, I propose a system for dealing with a "TODO" - something that has been identified as needing rework eventually.

In my Android Game, I have recently started using a class to denote such beasts. Behold:

Saturday, May 14, 2011

An alternative to the Android emulator and setting up ADB for TCP.

[Update 7/28/11 :See updated information at the end of this post]

I touched on it in my last post, but Android x86 running on Virtual Box can often (but not always) perform better than the standard Android emulator. OpenGL is painfully slow on either. I'm running one of their pre-built Froyo binaries, but Gingerbread source is on the site, if you're feeling adventurous.

The main advantages are:

  • it starts up faster
  • less prone to lockups the the SDK emulator
  • it depends somewhat on what you're app is doing, but many things, like file system IO and math intensive code, seem to execute much faster
The main disadvantages are:
  • Not very representative of a "main stream" Android device.
  • Cant be used if you're using NDK with native code targeting the Arm processor.
  • Configuration of things like screen dpi, and emulated hardware is not as easy or non existent.
  • You can't emulate certain operations like SMS
A guide to setting up your x86 virtual machine can found here: (It takes less than 10 minutes) Install Android Froyo on PC

Launching Android-x86 is not automated like the emulator and ADB takes slightly more effort to setup, but it's not hard. So here's my quick-start guide

Wednesday, May 11, 2011

Android OpenGL ES texture management.

My Android game is still 'coming along'. I'll be making an announcement post soon. It's consumed most of my late evening "dad time", I haven't touched a soldering iron in a while, I'll make up for lost time later.

Progress on the game has generally gone like this: bang out some framework code, bang out cool feature, cool feature, find a minor bug, spend the next few evenings pulling my hair out, framework code, cool feature, cool feature, rinse, repeat. This post is about one of those hair pulling moments and my solution. It revolves around Android's handling of the OpenGL texture buffer management API's.

Recently, I was reworking my texture management code in my "engine" (if you can call it that, it's really just a few folders of Java files with a focus on lower level Graphics and my own Collision detection). I wanted to add the ability to have "dynamic" textures, ones that could be created and modified in the middle of a game in progress. Android has been fun to work with, but the there is a dearth of documentation when it comes to the 3D stuff, you are typically refereed to external Open GL ES docs, or to the SDK samples, which invariably don't do what *you* are trying to do.

Disclaimer: Though I have been in the video game business for a long time, I have rarely done low level graphics rendering work. I would not consider myself a guru in that area, so take this post as food for thought and not as an authoritative doctrine. If you think I'm wrong on something, call me out!

Sunday, May 1, 2011

Rebuilt Swingset.

We inherited 1/2 a swing set from our neighbors. Last weekend, I turned it from this:

to this:

Alright, this isn't at all electronics or programming related, but it is still "hacking" in a form. The local hardware store doesn't stock parts for this purpose, they only sell "playground kits". It's mix and match, but they assume that you are buying a complete swingset, so they package some important parts in the big expensive kits, and don't sell them "loose". So I was on my own. At least they sold the actual swings separately, but I did have to make a return trip when I realized they did not come with hooks to mount the swing chains to the frame.

Friday, April 29, 2011

Size matters...

This is a MEMS Gyroscope

I don't have a solid plan for it, yet. I think I'd like to make a balancing two wheel robot with it. It boggles the mind that technology has progressed to the point we can mass produce something this small with moving parts (sort of).

Thursday, April 28, 2011

Better Blogging.

I realize now that I should be using jumps in my blog posts. It's one of those features of other blogs I've appreciated for years without realizing it was happening. I added them to my existing posts, the only problem is that they weren't really authored with jumps in mind.

I also just discovered the "view" feature in Blogger. The "Sidebar" view (, I think, is actually a better way to view a blog than one monolithic page.Though, when I get better with the jumps that should help also.

Also, I tried manually making a "Page 1, Page 2", link-menu thing with related posts. I think a better idea is to use project tags for that...

In other news...
My Android app is coming along nicely, and I got permission from my employer to publish it. Time to start working on some posts about it.

My Homemade Touch Mechanism used in the Good Times timer generated some interest, I'll clean up the code and package it up. I definitely plan to use it again anyways, so it would be nice to make it general purpose. This probably wont happen until my game is out, so maybe sometime in early summer.


Tuesday, April 26, 2011

Word Clock, Part 1

This was probably my biggest, most ambitious electronics project I've done so far. (And also one of my first)
It was inspired by this:, which in turn was inspired by:  (I see that the guy who did the instructables clock has since done new version of it, it looks really nice.)

Anyway, here is mine:

My word clock. If I could have taken a picture that hid the flaws, I would have :)

Monday, April 18, 2011

Teaching programming to kids with Scratch

I think I grew up in a great in era in personal computing. My first computer was a Commodore VIC-20, the predecessor to the C-64. The manual centered on programming it in BASIC. Now, I cannot recall seeing a meaningful computer manual in 20 years. But computers then were so simple; from a 12-year-old's perspective, it was approachable, even if far less capable that what you get today. I've often wondered if I would have been put off by the complexity of todays machines, if I had been born later.

As long as I've been a father, I've anxiously waited until the day my kids were old enough that I could bring them into the enchanted realm.

I discovered Scratch last year, it's really a great visual programming environment for kids, especially ones who are just learning how to read.

Thursday, April 14, 2011


So my little experiment with blogging has been pretty rewarding so far. It's very nice to see blogger stats show traffic coming from all over the world. I'm very honored to see that Hackaday has twice featured my blog.

I have a few other projects I'd like to write up, as well as some more information, maybe some schematics and code, about the projects I've written about so far. Looking at other blogger blogs recently not for content, but presentation and aesthetics, I can see I have a lot of work to do, this one's pretty sad. I'll improve it over time.

My goal to to try and post something worthwhile, at least once a week(this post doesn't count :) ), to try not to be like 99% of blogs that start strong, then whither. Time will tell. Most posts will probably not be Hackaday worthy, but I hope to be able to share things that someone who likes what I like would find interesting and inspiring. I have a few older completed (mostly) projects that I want to write about, and a million project ideas I want to do one day.

I haven't done a lot with a soldering iron in a few months, I've been working on an Android app in my free time. I hope to be able to start writing about it soon. I also hope to publish it soon (within a month, but that's what I thought a month ago ). I did register with the Android market the other day, made a Facebook page, and have my eye on a web domain, that was pretty exciting, it felt official.


Monday, April 11, 2011

Build System Status Monitor

This is a project I did a while back.

"Indictron" (You might guess that I like to come up with goofy code names for my projects) is a device I use to monitor the status of the continuous integration servers for some projects I've worked on. It's a USB powered grid of LEDs run by an Atmel ATmega88 processor. The device is controlled by a Windows application that queries the build servers for the status of various projects and then sends commands over USB to the AVR chip.

I should take a moment here to say that I am not at liberty to say for what "build projects" I actually used this, so some details or pictures may be altered/redacted.

In full geek regalia:

Sunday, April 10, 2011

Good Times, Part 3.

Part 1   Part 2    Part 3 ]

Welcome to my 3rd and probably last post on the Good Times timer. I want to write about the pieces of flair I put into it.

This project was for my wife, and the timing of the project happened to be late November last year, so I decided I would make it Christmas gift, and I stopped showing her progress on it.

Of course, I had to add some Easter eggs to the project :)

Tuesday, April 5, 2011

Good Times, Part 2.

[ Part 1   Part 2    Part 3 ]

One of the most fun parts of making the timer was the capacitive touch buttons. So in this post, I'm going to touch on how I did it. I might even post a little code :) ( I'm still getting the hang of this blogger thing so bare with me as I play with formatting, etc). 

The inspiration.

I've worked with mechanical buttons on past projects, and I was always less than happy with how the buttons looked, or cost, or how much effort you had to put in to "getting it right". I've spent hours on mouser or digikey looking at buttons, only to discover the datasheets didn't really give you a good grip on the aesthetics or "feel" of the mechanics. Also, the physical chassis construction work, (my least favorite part of a project), seemed to consume a disproportionate amount of effort. Touch buttons, I thought, would be easy, cheap, and I had a lot of options for how to make them look nice. I was aware of the Atmel QTouch chips, but every time I went to tack some on to one of my hobby parts purchases, they were always out of stock. Then I came across this in an Arduino forum (I don't actually own an Arduindo, but a lot of people do some clever things with them):

That got me thinking, the low AVR microcontrollers are cheaper than most of the touch sensor controllers, and come in DIP form factor. It's such a simple idea, it's brilliant!. So with with a breadboard, my trusty AVR Dragon, and some aluminum foil, I experimented.

The implementation:

I didn't have this blog in mind when doing the project, so I neglected to get a good shot of the early experiments, but this one shows my test touch panel, as well as other parts of the project at various levels of completion.

My test touch panel. (also check out the finished display board, and my homemade  breadboard/6 pin isp adapter)

Wednesday, March 30, 2011

Good Times, Part 1.

[ Part 1   Part 2    Part 3 ]
I've been meaning to create this post for a while. Besides my day job, and my recent sojourn into Android, I'm into hobby electronics. Now I've had the code slinging itch since I saw my friends Timex Sinclair 1000 when I was 11, but in the past couple of years, I've really embraced the breadboard and the soldering iron. Software is very satisfying, but there is something about making something that you can hold, touch. And that you appear to your loved ones to possess some sort of voodoo that can transform a mess of wires and chips and LEDs into something that does something.

In fact, it was my desire to show my wares to the world that inspired me to finally get off my rump and create this blog.

Now to exhibit A...

The background:

Last year, after working for several grueling months on a clock, (still at 90% complete a year later, the topic of a future post), I wanted to make something that my wife would not just appreciate, but enjoy, get excited about. So I asked her what type of electronic device she felt was missing in her life. She replied that she wanted a "time out/ time's up timer" for our kids, who happen to be procrastination aficionados, and occasionally earn a trip to the stairs to "think about what they've done". And so was born the "Good Times" timer.

Here is the finished result: (right before boxing to put under the tree last Christmas)
(Apologies, I'm really an awful photographer)

The juicy innards 

Saturday, March 26, 2011

Java Conditional Compilation.

For a "main stream" programming language, Java has a few aggravating shortcomings. The lack of conditional compilation is one of them.

Wednesday, February 23, 2011

Socially awkward.... Facebook musings...

I'm working on an Android app (A game, I can't release details yet for legal reasons)..

I did professional Java development back in the day, but I had not done much with it in years, I miss a lot about C# and C++ when coding in Java, but I cannot say the converse is true. (ok, inner classes are a neat trick ,but like virtual functions I wish they weren't the default behavior)