Tuesday, December 29, 2009

The First 10 Things Everyone Does with their New Arduino

A lot of people got Arduinos for Christmas (and holiday) presents. Welcome to the world of Open Source Hardware, DIY electronic tinkering, and learning physical computing and programming... it's a long journey, and I started on it about 2 years ago, and it's been a pretty fun adventure.

As an aside, this is my favorite week of the year, because I have just enough time off from the day job to do some serious hacking. And that's what I'll be doing over the next couple days, getting ready for some serious fun in January.

I don't usually write beginner's guides, because I'm not that good at it, and also because I try to do harder and harder stuff with my Arduino every time, and try to push the limits. There are lots of Arduino tutorials and startup and setup guides, but most of them assume the read has tons of wires, sensors, and - most importantly - a few years of programming experience and are comfortable doing some DIY tinkering. Few of them assume you just have an Arduino, just the Arduino, and only the Arduino... which is what lots of people get and give as Christmas presents (if this past couple of weeks is any indication!)...

So this is my top ten list of fun things to do with a newly-acquired Arduino - I do quite a bit of tinkering with the Arduino, Arduino MEGA, and Illuminato Genesis boards, in fact these days I carry them in my travel bag pretty much everywhere I go, just to play around. The Arduino is like my swiss army knife of electronics, and the Illuminato Genesis is my favorite board for when I want to hack devices, reverse engineer protocols, or do generally "hackier" things.




1 - Make it blink

This one is pretty obvious... just download the Arduino IDE (or the Antipasto Arduino Aardvark IDE for Windows or Mac if you want to play around with some extra features), and then download this code into the main section, run it, and download it to the Arduino board.



2 - Make it blink faster (or slower)

This is almost universally the first thing anyone tries to do immediately after the blinky sketch is up and running... get comfortable with the settings by screwing around with the blink settings, by tampering around with the delay and timer settings. Whenever I'm teaching someone or showing someone else how to use an Arduino, I always suggest changing the timing, or copying and pasting the digitalWrite() and delay() lines several times to get comfortable with the programming language, and to see your code reflected in real time instantly...



3 - Make a function to make the Arduino blink

This is almost like the step above, except that now you're getting comfortable with putting your blink inside a real C function wrapper. The major difference is that I made the void myBlink( void) function. As soon as people get the hang of functions, usually a light goes off in their heads as they figure out the power of modern programming languages: code modularity (a fancy term for little chunks of reusable code):



4 - Send stuff over the serial port from the Arduino to your PC

You can blink an LED, and you can put code inside functions. That means you've now mastered about 90% of the hardest parts of using an Arduino. Now, you want to have the Arduino communicate with the computer. This is a tiny little program that sets a variable, called "counter", sets it to the number 0, then prints a little message "Hello over Serial" from the Arduino to the PC, and then loops the counter from 1 to 25, printing the number over the serial connection. Just type this code into the Arduino IDE window, download it to the Arduino, and then open up the Serial Monitor (that's one of the little blue buttons underneath the menu bar):



5 - Merge the LED blinking with the Serial

I think it's pretty cool how quickly things can add up when you have the basics down. This is basically the same thing as the previous sketches, only added together. Every time the counter reaches past 25 and resets to 0, it calls the blink-LED function, which is the same one we wrote up above - so the functions really are re-usable...



6 - Send something from the computer to the Arduino... and back...

Now we want to send something from the PC to the Arduino. Put this code onto the Arduino, then open the Serial Monitor again, and this time in the little box next to the send button that shows up, type a character, and press the Send button. The character will get echoed back. For instance if you type and send "a", you'll see the "> a" come back. This is literally the same thing as the serial read example except with no comments, which get in the way. By the way, I also encourage anyone new to Arduino to type this out by hand, instead of just copying and pasting, because it seems to give a better idea for what each line of code does.



7 - Combine the Serial sending with blinking

This time, we'll add the code function for the LED blinking, and a couple lines of code that basically say, if the character we sent from the PC to the Arduino is the letter "a", then blink the LED light in the myBlink() function:



8 - Put everything together in one big mega program - count, blink, echo, and blink again

This one's pretty self-explanatory. Now, we've just added all the components together. All the variables get defined up at the top, the serial connection gets initialized in the setup() function, the counter cycles from 1-25 over the serial connection, blinks every time it reaches the top, checks to see if the PC sent a character, if we did, the Arduino will echo the character back to the PC, and if that character is the letter "a", the Arduino will blink again.



9 - Copy and paste the following code:

The Arduino is all about copying and pasting code. This is hugely helpful, because it speeds up hacking, but it's kind of like how word-checker is destroying my abaility to spell words :-) If you always just copy and paste stuff, it's no fun because half of feeling comfortable programming and hacking with the Arduino is feeling comfortable pulling code out of thin air, and experimenting with the syntax... but that's just my opinion!

int counter = 0;
int ledPin = 13;
int incomingByte = 0;

void setup() {
Serial.begin(9600); delay(100);
}

void loop()
{
counter++;
Serial.println(counter);
if(counter == 25) { counter = 0; myBlink(); };

if (Serial.available() > 0) {
incomingByte = Serial.read();
Serial.print("> ");
Serial.println(incomingByte,BYTE);
if (incomingByte == 'a') { myBlink(); };
}

delay(100);
}

void myBlink( void) {
digitalWrite(ledPin, HIGH); delay(500);
digitalWrite(ledPin, LOW); delay(500);
}


10 - Meet people on the web who use Arduinos

Arduino is about the interweb, and forums, and chat rooms, and blogs, and twitters, and youtube instructables and vimeo facebook wallposts and all kinds of "social media" that I have no idea how to use, but am trying to learn.

It's also about being an open community, and instead of so many types of technologies and new things that are inaccessible and hard to learn, Arduino is about sharing and hacking with other people. So in that spirit, please email me, or twitter me, or whatever!

2010 is going to be a year filled with Arduino hacking for me, and my goal is to meet as many other fellow hackers as possible, and to show off more cool Arduino hacks :-)

inthebitz at gmail

Thursday, December 24, 2009

Smart grid meets ... cake?

Dave sent me a photo of the coolest cake I've ever seen. Of course I'm partial. This is a DIY hand-made cake (something that if far beyond my abilities), made in the form of an Illuminato X Machina.

The resemblance is ridiculously amazing. The details, even down to the exposed solder pads that hold the advanced "weapons-grade" power sensory chips, has been replicated. Using large slabs of chocolate, the chef of this cake replicated the quad connectors too.

Totally ridiculous. Dave is checking with the chef to see who it is that I can give proper attrition (nutrition? ha) to for this work of art.




Wow.

Sunday, December 13, 2009

Open Source Licenses and Business Models

Recently, I’ve been a bit disturbed by the quality of discussion on Open Source Hardware, and I want to do something about it. I want to up the ante :-) I’ve seen people who aren’t lawyers, and who aren’t experts in law, making comments about Open Source licenses, and I’ve seen a handful of people who don’t run businesses and don’t understand business models writing about Open Source business models. This is funny to me. I want to try things that are different, but I want to be thoughtful about them, because if Open Source Hardware is really going to become something new, and if it really stands for something different and creative, then it should be treated that way! I’m not trying to be discouraging, actually I think it’s great that people write and do Open Source Hardware. Instead, I want to address people like consultants and writers who make money by following trends rather than contributing to them – Open Source Hardware means something important to me, and I don’t want it to be trivialized by some newspaper editor looking to boost his struggling paper’s sales... oh well, I guess everyone needs a good rant from time to time :-)

So here’s what I’m going to do about it:

Over the next couple of months, I’m going to interview friends of mine that are lawyers, especially intellectual property and contract lawyers, and I’m going to talk to professors of law and business here in Boston. My goal will be to understand, really, what the issues are behind Open Source Hardware as far as intellectual property and legal strategy are concerned. On the business side, I’m going to try to categorize and model, analytically, the economic and business operating models that have sprung up for Open Source Hardware. That way, I’ll be able to compare and contrast Open Source Hardware business models with traditional ones, to understand what, if anything, is the same or different about them.

I did something like this last time, and it turned into the Open Source Hardware Bank project, which currently has over $90,000 "invested" in various Open Source hardware projects (a lot more than I ever expected!) And all but one of those projects came from the internet, from people reading about the Open Source Hardware Bank, and who liked that Justin and I were trying to think about really new models for financing a small set of Open Source hardware products, especially in the middle of the Great Depression 2.0.

I’m going to try to follow the Socratic process, and ask questions as I go. Like all my research projects, I'm going to start with a list of questions, and expand them and develop them over time. This is definitely not a definitive list, but a starting point. I want to address questions like:

Open Source Hardware Licenses

  • What is an Open Source Hardware license?
  • What licenses are people currently using, what are they trying to protect, what are they giving away?
  • What are the major components of an Open Source Hardware license?
  • How is it similar and different from Open Source Software, or from traditional hardware licenses?
  • What is the relationship between Open Source Hardware and intellectual property? Patents?
  • How would the District Court and Supreme Court rule if they found someone Infringing an Open Source Hardware license?
  • How would a legal team establish precedent for OSHW violations and protections?
  • What are the community and internet expectations for an Open Source Hardware license?
  • Which freedoms and liberties in usage of OSHW projects and products previously protected or covered by other forms of intellectual property protection, e.g. “trademark”, “copyright” law?
  • What are the major trends in intellectual property protection, and how do they apply to the sharing of tangible projects online?

Open Source Hardware Business Models

  • How are people making money in Open Source Hardware today?
  • What’s the market size for Open Source Hardware?
  • Who’s participating in Open Source Hardware?
  • What is the role for companies vs. individuals in the OSHW “market”?
  • What are the major OSHW platforms and how are they different?
  • When is a business’ products Open Source Hardware?
  • What is the relationship between today’s Open Source Hardware movement and the traditional electronics and semiconductor industry?
  • Where does Open Source Hardware profit come from, how is it generated, what mispricing is it taking advantage of?
  • Do traditional business strategy concepts apply to Open Source Hardware?
  • Innovation in business models is a term thrown around often, how do those concepts apply to hardware?
  • What are the major trends in hardware production business models? Especially in the internet age of advertising and link and connection-based payment models?
  • Does Open Source Hardware work best on or off the internet? Who are the companies or entities most threatened by Open Source Hardware? Who is most advantaged?

This is an Open Source research project, and I want to involve as many people as I can. I’m going to start with interviews, then do some analysis and research of my own, and finally publish everything in a report in the new year. If you want to be a part of the research project, just let me know at inthebitz at gmail…

Also, if you want to add questions to my list, just shoot me an email!

Here goes nothing :-)

Friday, November 27, 2009

New Haven Holiday Maker Meetup

turkey

Hope everyone had a happy Thanksgiving! Just a quick reminder that the Eli Whitney Museum will be hosting the New Haven Holiday Maker Meetup this coming Tuesday.

What: New Haven Maker Meetup, Christmas Edition
When: Tuesday, December 1, 7:00 pm (note the earlier start time)

Where:

Eli Whitney Museum (directions)
915 Whitney Avenue
Hamden, CT 06517
(203) 777-1833
How Much: Free
RSVP (preferred): kl@eliwhitney.org

Mike and I will bring down some holiday themed projects (the turkey may be a little greasy), and the Museum will have the A.C. Gilbert trains running, along with some other very neat demonstrations that I’m quite excited about.

Thanks to everyone who’s already emailed me – jhuynh at gmail, and I look forward to catching up and seeing everyone (and some cool projects) there!

CIMG8619

Wednesday, November 25, 2009

A walk down calculator lane

I'm at my parent's house, in Connecticut. Which is odd for several reasons. Mostly, it's odd because it means I sleep in my old bed, in my old room, which I haven't done for a long time. But otherwise, it's odd because I get to dig through all my old boxes of gadgets and electronics projects. I did, and I found my first hardware hacking project ever, an overclocked TI82.


Now I have to say up front: I did this in middle school, so I did *not* know how to read schematics yet. Instead, I only knew how to follow tutorials, and that's how I slowly taught myself electronics. This was my first major undertaking.

I followed some great instructions online, which are actually still hosted online! This was perhaps the most pivotal and inspirational tutorial I've ever followed, because it was the first time I'd ever used a soldering iron. In some ways, I credit Mr. Rich with motivating me to get interested in hardware hacking to begin with. So whoever you are, Rich, thanks a lot!

Speaking of Kevin Bacon, I learned engineering because of Mr. Rich, who taught my over the internet how to overclock my TI82, which led me down a long road to learning engineering, but! Rich apparently knows the guys at Solarbotics, who are doing Arduino stuff too, and Solarbotics is the company by Mr. Mark Tilden, who does BEAM robotics, and who used to be at Los Alamos, which is where I was visiting just a couple weeks ago. Insert Twighlight Zone music...

But I digress. I had two TI82 calculators throughout middle school and high school. Who wouldn't?


One had an Apple logo on one side, and a Linux logo on the other. Brand loyalty starts from an early age, apparently :-)

Naturally, I only overclocked one of them, because the acceleration ruined the graphing capabilities (the pixels plotted too quickly and overwhelmed the refresh rate of the display). So I was *that* kid in middle school, and PROUD OF IT, who walked around with 2 calculators. One overclocked for algebra and simple TI programs, and another for graphing. I credit my math teachers, who let me use both calculators on all my math tests!

What good is an overclocked calculator if it doesn't have a fan? Exactly. Does it need a fan? No. Does it look 10000 times cooler with a fan? Yes. Am I embarassed about this, years afterwards? No. Two words: middle. school.

So naturally, I put a fan on the back, and wired it into the battery pack. That also meant I needed to put the battery pack on the outside in a special holder...


I should note, that however cool I thought this looked at the time, I can safely say now, this did not net in any additional dates with girls.

Flash forward...

I thought to myself, why not line up all the big hardware projects, left to right, starting with the first TI-82 calculator I ever had, then moving on to the first real hardware hacking undertaking overclocking project, then on to the Arduino, the OpenBerry, the Portable MegaPalm, and of course the IXM. My current project is to the right of the IXM, but I'm not telling anyone what it is until January ... it's top secret, and only a few people in the world know about it. Not even the government agencies know ... hehe. :-)



Now, of course, I'm not in middle school any more, but I still have a thing for carrying around two calculators:


That's a CFX-200 (of course!) and the powerhouse HP-17BII+, which is the most under-rated calculator in the history of calculators. And believe me, I collect calculators, and I have used almost every calculator known to mankind. The secret little trick that no one but me knows is that the HP 17BII+ has this this feature called SOLVE, which is a one-key equation solver, which is fully programmable. BUT! The calculator itself looks understated... it just looks like a normal calculator, so no one thinks you're a super nerd just for busting out a graphing calculator in a relaxed meeting, but then you're like BAM-I-can-factor-primes-instantly-and-reduce-multi-variable-equations-instantly. And then everyone looks at you like you just did it in your head, and you're like, "what, me? no... this is nothing, if you think that's impressive, you should see my overclocked calculator collection from middle school."

:-)

Friday, November 13, 2009

4 Operating Systems for the Arduino

I was working in the lab, late one night, when my eyes behold an eerie sight... Yes, Halloween is a long time ago, but that stupid song is still stuck in my head. I miss Halloween. I never got to post up pictures of my skeleton running off IXM's. :-)

Anyway, I was browsing the Arduino forums and saw this cool post about DuinOS, a real-time embedded "operating system" for the Arduino.


DuinOS by RobotGroup

It's a simple little realtime OS (RTOS) built by the guys at RobotGroup (hello!), and can be downloaded here. It's meant to have a simple function scheduler, implementing a basic form of multitasking (not quite multithreading, but something like round-robin scheduling I think). That let's someone code multiple functions at a time, that get executed in turn, so that a single Arduino could be executing multiple types of "apps" or "sketches" at the same time.

Well, that's something of a stretch, but it's getting there... we won't get into context switching an RAM page swapping just yet :-)

So then that got me thinking, why not write up the other "OS's" out there for the Arduino platform. So here are the other 3 Arduino operating systems I'm aware of...


Pyxis OS by ArduinoWill

This is a graphical OS built on top of the Arduino and TouchShield platform, and is written by ArduinoWill (aka Thom). Thom is ridiculous, and extremely talented at coding. He has been prototyping some of the craziest stuff I've seen on the MegaPalm kit, DOSonChip, and the TouchShield Slide.

Ok. Here's a video of Pyxis OS in operation, which is quite ridiculous:



ArduinoWill also figured out a crazy hack to implement portrait and landscape mode...



And I'm not even going to mention the Super Mario level port:



Pretty insane... 12 fps. 0x000C. 00000110b frames per second. I'm still trying to figure out how you did this...

ArduinoMacOS by Mark

Mark managed to port a few apps to the Slide, including... um, I don't know... a GPS, Tic Tac Toe, Tetris, a Calculator, Oscilloscope, Breakout, The Matrix Screensaver, and a Canvas Drawing program. And the Control Panel. And Hex editor. And a Graphics Demo. And an analog Pin Visualizer.

And it's all zipped up over at the Open Source App Store here.


I wish I still had screen shots... I've searched my hard drive inside out, but instead, I just have the source code :-( EDIT: I finally found some pictures, and uploaded them above...


TaOS by Ziplock

Here's another lite-weight operating system, this time built by Ziplock. It's a simple embedded GUI that focuses on assigned blocks of code to little squares. In essence, it's the epitome of a miniature, lightweight script execution OS. Applications are like mini-apps.

If every operating system were written with this little overheard, I'd be running Quake on an 8 bit Motorola 6800 written in assembler...

Anyway, I digress, but the code for TaOS is all available over here.

Saturday, November 7, 2009

What's The Best Instant Coffee for Hacking?




Chris and I just spent the last couple weeks completely strung out coding and hacking the IDE. There were a number of problems, but they all stemmed from two simple issues that could be summed up in one word: "suck".

1) Apple deciding to modify the binary java application launcher in preparation for 64 bit java compatibility (which broke the Aardvark IDE), and

2) Windows 7 sucking. Billy G. locked down certain folders, changing the way programs have to deal with temp files (which also broke the Aardvark IDE)

Anyway, Chris wrote a blog about how we solved the issues technically speaking. But this is a differenty kind of blog. This is the one that describes how we solved it biochemically speaking. With coffee, of course.

We drank a lot of coffee, especially late at night, and when Starbucks or the local joints are usually way past closed. So I figured it was a great excuse to do some double-blind taste tests of the various instant coffees I could find at the grocery stores around me.

Here are the five types we taste tested, from left to right, Maxwell house, Medaglia D'oro, Starbucks Bold Via, Starbucks Columbian Via, and Mount Hagen. You pretty much have to live in a bubble not to have seen all the advertisements for Starbucks Vias recently, so this was also Chris and my attempt to cut through all the marketing B.S. out there...


Naturally, we took out a piece of paper to document the experiment:


The Via's needed scissors to open, which sucks. Everything else was easy to use, but needed a spoon, which is a more readily available "kitchen" tool as far as I'm concerned. On the other hand, the lab space always has scissors lying around, so I guess it all depends on where you fix your coffee.


Here's a close-up of the different looks of the instant coffee. Mount Hagen sort of looked like bacon bits, and perhaps as a result, looked the most appetizing. Medaglia was sandier, while the others were more like little piles of dirt.


Here's the full get-up. I followed the recipe marked on the label in every case, down to the amount of grinds, and water.


Here's me pouring out the microwaved water into one of the cups:


And this is what all the glasses look like when they're filled:


And after I stirred each glass:

One thing to note is that the Mount Hagen is the only one with foamy bubbles at the top. This is weird. It would have been fine if I'd put milk in there, and stirred it up. But I didn't. It just somehow likes to keep its foam. For some reason, this foam stayed there the whole time. Not good, not bad, just different.

To clear our pallates in between sampling, we used Diet Coke. Why? Because it's another liquid that commonly makes it's way around the lab, and is often the chaser Chris and I use when drinking coffee. There's something satisfying about drinking a hot cup of coffee, then a cold glass of diet coke, then another hot cup of coffee, then about cold glass of diet coke.

Hi, my name is Matt, and I have a caffeine problem.


While we drank, we kept notes on the first imrepssions, tools needed, time to prep, amount of water needed, smell test, taste test, and even what each type tasted like after waiting a while. The rationale went like this: a lot of times, I make a couple cups of coffee at a time, pour them out, and bring them from the kitchen into the lab. Inevitably, one of the glasses gets cold. Drinking cold coffee is a fact of life in a lab :)

Finally, we ranked each of the 5 in terms of total experience, and provided summary notes.


I even typed it up:


The bottom line

If you can get over the weird foaminess, the Mount Hagen is the best tasting coffee, hands down. The Italian Roast Bold Via is the next best taste, but you have to drink it all quickly, because it starts to taste a little stale after sitting around. The Columbian Via holds its flavor better, but that's because that flavor is bland. Maxwell House has a chemical, synthetic taste in my opinion, kind of like that smell you get when you drive on I-95 through New Jersey, and you drive past that big chemical refinery and the air smells like pancakes which is normally good but you start holding your breath because you know it's not really pancakes, it's actually acetyln glycol esther mercury fumes. Medaglia D'oro was 3 European ounces of just plain horrible - they had me at the smell - which is tart and sour and nasty and frankly has no business belonging in any cup I'm drinking.

So in conclusion:

  1. Best - Mount Hagen if you can live with the weird foam
  2. Runner up - Italian Roast Via
  3. So so - Columbian Via
  4. Eh - Maxwell House
  5. Get out - Medaglia D'oro

Aardvark 0.8.36 Released

This is the next installment of the Aardvark 0.8.x series. Notable new features include:
  • New Library menu that's board friendly
  • New Library reference docs
  • Larger reference panel
  • The library example list auto repopulates when the board changes.
  • Added JeeNodes library (Ports, RF12)
  • Arduino Duemillanove upload bug fixed, thanks Fred!
  • Misc startup fixes
Download @ Illuminatolabs

I've added a Library Menu that dynamically changes with each different board. Here, we see the standard libraries for the Arduino family of boards:



I've also included new reference docs for the Libraries, which load up a library is pulled into the sketch. Below, we see a quick reference for the AFSoftSerial library:



Tip: A quick way to show the reference panel is to click Help->Reference.

Thanks for all the code contributions that made this all come together.

Monday, November 2, 2009

New Haven Maker Meetup, Christmas Edition

I’ve been getting a lot of emails about the next New Haven Maker Meetup, so it must be about that time again.

The Eli Whitney will be hosting the second Maker Meetup in the first week of December, so Christmas themes are welcome, though Thanksgiving projects are certainly interesting too. Actually, I wouldn’t mind seeing some neat Halloween costumes or setups either, but that’s just me. 

What: New Haven Maker Meetup, Christmas Edition
When: Tuesday, December 1, 7:30 pm - 9:30 pm

Where:

Eli Whitney Museum (directions)
915 Whitney Avenue
Hamden, CT 06517
(203) 777-1833

How Much: Free
RSVP (preferred): kl@eliwhitney.org

Here’s a couple projects Mike, Chris and Matt did for the holidays last year that might make another appearance:

The 8-bit embedded TurkeyShield

This year, maybe a 32-bit embedded turkey with the IXM?

Mike’s Christmas Tree Upgrade

And it’s always fun to make lights blink in cool new ways :-)

Give me a shout if you’d like me to send a reminder email, or if there’s a project Mike and I should bring to this meetup – jhuynh at gmail. Hope to see you there!

Monday, October 26, 2009

Updates to the Antipasto Arduino IDE: Frickin's, Fixes, and Features

Matt mentioned a few of the issues with Apple and Java, so I thought it might be helpful to add a little technical detail on what's happening and why. The fixes are all part of the latest Antipasto Arduino IDE I uploaded last night, which can be downloaded here.

And given the situation, I chose to express myself through a series of F-words: Frickin's, Fixes, and Features.

Frickin's 1: Apple Breaks Java

Here's the bad news from Apple that was posted to a mailing list regarding Jan's broken Java app:
On Jun 16, 2009, at 7:23 AM, Jan Andersson wrote:

After the latest upgrade starting several of my Java-based applications fails
(when I have changed the plist to say 1.6+). This includes IntelliJ, Install4J
and DbVisualizer.

This is part of a change to the double-clickable app launching policy (which we explained in detail in the developer preview release notes). To enabled the Finder's "Run in 32-bit mode" checkbox for Java apps, and to make the transition to 64-bit by default easier, we've modified the JavaApplicationLauncher.framework to only launch application's in the architectures they have present in their JavaApplicationStub.

The thinking is that if you haven't rebundled, you likely haven't ever considered that you'd be run in 64-bit mode (and when users have dragged Java SE 6 to the top of their Java Preferences, they found that some of their applications stopped working). By preventing apps from being launched in 64-bit if they haven't rebundled, we can maintain the widest compatibility, with a minor impact on developers (and actually let them have a say in what their version and architecture requirements are).


Hope this explains what you are seeing,
Mike Swingler
Java Runtime Engineer
Apple Inc.


Apple Translation:
We don't care if we break all the Java applications out there...that's your problem, not ours.

So in response to this, Matt and I (and a few others - thanks esp. to Nick!) worked really hard to re-bundle the Arduino IDE as a 64-bit bit native. You're probably asking, why not just check the box in the Get Info window to run in 32-bit mode? Well, that was my first thought too, but the check box mysteriously disappeared, so that wasn't an option any more. Dang.

In any case, that means we needed to ensure everything is 64-bit compatible, including all the contributed libraries the IDE heavily depends on. Especially the infamous librxtxSerial library that provides serial connectivity to the boards. So when everything came together, I recompiled everything for 64-bit.

Fixes: Now the Arduino IDE runs on Mac OS X with Java 1.6+, as a 64-bit native application.


Frickin's 2: Apple PackageMaker Relocation Bugs

Aside from the Java issue, have you ever installed an application on your system and the .app file mysteriously disappears? If you have, like me, you've probably been the victim of a bug with Apple's PackageMaker utility that comes standard in OS X.

As it turns out, when building an installer package inside of a relative directory, like the Arduino IDE needs to, PackageMaker thinks I'm trying to relocate the installed Application on the target computer to a random directory. Installation result due to this bug: A full Arduino IDE installation with a missing Arduino.app file. Not a pleasant surprise.

The fix is more of a hack, and it's to scan for and manually strip out any XML in the packager maker build files that point to obscure package relocation settings.

Fixes: Now the Arduino IDE should always have an Arduino.app file in the Applications/Arduino directory.


Features: TouchShield Core Consolidation

A positive outcome of the getting back into IDE development was updates to the TouchShield core. The biggest thing is that the Stealth and Slide libraries have now been consolidated into a single core. This allows for easier code maintenance and allows for contributed libraries to run on both boards. As it turns out, this is the only thing I can indirectly thank Apple for breaking Java for.

Features: Reference Panel Added

I like to be able to browse reference docs, even when I don't have an internet connection. To see it, click Help Menu->Reference.

Features: Libraries and Reference Docs are now Core-Specific

Thanks to Andrew for suggesting this one. He was creating graphics libraries for Slide, which don't run on the Arduino. With this update, core-specific libraries like those can be dropped into to the following directory: hardware/cores/*/src/components/library

Each core also has its own reference html docs. These show up in the right-hand reference panel (see above). The reference html docs for each core exist in the following directory: hardware/cores/*/reference

Features: Compile and Upload is Now Non-blocking


Greg asked about making edits to my sketches while uploading or compiling, so now the IDE allows that to happen.

This is just a start, and hopefully it tackles a few of the issues that I've been getting emails about. I've put the IDE up here. Feel free to give it a spin and let me know if there's anything else I should take care of, or if you've got a chunk of code to include as well.

A very bad week for Open Source Hardware

This has been a very bad week for Open Source Hardware. First Sparkfun gets served up by Sun for sounding like SPARC processors. Guess what? No one in the WORLD would ever have made that connection. NO ONE except a set of trigger-happy lawyers whose sole goal is to increase the percentage of GDP in the US dedicated to legal transaction costs. Then, the Creative Commons tells GOSH to buzz off because they don’t want to help make an Open Source Hardware-specific license, instead they basically said, “hey guys, go learn about patents.” And now, Apple’s 64 bit update java dev team conveniently decided it was time to refactor the library base for 64 bit, leaving anyone who had coded an app for 32 bit hanging in the dark.

Basically, Apple just announced to any Open Source 32 bit coder like me and Chris: “Get lost!”

I have just spent 35 hours that I will never get back. Chris and I have been killing ourselves trying to understand what Apple has done to their installation of Java, and why it suddenly broke Antipasto Arduino IDE.

Apple is migrating to 64 bit hardware, and they don’t want to look back. I guess I don’t blame them. Apparently, that means anyone with a 32 bit application out there that relies on hardware API service calls, you’re left hanging. I guess Apple learned from their transition from 68k to PowerPC that backwards compatibility really doesn’t mean anything, because community developer’s time is free and cheap and no one cares about the community. I’m one of those community developers, and apparently Apple doesn’t care about my time… they’re ok to just say, “whatever, your fault, just recode your entire application for 64 bit Java if you want anyone to care.”

I guess it’s easier to tell the community “go build an app for that and get out of my face.”

Well, to whomever is responsible for making this decision, I HATE YOU.

Here’s what happened so far:

-Apple decides at some point that 64 bit java support is all they need

-Apple released version 1.6.0_15 of Java, switching everything around for 64 bit, rather than 32 bits http://news.techworld.com/security/3201055/apple-patches-critical-java-bugs/

-Antipasto Arduino IDE’s use serial libraries and serial drivers to control the FTDI comm. link, which is more stable in 32 bit land

-Apple doesn’t care, so they rearranged the lib tree structure and object files, and decided they’d let us developers figure it out for ourselves. A couple other people have noticed http://lists.apple.com/archives/java-dev/2009/Aug/msg00115.html

http://www.chemaxon.com/forum/ftopic5319.html

http://forums.java.net/jive/thread.jspa?messageID=366935

http://forums.sun.com/thread.jspa?threadID=5405279

-On October 21st, http://twitter.com/LiquidWare madaerodog was the first to notice it was broken, and twittered all about it

-Chris and I started reverse engineering the problem once we figured out what java version he and I were running and why it worked on one and not the other

-Chris and I (and Nick) just pulled a 35 hour coding and debugging marathon trying to recompile all of the serial dependencies for the 64 bit java 1.6.0_15

Hey Apple! Next time you decide to refactor your platform-specific installation of Java in an effort to not support backwards compatibility, here’s a tip:

Don’t.

This is not going to be an overnight fix… but Chris posted up the most recent update to the Antipasto Arduino IDE. If you want to help, and you have a Mac, maybe you can try this version out, and let me know if it works - inthebitz at gmail…

Tuesday, October 20, 2009

What would Richard Stallman do?

It’s been a while since I talked about open source theory, but it comes up now and again because it’s pretty much a part of everything I’ve been working on lately. There’s been the open source Illuminato X Machina project (schematics, gerbers and software here), the Open Source Hardware Bank (and the Open Source Hardware that was produced as a result). But before I wax philosophic (perhaps something for later this week), I decided to try applying open source to a current problem.

Folks have been picking up the Portable Megapalm for one reason or another, where a touchscreen and buttonpad come in handy. But John and Glenn made an excellent point – why not have some handheld/mobile computing type software running on it? Maybe even some form of Linux? In any case, this could really go one step closer towards a truly customizable, open source, handheld/mobile computing device.

Then Matt and I looked at each other and asked “WWRSD?”, or “What would Richard Stallman do?” The phrase works just as well with Linus Torvalds, or your favorite open source hero :-)

Well, the conventional, closed-source solution would be to spend $1000’s (if not more) paying for full-time coders to develop proprietary software for such a project.

The open source solution would be to turn it around to a community of talented coders, passionate about driving their own projects and bringing open source devices one notch up versus closed source alternatives.

Nevertheless, Richard Stallman might mention something about the open source battle cry “free as in speech, not as in beer”. The classical gratis vs. libre distinction suggests that everyone is free to modify, reuse and contribute – but this does not necessarily equate to zero-cost. In the case of software with little marginal cost, however, open source has tended to mean both gratis and libre.

Despite the fact that many coders on open source project spend time on a project out of personal interest in a cause, it doesn’t mean that they couldn’t use some extra pocket cash.

It’s not the first time that someone is offering a little bit of money to help light the spark for an open source software project, though. My beloved New York City just launched an initiative called NYC BigApps, seeking software developers to create the best applications to analyze NYC’s open data sets and help improve the system, offering a $20K prize and a dinner with the Mayor.

Github launched something similar to improve its functionality. They offered up a nice ~$70 bottle of liquor in a friendly competition to solve a problem and get some new ideas and recommendations.

So I talked to Stephen, a staunch supporter of OS, and asked him what he thought of the situation. He said that he’d even redirect his I-bills towards getting some functional software written on the Slide and Portable Megapalm, on the condition that it was written collaboratively, and in an open source fashion.

Here’s what he was thinking in terms of stuff for the Portable Megapalm, all of which is open to thoughts and comments:

$1000 in funds towards folks who could develop a PDF reader
$500 in funds towards those who can get a quick JPG viewer up
$500 in funds towards functionality, features, or projects that the community votes on and is interested in seeing

Of course, it’s open source and collaborative, and shouldn’t be a hardcore competition! Hence I say “funds”, as it will be distributed across the top 5 or so contributors to each project.

What do you think? If you’re interested, or have an idea on how it could be better structured, feel free to send me a note or comment: jhuynh at gmail

On Friday, I’ll wrap up a few of the feedback that I get and kick it off next week. Looking forward to it!

Tuesday, October 6, 2009

New Haven Maker Meetup Recap

Thanks to the makers and hackers that came out to the Eli Whitney Museum last week for the inaugural New Haven Maker Meetup. There turned out to be quite a variety of projects and discussion, which is always a great source of inspiration.

Growing up in New York (and not CT), I didn’t have a chance to experience the Eli Whitney Museum as a child, so I was in for a real treat. The museum serves as a workshop for all sorts of hands-on projects, in addition to having a lot of neat historic relics. All-in-all, a great place to spend some time.

Museum Director Bill Brown kicked off the evening with a brief history the museum and the art of “making” as it existed in a different age. While the materials, medium and projects may be different, the ingenuity, curiosity, and pure interest in tinkering is timeless.

Bill ended his talk by making a favorite project of his own, on the spot: the rubber band powered car, and setting it off to the races! A shaky, full motion shot, was only fitting :-)
image
Here’s what they usually look like fully finished and decorated:image
We had a few neat demonstrations from Alex, Mike, and Rob. Alex brought in and talked about his crackerbox amp, which he built from parts that he salvaged from an old TV!
image
Mike talked a little about his experience tinkering and building the boards over in the Liquidware shop, and Rob (below) gave a demo of the Drawdio project (as well as a box full of other projects!).
image
image
Then we all split up into a mingling/project show-and-tell session, which is part of what makes meetups so much fun, and is usually where I get a lot of ideas for new stuff to work on.
image
And I just thought this one was really cool to see live - the RC Carduino that Raj set up on his own server:
image
All good, fun stuff, and a great excuse to hang out with other makers! If you’re in the area and want to be a part of the next one (tentatively for November 11), let me know and I’ll be sure to send you a reminder when it gets closer – jhuynh at gmail