Archive for the ‘Projects’ Category
Objective-C, Cocoa, OSX Desktop Apps & iPhone
Like a lot of developers nowadays, I’m spending some time learning Objective-C & the Cocoa Framework so that I can jump into iPhone development. I’m clearly a little late to the game, but I usually am, so…no worries.
So far, I’m keeping an open mind (which can be tough for me, as I’m 32 but act like a cranky 72 year old). It’s surprising, Objective-C isn’t as wildly complicated as it first looks, the really disorienting thing is working in Xcode. I’m so in love with the straight simplicity of building apps in Emacs that all the dragging and dropping throws me off. Granted, in my recent (undocumented) foolings with Java, I started to covet all the work that Eclipse was doing for me, however, something about all the magical dragging and clicking makes me nervous. What’s it doing in there?
I’ve also got that old sharecropper feeling, which is kind of rough. Once you develop your fancy iPhone app in Objective-C and Cocoa, you can reuse libraries to build it out as a OSX app, but that’s about it. You can develop a OSX app in Python or Ruby through bridges to Cocoa, but you can’t use that code on the iPhone, iPhone is Objective-C only. You could move some of your heavy lifting to a web service, but then you’re tethering your fancy iPhone app to require a network connection.
Anywho, it’s an interesting thing to learn, I’m sure I’ll have fun with it, it just doesn’t feel like it has the wide open opportunities that learning Python did, or Java does.
Django on AppEngine
I started my first AppEngine project this evening. I was lucky enough to get into the Beta. I don’t want to be too gushy or hyperbolic, but this is the future folks.
I’m not going to cover the bits about what appengine is, I’m assuming you’ve heard. If not, head over to the appengine site and do some reading. If you’re a little bit confused about WSGI, I encourage you to read anything Ian Bicking has written over the past few years, or my humble article on building a wsgi app.
So…my plan is to build a tomato tracking application on top of THE CLOUD (cue the music). The wife and I are planting a bunch of tomatoes this year, so I’m sort of hopped up on them. The app will let folks to report on the life, well being, and eventual yields of their backyard tomatoes. It’s going to be the world’s greatest web application. I’m going to develop it before a live studio audience via the TomatoBase Google Code Project. The app will live at http://tomatobase.appspot.com.
So far, there’s not much there. Just a landing page that says something pithy, that’s protected by a Google user login. I initially thought I’d jump feet first into the Google themed stack, using their very fancy webapp api, but after reading how easy it is to just go for Django, I decided to go with what I know. There’s a few gotchas, it’s really more like Django-Lite, but it’s still pretty darn good. You lose the ORM and Admin, but still get the url mapper, controllers, middleware, templates…oh, and BigTable. Pretty good trade as far as I’m concerned.
Developing with the toolkit is pretty slick, everything runs locally until you’re ready to push, and then it’s a quick “appcfg.py update django-mater” and it goes live. So simple. I love it.
I haven’t really ventured beyond exploration into actual TomatoBase development just yet. I started exploring the user system a bit, it’s pretty straight-forward. So straight-forward that I contributed a decorator to Django Snippets that lets you use the user system in a @loginrequired sort of way. It’s here: Google AppEngine Login Decorator.
I’m moving much quicker on this than I anticipated. I thought I wouldn’t have time to explore until this weekend, but it’s a really compelling product. I’m excited for them to open it up to a wider audience. At some point I’ll write a bit about what I think this all means (this means something), but for now I’m too busy playing.
Bricked my iBook
I set out to get Linux installed on my old iBook G4 over the weekend. Not a huge task, I thought, easy install good payoff, a fun weekend project. Bah.
I downloaded the newly released and ported Ubuntu Gutsy Gibbon for PPC. The install went bad, a software installation failed, so I had to install a bunch of packages with apt-get after the installer finished. After installing GDM, I couldn’t see the screen. It turns out, there’s a bug in a package that was pushed into the Gutsy release. Because PPC is a community supported release, its prone to a few more bugs than the mainline releases. No biggee, I think, I’ll just install Fiesty. All I really want is to have linux on some of my old hardware to play around with.
Somehow, my Fiesty CD didn’t burn correctly, and started throwing errors during the installation. Right after my hard drive was formatted. Now, when I insert a good CD, I hold down ‘C’ to try and boot off of the CD-ROM, nothing happens. I get to the Yaboot screen, which asks me to boot a bad partition of Linux. It lists CD as an option for booting, but nothing happens when I try booting off a new fresh CD.
All this is well and good, and kind of fun to troubleshoot. I’m not losing any sleep over the fix of the iBook, I’m sure I’ll figure it out. I think my next step is to confirm that I have a good CD for PPC. I’m not entirely sure how to do that. I’m thinking about trying to boot off my known-good OSX installation CD, just to see if the machine is still capable of booting off a CD.
Anyone else run into these sorts of troubs? I really would like to have a nice Ubuntu laptop that I can break occasionally, maybe hook up to a robot or something.
Same Title Different Story
I’ve been working on a podcast the past few weeks. It’s officially online now at Same Title Different Story.
The premise is pretty simple, I gave a title to a story to a group of friends, and asked them to write the story that goes with the title. Then I recorded them reading their story. I have 13 stories recorded with two different titles. The first two stories just went online, they’re from Miss Alex White and Molly Hale. I’ll be releasing more episodes over the next few weeks. They’re all really good stories, I’m excited to get them out to the world.
Notes for Tonight's Chicago.pm Meeting
I’m presenting tonight at the Chicago Perl Monger’s meeting. I’m giving a tour of some stuff that might appeal to Perl programmers who want to learn new languages. I’m focusing on Ruby and Python. Here are the notes, they’re also available in my public subversion repository:
Language Hootenanny
Notes for the language hootenanny presentation at February’s Chicago.pm meetings.
Agenda
- A little bit about me
- Find out what everyone wants to know
- Language overview
- for each language, a brief discussion about its culture, philosophy, and resources. Then the one thing about it that’s really “cool” and some code samples.
What I like about a language
Object oriented, good testing framework, great documentation, fun community, lots of libraries, web stuff. Also, interactive shells…the total time it takes to learn a language is cut down considerably if you have an interactive shell to play with. They’re pretty standard anymore, so this is usually just a given.
Classifying languages
There’s really two kinds of languages in my book, the kind you can make money from and the kind you learn for fun.
Ruby
Resources
- Main Ruby site
- Rubyforge, just like Sourceforge but with all Ruby projects
- The Pragmatic Programmer’s Ruby Book (The Pickaxe) by Dave Thomas
- _why’s poignant Ruby guide <—quirky guide to Ruby
- Code Snippets <—actually, this is good for all three languages
My recommendation to learn Ruby is to buy the pickaxe book, and start playing around with it. why’s guide is also good, but it is _pretty quirky, so be prepared. The pickaxe is better if you’re already familiar with object oriented programming and you want to learn Ruby.
One cool thing
Blocks
Python
Resources
- python.org
- Python Tutorial <—the first python tutorial you should read.
- Dive into Python <—the second python tutorial you should read.
The best way to learn Python is to jump into the Python tutorial on the website, then skip around “Dive Into Python.”
One cool thing
List comprehensions.
Perl 6
Resources
PHP?
I haven’t been keeping up with the PHP community enough to really be able to tell you what’s up. I do know that PHP5 is interesting. Discuss amongst yourselves if anyone is interested in PHP.
Other Stuff I Don’t Know (but would like to learn)
Haskell, Lisp
Stuff that other people want to learn, but I’m not so sure about yet.
Erlang, REBOL
TechCoffee, November 17th
After two weeks of other things getting in the way, I attended TechCoffee this morning. I didn’t stick to my plan to work on Maturin though, instead I worked on some new stuff for Tastebud. We’ve been including Amazon links in our articles when appropriate, so I started to work on a shop for the site. Nothing really fancy, just a collection of links. I wanted to use the new Amazon aStore, but the iframe isn’t cooperating with my site layout, so I think I’m going to whip up a quick database backend to collect Amazon links. The nice thing about Django is, I don’t feel any psychic weight from saying, “this really needs some database backing.”
TechCoffee Season 2 First Friday
I just checked in my work from this morning’s TechCoffee. I created a very minimal set of migration scripts for Captains, Ships, Locations, and added a bit to the migration to build 10k locations in a 100 x 100 grid. I started to adapt the user management recipe from Rails Recipes for logins, and then ran out of time. All in all, a productive first TC.
I also came up with a cool idea for building maps in the game. It’s based on the simple ASCII maps from the game Austerlitz. Something like:
**............**
***.........***
**...........p**
Could be parsed up and converted to a series of locations where the asterix’s are land, the dots are sea and the p’s are ports. It might be an easy way to build fancy maps quickly. Something like .[50]. could be parsed as “50 sea locations”.
TechCoffee Soon
The wheels are churning on the next round of TechCoffee. I’m not sure when, or where, but I have decided on a project to work on. Actually, sort of projects.
I set both of them up via Google Code. The first is a straight-up clone of Tradewars 2021 from the old BBS days, set in O’Brien’s world of fighting ships. I’m not sure I’ve said this before, but I love those O’Brien books. A ton. I’m on book 18, only three more to read. Kind of sad. Regardless, I used to love Tradewars, got briefly into Blacknova Traders (a PHP clone of the Tradewars game) and decided it would be a fun diversion for a bit.
The second project is writing an RSVP system / user group management “thingee” for ChiPy. We use a wiki currently, which is a great way to decentralize things, which I’m all for. For RSVP stuff, it would be nice to have a management interface. I put out a request on the ChiPy list to see if other folks would be interested. As I was writing this, a response came in to my request. I totally forgot there was an earlier effort along these lines. We’ll probably just finish that one up.
Anyway, I have some stuff to work on for TechCoffee that should be fun.
Victim of Time in Timeout Chicago
Victim of Time got a nice little plug in this weeks issue of Time Out Chicago (web version). I’ll post a scan of it soon.
Unfortunately, they misrepresent my role a teeny bit, calling me “the designer.” Pat Mullin is largely responsible for the design, I’m just a programmer and sysadmin.
Note to the Python-heads in the audience, VoT runs on Django.
Home Coffee Roasting
I wrote an article on home coffee roasting for Tastebud last night. I’m a big fan of home roasting, and have been explaining it to a bunch of folks over the past couple of months. I thought it was worth a write up, and might be interesting to you techie folks. http://tastebudchicago.com/blog/roast-your-own-coffee/
I also added a couple of my roast notes. I have a stack of index cards I need to enter into the site, a bunch of wines, cheeses, and coffees. The teeny coffee list is at http://tastebudchicago.com/coffees/.
If you like coffee, and have a DIY sort of ethic, coffee roasting is probably right up your alley. Get up on it.