Macintosh Disk Images

Or… Where Mac OS X really shines over Windows.

On Mac OS X, the preferred installer is none at all. Instead, applications are self-contained bundles that, under the covers, are folder/directory structures that the operating system treats as a single file. Although these entities are analogous to a subdirectory under ‘Program Files’ in Windows, they appear in Finder (the Mac equivalent to Windows Explorer) as a single icon. The bundles should be considered read-only, like the aforementioned Windows folder, and there are known writable areas for user and configuration data.

To “install” a program, a Mac user expects to simply drag the bundle/icon to a location. Done. That’s it. This process is so simple and straightforward that I expect it to be copied by Microsoft at any point. Of course, some applications (think that they) require additional steps and actually use an installer, but short of a major application that touches several areas of the system, like the Xcode Developer Tools, it should be unnecessary.

So, the question becomes: How does one actually distribute applications for Mac OS X? The answer: A publisher provides a downloadable disk image (.dmg) file which contains a complete folder in a single file, readable by any OS X system. When a disk image is opened, it is “mounted” as a new volume with the contents (and name) of the original folder, and from there, the user just drags the application to the desktop (or other folder) or can even just double-click it to run in-situ.

In order to create a disk image, start by creating a distribution folder with the desired name. In our case, with an early version of Pretty Good Solitaire Mac Edition, the folder was named “Pretty Good Solitaire 1.01“. Next, after building a final release version of the application bundle, copy (Alt-drag) it to this folder, along with any other separate files, such as documentation, you want to appear. In our case, for the trial version, we had only the application bundle, named “Pretty Good Solitaire trial[.app]“.

Once the folder is set up as desired, it is time to actually create the disk image file, which is done using the ‘Disk Utility’, which is found in the Utilities folder (Shift-Command-U). Launch this application, and then select ‘File->New->Disk Image from Folder’ from the menu (or Shift-Command-N). Navigate to the folder and press the ‘Image’ button. On the next window, type an appropriate name, make sure that ‘Image Format’ is “compressed” and ‘Encryption’ is “none”, and then press ‘Save’. (We used “pgsme101trial[.dmg]” as a name to eliminate spaces, which are inherently problematic for downloads.) The disk image is then created in the same folder that contains the distribution folder. Quit ‘Disk Utility’.

The disk image is ready to ship, but one can internet-enable the image (by setting a flag) to make it even easier for the user. Normally, when downloaded, a disk image is automatically mounted so the contents can be seen and copied. When internet-enabled, the contents of a disk image are copied to the downloads folder and the disk image itself is unmounted and removed, resulting in just the application in that folder, without the user having to do anything with the image file. An image can be internet-enabled from ‘Terminal’, by navigating to the disk image and typing, “hdiutil internet-enable [filename].dmg“.

This is the basic method for creating a distributable package for Mac OS X. Note that, inexplicably, the Apple Store actually requires ZIP files, so the usual practice is to place the disk image file into a ZIP file, but allowing direct downloads of the DMG file from the product site requires fewer user steps. We have used the above practice for Pretty Good Solitaire Mac Edition 1.0 with success; however, we are modifying it to add “curb appeal” for version 2.0, which will be described later this week.

OT: This weekend produced good NCAA basketball results:
MSU (men) 77, Robert Morris 62.
MSU (women) 60, Middle Tennessee State 59.
MSU (men) 74, USC 69.

Relaxation FAIL

Or… Gregg and the Terrible, Horrible, No Good, Very Bad Day.

As usual, we have been quite busy with development around here, and everything seems to have stepped up the pace since the start of March. I thought that I was going to get a break last weekend, but ended having to correct a mistake (of my own making, to be fair), so I ended of working especially long hours on Sunday. In exchange, however, I decided to take yesterday [Tuesday, March 17] off to enjoy the particularly nice weather around here.

We have a secondary office and retreat at an “undisclosed location”, surrounded by woods and nature, away from the normal demands of a daily office. (We do, of course, have the modern computer amenities such as DSL and a wireless network, so I can go there to get work done away from interruptions.) This place also serves as a storage location for the company archives. Or, rather, it did

On a beautiful early Spring day, with bright sunshine and temperatures in the 70s, we arrived for some basic relaxation (and to drop off an offsite backup). Upon opening the front door, though, we were greeted with an unpleasant moisture in the air, followed quickly by the discovery of a plumbing failure that had completely flooded one bathroom, the hallway, and two adjacent rooms. One of those rooms held the archives.

Further inspection showed that many of the items on or near the floor, including a large portion of our collection of game development and programming books from the last 30 years, had been ruined. As we quickly moved to save the dry items and salvage as much of the wet stuff as possible, we discovered that the floor in the room had partially collapsed, causing a stack of books to fall into a wall, seriously damaging it as well. However, we just kept working until the rooms were mostly empty, and then I succumbed to the shock.

The overall damage is still being assessed, and the standing water is still not yet cleaned up. (Carpeting acts as a sponge and effective water conduit.) I can definitely say, for a fact, that some irreplaceable items were totally ruined, but also that some of the items ruined probably would have already been eBay fodder for a few bucks had I found the time. Thankfully, many boxes avoided the water entirely, but usually at the expense of whatever they were sitting on. Much of the paperwork still needs to be evaluated and either salvaged or discarded. All of the registration letters for PACMANIA were submerged. The PlayStation 2 development system survived by being perched on some furniture, but the Apple II (and color monitor) in original packaging were not so fortunate; I truly hope it was only the boxes that were destroyed.

The blog posting originally planned for today has been moved to Friday. For now, I sit in mourning.

Second place in Class A1

The ice racing season ends with a good championship position.

The points championship in MIRA (Michigan Ice Racing Association) is over, and I finished in second place in my class. I raced in Class A1, which is front-wheel drive cars, racing rubber-to-ice, first driver. (The A1/A2 split allows two different drivers to participate using the same car for more fun!) I finished the year with two wins (which is two more than my previous total for all 12 previous years of ice racing), and I was competitive, especially toward the end of the year.

2009 MIRA Series Points – FINAL STANDINGS

Going into last weekend, I still had a chance at the championship, but with the cancellation of the Saturday event, there were not enough points left for me to either win the championship nor lose second position. This turned out to be a blessing, as [ob Game Development] the recent beta version of Pretty Good Solitaire Mac Edition, version 2.0, expired, so I stayed home and worked for the whole weekend instead.

Rumor has it that the person who won the championship has been racing (in various forms) for 35 years and this is his first ever championship, and he did beat me more often than not, so it was well earned and well deserved. (I have won a TSD Rally Championship before.) This year was my best showing in MIRA since I first raced back in 1985, when the group was only a few years old.

There would be some non-points racing this weekend if it were to happen. A few hardy optimists are still holding out hope for one last event, but it is currently almost 60 degrees here (in the overnight hours), and the forecast calls for temperatures well above freezing until Monday (and beyond), so it is very unlikely.

The downside of VOIP

Or, Why you should probably avoid Comcast.

Last Friday, our cable television went out. Not like ‘some services are missing‘ out, but like ‘somebody just sliced a cable‘ out. There was static on all of the analog channels, and just black (no signal) on everything digital. Many months ago we made the decision to ditch their cable modem in favor of our SDSL connection (from ACD.net), which was both faster and more reliable. We decided that the redundant Internet connectivity was more trouble than it was worth, at the added expense, and also, frankly, were just unhappy with Comcast.

For the last year or so, Comcast has been on an all-out media blitz to get people signed up to their VOIP package, bundling cable television, Internet, and telephone. The timing may have been coincidental, but the mailings seemed to intensify after we downgraded, and when we had to call about (somewhat regular) problems with the only service we kept (cable television), we always had to listen to another pitch before we could tell somebody in another state that our local HD was out… again.

Anyway, when the cable television service went completely dead, we called the customer support number. Instead of the usual sales pitch we got… wait for it… nothing. Yup. Apparently they use their own VOIP service, so when the cable system has a failure, you cannot reach anybody there by telephone. Brilliant! I was not even vaguely intrigued by the offering, but this definitely convinced me that my convictions against this technology (and Comcast) were not unfounded.

Not that I am any fan of AT&T either, but I am a believer in land lines. In the event of an emergency, when one really does need to have a phone, I am glad to have a system that will work even when the power is out. (Yes, we keep a standard handset telephone for just such an occasion.)

Our cable television signals did come back before prime time, but I think that all a satellite television company needs to do is add CBC and we are there. (Perhaps we should just move to the Bahamas where, oddly, Canadian programming is also available. Do they long for snow?)

Video Games are (still) Protected Speech

The ruling in a pivotal California case is upheld.

This week, the U.S. Court of Appeals for the Ninth Circuit announced its ruling in Video Software Dealers Association vs. Schwarzenegger, confirming, unanimously (3-0), the decision of the lower court that two 2005 California laws were “an unconstitutional violation of the First Amendment’s guarantee of freedom of speech.” They were also found to violate the Equal Protection Clause of the Fourteenth Amendment.

The laws, California Assembly Bills 1792 & 1793, would have categorized ultra-violent video games (by a broad definition) as “harmful matter”, making their sale to minors illegal, and would have required games rated ‘M’ by the ESRB (Entertainment Software Rating Board) to be placed in a separate section and require signage to explain the prohibition in stores where such games were sold.

The bills were championed by Assemblyman Leland Yee, who is a perennial windmill-tilter when it comes to this issue. Not surprisingly, he claimed that the decision was wrong and called for it to be taken to the U.S. Supreme Court, despite the fact that California taxpayers have already been forced to pay $282,794 in attorney fees for the original go-round, and of 13 times this has been tried (in various US jurisdictions), the courts have never ruled that any of these bills was Constitutional.

You can download the entire ruling here [PDF, 570K, 30 pages] (courtesy of Video Game Voters Network).

Video Games 13, legislators 0. (Are we bored yet?)

Reminder: comp.sys.ibm.pc. games.announce

Some game marketing is still essentially free.

If you are interested in marketing games, you can post announcements to the Usenet newsgroup, comp.sys.ibm.pc.games.announce, a group for which I am the (sole) moderator.

To recycle the relevant portions of my original announcement here:

The beauty of using Usenet for marketing is that it is essentially free, making it one of those easy steps that an independent game publisher can take to get additional exposure for its titles. Google Groups carries comp.sys.ibm.pc.games.announce, so your announcement is searchable there and quickly incorporated into the Google index as well.

This is an announcement group, rather than a discussion group, so messages will stand on their own, though the (unmoderated) ‘comp.sys.ibm.pc.games.misc’ discussion group provides an outlet for conversations. For shareware authors, there are other software announcement groups on Usenet, but none that cater specifically to games, so this is an opportunity to be noticed.

Here is the official charter for csipga (as it is known for short):

This newsgroup is for announcements that are useful to the entire PC computer gaming population, including but not limited to new release announcements, software publisher news, bug information, and PC game reviews. Followups will be directed to comp.sys.ibm.pc.games.misc, or another appropriate subgroup at the moderator’s discretion.

In practical terms, I will likely approve almost any message as long as it relates to PC gaming (not in a cheap spam way) under Windows, DOS, Linux, or even Mac OS X if I am feeling generous. Press releases are encouraged, as well as product announcements that may not warrant a full press release. Note also that game reviews are allowed, so it is perfectly acceptable to have a satisfied customer post a glowing game review (though it should come directly from the author, not via the publisher).

[Back to new information…]
Since this is a low traffic group, announcements will stand out, so I encourage anybody interested to take advantage of this game marketing opportunity.

Note that, due to the way moderated newsgroups work, you do not even need to have Usenet access. Simply email your message (press release or whatever) to the submission address, csipga@sophsoft.com, and it will be queued. As long as the message is in plain text (HTML emails are automatically binned) and is on topic for the group, it will be posted. If you have any problems, you can reach me via comments here (or at my regular email address).

I look forward to some good submissions.

Jason Della Rocca steps down

The Executive Director of the IGDA resigns.

This week, the International Game Developers Association (IGDA) announced that Jason Della Rocca, its long time Executive Director, will be stepping down effective March 31. This will be just after the conclusion of the 2009 Game Developers Conference (GDC) this year.

Under Jason’s leadership over eight and a half years, the IGDA has grown massively (2900%), from 500 to 15000 members. More importantly, and understandably omitted from the press release, he took the organization from a fairly directionless group of early game developers (of which I was one) to an association that actually has significant relevance within the game industry.

You can read about Jason’s reasons for departing in this post on his personal blog. (There are lots of comments there, too, as well as at this Gamasutra article.)

I had the opportunity to work with Jason Della Rocca back in 2005 when the State of Michigan proposed legislation restricting game sales in the state, and I testified before a Senate committee, on behalf of the Detroit IGDA chapter. I saw Jason’s passion first hand, and his (and the organization’s) guidance and assistance was especially helpful. (Nevertheless, the legislation passed anyway, but then it was ruled unconstitutional, as expected, and ultimately cost Michigan an extra $182349 in restitution for industry legal fees. They should have listened to us.)

Good luck in your new endeavors, Jason!

Global Game Jam Detroit

Local developers participate in this international game event tomorrow.

At 5:00pm tomorrow [Friday, January 30, 2009], the Global Game Jam begins. It will last 48 hours, ending at the same time on Sunday (all times local). Since the event is worldwide, it covers many different time zones, and the first jams, in New Zealand, will begin in just over half a day from now.

The IGDA Detroit is providing/sponsoring one location for the Global Game Jam. Dozens of developers will converge on TechTown in Detroit to participate. These will be some of the more than 1750 people who will take part at one of 53 locations in 23 countries around the world.

There is still room available at Global Game Jam Detroit 2009, and it is open to everyone. The cost to participate is only $25 (to defray food costs); click the link for details.

What is a Game Jam?
In a Game Jam, participants come together to make video games. Each participant works in a small team on a complete game project over the course of a limited time period, usually over a weekend. With such a small time frame, the games tend to be innovative and experimental. The Global Game Jam (GGJ) is the first of its kind: a game Jam that takes place in the same 48 hours all over the world! The global Game Jam will start at 5:00PM Friday, January 30, 2009 through 5:00PM Sunday, February 1, 2009, (all times local). All participants in the Global Game Jam will be constrained by the same rules and limitations, with each time zone having one distinct constraint.

In addition to the start of the GGJ, there will be a chapter meeting for IGDA Detroit from 5:00pm to 8:00pm (also at TechTown, 440 Burroughs St., Detroit). Even if you are not planning to participate in the game jam, come hang out a while (for free) with other game developers. I plan to be there; how about you?

Chinese New Year 2009

I think that this finally brings the 2009 New Year celebrations to an end.

It is time to really get 2009 started properly now. One way to help one focus on goals is to make those goals public, so here goes:

  • Increase product development significantly (by rearranging priorities),
  • Develop at least three major products/updates for Goodsol Development (for Windows and Mac),
  • Release three more projects that have been in development (for several years) internally,
  • Establish baseline marketing and measurement techniques (on which to build), and
  • Move business operations toward a paperless office environment.

Yes, these five goals are quite ambitious but also realistically attainable. One major release every two months (on average) will keep us very busy, but the roadmap for these is already established. Our development projects are all very different and should be enlightening. The Goodsol projects are building on the technological improvements of last year. Finally, the marketing and business plans have internal support and should, ultimately, improve operational efficiency.

By the way, we could still use a few more beta testers for the upcoming version of Pretty Good Solitaire Mac Edition. Anyone interested can email me directly at beta@sophsoft.com, and I will forward your information.

On the personal side, I will keep my exact goals to myself, but I have been playing competitive soccer and am pleased to be back ice racing again this year. I am currently second in points (in class A1) after having a disappointing day in which I suffered not one, but two DNFs (Did Not Finish) due to peeling tires off of the wheels. It has been a nearly perfect year for ice, so I will be repaired and back up in Chippewa Lake this coming weekend for eight more exciting races.

More ice racing pictures should be forthcoming.

Happy Birthday, Mac!

The Apple Macintosh is 25(ish) today.

On this date back in 1984, Apple Computer “introduced” the Macintosh to the public with its famous “1984” television commercial, aired during the third quarter of Super Bowl XVIII.

Although this 60-second spot, directed by Ridley Scott, only ran once (OK, twice), officially, it is considered an advertising masterpiece and is probably one of the most viewed commercials in history. For more information, see its page on Wikipedia.

You can also watch the commercial itself on YouTube.

The Apple Macintosh was actually introduced on January 24 (two days later), but on Saturday I will be ice racing with MIRA (Michigan Ice Racing Association), so we celebrate earlier. (My car this year, a green Ford Contour, is so fast that a camera could not keep up. Yes, that is really me.)

By the way, in Super Bowl XVIII, the underdog LA Raiders (still sounds wrong) defeated the Washington Redskins by a score of 38-9, so the Mac ad was somewhat more exciting than the game.