This year I went to CodeMash, a fun, eclectic software development conference held at the Kalahari Resort in Sandusky, OH. I learned quite a bit and had a great time. There were so many good sessions that it was hard to decide which ones to go to. To help me decide I decided to focus in on two areas I'm currently interested in:
- Mobile web development/PhoneGap
The first two days of the conference, Tuesday and Wednesday, were devoted to half and full day workshops/tutorials that CodeMash calls Precompilers.
Tuesday AM: PhoneGap tutorial
The highlight of this presentation was the discussion on how to test mobile web applications and the various tools that are available.
Probably the coolest one I saw was
Ripple. Ripple is a mobile web
application emulator that can run as a Chrome extension. You can simulate
different devices and different frameworks (I believe it can emulate the
PhoneGap API so you can test your code to some extent). You can change network
settings and geolocation data. You can also fire off mobile specific events
deviceready. The user
is hosted on Blackberry's website Ripple is currently an Apache Incubator
There were some other tools that looked interesting and were demoed but I haven't yet played around with them. First, you can connect the desktop Safari browser to the mobile Safari browser running in the iOS Simulator. You can use all of the normal Safari developer tools but they work with the web page in mobile Safari. Very cool. The second tool I'll mention is Edge Inspect which takes that same idea and extends it so you can remotely inspect mobile web code running on an actual device. Edge Inspect is a freemium service so you can try before you buy and perhaps get a lot of use out of it without spending a dime.
Finally I'll mention weinre which wasn't mentioned (and to be honest I've not used it but have heard of it) but is in the same vein and is a free and open source project.
Tuesday PM: Choose Your Own Application
If you want to see what the code looks like, I've pushed my code to GitHub: https://github.com/machristie/chooseyourownapplication-bbjsnodeheroku. I found Heroku ridiculously easy to get set up with and a really simple and powerful way to deploy out a website. The combination of GitHub and the free usage tier of Heroku is especially nice for an exercise like this because you can easily publish the code and the working implementation for something you are learning or some new approach you are trying and would like feedback on.
You can see my running implemenation here http://cyoa-mchristie.herokuapp.com/.
Wednesday AM: Atomic Scala
This session was presented by Dianne Marsh and Bruce Eckel. The idea was to present concepts in Scala one at a time (or one "atom" at a time). I think they're intended audience is first time programmers or at least programmers who don't have a Java background. In any case the pacing of the tutorial was way too slow, especially for a session with an advertised level of intermediate. They were kind enough to give us a pre-publish version of their book, Atomic Scala, and going at my own pace I would probably find it useful for learning Scala. We'll see.
- jasmine-fixture for easily adding elements to the DOM that are expected by the tests
- Using Coffeescript which allows for a cleaner syntax making the tests more readable
- jasmine-given for "Given", "When", "Then" style testing.
- lineman is used to automatically
compile CoffeeScript with
lineman runand automatically run your tests (or specs) with
lineman spec. The nice thing here is that the testing framework was also remote driving a Chrome browser window (or headlessly) to re-run the tests and display the test results. This gave immediate feedback: write a test, save, test is run and status displayed; update production code, save, test is re-run. You can see what working with lineman is like by watching this screencast:
This was an extremely nice and productive setup. We paired up and worked on creating a test for a fibonacci calculator web application. It was tough since I didn't know CoffeeScript or Jasmine, but very rewarding as it helped me see how I would actually use this to test real code. I've posted my solution on GitHub.
Well, the first two days were kind of mentally exhausting! But it was fun to be thrown into the deep end and have to figure out a bunch of stuff using frameworks and languages that I'm not familiar with. Definitely worth it to do the Precompilers if you are going to CodeMash.
Next week I'll blog about the other two days of CodeMash.