Rawr 1.4.3
July 27th, 2010
So it turns out that the option logic I put in place was, um, flawed. So I fixed it, and now the current version of rawr is 1.4.3.
It also turned out that rubygems.org had a bug that prevented the use of certain handles. That’s been fixed (thanks, Nick!) so I now have an account their. However, when I tried to push the new rawr gem I got an error message saying I didn’t have permission.
Seems there’s already an older rawr gem there (apparently copied over from rubyforge.org), and while the gem info has my name among those responsible for the project, I have no access to it (my rubyforge account doesn’t exist on rubygems.org).
I’ve reported this on the rubygems.org help site, but as of yet have no resolution, so I’m pushing rawr gems to neurogami.com.
So, once again, see http://gems.neurogami.com/gems/ for installation details
10 Minutes to Your First Ruby Application
July 23rd, 2010
Back in 2007 I wrote an article for DevX giving a quick intro to Ruby goodness. I’ve now found that you need to sign up or register or something to read it.
Since my contract says I get the rights to the article after 120 days, I’ve re-posted it.
Rawr 1.4.2
July 23rd, 2010
I updated rawr with improved option handling. I added in Brian Marick’s user-choices gem to take care of any options and arguments passed to rawr.
I also rolled in an option I had been using in roir: instead of downloading a jruby-complete.jar file for each new project, grab a copy of a local version. Downloading the file is maybe not a big deal for the occasional project, but I foud myself banging out several experimental apps a day and got tired of the wait. Plus I often prefer to use the freshest repo code instead of the current stable release.
user-choices does more than just handle command-line arguments. It lets you set up options in environment variables, a config file, and on the command line. There’s a hierarchy of application, too. In rawr, if you set an environment variable it will be used unless there is a corresponding value in the config file. And anything passed on the command line takes precedence over any other setting.
This way you can configure rawr to copy over a local version of jruby-complete.jar for new projects, but force a download using a command-line option when desired. Very handy.
I also added a small amount of comments to the generated build_configuration.rb file, though more needs to be done.
There’s no gem version of this yet; you need to grab the code from gitub and build the gem yourself. I also haven’t decided what to do about gem hosting. My experience with rubyforge and github motivated me to just host my my own gems up on gems.neurogami.com. That’s fine for code that is really all me. However, I didn’t create rawr, and I’m not the only contributor, and rawr is arguably more popular than any of my side-project apps, so a more mainstream host may be called for.
Now, while drafting this post, I decided that I should just go host the gem someplace, so I decided to use rubygems.org. I needed to create an account. (By the way, what possesses someone to create GIANT FORM FIELDS that consume almost the entire screen? What UX need does this server? )
Sadly, I kept getting “Handle is invalid” messages, with nothing to explain why, or what constitutes a valid handle. At least the error wasn’t in GIANT TEXT. I tried a few times and gave up. ( And, yes, I had a smug, self-satisfied sense of vindication about self-hosting gems.)
So I put the rawr gem up on neurogami.com. See http://gems.neurogami.com/gems/ for details.
A little overdue: A MountainWest RubyComic
July 19th, 2010
Shortly after MWRC2010 I was asked to participate in a follow-up project. The request was to write up some post-conf thoughts. I decided to follow in the style of my presentations.
Such things have a shelf life, and while I believe the project is still alive, I decided I needed to post my work before more time goes past.
Click the image for a larger version.
Click here for an even larger version.
52
July 15th, 2010
But every day is a party. Every day, a gift.
The video from my Ignite Phoenix 7 talk, "Fashioning Technology: Wearable computers and a network of things", is up on the Neurogami YouTube channel. Watch it here.
Edit: The video is also available on the Neurogami Vimeo channel, along with some Flickr pix from the event.
James Britt: Fashioning Technology - Wearable computers and a network of things from Neurogami on Vimeo.
MWRC 2010 Hubris Video
June 30th, 2010
The video of my MountainWest RubyConf 2010 talk on Hubris is now available.
James Britt: Hubris - The Ruby/Haskell Bridge from Neurogami on Vimeo.
You can watch it on Vimeo or grab it from the Confreaks site.
There are plenty more sweet videos up on Confreaks as well, and of course the usual goodness on the Neurogami Channel
Enhancing the Scottsdale Tech Culture
June 17th, 2010
I had a great time presenting at Ignite Phoenix. And I had a great time at the recent Desert Code Camp.
Still, I often wonder why there are not more (or any, perhaps) of these kinds of events happening in Scottsdale.
That’s where I live and work, and while it’s great to see interesting tech events happening in cities like Phoenix and Tempe, I’d really like to see stuff happening right here.
This post is both a request for help and a rough outline of some ideas.
The help I need: I’d like to find, or compile, a list of tech or tech-related events happening in Scottsdale. For these purposes, “tech” can mean anything from Web design to chip design, software engineering to chemical engineering. Hardware hacking. Wetware hacking. I’m curious to know what are the user groups that are meeting in Scottsdale, what are the geek gatherings (again, for broad definitions of “geek”) that go on. What about conventions? Unconfs? Seminars?
I already know about the Phoenix Ruby User Group, and the Web Design + Development Meetup each month. There’s also the Cocoa Heads group, and the (tangentially geek) MIT Enterprise Forum Phoenix has monthly events here as well.
Given the number of tech companies in this city, though, I have to believe more are going on. And if not, they should be.
If you know of any, or know of a good reliable resource that lists such things, please let me know: james@neurogami.com
I’ll assemble what I learn and make it available here or someplace suitable, and try to keep it up to date.
To further develop the Scottsdale tech/geek culture I’d like to arrange some local events.
I’m not entirely sure what form they should take, but here are some ideas:
Event Ideas
Naked Conf
No, not naked people, but presentations done without the usual dressing of prepared slides. At MountainWest RubyConf a year or so ago, David Brady was too sick to give his presentation at the assigned time. He managed to make it to the conference the next day, right about lunch time. When he offered to give the talk right then and there, the crowd cheered. David, however, did not bring his slide deck. Hacker that he is he presented it using a terminal shell and Emacs or Textmate or some other code editor. It was outstanding. And I got the idea that there should be an entire conference of such talks.
The idea is that you show code, or run code, or type some stuff into your editor and make the font big, as needed. Live. Talks would be kept at under 20 minutes. Show some code, make some points, get off the stage.
A variation on this: whiteboard only. No slides, no machines. You, a microphone, and a whiteboard with lots of colored markers and erasers.
Lightning Conf
OK, so some people like, or need, slides. That’s cool. But what very few people need is more than 10 minutes. I’ve done two Ignite talks, and one Pecha Kucha presentation, and while I like the idea of formal constraints, I’m skeptical about how well it works for tech stuff. I’m really skeptical that you can find many tech people who can do these formats well. Experience from attending Ignite and Pecha Kucha events tells me most people can do a passable job, a few are really good, a few are really bad. And the good ones rarely convey anything complex. This is a topic for another post in the works, but the key point is that, for geek talks, a different set of constraints would work better. It will attract more potential speakers and allow for better presentation of technical material.
Lightning Conf (or Camp; for any of these ideas you can replace “conf” with “camp” and see if it makes it sound better) would be essentially that: a series of lightning talks.
Barcamp Scottsdale
I’ve helped organize a few Phoenix Barcamps (which, like so many things with “Phoenix” in the name did not actually take place in Phoenix, but in Tempe). Barcamps, and unconfs in general, are tricky. To be true to the format you need to offer up a blank slate. The specific topics and such are all decided at the time of the event. The successful unconfs here in the Valley all seem to ignore this point, and instead make sure to promote some list of promised speakers and sessions. I’m up for a more free-form event, but the evidence says that most people want to know what to expect, and relatively few people are looking to be both audience and speaker. But I’m willing to be proven wrong.
No normal conference stuff?
No. They’re boring. Maybe a set of 20-minute talks of the usual format, but none of these endless hour-long monologue snoozefests.
From casual conversation I’ve found there are two types of potential attendees. Those for whom such things are about the socializing and the random signals and the potential for fun. And those for whom such gatherings are about business and ROI and will it get me funded. The later group does not interest me, but as luck would have it there is no near-term shortage of events where you can learn to Be Your Own Brand! or Maximize your Enterprise Social Media Strategy. Everybody wins.
Really, what I want is something fun and accessible. I don’t want people obsessing over what to talk about for an hour, or feeling like the fixed-length slide rules are going to be too hard to work with. I’m looking for a small set of simple constraints that work to keep things moving, keep things simple, but allow for some depth of content.
Something that works to stimulate the hallway track and spawn future gatherings.
Suggestions welcome.
Event Location
I have a few locations in mind where such things could be held, though they would probably work better for shorter events (e.g. a few hours) than any all-day affair. If you work at or know of a possible Scottsdale location, though, please let me know.
Likewise, if you have any ideas on how to promote the geek/tech spirit of Scottsdale, please write to me at james@neurogami.com
As with all such things, the devil is in the details, but for now what I really need to know is if there’s interest in this, if there’s an audience, if there are presenters.
I believe there are. Please prove me right.
Slides for The Art of Fashioning Technology
June 12th, 2010
I had a blast presenting at Ignite Phoenix 7. There should be videos of the event going up in about a week or so. For now, here are my slides:
The Art of Fashioning Technology
Thanks to everyone who attended and cheered on the speakers, and extra big thanks to the Ignite team who continue to do the most amazing job. They were nothing but friendly, helpful, and professional in the best sense of the word.
Also, a big shout out to the young Arduino hacker who stopped by to talk with me after the presentations. Keep it up, bro. You amazed me with your knowledge and enthusiasm.
Desert Code Camp Follow-up II
May 16th, 2010
Some random thoughts on the recent DCC:
About when I was going home it occurred to me that, in the entire day, I only saw one actual full-on presentation (Naum’s JQuery UI session). What’s interesting is that it didn’t occur to me sooner, because I was having a good time.
I gave a session at 9am, then saw Naum’s thing, then wanted to catch the MongoDB session, but the speaker never showed. However, the assembled did some self-organizing and we had lightning talks instead. It was great.
Then it was lunch, and then I went to learn about Node.js, only to find that the speaker was some person who was supposed to talk about MongoDB, and still MIA. This time I gave an impromptu show-and-tell of my Lilypad Arduino + Bluetooth + Android setup (though pretty much everyone had left the room by then to go watch laser stuff).
And then it was time for my next session, an intro to Ruby. When that ended it was just about the end of the day. None of the remaining presentations in that final hour looked compelling, I felt like I had a full day, and headed out.
I then discovered, as I was sorting out crap in my car preparing for the drive home, that I left my coffee thermos in one of the class rooms. Today I bought some Styrofoam cups and caps to keep in the car so that I can avoid ever taking the travel thermos out of the vehicle (except back into my house). BTW, the themos is quite slick, and the only one I’ve seen that is both spill-resistant and can be easily operated with one hand. Luckily, once I found a place that carried them, I bought a few, so I had two in kitchen cupboard. Lessons learned: redundancy is good, and plan for failure.
Another interesting observation: I had more people for the Haskell intro than for the Ruby session. The difference was not great, maybe a few more in the Haskell group, but still interesting. Feeling I get from some casual conversation is that people are increasingly getting hip to the power of pure functional programming and the pitfalls of OOP. They may not go learn Haskell, but they’re looking at it, and Scala and Clojure as well.
During the ride home I was thinking about the DCC format. I had a great time, but still was a bit bummed that I could not see David Koontz talk on Unity, or Remi talk about Chrome extensions. The schedule is more wide than deep. That is, there may be 10 things going on at once, while the number of time slots is no more than six. I would like to see shorter sessions times (40 minutes perhaps, maybe less), and fewer “tracks”, but have the day run until 6pm. You would then have fewer possible conflicts for your schedule, and get to see more sessions overall. I’d also like to see time set aside for lightning talks, too.
Desert Code Camp Follow-up
May 15th, 2010
I had a great time at DCC, and I want to thank those people who came to my sessions. I hope they were helpful.
Big thanks to Joseph Guadagno and the DCC crew for assembling a terrific event.
Here’s some follow-up material for my sessions in case you didn’t write stuff down:
Intro to Haskell
Suggested Books:
You can read it free on the Web, but if you find it useful please consider buying a copy (paper or PDF) to support and encourage the author.
Introduction to Functional Programming Systems Using Haskell
I liked the Haskell description in the first part of the book, as well as the explanation of the Lambda Calculus. Readable and clear.
Web Sites
The Haskell wiki is also a good resource
The Haskell tutorial on the Lisperati site shows off some nice aspects of Haskell while explaining most of what is going on.
Learn You a Haskell for Great Good is fun and educational.
Some handy comments are on this Stack Overflow thread about learning Haskell.
Video
Eric Meijer has a done a video series on Haskell.
If you do a Haskell search on Channel 9” you’ll find a few other things as well.
Helper stuff
Nemesis is basically Rake for Haskell. You can install it via cabal as well. It makes it easier to execute routine commands,
Rhesus is a templating/code-generation tool I use to maximize my laziness. I created some templates to generate basic Haskell apps. Contact me if you want those, or maybe I’ll finally stick them up on GitHub. (It’s a Ruby thing, so you’ll need that installed first.)
Intro to Ruby
Web Sites
Ruby-doc is the main documentation site for Ruby. There are some links there for introductory material.
The main Ruby site is where to go if you want to install Ruby.
The Phoenix Ruby User Group site has info on the monthly meeting as well as the group’s Google Group list.
Books
If you have any questions about getting into either Haskell or Ruby, please feel free to drop me a line and I’ll see if I can help you out.
Igniting the Art of Fashioning Technology
May 13th, 2010
Since the Ignite Phoenix #7 line-up is now up on their site I can publicly say that I’ll be one of the presenters.
My topic: The Art of Fashioning Technology: Wearable computers and a network of things.
I’m stoked. Much preparation needed in the next few weeks; the hardest thing might be to condense the myriad threads and concepts around this topic that have been careening around my brain.
And don’t forget, Ignite tickets go on sale this Saturday, at 10:00am. They tend to go really fast, so if you think you want to attend (and you do, trust me), then be ready to pounce.
I’ve been hacking around with the Arduino Lilypad, bluetooth attachments, Android device development, and assorted ideas about ambient data, avant garde computing, art coding, and the serendipity of the innocuous in a network of things.
If give me five minutes I’ll tell you all about it.
Desert Code Camp, Saturday May 15
May 11th, 2010
Desert Code Camp is this Saturday, May 15. It’s held at DeVry University.
I’ll be giving running two sessions. The first is Intro to Haskell, at 9:00am, room 215.
The second is Intro to Ruby, at 2:15, room 208. I originally planned on a session about Hubris, but too few people were interested. My apologies if you were one of the five or so people who wanted to attend.
There were next to no Ruby sessions being offered at Desert Code Camp, and I hoping that there’s more interest in this than in Hubris.
It’s a late program change, and people may not be checking the DCC site for such things, so if you think you know someone who might be interested in picking up Ruby, please spread the word. Also send them to the monthly Phoenix Ruby User Group.
Lilypad Arduino Bluetooth
April 21st, 2010
I’ve been poking around with a Lilypad Arduino board, with an interest in wearable technology.
I wanted a way for the device to talk to other devices, so I scored a BlueSMiRF Gold Bluetooth modem. Getting it connected to the Lilypad, however, was less than obvious to me.
The problem is that there have been different versions of both the Lilypad and the BlueSMiRF, and wiring instructions either refer to an older version of one or the other, or they refer to connections on the assumption that you know exactly where to find them.
What I could not find was a simple diagram that labled all of the pins and connections on the current Lilypad.
The best I found was in this excerpt from Programming Interactivity. It does not, however, label the header pins. (Also they show two different versions of the Lilypad. The 4-pin header is the older version.)
Yes, I looked at the schematic. However, until I dig out those EE textbooks I will not be able to read the pin labeling with any confidence.
After much Googling and experimenting, though, I did figure out (I’m pretty sure) the correct pin labeling. I was able to then hook up the BlueSMiRF to the Lilypad, kick off the Android Amarino app on my G1, and pair up the devices.
Here’s the pin labeling I came up with (with the Lilypad rotated so that the head pins are at 9 o’clock)
--------
|
-------- RTS
-------- TX-O
-------- RX-I
-------- 3.3V
-------- GND
-------- GND
|
--------
I’ve also written some posts about this on the Arduino forums here
BTW, if you think I’ve gotten something wrong here, please drop me some E-mail.
Rawr is Moving
April 16th, 2010
Rawr, the world's greatest application packaging tool for cross-platform JRuby apps, is moving. We're migrating away from Kenai, and over to GitHub. And Pivotal Tracker. And Google Groups.
The new repo home is http://github.com/rawr/rawr
The plan is to next revive the Rawr-lib Google Group.
Then, move the current issues over to Pivotal Tracker.
And then plan a new release!