New Languages for a New Year?
As some others have mentioned, it’s that time of year where most people with blogs make their public announcements on what languages they’ll be concentrating on for the upcoming year. Last year I think my top focus was Ruby on Rails and Javascript; so safe to say I’ve gotten a little experience in those. Things have taken a bit of a turn though, and I’m going to switch things up for 2009 and concentrate a little on my weaknesses and a little on new growth.
Weaknesses? Yeah, everyone has them. Those areas where when you have to implement something you bite your lip and find a way to get through it — usually with a 10ft poll. If they’re something that ties into your daily routine in some way, this is kind of task that can be holding you back from potentially getting more work done, or higher quality work.
One of my weaknesses has always been testing. Maybe I’ve been surrounded by too many testers, but its definitely something I could improve on. I wouldn’t consider myself fully proficient in a language to the point where I’d feel confident teaching someone else until I was proficient testing in it. Some languages don’t make this easy of course. Testing Javascript isn’t the most common thing, but it’s important, especially with such a Javascript heavy application as CloudShout. There are some great new tools like FireUnit for testing in Javascript too. Testing in Python, especially within Django has to have great support — as long as you actually do it. With Rails there’s a million different ways to test; but I’d like to concentrate mostly on mochs and stubs for a swiftly running test suite. No point in having a test suite that takes so long to run that no one has the time to run it after all.
There are a few other topics of interest for the new year. Things I’d love to look into and play around with at least a least a little. XMPP and especially bosh look extreme interesting to me, and I look forward to cramming together the little I’ve learned so far into an Adogo presentation in a little over a week.
Collective intelligence looks like another interesting topic that I’ve always wanted to dig a little deeper into. The Netflix prize looks an great way to experiment a little with it in some different language — Python, C and Erlang seem to be the most commonly used for it. There’s at least one active Rails plugin for collective intelligence, acts_as_recommendable, that uses a C implementation for the heavy lifting and might be worth checking out as well.
Last year git took over in a lot of programming world thanks to an amazing killer app, Github. Getting familiar with git isn’t a big thing, but it’s worth it to have a little more shared language with your peers. Moving from CVS to Subversion wasn’t something that most people did overnight, but after the switch no one ever went back. Git is shaping up to be same, but has a long road of public support and client side tools ahead of it before it makes it that far. People that like git, really really like git. I’m ashamed to say I’ve made improvements to a few projects I’ve cloned from Github, but never got around to branching and committing my changes (or writing tests for my changes of course). This is something I’d love to get better at — more for fun and familiarity with git than anything else. That’s the goal for this year — work on projects that are fun!
If Quicksilver isn’t working for you, you’re not using it enough
It’s taken me a while to jump on the Quicksilver bandwagon. If you’re a Mac user chances are you’ve run into QS as some point, as it seems to be one of the core apps that most hardcore mac users recommend. There are tons of great links on del.icio.us, posts by Merlin Mann and even screencasts. Safe to say it’s here to stay, and with it now open source and hosted on Google, it has a future ahead of it.
Explaining what Quicksilver is might best be left to the wikipedia entry, but to put it short Quicksilver is used to launch apps and control them using short, quick keystrokes. The hardest part about Quicksilver may just be finding out how can use it to make things you do faster. One of the best ways to handle this is to actively think about anything you do often and see if it could be done using Quicksilver. There’s a few Quicksilver tasks that I’ve recently started using that might be useful.
Add Items to a RememberTheMilk.com todo list
I’m a recent convert to RememberTheMilk and it’s related IPhone app, so linking these extremely common tasks was a top priority. There is a quicksilver plugin for remember the milk that makes this quick. Initially when the plugin is added, you’ll need to authorize it to work via the quicksilver preferences. After that it’ll import your task lists and make them available to add to directly. Putting them all together it looks like this.
Send tickets to a Lighthouse app project
There’s no magic plugins for this one — just the basics. Lighthouse allows you to create tickets by email for a specific project. Just about any bug tracking/project management app has a similar capability that can be invoked via Quicksilver. There’s a number of different ways to do this, but the basic one is to create an entry in Address Book titled something related to your app. It has the added bonus of being able to add a contact image that will show up in Quicksilver.
Get fast access to commonly used text
One feature of Quicksilver that gets a lot of coverage is the Shelf. It’s basically a way to access things fast. These “things” can be plain text, folders, applications — basically anything that shows up in quicksilver in the first pane. To enable the shelf, go to plugins in preferences and make sure the “Shelf module” is checked off. After that you can try putting something on the shelf to test it out. To do that just enter some text in the first pane, and then put on shelf
After you have at least one item on the shelf, you should be able to pull it up in the first pane using shelf. show contents is used to get a list of what’s actually on your shelf.
This Shelf > Show Contents combination gets old real fast, so you might want to consider moving this to a trigger. In Preferences > Triggers > Custom Triggers you can create a new keyboard command that jumps you straight into the shelf. I went with option+command for this. Only takes a few keystrokes!
What killer users for Quicksilver have you found? Or perhaps other uses for the shelf?
Cloudshout Alpha 2 Released!
Over at IZEA there are a lot of balls up in the air at any given time. Lately Dan and I have been concentrating on a relatively new creation — CloudShout. It fits in nicely with the blog focused atmosphere for IZEA, and we’re both pretty excited about it. It already has a lot going for it, and I hear what’s available now with it is just the tip of the iceberg. Either way it’s something new and interesting, that I think you’ll be hearing a lot more about in the months to come.
Cloudshout is, in the most basic terms, a widget that can be installed on any site that enables realtime communication across the interwebs. It provides a open way for new developers to create javascript applications that can be installed by any user or site using CloudShout. One of the best ways to see what’s possible is to check out some sample applications. Just click on application tab in the widget and it’ll show what’s installed on my blog. Here are some applications that are already available:
- A group chat application (chat has to be realtime of course)
- An app that pull recent tweets from the blog owner, and even tweets from other site visitors
- An app that pulls recent flickr photos from the blog owner, and other photos from site visitors
- Multiple games — like checkers
- A “Growl” like application that shows activity for the site (if you’re using a mac and don’t use Growl it’s worth checking out)
It’s important to note that any of these applications are updated immediately as new visitors come to the site. So lets say while you’re reading this blog post someone new comes to my site. They’ll show up immediately on the right, and you’ll be able to view tweets, or play checkers with them. Having realtime communication and the ability to send Javascript to other users really opens up a whole new world of application possibilities, so we’re thinking of, and hearing suggestions about new applications every day.
We Have the Technology
You can check for yourself how it’s all done, but it shouldn’t come as much of a surprise — ajax using script tag insertion. Since you can’t use XMLHttpRequest across domain (well until cross-site XmlHttpRequest becomes mainstream), it has to include script tags occasionally to get updates from the server. It does all of this by having the site owner include a single javascript file and creating a div with a specific ID. After that just hit the URL and you’ll see the widget.
The main hub itself and any applications you write have full access to JQuery, which I’m definitely falling for. We’re still looking into how to incorporate some kind of a library to take advantage of the huge amount of Jquery plugins and extensions that are available, but until then the basic jQuery should keep you busy.
Developing applications is easy, especially if you use Textmate. There’s a bundle available that allows editing application code locally and saving it to CloudShout. When developing you’ll get a URL to include on some sample page (usually stored locally) that will load the base widget and only your application. You can make changes and view them in this sandbox, then publish your application once it’s perfect. At that point one someone from IZEA will review it (no nasty hacks or bad code, etc) and then it’ll be available for anyone to install to their blog.
Oh there’s more?
At first some of this was sounding a bit like Google Site Widgets (which I heard about once then never again) — a way to enable some basic dynamic functionality. The difference is astounding though. CloudShout is realtime, open, extendable and just more badass in general. It’s also not specific to a single site. There’s quite a bit more to it, and for some you can watch Dans talk at BarcampTampa.
IzeaFest Wrap Up
Did you make it to IzeaFest last week? It was a fun experience, and a major source of motivation to do better as a blogger. As a general conference attendee, I was even surprised by how well everything turned out. Talks ran smoothly, things went well, they were broadcast live through Ustream, flickr and twitter feeds were buzzing throughout the event (and some up on monitors throughout the event) — just well done all around. The development team at Izea was working hard for quite a few product releases during IzeaFest as well, including some great new addons to SocialSpark and the public alpha of CloudShout (available on the Izea Blog if you want to check it out). I just started helping out on CloudShout about 2 weeks back, but I’m floored by the possibilities of it; and it’s been fun for someone as interested in Javascript as me.
One very nice thing about IzeaFest is that all the talks are available online! One of the talks I was most looking forward to didn’t let me down either — Merlin Mann from 43 Folders keynote on How to Blog. Deceptive title for a great talk. I dare anyone to listen to it and not want to start a blog right then and there. He has some other great talks out there like Inbox Zero and Getting Things Done.
Aside from that, Izea has a way of throwing some great night events. Thursday night they took over the lounge at the Grand Bohemian for an elegant night of great food and drinks. Friday and Saturday nights also had food and drink events down on Wall Street with tons of bloggers and advertisers in attendance. I still have yet to find out the details on the IzeaHunt (a photo scavenger hunt through downtown) from yesterday night, but I’m imagining it was crazy.
Orlando Events for this Week
If you’re in Orlando this week there’s a lot of cool stuff going on. Monday is our monthly Adogo meeting with a very interesting talk on Ajax by Brian LeGros. He’ll be going over some Ajax basics and move onto some “push” Ajax, a topic that’s extremely useful but rarely covered. A majority of ajax sites use polling to know when to retrieve data from the server, but with a push service, such as BlazeDS, you can cut out the polling altogether. It’s something I’ve been wanting to learn about for a while, so I’m looking forward to his talk. If you’re curious about the code, it’s available in the Adogo SVN repo, and a recording of the presentation will be available online shortly after.
Thursday is the monthly Orlando Ruby Users Group meeting, which this month will be taking a break from Ruby in favor of Seaside, a Smalltalk framework. There’s a famous quote (by DHH I believe) referencing Seaside: “I defy anyone to come up here and use any other framework to duplicate what we’re doing in Rails as quickly. Except Avi.” — Avi being the creator of Seaside. Although I haven’t messed with Seaside this looks like it’ll be an interesting talk. Don’t know if I’ll make it though, due to the BIG EVENT for the week.
Thursday night through Saturday night is IzeaFest, which is looking better and better. Aside from a fast growing list of attendees, there’s some exciting speakers including Merlin Mann from 43 Folders, Jeremy Shoemaker from ShoeMoney, John Chow a lots more. The scavenger hunt on Saturday night should make for some fun stories after the fact as well.
Blogging as a Habit
Breaking habits is a slippery slope. You work for months, or years, to build up certain behaviors that your body and mind get used to, but it only takes a few weeks to break them. Maybe you’re changing jobs or going through some major life issues, but once routines are stirred up it’s a lot more difficult to get them rolling again. Me, along with most of my former Westgaters, all seem to have gotten off the blogging train these past few months.
So what can be done to get back on track? It’s as simple as taking one step. Then another. Often starting back up in a routine seems a bit daunting, but if you just take the step things start to build momentum. Reading little pushes like that, or the occasional Zen Habits post might be sound nice, but it still requires you making the effort and doing that single step. I’m going to try to get back into the blogging habit a little more myself, as there is no shortage of new material to blog about lately with a new side project, a new job in a new language/framework in a new part of town.
Your Office: Fun or Functional?
If you’ve ever seen pictures of the crazy work environments at Pixar or Google you’ll notice that most offices/cubes are cluttered, but people obviously get a lot done there. Well, IZEA decided it was time to bring a little of that creative clutter into the office and is having it’s own cube design content — Cubico Loco!. The contest brought in many more themes than I would’ve guessed including a video games cube, a stripper pole and a champagne room (complete with condom dispenser). There’s no shortage of pictures thanks to the camera-fiends at IZEA. When it comes to creating a workspace though, would you want something fun (themed, cube toys, colorful) or would you favor a workspace that’s purely functional?
I decided to go with a fun but functional setup for my workspace, putting up something that could stay up year round. The theme? Flying Spaghetti Monster! Marilyn and I were able to create a little FSM plushie, along with a blowup of the famous noodly creation drawing. There are a few bits of pirate memorabilia, some random pasta, FSM stickers and such, and of course the gospel sitting high.

Of course this goes against my home office setup. It’s the very definition of a functional office. It makes a more sense to have that kind of setup at home to me, while keeping the office space more fun.
If your work is lacking some decorations, I’d definitely suggest holding a similar contest. I also like the idea of a public vote for the winner, which will be factored in with interoffice votes for the winner. Please vote! It doesn’t have to be mine of course, but more votes can’t hurt. There’s plenty of great cubes better and more deserving than one worshiping and parody deity of a religion. ![]()
Local Developer Events in Orlando
Even though BarCampOrlando is a few months behind us, there’s still plenty to do this summer for us developers. It seems like in the past 2 years or so more and more events are springing up in town — exciting stuff. Finding new events can sometimes be a little tricky though. There’s a few ways to make this a little easier.
Gregg Pollack from Rails Envy maintains a Google Calendar titled Central Florida Tech Events which is probably the easiest way to stay up to date. You can search for it within Google, or just add it there (or to iCal) and always know what’s coming up. For a one single stop for what’s on the agenda is does most the work for you. As the Orlando community is getting more organized though, there are a few other places that also have listings. Doterati, taglined Central Florida’s Click (I still stand by statement that you need more kerning in the word click), is was recently started as an open network for usergroups and various other IT and computer related groups in the Orlando to gather together. Florida Creatives has a wiki for some events and local resources that aren’t listed elsewhere, but overall it needs more adoption to make it work.
So what events am I looking forward to?
- Probably Orlando Ruby Users Group tomorrow with talks on Rails security and Git.
- Adobe Developers of Greater Orlando meeting on July 1st where we’ll be continuing the code session from last time which turned out to be a great success
- IZEA Devasaurus on July 2nd should be a lot of fun and hopefully bring a lot of passionate people together.
- IZEAFest 2008 should be another one just around the corner. It’s still a little ways off — Thursday, September 11, 2008 at 07:00 PM - Saturday, September 13, 2008 at 09:00 PM. 3 day conference for bloggers and advertisers with quite a few speakers I’d heard about.
- Ruby Conf has also been announced to be in November, and once again in Orlando. Not sure if I’ll be able to make it, but definitely going to try for that one. It’ll be
Know of any other big events in Orlando that are worth checking out? Or other places to find out what’s going on?
A New Look at Development
One thing on my mind more and more recently was the idea of getting a job in what I do during my part time. While working at Westgate much of my spare time at home I’d been slowly learning Ruby on Rails, and liking the core concepts as well as the Ruby language in general. After running into Peter Wright at BarCampOrlando, the idea seemed even more exciting. So I applied, interviewed and was happy to be added to the IZEA team starting last week! That’s the short story of how I ended up here.
Prior to starting at IZEA, most of my exposure had been through PayPerPost, Techcrunch and Rockstartup which don’t show much in the way of life for a developer, or the group as a whole. It’s a dedicated, passionate bunch across the organization though, and with SocialSpark just launching into beta in April there’s a lot to do. Between their company blog, forums, twitter, videos, social networks like ning, flickr and other sites they’re really taking advantage of the Social Web to get the word out. It’s exciting being a place that’s embracing that on so many fronts, and open to trying things out.
The idea of developing professionally in something new (but that you enjoy doing) might seem a little daunting if it’s you’re not at a high level at it. When it comes to programming though, what matters is problem solving, core programming concepts and most of all passion. While staying up to date with what interests you may not be hard, most would agree it’s incredibly time consuming. If you’re staying up to date in ColdFusion, Ruby, Rails, Java, Air and Flex — chances are you’re not spending much time getting things done! I think that was a gap that I feel into a few months back. Clear out your RSS reader of those feeds you’re not interested in (or that just post too often)! Read the headlines of areas you’re interested in, while reading in depth articles for the things you’re passionate about will probably leave you happier. If you honestly don’t see yourself going forward in an area don’t feel like you have to follow it as aggressively. Trim it down to the cream of the crop and you’ll get all the information you need. I felt a little guilty doing this at first, but it was just too much reading. What matters more is finding your own sweet spot in terms of how much information you want from every interest, and constant re-evaluating it. If your interests change, your news intake should change. Don’t rule out changing jobs — it’s all about finding what you enjoy after all!
Groups know better than Google
How do you filter out what’s important to you? For knowledge that flows towards you, you have a lot more control over this. Through our feed readers we have precise control over what we follow, and through email we can filter out spam and label all mail automatically. When we go out searching for something though things aren’t quite as controllable.
An earlier podcast on StackOverflow talked briefly about this problem and their human driven solution to solving it. The problem is simple — there’s a lot of information out there so how do you cut through the stuff you don’t want so that you only see what’s worth seeing? Slashdot has been doing exactly this with their comments for as long as I can remember. Each comment to an article on Slashdot can be rated (1-5) as well as have a reason attached to it (funny, informative, insightful, etc). This enables the average user to glance over the comments and see those that stand out the most. Digg has a similar system based on up/down votes for comments, which seems to be the route StackOverflow is headed as well (which means they probably won’t have 50 options for displaying comments, but I can live with that).
I’m a fan of this kind of system. It’s the same thing Digg or Tallyhoh use, just on a micro scale — that of user exchanges. But it doesn’t solve the bigger problem: everything not submitted. Everything Google finds, for example, it finds on it’s own by using spiders to explore every available link. The only data available about a given page is right there, on pages that link to that page and possibly on the DNS record for the domain. That’s not too much to go on when you’re trying to evaluate the importance of one site over another.
Eric Sink mentioned this in a very good article titled Baptists and Boundries. Apparently he out Eric’d a number of other much more recognizable Erics throughout history (lots more to that article by the way, and worth a read). The same problem exists in the Adam-verse as well:
First Page:
Adam (bible)
Adam Curry (geek)
Adam Lasnik (geek)
Adam Kinney (geek)
Adam Trachtenberg (geek)
Other Notables:
#15 Adam Savage (Mythbusters)
#21 Adam Baldwin (Firefly, The man they call Jane)
#23 Adam Sandler (Actor, Comedian)
#39 Adam West (Batman)
#100+ Creation of Adam (Michelangelo)
It makes me wonder how many people searching for “Adam” would actually be looking for geeks. Based on the results on Google’s first page, 4 are geeks, 4 are technical topics and the other two Wikipedia articles for the biblical Adam. To be fair, the Wikipedia Adam is much more relevant to what people would actually want to find, and is grouped much more logically. The problem with the two is that the Google index is created automatically while on Wikipedia the entire set of results was created manually by someone to resolve such ambiguos results.
Googles solution is to use search engine optimization practices to determine who’s on top, coupled with Pagerank and incoming links — but that’s obviously flawed. They also order based on some personal preferences (if you’re logged in) which might help focus results to your interests. The blogs in the top might have semantic HTML, proper title tags and a decent amount of incoming links from similar geeky sites, but I wouldn’t say their more important than the Sistine Chapel. Microformats might help to give context to some of the results, but it doesn’t do anything for order. I wonder if it’s time for Google to start leveraging group think for order. Having a Google system that can be that easily gamed is a recipe for disaster, but I wonder if there’s a way the two could be merged to fixed problems like this.
Maybe Google really thinks geeks are that important. After all, Penn said it best:
Google doesn’t seem to fuck up much. - Penn






