In our continuing series documenting sessions conducted at the recent CodeMash Summit, following is our Codemash Installment #8 of 10. Codemash is an annual event drawing software developers from throughout the United States to meet up and discuss current practices, methodologies, and technology trends across a variety of platforms and development languages such as Java, .Net, Ruby, Python and PHP, as well as infrastructure and mobile development areas.
Async Outside and Inside
This pair of presentations was very informative. The presenters (Jon Skeet for the “Inside” and Bill Wagner for the “Outside”) are both very knowledgeable about the C# language, and their presentation was fairly well put together for having such a short amount of time to merge the two (these presentations were supposed to be two separate activities). Instead, they combined their presentations with Bill handling talk about the outside, and Jon handling talk about the inside). I'm very excited about this new feature that we'll be getting soon, even though its biggest use is in desktop type applications, there will definitely be advantages on the web. For those of you who haven't heard of it, the "async" keyword will be something that you can add to a method, and then inside the method you can use the "await" keyword (similar to "yield return" in an IEnumerable) to make the code immediately return to the caller while still eventually running whatever it is that you awaited. This is not a multi-threaded thing (though it can be -- it is up to your implementation, however). Windows 8 is going to have a time limit on the UI, if a method takes more than some (very small) number of milliseconds, Windows will kill the app. Async/await is how we will write apps that are more responsive since the methods will immediately return rather than waiting on external services. The internals of async are very fascinating, and if anyone wants a second hand attempt at explaining it, respond to this blog post, and I will be happy to help (though I would first recommend checking out Jon Skeet’s blog series on the subject here: http://msmvps.com/blogs/jon_skeet/archive/tags/Eduasync/default.aspx). Luckily, how it works is one of those things that are interesting to know, but will not be required for us to use them (much like how foreach works in C#; We all use it all the time, but you don't often think about the state machine that the compiler builds behind the scenes in order to support it).
This was an interesting session for me. One of the pieces of Android development that I haven't read much about was what to do with local data. They presented the four different places you can store data [preferences (which end up as an XML file in the application folder), Content Providers (which is how you access things like Contacts and Media), standard files (using java.io), and a SQLite database (which also ends up as a file in the application folder)]. The talk was primarily about the SQLite database and how to interact with it. They showed code that I've seen before (big ugly strings concatenated with constants like "CREATE TABLE " + TABLE_NAME + "( " + ID_COLUMN_NAME + " int auto increment primary key, " + NAME_COLUMN_NAME + "…"). I've seen this types of examples before and they leave me wanting a different method, but they sympathized with my pain here and briefly touched on a point about the syntax being very particular and that in their experience deviating from this painful method lead to even more pain. Oh well. They also briefly mentioned alternatives including db4o and CouchDB, both of which can be added to your application to allow a non-SQL type of database which can sometimes be easier to work with (db4o is an object database, so it ends up almost like the objects are always available, CouchDB is a NoSQL type DB that can do some very awesome "sync with a server automatically whenever wifi becomes available" type things, if you have a CouchDB server elsewhere.
Lightning talks. Pecha Kucha is a presentation methodology where you utilize 400 second presentations, made up of 20 slides with 20 seconds per slide about whatever the presenter wants to talk about (e.g., "Love" was a topic by one of the Ruby developers, and Jon Skeet made it seem like Glee (the TV show) was about software development, etc). I found the format interesting and the presentations were often humorous. There was one presentation on writing the "urinal rules of etiquette" as a code kata, which was pretty funny. Another on what we can learn from recent engineering disasters (Fukushima and the French flight that disappeared 2 years ago). One about how we shouldn't put all of our effort into avoiding mistakes (he mentioned that he recently accidentally dropped one of their customer's production databases in the middle of the day) and instead focus on quickly recovering after the inevitable mistakes occur.
Check back for Codemash Installment #8 of 10.