xbox 720

xbox 720

what Microsoft should do next

I live in an Apple world. It’s a great place where things are simple, intuitive, and just work. But I do so like my xbox. It must be how Superman feels knowing he can be frolicking with his people in a magnificent miniature Kandor, yet so enjoying his time on Earth with Jimmy and Lois (of course he also has super powers on Earth, and the whole growing up there thing… perhaps this is a flawed example…).

Before we start talking about what Microsoft should do to make us happy (and make them money), let’s agree on what sucks about the current generation of the xbox.

  • The Hardware – I’ve seen every part of the xbox console break. I’ve been “red-ringed” and have had my xbox refuse to power on. My friends have had the hard drive die, the disk drive die, and even the ethernet port (somehow) die. And occasionally I’ve heard the disk drive spin with a level of such menacing sound and unchecked fury that I’m grateful it lacks the power required to open the door to dimension x23 (the home of the vampire like dinosaurs that wish to populate our lush world), which I am sure is what that evil piece of hardware is trying to do. That, or my disk drive is going to break soon =/
  • The indie game (app) store – It’s great, it’s just not promoted enough or open enough. (I do realize the irony that will be seen by some in the “not open enough” complaint from an iOS developer. But seriously, the indie store is a repressive environment with an oddly dick-ish community of developers.)
  • The digital content management – The digital content management, right down to account recovery, is archaic and painful. Not unlike 16th century dentistry (I feel like I should qualify this comparison somehow, instead I’ll just link to the mouth gag, which you can buy new. Scary.).

Alright, so what should they do about it?

The entertainment hub of your house should be made to last. It should also have easy access to local customer service for fixes and replacements. Entertainment hub of my house? Yes voice in my head, the central device from which you will access all your entertainment needs. Seems a lofty goal, but it is a goal that Microsoft hopes to achieve. And I fear the best way to do that is a marriage of two evils, and not in a good Monarch and Dr. Girlfriend kind of way, more like a Bella and Edward kind of way. Just a disturbingly, pale-sparkly-skinned-red-eyed-evil kind of way. Microsoft should team up with a cable provider, such as Comcast. My heart actually got a degree colder when I typed that, which I should probably look into. Why on earth should they do that?? Well self, because it will drive better hardware, provide localized support, and make it almost painfully easy to get their product into more households than the current model could dream of. It would also open up the greatness of Kinect to be a motion and voice controller for your channel surfing and DVR needs. Team this with the steps they’re already taking towards this goal, like the Netflix app, Pandora app, and so on, and you do indeed have a nice little entertainment hub. Hell, have software built in that can talk to the new wifi enabled kitchen devices, thermostats, printers, and such and you can use Kinect to wave your hands around like a rotund greek aristocrat with a horde of invisible slaves to do your bidding. Also, the new hardware should nix the CD drive, but more on that when we talk about digital content management.

The indie game (app) store needs to become more of a focus. To the point that it’s treated as important as the section housing the mainstream game developers content. And I say this not because I believe indie games should be treated equally, but because apps that can add meaningful functionality to your hub should be as important a feature of the system as the games. The obvious comparison would be an iOS device. The xbox should have it’s built in apps, like games, live TV channels, streaming content, DVR content, and the ability for a user to find new apps that interest them via the indie “app store”, with all the categories and possibilities that this would imply.

For instance, I would like an app that uses the Kinect to capture what I’m wearing everyday, giving me metrics on my clothing choices, what my favorite items are, what color schemes I like, and maybe even finding me clothing on-line that I may like based on what it notices. But I’m a geek. I could see how others might find an app like that… creepy. Or perhaps just weird. I have good news for those who feel that way (or the other, or some other way I didn’t mention), you don’t have to download that app =]

Digital content management needs a serious overhaul. First and foremost, there should no longer be physical disks. It’s a wasteful attack on the environment to continue to produce the disks and packaging when we live in an age where a magical medium known as “The Internet” exists. Ideally they should have a nice mix between local device storage and streaming. Where your profile is something you merely sign into when you want to play at a friend’s house, as opposed to the current way of remembering to bring a memory card, or, more likely, realizing way too late that you forgot your memory card and arriving at your friend’s house kind of bummed out because you have to go through the hassle of downloading your account to their xbox, wait for the download, and live with the knowledge that you’ll have to do it all again when you want to play at your house later. I think that counts as a #firstworldproblem, but it’s a problem none the less. I feel like I had another point to make here, but I just became slightly bummed out just thinking about xbox account recovery. It’s beer time, Stella beckons me.

just some thoughts

Apple iPhone/iPad/iPod Touch Objective C

iOS Apps, the non-code stuff

beyond the code, a post without pop-culture references?!?! (I promise, it’s fine)

So you’re making an app. Congrats! You’ve played around in the code, understand the fundamentals, and know that the documentation and StackOverflow are just a few keystrokes away (and that is the proper order, the documentation is great, and you’ll understand the classes more by reading it… that being said, StackOverflow = win).

But what about custom tab bar icons, and custom buttons, and backgrounds, and text (oh my?)?

What about press releases, and advertising, and stat tracking (oh Henry?)?

Understanding these aspects and implementing them without a rage inducing learning curve can be the difference between your app being nearly awesome, and absolutely awesome (a difference that will be noticeable in the ratings and downloads).

Worry not, it’s easier than you think, unless you think it’s quite easy, in which case you’re right, and I’m wrong in saying it’s easier than that. Right, let’s get to it.

Design, and the creation of it’s elements

Do you have a good eye for design? Do you love typography? Do you know the mathematical principles behind Twitter’s layout?

If you answered “Kind of”, “Not at all”, “Phi”, then these resources might help you out:

  • Add FFFFound or Design Milk or other design feed to your Flipboard app (surely you have this app, right?)
  • Check out these sites, which show designs from a hodgepodge of different apps, focusing on specific page types (help page, friends page, navigation page, stat page, …I think four examples is enough).
  • Download a few of the apps that will be your competition, which is something you should have done already, and decide what you like and don’t like about their design. And, equally as important, read the user comments to see what they like and don’t like. The comments will usually be about function, not UI, but you’ll find a few that are design related.

Ok, you know what looks good, but what looks good was already made. Sure, you can emulate what you’ve seen, but where do you start? Fear not, Art Text 2 has you covered. With Art Text 2 you have a starting point for headings, buttons, icons, and logos. Now some of these templates look like bad WordArt, or a throwback to early 2000’s web, but, some of them are quite nice. What’s better is all of the shapes, icons, symbols, arrows, and so forth that are available to you once you start a project. Add to this how quick and easy it is to create gloss effects, shadows, glows, or what have you, and what you have is the easiest way for a software engineer to create icons, buttons, and the such.

But Art Text 2 doesn’t give you the standard Photoshop like controls you’re used to. Worry not, for Pixelmator has your back (do people still use that phrase?). Simply export your Art Text creation to the clipboard, open a new file in Pixelmator, and paste it in. There you have it, you can now do the normal image manipulation you know and love.

On the “Do I really need that” front there’s Icons, an app that takes in a 512×512 image and creates whatever you want in the way of app icons. It makes all the sizes you need for an iOS app, including the iTunes jpg. It also allows you to create custom gloss and reflection if you don’t want the standard Apple look. And can make Android icons too. Now, for those of you thinking “I can resize my own icons, thank you”, let me just say this: “I’m lazy, and it’s inexpensive (plus we want to support our fellow developers, don’t we?)”.

Press Releases and Stat Tracking, hooray free!!

I won’t explain press releases, many other people have done that better than I would. But I will list a few sites that will distribute them for you:

and along the same lines, sending a similar package to review sites directly can also get you some more downloads (just realize if your app is mediocre it won’t get covered, if it’s great it might get covered, but if it sucks, oh how the world will hear about it). Here are a few sites that do reviews:

And that’s the hard part of the Press Release and Stat Tracking section. The easy part, a single site, a wonderful, wonderful site. Distimo: This site eloquently breaks down your app’s downloads, rankings, comments, and bench marks, AND tracks it for the long haul, showing you stock market like ups and downs with great detail. On top of all of that, it does it for all the international app stores too, allowing you to see comments and ratings and rankings that are quite hard to see otherwise.


Honestly, if it’s your first app, and you’re not in “start-up” mode with it, you probably don’t need advertising. However, if you have a few hundred (or much more) lying around the tried and true methods are site specific adds (offered from most [if not all] of the review sites listed above) and admob ads (Google owns you, just fyi). If you have significantly more lying around than iADs is great, as your exposure and hit rate will be much higher.

good luck =]

Apple iPhone/iPad/iPod Touch Objective C

ALAssets – the sexiness

getting the assets you want, two useful reasons to do it, and a story about beer

Let’s talk about what we’re talking about first…

An ALAsset is just a fun name for one of the images or videos in a user’s library, not unlike the term pic, can spam, or incriminating evidence. But seeing how you likely wound up here via Google, you already know this. What you want to know is how to implement the acquisition of one (or more) of these items in a way that won’t get you geek-slapped by another developer. Well worry not chosen one, I’ll help you avoid that fate while making weird references, writing run-on sentences, and using bizarre analogies, like a taller version of Warwick Davis protecting you from the evil sorceress that is ‘copy-and-paste’ coding, improving my own magical abilities in the process. So ya, enjoy.

First time here? You may notice I don’t have code down there. I write more about design and implementation possibilities, if you want a place with code I’d recommend checking this page out, and come back when you’re done =]

Understanding what we’re dealing with here…

There are four Classes you’ll be working with when you’re playing with assets:

  • ALAssetsLibrary
  • ALAssetsGroup
  • ALAsset
  • ALAssetRepresentation

You’ll be using ALAssetsLibrary in every scenario (well there’s only two scenarios per the title up there, but every one of those two will use this [not to mention any scenario you can think up]). Think of ALAssetsLibrary like Sigourney Weaver as The Gatekeeper, waiting to unleash God-like powers over the user’s assets, but needing a Keymaster to do so. This is where you come in all Rick Moranis like and use one of the following two methods to grant the sexy lady’s wish:

  • - (void)enumerateGroupsWithTypes:(ALAssetsGroupType)types usingBlock:(ALAssetsLibraryGroupsEnumerationResultsBlock)enumerationBlock failureBlock:(ALAssetsLibraryAccessFailureBlock)failureBlock
  • - (void)assetForURL:(NSURL *)assetURL resultBlock:(ALAssetsLibraryAssetForURLResultBlock)resultBlock failureBlock:(ALAssetsLibraryAccessFailureBlock)failureBlock

We’ll look at both of these methods in a bit, but first, let’s glance towards ALAsset, the other Class you’ll use in all scenarios, it is, after all, what you desire. ALAsset is the image or video, sure, but it’s so much more than meets the eye (… I refuse to do an actual Transformers reference). ALAsset contains the following information “hidden” in the “– valueForProperty:” method:

  • ALAssetPropertyType – letting you know if an asset is an image or a video (or undefined, which seems… unlikely)
  • ALAssetPropertyLocation – the geo-code information for the asset
  • ALAssetPropertyDuration – duration of the video, or something telling you nicely that photos don’t have durations (you know, as opposed to crashing)
  • ALAssetPropertyOrientation – oh so useful is the orientation, but it’s likely you’ll actually be using the orientation value from ALAssetRepresentation in most cases (something we’ll take a goose at later, what? a goose is a gander, I feel that’s legitimate usage).
  • ALAssetPropertyDate – the asset’s creation date
  • ALAssetPropertyRepresentations – an array of the asset’s representations (RAW, JPG, etc.), but you’ll likely be using the defaultRepresentation or thumbnail properties and not need to worry about this
  • ALAssetPropertyURLs – direct links to asset representations (very cool), but again, it is likely you’ll be using the url property of the ALAssetRepresentation rather than this, but they are here.

The other two keys to the ALAsset’s information are the defaultRepresentation method, which gives you that ALAssetRepresentation object I mentioned (which you will be using), and thumbnail, which gives you a thumbnail (…ok, it gives you a CGImageRef of the thumbnail image they use in the photo library, but it was more fun to say it the way I did).

Let’s look at the case where you want a single image chosen by the user

In this case you are NOT in need of a custom UIImagePickerController, and you will have no use for the ALAssetsGroup Class or the method iterating through it. What you do need is a wonderful little property introduced in iOS 4.1, which looks like this:

  • NSURL * assetURL = [info objectForKey:@"UIImagePickerControllerReferenceURL"];

Where “info” is the NSDictionary passed in the “imagePickerController:didFinishPickingMediaWithInfo:” delegate method. I’ll give you a minute to appreciate how beautiful that is. Did you imagine a vampire laying in a wide open field, gazing at the stars, losing all track of time and space until *BAM*, agony, sun scorching the evil one’s skin exploding its entire being with a pain that would wrench the soul, if a soul was something it could still have? You know, instead of just sparkling. You’re not a Twilight fan, are you? What were we talking about? Oh yes, that property right there negates the need for any custom image pickers in this scenario, saving you substantial amounts of time and defects. With this you can use the before mentioned:

  • - (void)assetForURL:(NSURL *)assetURL resultBlock:(ALAssetsLibraryAssetForURLResultBlock)resultBlock failureBlock:(ALAssetsLibraryAccessFailureBlock)failureBlock

So what are the scenarios where this is the path you should walk? Well, if you want to know geographical information about a chosen image this is the way to go. So all your check-in, twitter, location based image apps will be looking to this.

Another use for this that is less obvious is the desire to easily do image manipulations. And when I say easily I mean you can do something that takes many lines of code and some knowledge of CGImageRef/UIGraphicsContext/ETC in around two lines of code using just ALAssetRepresentation properties and UIImage. Let’s say you want to let a user select an image from their phone to use in your app, maybe for a background, or maybe you want to manipulate it into something new, or perhaps you want to do analysis on it to provide useful information (to be very specific, something like “Arty Pop” or “Color Matcher”, apps I wrote for whozt LLC). Whatever the case, what you likely don’t want is the huge ass image that’s returned by the UIImagePickerController. You’re going to want to size that down while retaining orientation and proper scale. Well, try this in your resultBlock, first get the ALAssetRepresentation…

  • ALAssetRepresentation * defaultRepresentation = [asset defaultRepresentation];

…then make use of three pieces of information this Class provides:

  • - (CGImageRef)fullScreenImage
  • - (ALAssetOrientation)orientation
  • - (float)scale

With these little tidbits you can use the UIImage Class method:

  • + (UIImage *)imageWithCGImage:(CGImageRef)imageRef scale:(CGFloat)scale orientation:(UIImageOrientation)orientation

There’s a gotcha on the orientation though, and don’t worry, it’s not getting shot with a paintball gun (anyone remember that movie? honestly the only thing I remember about it is people were shooting each other in way too serious spy like manners with paintball guns… and I think the song “Oh Yeah” was used). The orientation you got back was ALAssetOrientation, but what you need is UIImageOrientation. Obviously they map one-to-one (since new orientations weren’t invented between the creation of these two enums, so ALAssetOrientationUp = UIImageOrientationUp), meaning creating a quick switch statement helper method is all that is needed to get the correct orientation. As for scale, that depends on your app really, it is possible you’ll just want to use the scale you got, or that you’ll want to compare that value to a derived value you have, altering it appropriately. If you don’t know what to use, go with the ALAssetRepresentation’s scale, log it and your new image’s width/height and adjust accordingly. But even with that you just saved yourself a lot of time and failure points.

And one more thing. The ALAssetRepresentation object has a URL for the asset, a unique identifier for the image or video. This is that “very cool” piece of information I mentioned before. With this you have no need to store a duplicate (and very large) copy of an asset in your app’s file directory. Instead you can store the URL to the asset, and possibly the small thumbnail image reference for display in your app, and pull down the complete image or video only when a user takes the action that would require it.

Now that was a lot of writing, I need a beer… and I’m back, it’s beer story time

Ireland, home of Guinness, a place I visited recently, a place where I sat in a true Irish pub, with “Banjo Jim, The Wild Rover” playing songs that people that weren’t me knew, a place where I ordered a… Murphy’s. WTF? Why on earth would I order a beer like Guinness, in the place that Guinness is from, instead of a Guinness? Well, ummmm, weakness? You see I once got “puke in a Steak’n'Shake bathroom (several times) drunk” on Guinness, which is an accomplishment. For those who are not familiar with Guinness, it is easier to find a Game Genie at a flea market than it is to get wasted off of Guinness alone. You should become too full to consume anything, or drown from pure quantity, before you’re reenacting exorcists scenes at a 24-hour diner. So I got a Murphy’s. I drank about half of it. At that point in time my brain slapped.. well, my brain, and I asked the bar keep for a Guinness. The man actually laughed at the half drunk Murphy’s poured me a Guinness the right way (a two minute process) and set it down in front of me, on the house. Apparently no one drinks Murphy’s, and he was amused that I tried, and gave me a free beer for my efforts. Next time I’m in Ireland it’s all Guinness, I’m drinking a pitcher of the lovely brew myself at the first pub I come across.

The more common case, you want to be able to select (or obtain) multiple images

Select or obtain. An important difference there, and I’ll go over them both. First up, selecting multiple images. Something that I have implemented in “Pholders”, an app that let’s you organize your phone’s photos into groups. It would be annoying as hell to have to select each image individually when adding them to a group, so multi-select was a requirement. This is actually really easy to accomplish if you understand the basics of ALAssetLibrary, which by now you do, right?This takes two steps to do in the way Apple does:

  1. Create the library/album/group select page
  2. Create the asset select page

The group select page involves using the ALAssetsLibrary’s group iteration method:

  • - (void)enumerateGroupsWithTypes:(ALAssetsGroupType)types usingBlock:(ALAssetsLibraryGroupsEnumerationResultsBlock)enumerationBlock failureBlock:(ALAssetsLibraryAccessFailureBlock)failureBlock

…where in most cases your group type will be “ALAssetsGroupAll”, and in your results block you’ll likely want to get at least the following four pieces of information from the ALAssetsGroup Class for use in your display (storing them in an array of dictionaries or custom objects):

  • the poster image: “[group posterImage]“
  • the number of assets in the group: “[group numberOfAssets]“
  • the group’s name: [group valueForProperty:ALAssetsGroupPropertyName]
  • the group’s id:[group valueForProperty:ALAssetsGroupPropertyPersistentID

Once you have these you can implement whatever group select UI you desire, from a table view to look like Apple’s implementation, to a tiled view UIButton implementation (or whatever much cooler thing you can come up with). The next page just involves taking that group ID you have (or I suppose you could have just as easily passed the ALAssetsGroup) and calling one of the asset iteration methods on it, the simplest (but least cool) being:

  • enumerateAssetsUsingBlock:

…and then just displaying your asset selection interface (which you made by storing the ALAsset data in your model and displaying a bunch of buttons, or custom views with gesture recognizers, or whatever). You can see an example of this in the “Pholders” app I mentioned before, it’s $1, but that’s ok we’re worth it.

Let’s talk about obtaining multiple assets, that has some more intriguing, less straight-forward possibilities. It is something I’ve been playing around with in my head, and I’m curious as to your thoughts on it. You see, with all this information we have, and the ease of access to it, we could write up some pretty nifty code. The ideas run wild in my head, and make me feel like an all powerful wizard, or at least a really good conjurer of cheap tricks. For instance, you could have an app, call it “a week in my life”, where the user selects a week of time and the app generates a slide show, or video, or collage, or wtf’ever, of the user’s assets by searching though the assets for items created within that period. Or an awesome feature in a Twitter app where the app can view the tweet’s location information and see if you have any assets that were tagged near it to remind you of what you saw there (expensive, so be clever in implementing this). I mean to think of all of the information that assets have, and the way in which you could interact with it is quite fun, I really would like to hear someone else’s thoughts on this. And if anyone makes “a week in my life”, or something like it, please do send traffic this way, and show off the whozt apps you own… you do own whozt apps don’t you?

… it was a Willow reference, not a Harry Potter reference. Have a nice day =]

Berlin - July 2011 - 281

4 Hidden Benefits of an Extended Cruise

Sure, you can see the world in all it’s glory, trying new foods, seeing new things, regaining the feeling of awe and newness you had as a child, but there are some hidden benefits to taking a cruise that’s longer than three to seven days. For instance:

1. You’ll feel young!

This will of course not always be true, but much like a werewolf is a man the majority of the time, you will be younger than the average cruiser more often than not (unless of course you’re of that retired age, in which case leave a comment, I’m glad my audience varies! [...I think my audience is mostly spam bots]). This is exceedingly true on long cruises because hey, retired people have the time. There is in fact a group of retired people who actually live on cruise ships (which I would assume would make you go something between The Shining crazy and just normal Jack Nicholson crazy).

2. You’ll get great legs!

Avoid the elevator and you’ll get some of those ‘sexy sea legs’ during your extended cruise. On my current cruise my cabin is on the `Main Deck` (deck two), and the area I do most of my work in is the `Crow’s Nest` (a lounge at the front of the ship with windows all around… on the ninth deck). I have seven floors between these two at 16 steps a floor for most floors, and 20 steps a floor for the ‘taller’ decks. Just counting moving from my room to my `office` twice a day I walk up 232 steps (and then down again). Add to this walking from the room to the food/entertainment areas (decks four and five), and from my quarters, or one of these other decks, to the `Lido Deck`, where the pool, informal dining and `retreat deck` are located (on the eighth deck) and you’re closer to 400 steps. I’m almost positive you get an improved posterior as well, but it’s been harder than I had hoped to convince someone to bounce a quarter of my ass to prove the theory. Oh well.

3. You’ll eat healthy(ish[er])!

Maybe you eat really healthy already, well you can just skip this one little miss “I’m already a healthy eater” (hey, not every sentence is a winner), the rest of us eat at Japanese Steakhouses and Chick-fil-a and stuff. On the ship you’ll acquire a level of balance in your diet that rivals the level of balance Fox news gives the political battlefield (…that may be a bad example). Your meals, except for the cafeteria ones, will come in at least three courses (plus dessert if you’re still hungry). A typical meal might start with a scallop ceviche, and move forward with a blueberry soup towards your main course of roasted half chicken with asparagus, carrots and roasted potatoes. Not much butter, a varying amount of spices, and much healthier than fried chicken and fries. Combine this with snacking on nuts and fruit and drinking (in… what’s that word… moderation?), and drinking a fair amount of water (it’s everywhere, the drinkable kind) and you have quite a healthy diet.

4. You’ll appreciate how long a day is!

You sometimes forget just how much time there really is in a day. There is nothing quite like being on a ship for an extended period of time to help you remember just what you can do in a day. With no great reason to stay in your cabin (very limited TV selection, no gaming systems, slow and expensive internet, no/very expensive phones) you’ll quickly learn that there’s more time in a day then you’ll know what to do with. Even after drinking and playing trivia, AND even after going on shore excursions (and eating of course) you see you still have plenty of time to just talk to people, read, work on a project, whatever. Anything. There’s almost an unbelievable amount of time in each day.

There are other hidden benefits as well, but they’re hard to find. Hah… ahhh….. seriously though, I know they’re there, I just can’t remember them. Perhaps I should redefine my notion of ‘moderation’.

moderation and excess are subjective, but habit and ignorance are crippling

ms Rotterdam - sea days - 007


adding ‘ism’ creates a fake word that titles a killer Death Cab For Cutie album

Traveling across the Atlantic on board the m/s Rotterdam, a Holland America Line ship.

As many of you know (referring of course to the voices in my head), I’m traveling the world while working, or working while traveling the world, depends on the day. I’ve started this trip on a cruise across the Atlantic, sailing from New York to Rotterdam (Netherlands), with a stop in Ireland… and a large amount of time at sea. The phrase ‘large amount’ would surely make a navy man scoff, or a dead explorer of yore turn over in his or her grave, but I’m neither of those, so I assure you that just over six days at sea (straight) is a large amount. You gain a slight sense of appreciation for those men and women though, waking each day and seeing nothing but ocean around you. The waters swaying back and forth, side to side and up and down as they move, unconcerned with you or the ship you’re on. ‘Slight’ as I’m sure the sensations of staring at the endless sea, or not being able to stare when the wind is still and fog surounds you are slightly diminished when you’re eating well, have plenty of room to move about and enough entertainment to keep your mind busy if you desire it (not to mention not having the fear of crossing other ships, or the wrong ones, and not knowing when you’ll hit land again, or maybe even worse, knowing it’s months away). There is a beauty out here though, one I’d recommend to anyone who is curious enough to not mind the swaying (I have yet to become ‘sea sick’, but I’ve seen several crew members several times cleaning a suspiciously small and odd area of the floor; and by the way, whoever designed ‘barf bags’, which adorn the walls near the elevators on particularly rough days, has never thrown up once in their lives [if you have never seen such a bag, I assure you it is ill fitted to deal with the amount or the angles at which it’s proposed contents will come, and I would be shocked if it’s contents didn’t seep through the bag like the grease from a street vendors fried goodness, but you know, more disgustingly]). Enough of the appreciation of mankind, the beauty of nature (and of the sham of the barf bag), let us move on to ‘useful’ information.

But first a picture! …near the coast of Ireland, but not so near that you can see the coast

The questions I know I would have asked before embarking on this journey had I given it any thought (turns out my wanderlust precluded me from forming these inquires about my decision to sail across the ocean, so hooray for that):

How is the room? (Should have been a huge question for me as I’m on this boat for 21 days, the second part of the cruise being a Baltic Sea tour).

Surprisingly large. Larger than the room my friend and I had in Manhattan, and with a much better bathroom and sufficient closet space (hanging clothes) and cabinet and drawer space. As you can see from the picture, this room is not the ‘top of the line’ room, it in fact cost the same as the cheapest room (a deal going on made this so). So don’t worry about the room… and don’t stay in Milford Plaza in New York city, seriously, I think it would have been better if we could hear screams from no discernible direction, or catch glimpses of specters, at least then the place would seem to fit its surroundings (as opposed to just sucking [a technical term]).

Will the food make you sick, or make you wish you were under the hope that the infirmary has different offerings?

No and no. The food was great. That’s the short answer, and slightly inaccurate. The food ranges from bland to amazing, never dipping bellow average though, never bad. For the amazing some extra money is required, $20 dollars extra for normal amazing (what’s an oxymoron?) and up to $60 dollars for “wow, I can’t believe that was only $60” (which may come out more slurred when you say it since that meal comes with a different wine for each course [might help you walk straight though, not an easy feat when crossing the waters of the Atlantic]). There are also special dinners in the main dinning room, such as the “Master Chef’s Dinner” that give you a little something extra. There are six places to eat on board (and room service as well), with four of them staying consistent with their offerings (two of these four having extensive menus) while the other two vary their offerings each day. All and all a good dining experience.

Hidden Costs, HIDDEN COSTS, zomg that’ll ruin my budget!!

First of all, don’t ever type “zomg”, and heaven help me if you actually say “zo my god” (except possibly the case where you’re being facetious, or you’re an attractive geek girl speaking in any manner that is not your ‘normal’ one). What was the question again? Oh yes, the cruise was a great price (for repositioning cruises [or just through sales, which occur weekly] you can book a cruise that averages to less than $100 a day, that’s a room, food, travel and entertainment for less than a hotel in most places), but what about all of the hidden costs? Oh they do exist. You’ll spend between $5 and $10 per drink (the Heineken I’m drinking right now cost me $5.69 [tips are included at 15% and everything is charged to your room]). Like I mentioned before, if you want one of the delicious dinners (or lunches) you’ll spend between $10 (lunch at the ‘premium restaurant’) and $60, and do try the wine dinner, it’s more than worth it for the five to six courses and as many wines.

(Now this transatlantic cruise only has one port of call, in Ireland, where a willing traveler doesn’t need an excursion, however, I’m not going in-depth on ship life and cost in future travel posts, so I’ll point out the costs of shore excursions.)

Then there are the shore excursions. The guided tours to places you’ve only heard about, with agents of travel taking you to see monuments that were mere whispers of grandeur floating through your head, or taking you to monuments that were merely places you had no idea existed before the cruise ship told you they were there. Either way, and no matter your feelings on exploring on your own, there exist places you will want (if not need) to take an excursion. Need? Need I say?!? More or less, yes. Russia for example requires a pre-arranged visa for entry if you’re not taking an excursion, which costs around $300 and requires you to send your passport through the mail to a processing center in many cases (meaning you need to get this visa at least two weeks before the trip), where as some great shore excursions that travel between places in and out of the port city, and include a vodka tasting, are less than $200. Other cities that are quite a distance from the port, which are easy to spot as you’ll see a port name (and then a city name in parenthesis), may also be a candidate for an excursion, especially for large or storied cities. Such as Warnemunde (Berlin). There is a lot to see in Berlin. And, Germany is one of those Western European countries where English is not widely spoken, an exact opposite to its neighbor The Netherlands, where I’ve met a scant few people who don’t speak English. With so much to see, and the two and half to three hour train ride to get to the city (Berlin) an excursion really is useful. It’ll run you just under $300, which is not as much as it sounds when you remember the round trip train ride.

And last, but not least, you’ll want to tip your steward (because you’re a good person, aren’t you?), and that runs you about $10 a day give or take a few dollars (worry not, there’s a recommended amount on a sheet when you disembark).

So, being geeks, let us make an equation to determine how much we’re going to spend per day (more or less, assuming the wine dinner [there’s only one] and a premium meal per every four days):

(7.50*[avg. # of drinks per day * days] + daily tip * days + wine dinner + 20*[(days - 1)/4]) / days = avg. daily costs

For me on this nine day cruise:

(7.50 * [2 * 9] + 10 * 9 + 60 + 20 * [8 / 4]) / 9 = x
(7.50 * 18 + 90 + 60 + 20 * 2) / 9 = x
(135 + 150 + 40) / 9 = x
325 / 9 = x
$36.11 a day

Shore excursions vary a decent amount per cruise, but if you want to be safe in your planning putting aside $400 – $600 couldn’t hurt, that of course would vary greatly on your actual desire to take shore excursions.

This also does not include expenditures at ports for food and treasures as this changes from city to city and person to person by an extreme amount. This equation just represents on ship costs. Hmmm, no picture for ‘on-ship costs’, this one is from on the ship though (the top deck)

How’s the crew and other guests?

You will interact with other guests and members of the crew, it’s not possible to avoid (and not something you would want to avoid). Yet there exists an issue for someone not yet retired, the majority of the other guests are. It’s almost guaranteed that you are under the average age (congratulations, you’ll feel young, one of the hidden benefits in the “4 Hidden Benefits of an Extended Cruise” post). But then who will you socialize with? Well there are bound to be some people of your age on board, it’d be amazing if there weren’t, and, contrary to what you may (or may not) believe, people older than you can be interesting too. Granted there will be people who will not want to talk to you because of your age, or people who’s values or beliefs are so far off from your own that you’ll end up eating an awkward meal across from them, but it’s not the end of the world. And it certainly won’t ruin your trip (hell, it’ll probably provide some entertainment). Shown below, people I’m not socializing with (I did actually meet eight people I shared drinks and laughs with, but it turns out you don’t think to take pictures when you’re drinking and laughing).

This is ship life, well ship life minus the other stuff that makes life fun, but ship life enough for one to get an idea of what it’s like to take a cruise that’s longer than three – seven days. May your seas be fair and your winds be swift.

That list bit sounded like a real phrase didn’t it? I just wanted to make up something that sounded like the end of a travel show =]

Cage The Elephant, Thank You Happy Birthday

Cage The Elephant

but don’t let it know who you are… they never forget…

First time to a new venue, Maverick’s at the Jacksonville Landing

MAVERICKS Rock N’ Honky Tonk to use it’s full name. It used to be a “Club Paris”, which is quite a grand departure, like that one Wachowski brother that became a sister, still they wrote a few good movies.

Side note on the Maverick’s web site, from a web developer (geek) perspective. First and foremost, the mute button is at the top center of the page, I hate any site that plays a/v upon entry, seriously, WTF? If I’m going to wake someone up during a late night web browsing session it better be with porn, not a commercial that sounds like it’s from a locally owned and operated plywood store, at least with the porn I get to feel like a man, and possibly feel like an incredibly lucky man playing “alright, our turn” with a pretty lady (do you think writing stuff like that down makes it more or less likely to happen again?). By the way,this is a commercial from a locally owned and operated plywood store, which actually ended up on an episode of Tosh.0… so that’s, …something. What are we talking about again? Oh yes, other than that wholly unacceptable audio playing when you enter the site this is actually one of the better concert venue sites I’ve seen. They have clear navigation, the pages don’t have tons of non-related content on them and the theme is consistent and not over-done. To put that in perspective, here’s the site of the venue I frequent the most, no useful navigation, a theme that is a cleaner version of the one on their original site (which no longer exists) and a link to a Facebook page with even more useless info on it, hooray for not trying!

Back to the music, Cage The Elephant, Tank You Happy Birthday tour. This is one of those bands you really want to see live (and in a small venue) if you can. An energetic frontman and a band with passion. Their sound is hard to define as they have several different sounds, that all somehow seem to go together and remain them. They have songs that remind me of The White Stripes, The Strokes and Nirvana, while not sounding exactly like any of them. Here’s one of their current singles, Shake Me Down:

You may have noticed that I don’t have a clip of the opening band here. Well, that’s because they sounded like an average band of a type of music I don’t listen to. What type is that you ask (I’m sure at least one person reading this asked that [what do you mean no one reads this? Eff you inner voice!])? Semi-hard constantly rhythmic moaning rock, like if you took the parts of Pearl Jam where he isn’t really singing words, but making long drawn out noises (ooooohOHOhohOhHHHHOooohooohOHOHoooooo, the man has serious lung capacity) and made an entire song out of that with average music backing it. That being said they really didn’t suck, just not my cup of tea. O’Brother is this band. Cage The Elephant is the band though, and they went out with that old-school grunge/punk rock feel, guitar toss and all (because slamming your guitar down is for drug-addicted rock and roll stars where as tossing your guitar almost nonchalantly is for disillusioned soulful alt-rockers [or dude realized the beer we were drinking out of the type of cups people hand to runners during marathons cost $4 a pop]):

Next Time Gadget… peace.

Apple iPhone/iPad/iPod Touch, Objective C Post

NSURLConnection – the deuce

so you wanna have cleaner code eh?

Making a helper class, because, you know… it’s helpful

read this for fun, sure, but look at this project, which utilizes blocks: cage-the-min (github)

You only need one class implementing the delegate methods and handling the objects related to NSURLConnection, after all who wants to bloat their controllers that make these calls with this repetitive code? No one, we like clean code that’s crisp and comforting, not unlike clean sheets or underwear. So what’s needed for this helper class? Well, a class file, extending NSObject that implements the NSURLConnection delegate and has the necessary objects, like NSData. And you’ll want to implement at the very least the three delegate methods you would implement in your view controller, if your were making this call there. (If you have no idea what these are look here:more specifically here, or Google it, there are many code examples of these methods).

Simple, /cheer. Your helper class now has the methods in it that would have otherwise existed in one of your view controllers. But this is obviously not enough, for one thing, how are you supposed to call this? Well that’s simple, you can’t! Not until you create a method in this helper that takes in the needed data. What is our needed data though? Let’s keep things simple and say we only need a NSURLRequest, which means you built this in your view controller from some NSURL and it already has any post parameters you may want, and we need a hook, something that can be used to let our controller know once the connection is complete and the data is ready for use, a callback string. If this is the case you may now have a method in your helper with a signature that looks something like:

– (void)makeConnectionWithRequest:(NSURLRequest *)theRequest andCallback:(NSString *)theCallback;

It is this method where you will now be making your request, as opposed to your view controller’s method for a button press (or in viewDidLoad, or wherever you were previously making it), and in this method where you will set the connection helper’s call back property (so you know, you should make sure your connection helper has a NSString for this property).

Last, but not least, we have one more thing to consider in this helper class, and that is actually utilizing this call back value. Normally in your connectionDidFinishLoading implementation you would do whatever it is you want to do with your data. Well this is still true, but what we want to do is now slightly different. We want to take this response data and put it in a dictionary (because NSDictionary objects are the shit) that we pass back to the view controller via a NSNotification, using that call back string we have. This leads us to the next part of this wonderful world of clean code.

Listening for NSNotifications so we can act on our data, once we have it that is

You should listen for things in the view controller asking for this data by registering for the notification you care about, which will have the same call back name we’ve been talking about. (If this idea is new to you look at this:hooray this or some other Google result, this happened to be the first one). When registering for this notification you will need to provide the name, which again is the same name as the call back parameter passed to the helper, a method to call when the notification is seen, and the object being passed, which is userInfo, that contains the dictionary you set up in the helper. In your method you will get the dictionary out of the notification’s userInfo and retrieve the response data from it. And now you’re back to where you were before, you have response data in your view controller that is ready for your manipulation and use, use it wisely.

Awww, that can’t be it, surely there’s more

Well there’s not! Ok, there could be, but they’re outside of the scope of this simple tutorial who’s only goal is to get you thinking about implementing cleaner easier to manage code. If you’ve previously dealt with making NSURLConnections and using NSNotifications then you’re probably set, if not, then you should have all the ‘magic words’ needed to find the missing pieces of your knowledge online. But I do have one last thing for you, a reward for reading (and learning?), a reminder that “We are samurai” (oh look, a Hackers quote!!), or at the very least, ninjas:

May the 11th be with you… damn, I should have done this post seven days ago…

Me with The Cave Singers

The Cave Singers & Cold War Kids

less post-apoclyptic & high tension than it sounds

First off, these two clips are not the best representation of either of these bands. The problem exist with my video recording procedure. I could make a clever flow chart to illustrate this process, however, I’m not going to do that (laziness? No! I prefer to write so I can concoct long run-on sentences and ‘out there’ imagery). My process is simple, if a band says something to the effect of “Holy shit, we’re down to our last song, we have stuff in the back, help us, we’re poor”, I calmly react with “Holy shit, hold my beer, I need to record at least the intro to this”. Conversely, if for some reason I am beer-less (which is usually the case for the headlining band since I have no desire to wade through a crowd like a pre-teen trying to make it out of a wave pool at a water park [believe me, that is a journey] just to get another beer) I will (hopefully) be experiencing the show to the point where I only record a video because I am reminded to record a video thanks to the people around me who are recording videos (or taking pictures). Gotta love the age we live in.

The Cave Singers

Good Indie Rock Band. Going with the drums and guitar ensemble, with an occasional harmonica, they actually rock it with feeling, as opposed to more manufactured bands who rock it with baby-sitters on the side of the stage telling them to smile less because it makes them look less threatening… Shinedown sucks.
The Cave Singers don’t though, check them out (I have no idea what the conversation occurring around me is about, but it sounds like that guy is entering the ‘friend zone’, condolences):

Cold War Kids

I first heard these guys on AltNation when the songs from the Robbers & Cowards album were popular (well as popular as indie rock gets anyway). They have a few songs that border on preachy with generic backing ‘music’, but their good shit makes up for those easily. They remind of The Features (whom I am a fan of) with a little more experimental sounds thrown in. Exhibit A:

Music is art, go out and appreciate some.

Apple iPhone/iPad/iPod Touch Objective C


eff IB, let’s code something

Making an iPhone (iDevice) app with a lot of UIButtons? NO??!? Well you should. Let us pretend like you are making an app with many UIButtons, and, that it is a somewhat involved application (you have reasons to avoid IB). The buttons may vary in function and look, but that base code is all the same. And so it begins, the fanatic mantra in your head swelling to a fever pitch, like you’re a member of the Eagles crowd after a ref blows a call (but, you know, without the obscenities), “Don’t Repeat Yourself”.

There are many sites that will show you how to programmatically create a UIButton (which is good, because I don’t do tutorials, I Speak Design [I like that, someone should put that on a t-shirt]), just Google it. Now that you know how to do that, here are our goals:

  • associate an action to the button
  • give it your wonderful graphics

It’s a short list (/cheer). Since you’re putting this button creation code in a helper class you’ll need two things to accomplish this first task, the name of your action, and the struct the method exists in. That is to say, you need a way to tell your helper what to call (method name), and where it’s at (class). To do this you’ll need to pass a NSString that is the the ‘selector name’ and an id that will typically just be ‘self’ from the calling controller/class. You’ll need two things to accomplish the second task as well, luckily, they’re both just images for your button’s normal state and pressed state (which is about as straightforward as killing a zombie… if you know anything about it you can do it). You’re method may look something like this:

+ (UIButton *)buttonWithSelectorNamed:(NSString *)selectorName forStruct:(id)theStruct withNormalStateImage:(UIImage *)normalStateImage withPressedStateImage:(UIImage *)pressedStateImage;

You may also want to include parameters such as the frame (CGRect) for the button, the text for the button (NSString) if you’re images don’t include your text, and so on. And there you have it, you now understand how to build a reusable helper class that can create your buttons. That’s… awesome? (it is)

The Flamming Lips - St Augustine Amphitheater - 2010 - 1796

The Flaming Lips

a problem ChapStick just won’t fix

The Flaming Lips Confetti

Honestly, does ChapStick really work for anyone? Whenever I use it (which is never now) it just seems to pretend to be helpful while slightly affecting my mood. Now you’d think I’d make a comparison to a seemingly vacant woman giving you advice on a Christmas present choice for someone she doesn’t know or the extra resource a boss gives you to help with a project (because surely two people can do it in half the time!!), but no, not because they’re not valid analogies, but because it really reminds me of a parrot who was taught to say “look in the cabinet” just squawking away whilst I look for a glass in a stranger’s kitchen. I’m using something from Bath&BodyWorks at the moment, but would love to find something better (my lips feel like they’re being chemically burnt, holding on just enough to protect my face from impending doom, but with no relief in sight because I’m no longer in science lab, and I know not of magical fountains anywhere else).

The Flaming Lips. The Flaming Lips! I now remember what got me started on that tangent (…it was The Flaming Lips). Most people have heard of, or, at the very least, heard a song from these guys (I think Do You Realize was used in several commercials/shows/etc). But what you may not realize is that this show is a true experience. I’d try to describe some of it, but just look at this:

Lead singer of The Flaming Lips on a bear as huge balloons are failing into the crowd

That’s right, he’s on a bear (well a man-bear-suit-guy) singing a song as huge balloons are falling into the crowd. This concert was like those mythical rave parties you hear about but don’t believe in. Check out the opening:

Yes, he did roll out over the hands of the crowd in a big bubble. I won’t bother describing the rest of the crazy awesome weirdness that existed in that place on that night, but do catch The Flaming Lips if you can, it’s like a new age interactive theatre piece with great music. I’ll close this post with a short clip from the closing part of the show, and the song that most people would recognize, Do You Realize: