PlayTank, Inc. is currently on hiatus. I have rejoined Microsoft, where I am working as a developer on Office for Mac. To avoid possible conflict of interest, I am suspending all business activities of PlayTank, Inc. Will we be back someday? At this point, the only thing I know for sure is that I'm working with a great team of people on a pretty incredible project. And yes, we really are Mac people, and we really want to make Mac Office great, and we're not perfect but I think we did a damn fine job on 2008. Remember that time when Excel didn't crash? That might have been me ;-)
There has been a dearth of posting on the site lately. For that, I apologize. At the beginning of this year, I started a contract with a local software development company. I have been making extensive use of the knowledge I gained in the past year of investigating the Mac, and now I'm contributing to a well-known OS X application. I'm working with a great team of people, and I expect I'll be doing more with them in the future.
The one thing that blows me away is the difference between the PowerPC Macs and the Intel boxes. I've got a G5 PowerMac and a Mac Pro on my desk. And the difference in compilation speed is incredible.
Over a year ago, I posted an article about the IT Infrastructure I am using for my business. I thought it was time to revisit that article and see what has changed, and why.
Source Code Control
Vista is the first significant OS release from Microsoft in 5 years. It’s also the first consumer Windows release since Windows 3.1 (1992) where I am not working at Microsoft during the end of the release cycle. And though I am not at Microsoft, I still know a lot of people there. And it appears, at least from where I sit, that this release has one major difference from all the others. Well, all the others but one.
That difference is the general excitement of the Microsoft developer staff about the product. And I measure that by the number of people who have access to the beta or RC bits and yet have not installed them at home. The practice of “dogfooding” the latest and greatest has been something that MS has kept as a cultural core value. From what I’ve seen, very few ’softies are taking the plunge and putting Vista on their home machines. And from conversations, I know that many don’t plan on getting Vista installed any time soon.
This week I have been devoting some time to learning Ruby. I'm starting with the language itself so that I can come at Rails versed in the underlying architecture. I'm a big believer in building up a decent mental model of the lower levels of a system before I begin using higher level tools.
Which is why I spent quite a bit of time messing around with DarwinPorts, installing Ruby, Rails, RubyGems, MySQL, and lots of other software. One of the things that I've heard in complaints about Ruby, and frankly about many open source projects, is that installation can be tricky and sometimes downright painful. And I'd have to say that there are a few hiccups in getting Rails working on OS X.
I'd like to apologize for the lack of recent updates on this site. A few months ago I was diagnosed with a serious but treatable heart condition. And so I decided to spend the time fixing that. I'm now recovering from a very successful open-heart surgery, and things are looking very good long term. But I am currently taking a short hiatus from most business related activities to focus on my recovery and family.
Expect to see more postings, probably starting in the new year, as I pick up again. Expect a new site design as well, as I learn from this first attempt with Mambo and re-evaluate the evolution of the site and of PlayTank in light of the recent positive changes in my health.
The "obvious" test cases failing, I poured over the Core MIDI documentation to discover that the MIDI read callback functions are called on a different thread than the main application. This makes quite a bit of sense. The upshot, however, is that I'll need to write a multi-threaded method of sending the data back to my application for use. The Apple sample code for MIDIReadProc, however, was carefully chosen to be self contained and does not need any UI synchronization. Which means they chose a sample that is technically correct but which misses the intended use of the function for 90% (or more) of their target audience.
One of the first things you'll need to do when you start up a small software company is build your infrastructure. If you're coming from a large environment, many things you took for granted will be missing. Here's a list of some of the choices I've made, and why.
Source Code Control
Submitted by Brian Marshall on Fri, 2005-07-29 02:00. Core MIDI
I've begun writing some Core MIDI code today. I'm still writing some test spikes to explore the API. But so far using Core MIDI is a microcosm of my Mac experiences so far.
-The user part of Core MIDI is sweet. I picked up a MOTU Micro Lite interface for my office, and it installed incredibly easily. Drive installation on OS X is far cleaner than Windows. And once the hardware was up, the "Audio MIDI Setup" program was another pleasant surprise. It took mere minutes to set up my entire MIDI topology with nice graphical elements representing the hardware. It's obvious that Apple cares about Pro Audio users, and has done everything they can to make the user experience slick and easy.
When last we spoke, I was looking for a method of applying test-first development to Core Data. After some very Core Data specific initial code, heavy refactoring, and many adventures along the way, I've finally built the solution I need. As you'll see, it has used far beyond Core Data. If you're interested in more information on my solution, let me know. Here's the story of how I ended up where I did.
First, I wrote some hard-coded tests to load the root object of the Core Data Model (NSManagedObjectModel). I then found the child NSEntityDescription objects and their NSAttributeDescription objects. This allowed me to write a hard-coded test to make sure the model looked like I wanted it to look. Fine for phase one, but it was a real pain to add any new tests. It was several lines of code to add a single new Attribute, and very ugly to start testing the second entity.