Mobile Development

Diary of the Mobile Developer

Morning Coffee #5

  • There’s a new book OpenGL Insights , which is a collection of OpenGL-related articles (Game Programming Gems style, if you’re familiar with that series). The Web site linked above has a Table of Contents and few sample chapters and it all looks pretty interesting for someone doing graphics programming. Unfortunately, the book is pretty pricey ($75) and as far as I can tell it’s not available as an ebook through major ebook channels (Kindle, Nook or iBooks). It seems to be available as an eBook directly from the publisher, but instead of providing DRM-free PDF or something similar they seems to use Safari-style online system, which is not great if you want to read from your iPad. Hope that the publisher will actually sell it through Kindle later and price it down to at least $49.
  • An interesting article comparing several different JavaScript Physics Engines and detailing various pros and cons. Frankly based on provided demos Box2dWeb looks like clear winner with rest of engines having problems with collision detection and some weird impulses, but still worth checking those different engines.
  • JavaScript Scope Quiz is an interesting little interactive site to test your understanding of JavaScript’s concept of scope. It’s fairly simple and doesn’t contain any sophisticated problems, so if you have basic understanding of scopes and closures, you should pass with flying colors, but it still useful especially for JavaScript newbies. For sophisticated details of JavaScript scopes I’d recommend watching this screencast. It’s $9, but it totally worths it.

Morning Coffee #4

  • Pythonista: Right now iPad is not a proper development platform for numerous reasons, including the awkwardness of typing code using the on-screen keyboard and Apple’s restrictive rules, but I definitely see the signs of improvement lately and over time I think we will see iPad as a viable tool for the ‘light-hearted’ coding, i.e. experimentation, REPL-style code exploration and small-scale bug fixing/correction. Today I’d like to present you with another brick in the wall - Pythonista is a wonderful and very powerful tool for writing Python code right on your iPad.

  • Making Train Games: Steffen Itterheim of Learn Cocos2D and Kobold2D fame published a quite thought-provoking article exploring different aspects of properly simulating train motion over curved railtracks. The article seems to be quite open-ended with a lot of work in progress and tons of links to other resources talking about train simulation, but if you’re interested in doing train-based game that’s a great starting point.

Morning Coffee #3

  • Most Important Debugging Trick for XCode: I was recently helping one of my co-workers to figure out some nasty exception in his iOS project and remembered a debugging trick, which is probably one of the most important ones iOS developer should know. In many cases, your app will crash with some exception, but stack trace will point to your UIApplicationMain and will not contain any information about where this exception was actually raised. Here’s how to get the proper stack trace.
    • Go to Breakpoints panel
    • Press ‘+’ sign on the bottom of it
    • Select ‘Add exception breakpoint’ and keep all settings at their defaults Now if you run your application again and reproduce the error conditions, when exception is raised, instead of being caught only by the top-level exception handler and lose all the relevant stack trace information, now it will stop at the breakpoint right at the place where exception was originally raised and pointing to the exact source of the problem. Enjoy.
  • List of Useful Cocos2D Tools: Nice article mentioning bunch of tools that developers can use in their Cocos2D-based projects. Some of them are quite obvious and not really Cocos2D-related, like Photoshop or Audacity, but it mentions all that are really useful and important like SpriteEditor, LevelHelper, TexturePacker, Tiled etc.

Morning Coffee #2

  • Jeff Atwood’s Blog to Book: I read Jeff Atwood’s blog for years and while he was quite often in the shadow of his more famous partner, he still was one of the most interesting engineering bloggers. He just released his best blog posts as an ebook and while technically you can still read all those texts for free on his site, I think paying $2.99 for the privilege is the right thing. Plus it’s easier to read using eBook reader apps, rather than through the browser, so I just paid happily.
  • Brain:
    Javascript library implementing neural network. Javascript is not my top choice for machine learning and AI experiments to be honest (I prefer Python and Ruby), but it’s nevertheless interesting and useful library.
  • CodeRunner: This is a really neat app that allows you quickly run short programs in half a dozen of the most popular programming languages (C/C++, Lua, Ruby, Python, JavaScript etc). While I can definitely use Vim and command-line tools for all these programming languages, CodeRunner has been indispensable in two situations - while interviewing candidates and while studying programming and math classes at Udacity and Coursera. It’s like having jsFiddle, but on your own machine and not just for Javascript.

Morning Coffee #1

Morning Coffee #1

  • Cupertino: I’m a big fan of the command line (at least when we are talking about development), so when I see a new tool, that eliminates yet another necessity to tolerate some web-based UI, it makes my heart sing. Matt Thompson (of Induction and AFNetworking fame among other things) came up with Cupertino - command line tool/gem to automate things we normally do through the Apple’s Developer Portal, like managing devices, certificates etc. This is a perfection:
    • $ ios devices:list
    • $ ios devices:add "iPad 1"=abc123
    • $ ios devices:add "iPad 2"=def456 "iPad 3"=ghi789 …
  • vim-powerline: I’m a big fan of Vim and I’m definitely going to post some Vim goodies in this blog almost daily, but I’d like to start with my recent discovery - vim-powerline .
    It turns a standard Vim’s status line into the prettiest thing ever, but also packed with the functionality. For me, two things are absolutely critical - it changes color when you change the editing mode, which makes it super-easy to figure out if you’re in Normal or in Insert mode and it highlights your current pane, which alleviates my biggest pain with multiple panes (no pun intended) - I constantly lose track of what is my currently active pane. This little plugin cures both problems and does it with a style. The only caveat is that it requires special patched fonts to display all those fancy characters, so it’s slightly less portable, but installation of those fonts takes about a minute and it looks so good, that I don’t really care about this extra step. By the way, my own command line tools settings (aka ‘dotfiles’) are available here.
  • Preparing Yourself for Modern JavaScript Development: Pretty good articles explaining how modern, complex JavaScript apps are composed. It’s important, because there’s a pretty big leap between understanding the basics of JavaScript that will allow you to read (and write) simple code snippets and ability to tackle some modern JS framework like Ember.js or Backbone, let alone write something similar. This article is a good bridge between those two states.