Premake 4.2 Beta 1 released

After a long slog, we're finally ready to begin the countdown to the 4.2 release. Whew!

Get 4.2-beta1 from SourceForge

The big news is the freshly minted support for Apple's Xcode IDE. This was a complicated one, so give it a good beating and help shake the bugs out. And while you're doing that, I'll be squeezing in a few more small features, applying your patches, and generally cleaning things up. I'm hoping to get to a release candidate before the end of the year.

The changes so far:

  • Feature 1526976: Add support for Apple Xcode 3
  • clean now removes MonoDevelop .pidb files correctly
  • added os.executef()

Enjoy, and be sure to send in those bug reports!

Retro racing reboot: The Need for Speed

Ah, the original Need for Speed! Alpine, Coastal, Vertigo Ridge—great tracks now trapped in an out-dated game, passed by in time. As an avid road-tripper, I loved those open road tracks and the opportunity to drive with traffic in an environment that, for the time, felt realistic. I even plunked down the cash for a Thrustmaster T1 wheel and pedals.

Several years ago I had the idea to rip out those tracks and convert them to run in a modern simulator. With some help from Denis Auroux (the author of TRACKED, to my knowledge the first player-created editor for a commercial game) I was able to decode the track segments and textures. But then I got distracted, my attention turned elsewhere, life and children caught me up, and the code was left to collect dust.

Now the driving bug is biting again and I'm blowing the dust off this project as a first, small step back into simulation coding. I dug up my circa 1995 NFS SE CD and got it running on my 2009 MacBook Pro. It is…dated, as you can imagine. The steering and handling is all over the place compared to a modern sim; I have no idea how we managed those quick laps back in the day!

(As an aside, I used to run the AutoSim World Records Site back then, which you can still find in the Internet Archive. None of those records are mine though; too much time building websites and not enough racing.)

In case you feel like following along, here's how I got it working.

Premake 4.1.2 Released

Premake 4.1.2 is now released and available for download! This release includes...

  • Fixed ManagedExtension setting for Visual Studio (managed C++ code will now build properly)
  • Fixed os.match() bug for large result sets (David Raulo)
  • Patch 2840052: Order problem of static link (fixes linking to static libraries in GNU makefiles)
  • Patch 2802722: Add floating point model flags FloatFast and FloatStrict (Suigintou)
  • Patch 2865333: Support for ObjC and ObjC++ sources (Johannes Spohr)
  • Bug 2814179: Xbox 360 precompiled headers not working

Enjoy!

Structured Procrastination

Ugh.

I'm at home today, the first of two days of vacation. I had hoped to use this time to crank out some Industriousness, like a new article or progress on Xcode for Premake. But I find myself unmotivated, uninspired, lacking in enthusiasm or energy. Humbug.

One needs time to recharge now and again, I know. I ought to go out on the deck and read a book or scribble in my sketchpad; noodle around on the Danelectro or take a drive out Crum Creek way. But I feel a certain obligation to my work, to be making steady progress, especially on an "opportunity day" like this one.

To take the edge off my self-imposed guilt I've dropped back to structured procrastication, checking off odds-and-ends around the house like ripping the new movies to the Playstation, fixing the mower, getting Aiden some bike riding practice. This has a certain satisfaction, and if it lacks in glamour it still shortens the backlog.

I guess what bugs me most is the correlation between the vacation and the drop in motivation. I have an entire day available for my own work, and so I feel no urgency to get started. Coincidence or causation? Is it worth creating a false deadline for myself, or better to just let it ride? Push through and get something done knowing that it will be uninspired, or live to fight another day?

I have no answer. But these books on my desk could be put away, and those shelves could be dusted...

Update: Apparently I just needed to vent and organize. I felt better as soon as I posted, and by the time I finished decluttering the studio my brain was turning over Xcode ideas. I ended up making decent progress on the day.

Premake 4.1.1 Released

Premake 4.1.1 is now released and available for download! This release includes important fixes for the Xbox 360 and Mac OS X Universal binary support which introduced in version 4.1.

The full change log:

  • Use libtool instead of ar for Mac OS X Universal static libraries
  • Fixed Xbox 360 linker settings in Visual Studio
  • Remove platform-specific intermediate objects on clean
  • Bug 2819232: Buildoptions not used when creating Makefile for C#
  • Bug 2813297: OS X universal config should be "univ" (William Burnson)
  • Bug 2814179: Xbox 360 precompiled headers not working

On Proper Projects

A lesson learned from the development of Premake 4.1: keep your active projects specific. I mean really specific.

I started development by creating a new project, naming it Premake 4.1, and dropping in a bunch of actions from my backlog. Technically this is a valid approach; the only definition of a project I've ever encountered in this context is "any result that requires more than one action." Now older and a little wiser I realize how incredibly vague that is. Consider: Program TV remote vs. Achieve world peace. Both technically valid projects. One doable, the other not so much (which one is an exercise left to the reader).

My project started out with a reasonable list of actions, but inevitably new ideas came up, features and refactorings, bugs that needed fixing. Because my project was vague enough to encompass all of this new work it soon did, growing larger and less focused, and I started to feel like I was losing ground. Rather than stepping back and fixing it as I should, I tried crunching harder which just made the problem worse. Ack!

Looking back at this trainwreck learning experience, I've come up with some rules to help keep my projects manageable going forward:

  • Projects should be a dozen actions or less, a number I pulled out of thin air based on past experience. If it requires more than a dozen steps it is probably larger than I can get my head around in one go, and likely contains hidden work. Better to split it up.
  • If I have to think about whether an action belongs in the project or not, one of them is too vague. Either the action needs to be more specific (or become its own project) or the project needs a tighter focus.
  • Project names should always start with a verb. What is it I'm trying to achieve with the completion of this project? That doesn't prevent Do stuff projects but it at least makes me think about it for a second.
  • When in doubt, split it up.

There are probably more rules, I can't remember. I reserve the right to edit this post later.

I've been doing this for about three weeks now and while I thought it would help my planning a little, the gain in clarity has been quite remarkable.

The Last Guardian

I missed the official trailer for The Last Guardian, the new game-in-progress from Fumito Ueda, that was shown at E3 last month. I'm a big fan of Ico and Shadow of the Colussus, and very excited to see what he's got in store for the PS3.



From GameSpot

It looks like a blend of the two previous games, with a Colussus taking on the role of the Princess. I'd guess that there's more to it than that though, considering Fumito's history of creative, emotional gameplay — and the way he's harshed on others for not showing the same inspiration.

I replayed Colussus last fall and, after defeating the first few, spent the rest of the weekend just traveling with Agro looking for all the apple trees and white-tailed lizards. It was relaxing and satisfying, much like exploring Hillys in Beyond Good and Evil. Here's hoping they find a place for that kind of open-ended exploration in Guardian.

Whys and Wherefores

A bit of navel gazing, if you don't mind...a moment to think about why I'm writing this stuff.

I mentioned before that I'm writing because I feel like it and this is an easy subject for me—but that's not a very useful explanation. A better one is that this stuff has proven itself hugely useful to me, and I'm hoping others will find it useful as well.

You've probably gathered from context that I, like most folks, have a day job: a software consultant developing systems for all kinds of clients. We're winding down a big project now, finishing features, writing documentation, and transitioning support. At the same time, I'm heading up R&D for a new product to be developed in-house, a first for us. Not very long ago those two efforts right there would have been enough to swamp me.

Now, I'm also working on Premake, with two big releases this year and at least one more to come. I'm building out this website too, with another round of changes in the works. I am learning how to develop for Mac OS X and the iPhone (to be featured prominently in Premake 4.2), and getting ready to bring my old Flat Four project back online.

Away from the computer (as much as anything can be these days) I am teaching myself how to draw, playing my guitars again for the first time in almost 15 years (and you can tell...I suck!) and writing for the first time in almost as long. I am teaching myself Spanish (hola!), and tonight is my first Kung Fu lesson. Oh yes, I'm married with two kids, a house-in-progress (aren't they all?), pets...the whole nine yards. And after all that, there is still time for Fallout and Rock Band, hanging with friends, and catching up on Battlestar Galactica (still on season two—no spoilers please!). And that's just what I'm doing now…you should see my to-do list!

Point being: there is a lot I want to do in my time here on Earth. Until recently, I wasn't able to get it done, and it was seriously stressing me out. Now I am getting it done, and the stuff I'm writing about is a big part of that.

To be clear, though: what I've covered so far isn't what got me moving. What finally made everything click was figuring out what I wanted, and building up the courage to go after it. How that happens is rather more philosophical. But it couldn't happen until I cleared my time and my mind to figure it out, and that's what stuff like scaffolds and MITs can do for you.

I'd like to cover a couple more topics in this "stupid simple" series, and then I'll probably slide back toward the technical stuff as I learn about Cocoa and the iPhone. If you have any questions or comments — love it, hate it, whatever — feel free to let me know here or in the comments.

Premake 4.1!

Premake 4.1 is now released and available for download! The full change log:

  • Added support for cross-compiling target platforms
  • Added Xbox 360 support to Visual Studio 2005/2008
  • Added Mac OS X universal binary support
  • Added Playstation 3 support
  • Added precompiled header support for GCC
  • Support links and libdirs for Visual Studio static libraries
  • Fail gracefully when list is assigned to string field
  • Changed GCC flags to -fno-exceptions and -fno-rtti
  • Improved performance of configuration building step
  • Fixed crash when configuration is missing a kind
  • Patch 2031626: Support for additional manifest files (Colin Graf)
  • Patch 2558089: workaround for --as-needed/correct link order (idl0r)
  • Patch 2609028: verbose linking in makefile (kaidokert)
  • Bug 2564404: FatalWarnings has no effect with gmake target
  • Bug 2550759: pchheader option has wrong type
  • Bug 1900333: Parentheses in build path
  • Bug 2790865: SharedLib on OSX fixes (Ash Berlin)
  • Bug 2790882: Trailing slash in path.getabsolute (Ash Berlin)

On Pen and Paper

Continuing my series of stupid simple ways to get things done, I bring you...pen and paper.

The first habit I picked up when I started my forays into GTD was keeping a pen and paper on me at all times. Any thought of significance gets written down. Once it gets written down, I stop thinking about it, freeing up those mental cycles for something bigger and better.

I started out capturing to-dos and reminders; as the mental cruft cleared I found myself with more project and writing ideas. The process is cumulative, and builds on itself. Simple ideas gather depth over time as I consider new perspectives: new features, presentation ideas, a twist in the plot line. And the best part is that all of this happens organically over time, insights arriving of their own accord, so there is no real effort involved other than writing it down as it comes.

Pen and Paper
Notes, quotes, to dos, and MITs...pocket sized!

Once a week at first, but now once a day, I review my notes and move them to more permanent homes, usually into Things or Evernote. I've developed quite a queue of ideas over the years — now I just need to figure out how to make them all happen! Fortunately, I've gotten some ideas on that, too.

I've tried various form factors of paper and pens, including index cards, Post-It notes, Space pens, and all the gimmicks on 43Folders and Lifehacker. My well-informed opinion is a Moleskine Cahier notebook paired with a Zebra F-301 compact pen is the best combo out there.

The Cahier is the perfect size to slip into a pocket. It comes in blank, ruled, or graphed versions. The back pages are perforated, perfect for sharing a phone number or directions. It lays out flat, and holds up well to weeks of travel.

I like the feel of Zebra pens, smooth and consistent, even in wet or cold weather. The F-301 compact is small enough to fit into a back pocket next to the notebook, but expands to a full size pen at need. And it's metal shell is sturdy enough to handle being sat upon, for those times when you forget what's in your pockets.

I have an iPhone as well, which is great for capturing a quick photo or a snippet of sound, but I still keep my Moleskine with me. Despite my gadget-oriented nature, pen and paper is more often than not faster, easier, and more versatile. Project ideas, blocks of writing, sketches, UML or interaction diagrams — not quick or easy on the iPhone.

An added bonus: when a notebook gets full, I note the date on the last page and toss it into a box in my office. I find they make for great inspiration when I'm feeling stalled, providing a real nitty-gritty, nuts and bolts window into my past: what I was thinking, what I was doing, and what seemed important.

This is one powerful habit to have. I've gone from being the guy who forgets everything to the one everyone counts on to remember. My friends have even picked up the habit themselves and started carrying around Moleskines of their own. Maybe I should get a commission, eh?

I am Jason Perkins (starkos), the founder of Industrious One. I'm yammering on about life as an indie, getting things done, Saabs, roadtrips, finding inspiration, and creating the big audacious stuff.

projects:

categories: