We moved last summer, and with that move came an opportunity to build a new layout in a new space. I built three layouts at the old house (none of them got past track-on-plywood benchwork). The space in the new house is 32 feet long by 13 1/2 feet wide -- wonderfully large, but it proved to be quite a challenge to design for. I think that smaller rooms have fewer options, especially with a larger scale like O. With a large (for me) room like this, the possibilities multiply.
I've just begun work at Ritual Development Group, Inc.. Ritual is a product-oriented software company. I'm serving as the CTO and will share more about what we're building as time goes on. For now, suffice it to say that this is a huge step for me; It is the realization of a dream I've had for quite some time.
I'm using SpriteKit in the train game I've been tinkering with on and off, and recently went to add keyboard event handling to my view controller:
I've been using Apple's SpriteKit for the train game. It's gone fairly well, except there have been a few unpleasant surprises with
SKShapeNode, which strokes/fills a bezier path. The internet is filled with folks complaining about buggy behavior from it and I've definitely had more than a few moments where I daydreamed about dusting off my OpenGL chops.
Late last year I was playing Artemis Spaceship Bridge Simulator and, being the sort that likes trains, I thought, wouldn't it be cool if there were a collaborative game that simulated running a railroad? So late in December I started writing some Swift code, building the game as a Cocoa app. Here's what it looks like today:
This video of Swedish close-up/card magician Lennart Green from TED 2005 (YouTube) is simply wonderful. It is a pleasure to watch him expertly fumbling his way through one delightful surprise after another.
Updated 2016/8/25: Made a few style tweaks and fixes for Swift 2.2; fixed start date issue (thanks, gist commenters!).
Norfolk Southern's Tumblr and Flickr tend to have some pretty great train photography on them. Recently they've had some shots of Southern 4501, which has been restored by the Tennessee Valley Railroad Museum up in Chattanooga.
Veteran The Onion writer Jean Teasdale describes Twitter in her latest opinion piece (emphasis mine):
A few years ago I got involved in pinball software development in a pretty big way. It's faded over the past year, but it's still one of my favorite cranial playgrounds for software ideas. I continue to be passively obsessed with contemplating new ways of writing pinball software ("Could you write good pinball software in Lua? What about Haskell? How would that look?"). Mercifully for my family they remain mental exercises.
Sometimes we need to create an array whose length and members are not known at compile time. Oftentimes that looks something like this:
I made the transition from WordPress to Octopress. I'd been a WordPress user since sometime in 2003, when I started my 1128 blog. WordPress was incredible: the installation was remarkably painless and the features (admin interface, layouts, etc.) were top notch as well. Over the years WordPress has improved quite a bit, too. But WordPress has also grown somewhat notorious for performance issues (under heavy load, anyway), and there were occasional security problems as well.
I've had a number of improvements in the pipeline for SwiftText 1.1.0 for quite some time, and finally submitted it to the Mac App Store tonight. One of the most difficult features to get right was Launch at Login. This was a feature that was in 1.0 and was fairly easy to implement at the time. However, in this brave new world of sandboxed apps, launch at login is a bit of a beast. If you're thinking about adding it to your application, or perhaps you're struggling to make it work, perhaps this post will help.
Most of the time when we need a random number, we use
random(), or perhaps
arc4random(). In the old days we might have used
rand(), until somebody told us that
random() was better.
Xcode's snippets feature is rather handy. It's what drives many of the autocomplete templates. For instance, if you type
init on a new line and hit return, Xcode will create a template for an
Beautifully designed 3rd party apps are part of what makes the Mac platform such a great platform. We can be fairly emotional about our beloved Mac ecosystem. So it's natural to feel injured when we learn that one such app has suddenly become encased in ice. Matt Gemmell is right, however, when he says:
CloudApp is one of my favorite tools for sharing images quickly, and I also use Acorn quite a bit for quick image editing tasks. I've been wanting a quick way to upload a snapshot of what I've got in Acorn using CloudApp, so tonight I wrote AcornRaindrop.
There was a post on The Guardian's Technology Blog by Matthew Baxter-Reynolds last week. The piece couches itself as an overview of mobile platforms for the developer looking to get his or her feet wet.
I'm pleased to announce the release of SwiftText, a text scratchpad app for Mac that makes itself available with a keyboard shortcut -- and disappears just as quickly. It's available now on the Mac App Store; you can see more screenshots on the SwiftText page.
Say you have a lot of transparent images that you need to add a white background to. Flying Meat's Acorn has some nice scripting bindings that are up to the task.
My first iPhone game, Shufflepuck, was written in the dark ages -- before the iPhone SDK was even available -- and I modeled the 3D world using the tools I had: basic geometry equations applied to generate all of the vertices programmatically. And it worked! For a good while it was the sexiest table shuffleboard game on the App Store.
If you're using data structures in your Xcode project and you've had to do any level of debugging, perhaps you've experimented with setting up Xcode Data Formatters. Data formatters determine what appears in the summary column of the debugger's data outline view.
Pinball News has an interview with pinball player and Valve game designer Cayle George, in which he states:
I remember my excitement when Tweetie for Mac was released. On the Mac my Twitter client of choice was the website itself. I used Tweetie on the iPhone, but none of the available Mac clients matched my mental model of what a Twitter client should be. Tweetie for iPhone however was a perfect match. So when Tweetie for Mac became available and I saw that it had the same organization and similarly excellent visual treatments as Tweetie for iPhone, I wasted no time in purchasing my license.
I saw (via Kottke) that Steve Carrell says he will be leaving The Office at the conclusion of the seventh season. As someone who was a fan of the original The Office (the British one, you know) and who was dismayed to learn that The Office was coming to NBC (Are there no good, original ideas for shows waiting to be made? Are we so devoid of creativity that we have to adapt every hit BBC show?), and who, after several years, came to have a certain level of respect for the new adaptation The Office, I am happy to read this news. Not that I had reason to suspect otherwise, but I'm glad somebody over here knows how to quit when you're ahead.
I've been working on a Mac application recently that's 10.6-targeted, which has afforded me a multitude of opportunities to use blocks (Apple's C language extension introduced in Mac OS X 10.6) to get some tricky features written with a level of grace that previously wouldn't have been possible.
I was having quite a bit of trouble getting
NSBackgroundStyleRaised to work on my
NSView subclass's label, creating the
NSTextField programmatically. I tried fiddling with the background color, I tried disabling my
drawRect:. Really hard.
Gerry Stellenberg's P-ROC became available today and I thought this would be a good time to write about the open source software that's written to work with it. First, though, I want to talk about what P-ROC is and what makes it so cool.
For quite some time now I've been interested in developing my own pinball machine. Obviously this is a massive endeavor. Before I happened across the P-ROC project, over the course of several days in April of 2007 I did some work on driving a pinball dot matrix display (DMD) with an Arduino microcontroller. Here's what I made; read on for the details of how.
This post originally appeared on my Incomplete Labs blog on September 2nd, 2009.
Updated 2010/12/9 to improve the solution (see below). Updated 2016/8/25 to add Swift.