A Safari Template For Use In Mockups

Since I find myself sometimes needing one, I decided to create a fresh, clean, screenshot of a Safari window at 1024×768, with an optional layer showing a 960-wide box, centered. I’ve removed any extras or plugins from the window.

Update: Extranaut Alistair Morton upgraded my version by making all of the text editable in Photoshop. The version for download has been updated accordingly. Thanks, Al!

Here’s the PSD (74kb, zipped).

Places to Find Phil Nelson On the Internet, March 2011

For those of you who have come in late:

My name is Phil Nelson. I make websites and am from Michigan, the land of the shrinking population. At this point in my life I have been making websites professionally for about 10 years. I have made a lot of fun toys on the internet like Liblr (Mad Libs for Twitter), Kreskin (a band / album generator), and Kove (a community-edited choose your own adventure novel). I write a much-liked URL shortener for WordPress called la petite url and have released an app for Mac OS X called PNGPress which compresses PNG images in the name of faster page loads.

I have a Twitter account, am on Facebook, keep my Last.fm updated pretty regularly, and produce a live internet art show called Sweatshop every other week. I still, for some reason, maintain a LinkedIn profile. My Flickr account has stagnated pretty badly.

You can email me bye way of comments @ the domain you’re reading this on.

Using Applescript to Populate Nicecast’s NowPlaying.txt File

Rogue Amoeba has been a big name in consumer audio software for Mac OS X since their inception. One of their biggest apps is an application for streaming audio to the web from your Mac called Nicecast. I sometimes use Nicecast to stream audio to friends and relatives, and it’s very good software.

There’s one thing that annoys me, though: Nicecast doesn’t automatically update the stream you send with the artist and track title, so your listeners don’t know what they’re hearing unless they’ve either heard it before or ask you. Luckily for us, this is OS X, and that means we have access to Applescript.

Cutting to the chase: copy and paste the code below into Applescript Editor (Located in the ApplicationsUtilities folder on your hard drive) and save it somewhere. Line-wraps are marked ¬, which should be removed from your copy/pasted code.

property sleepTime : 10

repeat
    tell application "iTunes"
        try
            if not (exists current track) then return
            set this_artist to (get artist of current track)
            set this_track to (get name of current track)
        end try
    end tell

    tell application "Finder"
        try
            set current_user to do shell script "whoami"
            set the_file to "/Users/" & current_user & ¬ 
            "Library/Application Support/Nicecast/NowPlaying.txt"

            set eof of the_file to 0
            write ("Artist: " & this_artist & return & "Title: " & ¬ 
            this_track) to the_file

        end try
    end tell
    do shell script "/bin/sleep " & sleepTime
end repeat

The script updates your NowPlaying.txt file every 10 seconds (you can change that setting by modifying the sleepTime property), until you tell it to stop by hitting the “Stop” button in Applescript Editor.

If you found this script useful, a donation would make me feel pretty good about this use of my time.

A Tale of Two Developers (and the Mac App Store)

The Mac App Store, not even 48 hours old, has already set off small ripples and large waves of change across the Mac OS X development space. From Thursday every single new Mac user knows the Mac App Store as the primary place to purchase software. Even long-time users such as myself will slowly adapt. In the not-too-distant future of Mac software development not being on the App Store will about the same as not existing at all.

Given that it is installed by default on every new Mac (and every Mac updated to 10.6.6), it comes as little surprise that many developers are moving to App Store exclusivity, forgoing the Old Ways of custom-brewed payment and serial number systems. For users this is basically only good. I click on the app, confirm I want to pay for it, and it’s there on my computer in the expected place. All done. No more worrying about Disk Images .vs. Zip files, or any of the other dozen (now) archaic issues distributors and users of third-party software have had to deal with. As a person who buys software for his Mac, this is entirely a Win.

However, as a person who already owns a pretty decent amount of software for my Mac, there is a real turd in the punchbowl. For developers who have already created and shipped their apps before the Mac App Store existed, Apple has what some might call a “sweet solution“: pretend it didn’t happen. Apple provides no way for users of who have already purchased a software title to “migrate” this software to the App Store version. One of my own most-used pieces of software is a web developer tool called Coda. It costs $99, which I’ve already paid, and is not a small sum. Were Panic, the developers of Coda, to decide to now switch to the App Store as the exclusive means of distributing their apps, I would be be shit out of luck.*

One needn’t resort to hypotheticals like the one described above. Two real examples of this are CoverSutra, an app for controlling iTunes which lives in your menu bar, and TapeDeck, an analog-styled audio recorder. The developers of these apps are small and independent. Both of these developers have been on the Mac for some time, and previously used serial numbers to authenticate copies of their software. Both companies promised free updates (of some kind) to their applications for users who registered. Both developers are now moving towards App Store exclusivity, with one key difference: Sophiestication Software is dropping support for non-App Store users, including those who previously purchased the software and were promised free upgrades up to (not including) version 3.0. SuperMegaUltraGroovy, while discontinuing sales TapeDeck outside of the App Store, are continuing to support users who have already purchased the software with the (promised) free updates in the 1.x line.

SuperMegaUltraGroovy’s track is the hard one. As a small developer with very limited resources, supporting two payment systems is twice the pain. Odds are high that this will cut into their development time somewhat, and will most likely cost them money in the short-term. But I (and obviously, they) think it’s the right thing to do.

If the comments section of the blog post announcing CoverSutra’s exclusivity is any indication, their users feel the same way. Sophiestication promised purchasers of CoverSutra free updates until it hit version 3.0. Then, this week, version 2.5 was announced as an App Store exclusive application, cutting off those users who’d been promised the updates to 3.0. These users now feel cheated, and lied to. In their zeal to get CoverSutra out and on the App Store, Sophiestication has effectively fed a shark sandwich to the customers who got them there.

We won’t know for a long time if their respective strategies financially hurts or helps either of these companies. We do know that one company has customers angry and being left behind, one doesn’t, and people have a habit of not forgetting these sorts of things. When dealing with users of any kind of software or service, sentiment is king. And right now, the prevailing sentiments for TapeDeck and CoverSutra couldn’t be more different.


Footnotes

  • Luckily, Panic has no plans to do so, and I’m not surprised. Their checkout/serial/support service has always been best-in-class for the Mac, and they’ve obviously got their stuff pretty much down.

The Huawei U8100 and Mac OS X, “Upgrade Failed”

If you have a Huawei U8100 phone and you use Mac OS X and you’d like to update the firmware, don’t bother. After a full day of fighting with the thing, I’ve found you have to use Windows to load an SD card with the necessary files, or it simply won’t work. I’ve created this post simply to help out those who might’ve been inclined to waste many hours, as I did.

I am not at all sure why the hell this is, but I assume it’s some strange way the ZIP file is packed.

Extra Future 2010 Retrospective: Kreskin

I made a bunch of weird stuff in 2010, and I’m going to spend the new few days or weeks telling you about them with short posts about each one. Up first is Kreskin, a project it took about 12 hours to spit out and another 12 to make usable.

Kreskin (Cat. No. EF-027)

Kreskin plays the Wikipedia Band Name Game for you, rolling up a band name, album title, and cover art, and showing it to you. Every album it generates is persistent, meaning you can pass it around to your friends. It’s really fun, and I find once you generate one, you tend to stick around for at least a few more. Recent favorites include: GAMA ENERGY, INC. – in his own, and Brain Sponge – more of it.

Kreskin was featured on Buzzfeed which got it a pretty good amount of traffic which, sadly, didn’t last. There is a track listing for each album, but it is experimental and generally not super good. To date Kreskin date has created 6,867 albums by request. It is available, day or night, via the URL http://kreskin.extrafuture.com.

My 2010 In Music, According To Last.fm

It was a pretty predictable year.

Most Played Artists

  1. They Might Be Giants
  2. Yasunori Mitsuda
  3. The Smashing Pumpkins
  4. R.E.M.
  5. Weep

Most Played Songs

  1. Weep – Right Here, Right Now
  2. Misfits – I Turned Into a Martian
  3. Weep – Let Me
  4. Weep – Snow Scenery AND Weep & Weep – Calm Down (tie)
  5. Weep – When I’m Wrong

Based on the most played songs list you might’ve guessed that my favorite album this year is Worn Thin, by Weep. Honorable mention goes to the Zola Jesus EP, Stridulum. Based on the most played artists list you might’ve guessed that I didn’t have much time for new music this year. I’m convinced that needs to change in 2011. There is nothing sadder than a man with almost no favorite bands who haven’t broken up or descended into self-parody.

Creating A Personal Radio Station With iTunes Smart Playlists

This is a recipe for using iTunes Smart Playlists to create a personal radio station from your music library, which will play old favorites, new jams, and obscure stuff in ratios which you can tune yourself. The purpose of this isn’t to tell you how to handle your music, but rather to help you get more of out it. As such, consider every single rule to be a suggestion based on what works for me. This is also slightly involved for the iTunes novice, but shouldn’t take you more than 15 minutes, and what is 15 minutes weighed against a new life of constantly rocking the fuck out?

The first thing we have to do is create several source playlists which we’ll use to funnel the proscribed ratios of classics, newness, and weirdness into your earholes.

Parts Is Parts

These are the bits and bobs which will, when combined, make your music-listening experience much better. I suggest making a new folder called Radio to hold these playlists, so they won’t clutter your sidebar.

  • Radio Core

    • Match All of the Following
    • Media Kind: Music
    • Last Skipped is not in the last 15 days
    • Special exemptions for stuff you don’t want to show up in the radio (e.g. live shows, or your own music)
    • No limit on size
  • Radio Most Played

    • Match All of the Following
    • Playlist is Radio Core
    • Limited to 1 GB
    • Ordered by Most Played
  • Radio Neglected

    • Match All of the Following
    • Playlist is Radio Core
    • Last played is not in the last 1 month
    • Limit to 500 MB
    • Order by random
  • Radio New

    • Match All of the Following
    • Playlist is Radio Core
    • Date Added is in the last 1 month
    • Limit 500 MB
    • Order by random
  • Radio Top Rated

    • Match All of the Following
    • Playlist is Radio Core
    • Rating is Greater Than 3 stars
    • Limit 1 GB
    • Order by Random
  • Radio Sprinkler

    • Match All of the Following
    • Playlist is Radio Core
    • Playlist is NOT Radio New
    • Playlist is NOT Radio Neglected
    • Playlist is NOT Radio Most Played
    • Playlist is NOT Radio Top Rated
    • Limit 500 MB
    • Order by random

The most important part of the above source playlists is the “Limit” field. We’re using it to tune just how much of each playlist gets into our overall radio playlist. Want to hear more of your favorites? Increase the limit. Now that we’ve got our source playlists set up, we can pour them into our main Radio playlist.

And Finally, Your Radio Station

This is your proper Radio playlist, the one you’ll click “play” on and listen to until it is time for bed.

  • Radio [Whatever!]
    • Match Any of the Following
    • Playlist is Radio New
    • Playlist is Radio Neglected
    • Playlist is Radio Most Played
    • Playlist is Radio Top Rated
    • Playlist is Sprinkler
    • No limit
    • Click the “Shuffle” button

This is the setup we use here at EFHQ North, and it works swimmingly. My own iTunes Radio just played Just Can’t Get Enough by Yaz, followed by Arlo Guthrie’s Los Angeles and R.E.M.’s Crazy. That is awesome. Comments and suggestions go to the usual place.

A Comparative Analysis Of The Differing Approaches Twitter and Facebook Take To “Share” Buttons And What It Might Say, Philosophically Speaking, About Each As A Company

Visually, the “Share” and “Tweet” buttons are very similar, and are structured identically.

On the code-side, however, they are very much the product of two different companies with, I would argue, different outlooks on the web as a whole and HTML specifically.

Facebook’s “Share” Button

Share

There is no such thing as a share_url attribute in any published version of HTML. Facebook just made it up because they felt like it, and it was the easiest way for them to do what they wanted. They’re also mis-using the type attribute, here. type should be a mime-type string, as specified in the HTML documentation, not whatever random data you decide will be helpful.

It would be possible to see these as harmless and (possibly) clever hacks, but this is not a startup based in a garage, this is a billion-dollar company with hundreds of employees. Philosophically it speaks to Facebook’s general lack of regard for the internet as a whole: Facebook does what it wants, and you can go fuck yourself if it bugs you. In other words: Who has two thumbs, a $100 billion valuation, and doesn’t give a shit about your web standards pedantry? This guy.

Twitter’s “Tweet” Button

Twitter uses the HTML5 data attributes, which were created for specifically this purpose, which is embedding useful information in HTML without having to make up your own attributes. As a result, Twitter’s code is not only valid and logical, it’s ahead of the curve. Philosophically this says that Twitter considered the ramifications of this a bit more than Facebook has. This code will be embedded in millions of webpages, many of which will never be updated, so it matters in a big way that it be done right. Yes, the HTML5-style data attributes are a little bit too new for some people to get behind, but today isn’t the only thing that matters. Tomorrow is pretty important, too.

In total, what these buttons say about their companies is pretty simple: Twitter cares about being a good web citizen. Facebook? Not so much.


Update 28 October 2010: Changed conclusion text for clarity.

How To Play Civilization 5 On Your Mac With WineBottler

Hello, gentle reader. Since the publishing of this post, Aspyr has ported Civilization 5 to Mac OS X. That means you can just Buy Sid Meier’s Civilization V for Mac OSX on Amazon. The information that follows is left intact for historical purposes.


The following how to was written for Intel Macs running Mac OS 10.6. It will probably not work if either of those two prerequisites are not met. The test machine is a 2.4ghz Macbook Pro with a GeForce 8600M GT and 4gb of RAM. Your mileage, as always, may vary.


The advances in virtualization software in the past 5 years have made it possible to enjoy PC-only games on your Mac legally, even new releases, without needing to install Windows. Leading the Windows virtualization push is a project called Wine. Wine is an open source project, and as is so often the case it suffers for lack of a user interface, which can make it a non-starter for those who prefer not to use the command line. But from the wasteland there comes a developer named Mike Kronenberg, who has created a Mac OS X native application called WineBottler.

WineBottler handles the deeply unpleasant process of creating a Windows virtualization space for applications (called a Bottle. Get it?) on your Mac with minimal fuss for the user. Using WineBottler I was able to install Steam, purchase Civilization 5, install the game and play it in about the same amount of time it would’ve taken on a native Windows computer. Here’s how.

Step 1: Hit The Bottle

Installing WineBottler is as simple as installing any other Mac OS X application. Go to the WineBottler website, and download the Disk Image. Once it’s downloaded, mount the disk image and drag WineBottler to your Applications folder. Once WineBottler has been copied to your Applications folder, double-click the icon to launch it. It’ll look something like this:

Your window won’t have the extra entries in the right pane that mine does, which are Bottles I’ve made in the past. Don’t panic. To create your “Bottle” for Civilization 5, click the Create Custom Prefixes item in the sidebar on the left. This screen is a little less friendly, but don’t worry, we’ll be out of it soon. For now hide or minimize the WineBottler window, as there’s something we have to do first.

Step 2: Steam

Steam is the distribution platform that Civilization 5 uses. If you want to play Civilization 5 legally, the only way to do it is through Steam. Lucky for us, Steam is free. Go to Steam’s download page, and click the link that reads “also available for Windows” to download the installer. Once it’s downloaded, open up your WineBottler window then click and drag the SteamInstall.msi file onto text field labeled Install File. You don’t have to change anything else on this screen, so click the Install button in the bottom right.

A Save As box will drop down from the WineBottler window. Type in Steam PC for the name, for the Where field select your Applications folder then click Save. WineBottler will start installing Steam. Soon you’ll see the Steam installation window, and if you’ve ever used a PC before then you’ll know what to do. If not, it is simple: Just keep clicking Next in the bottom right of the screen, and eventually click Finish. The WineBottler window and progress bar will stay on screen while Steam installs and runs for the first time, so don’t freak out if it won’t leave.

Once Steam updates (it does so automatically on it’s first launch), go ahead and close the Steam login window. This will let WineBottler know that Steam installed correctly and we don’t need to see WineBottler’s window anymore. WineBottler will prompt you as to which Executable you’d like to run when your launch your Steam PC application. From the menu select steam.exe and click OK.

Step 3: Try The Demo and Buy Civ 5

Now that we’re all done with WineBottler, just go to your Applications folder and double-click the icon labeled Steam PC. You can log in to Steam or create a Steam account form there, and buy Civ 5 or download the Demo just like any other user. Once the game is downloaded it will take awhile to install, primarily the portion where the installer is fetching DirectX. This can take up to 10 minutes, and you might worry that your app has frozen. It hasn’t.

When it comes time to launch Civ 5, select the DirectX 9 option. When the game launches the window will be complete white for a minute or two due to some weirdness with the introduction video. This is totally normal, so don’t panic. After about one minute of the white screen you’ll see the game’s welcome screen and be well on your way to getting your ass handed to you by Montezuma.

Status Of My Predictions For The Sept 1st 2010 Apple Event

iPod Touch

Wrong on the capacity, it tops out at 64gb. Right about FaceTime cameras and everything else. This one was a gimme. If you look at the Apple Store you will see that, despite it’s absence from the Keynote, they still sell iPod Classics with 160gb hard drives. It’s just a matter of time, though. I don’t think Apple is THAT sentimental. Apparently the Classic does serves a market big enough to keep it around for now. My guess? They won’t bury it on stage like they did Mac OS9.

iPod Shuffle & Nano

Wrong and extra wrong. Not only is the shuffle still around, but they added the buttons back. It’s a fine gateway drug into the world of Apple/iTunes at the $49 price point. The Nano sticks at $149, loses it’s hardware buttons, loses the camera, and gains a multitouch display. It looks like it lost the ability to play video, too. The Nano replacing the shuffle was by far the wackiest of my predictions. No surprises.

AppleTV

Wrong about switching the name of iTV, and glad to be wrong. Wrong about announcing a developer program. It does run iOS, though. Right about $0.99 TV show rentals (streaming, no less!).

Other

Right about streaming content to iOS devices to AppleTV.

Predictions are a lot less fun once you know the truth.

New Threads; Comment Is Free

Thing The First: For those of you who read Extra Future primarily via the feed, it has undergone a rather serious redesign. Maybe hop out of your feed reader and have a looksee.

Thing The B: I’ve gone ahead and re-activated Disqus-powered comments on posts here. I think we’re good enough friends that I can trust you not to pee in my pool, right? Good.

There is an economy of scale that comes along with comments. Extra Future is small enough (less than 500 hits a day, on average) that we should be able to have a conversation. Here’s to hoping.

My Predictions For The September 1st Apple Event

I agree with almost everything Jesper of Waffle Software has said on his blog in the past. This is no different.

  • Huge capacity iPod Touch (128gb?) with FaceTime-enabled cameras, iPhone 4 guts, and Retina.
  • Goodbye iPod Classic.
  • The Shuffle goes away, and in it’s place there is now an iPod Nano at the $99 price point, right in between the old Shuffle ($49) and the current Nano ($149). I doubt Steve will actually kill the Shuffle on stage, but it will quietly be taken off the store, lead to a remote field and abandoned to rot with its ancestors.
  • Newly-christened iTV Developer Program
  • TV Show Rentals for $0.99
  • Wifi Syncing for iOS devices
  • Streaming content from the iTunes Store (like, say, the aforementioned TV rentals.)

I’m not super sure about the Shuffle. The $49 price point is part of why the Shuffle exists in the first place, but I don’t know a single person who owns one. The primary market seems to be children whose parents wish to reward for less than $100, or people who work out and are afraid of breaking their iPod Touch or Nano. The price point is hard to argue with , though, as a gateway to the larger (more expensive) Apple ecosystem.

Wouldn’t it be something if the Nano got Facetime?

Introducing Kreskin, A Band/Album Generator

Kreskin is an album generator, which essentially automates the Wikipedia Band Name Game. To wit:

  1. Go to the Random article page on Wikipedia. The page it goes to is your band name.
  2. Go to Flickr’s most interesting photos for the last 7 days. Find the third image. That is your band’s album cover.
  3. Go to the quotations page and pick the last quote on the Random Quotes page. The last three words of this quote is the title of your album.

You have likely played this game on a grey workday afternoon, but Kreskin makes the process much easier. Using the sources above, Kreskin grabs the needed information and presents you with a lovely image with a permalink that you can pass around, no manual labor needed. Kreskin also picks from a random assortment of freely-licensed web fonts to snazz up your album covers.

Kreskin is an Extra Future 6-hour Project.

Google, Verizon, Net Neutrality, and iTunes Cloud

Google: Makes money by selling ads. Has a smartphone OS that helps them sell ads on search results, apps, etc. Upset with Apple’s foray into advertising. Starting to feel the pinch of a possible iPhone for Verizon, their most visible Android partner.

Verizon: Makes money by selling bits. Sells dozens of phones with dozens of different operating systems from dozens of different manufacturers. Has sunk some money into Droid, but isn’t married to the platform. Will go with whichever benefits their bottom line most.

Apple: Makes money selling software, and some bits. Just got into the ad space with iAds. Their iPhone sells its own bits and sells its own ads. Doesn’t like making concessions to wireless carriers, and will call them out in public. If they launch a version of their iPhone for Verizon, Verizon isn’t likely to get a cut of their App, Music, Video, or Ad market. Those are all bits that Verizon wants to charge extra for.

iTunes Cloud: Live streaming of a user’s purchased iTunes tracks to any supported device. Only likely supported phone platform? iOS, the iPhone’s operating system. No phone carrier is going to get a cut of tracks purchased for this service.

Net Neutrality: Means that carriers aren’t allowed to slow down certain kinds of internet traffic to help their business goals. Means that iTunes Cloud can stream as many tracks as the user is willing to buy bandwidth for. Means Verizon doesn’t get a cut aside from their 3G bandwidth spectrum pricing, which is getting cheaper all the time despite their (recent) complaining about capacity problems.

Dots: Partially connected.

State of The Extra Future: July 2010

I am Phil Nelson. I make websites. Lately I’ve made the fun Twitter toy liblr, which lets your manipulate the public Twitter stream by replacing one word or phrase with another. My personal favorite is replacing “my iphone” with “this big dildo I found”. I’ve also been producing Eliza Gauger’s live art show, Sweatshop. That means I hit things with a hammer until they work how she wants.

Last month my tech demo of implementing the famous (and beautiful) Mega Man II intro sequence in HTML5, CSS and jQuery got linked on Engadget and I’m pretty happy about that.

I have active profiles on Twitter, Last.fm, Steam, and my (somewhat outdated) portfolio is on philnelson.net.