Why do people…

I was skimming the reddit front page as usual this morning and came across a funny (or racist depending on your point view) post: Why do black. Someone followed this up later on with Why do white…. Both posts illustrate suggested search queries that you see when you begin entering a search into Google. Google looks at what you’ve typed so far and based on the popularity of queries it has seen in the past, presents you with what it thinks you’re searching for. The results are an unvarnished look at what people are really thinking about. In this case, both illustrate stereotypes but the Why do white post shows how well they work in both directions. “why do black” yields “why do black men like white women” on one page, and at the same time the search for “why do white” presents “why do white men like black women”.

Anyway, I started entering all kinds of phrases beginning with “Why do” into Google: “Why do men”, “Why do women”, “Why do dogs”, “Why do cats”, etc., and snickering at some of the results. And then I typed “Why do people” and my thoughts changed. There were some funny ones (why do people fart), but I thought, remove the element of race and these questions are universal, deeper (why do people lie). I made my own reddit post but either people didn’t get it or it was already soooo five minutes ago.

But my curiosity was piqued. What are people wondering about? I needed more than just the first 10 results Google comes up with. So I did what any alleged geek would do: I wrote an application. Just a quick thing to grab the results from several queries that begin “why do people” and turn those results into a sort of tag cloud so I could see what answers were being looked for more than others. The results included lots of funny / silly stuff: Why do people eat boogers? Why do people use facebook? Why do people wear underwear? But so many of the questions were so serious. So earnest. Why do people fall out of love? Why do people get depressed? Why do people judge? Why do people not like me? And it just struck me as profoundly sad, imagining millions of people around the world so desperate to find answers to questions that have been asked since we’ve been able to communicate. Asking for help from a soulless machine.

The list is below, in alphabetical order, with more popular questions in bigger text than less popular questions. It’s interesting to look through, or at least it is to me and all the questions are linked to Google’s results. Who knows maybe the answers are there. Or at least a little guidance.

why do people abuse animals? | why do people abuse children? | why do people abuse drugs? | why do people adopt? | why do people argue? | why do people are? | why do people advertise? | why do people attend church? | why do people abuse prescription drugs? | why do people animal test? | why do people bully? | why do people believe in god? | why do people become homeless? | why do people bite their nails? | why do people blush? | why do people become vegetarians? | why do people blog? | why do people binge drink? | why do people break up? | why do people burp? | why do people cheat? | why do people commit suicide? | why do people cut themselves? | why do people cry? | why do people celebrate halloween? | why do people conform? | why do people change? | why do people cough? | why do people create viruses? | why do people come to america? | why do people drink alcohol? | why do people drink? | why do people dream? | why do people die? | why do people do drugs? | why do people divorce? | why do people dress up for halloween? | why do people discriminate? | why do people diet? | why do people date? | why do people express themselves? | why do people emigrate? | why do people eat boogers? | why do people eat ice? | why do people explore? | why do people eat meat? | why do people eat their boogers? | why do people eat junk food? | why do people eat raw eggs? | why do people eat dirt? | why do people fart? | why do people fall in love? | why do people faint? | why do people fast? | why do people fight? | why do people fall out of love? | why do people faint at weddings? | why do people flirt? | why do people forget? | why do people float in the dead sea? | why do people get married? | why do people get tattoos? | why do people get divorced? | why do people get hiccups? | why do people gossip? | why do people go to lourdes? | why do people get headaches? | why do people go to college? | why do people get abortions? | why do people get depressed? | why do people hiccup? | why do people have affairs? | why do people have abortions? | why do people have nightmares? | why do people have dreams? | why do people hunt? | why do people hack? | why do people have children? | why do people hoard? | why do people have accents? | why do people immigrate? | why do people itch? | why do people invest? | why do people immigrate to canada? | why do people interrupt? | why do people insult others? | why do people invest in gold? | why do people ignore? | why do people immigrate to australia? | why do people immigrate to the uk? | why do people join gangs? | why do people join cults? | why do people join political parties? | why do people join the military? | why do people judge? | why do people join unions? | why do people join trade unions? | why do people judge others? | why do people join sororities? | why do people jump when watching a scary movie? | why do people kiss? | why do people kiss with their eyes closed? | why do people keep secrets? | why do people keep pets? | why do people keep smoking? | why do people keep exotic animals? | why do people keep exotics? | why do people keep their promises an experimental test of two explanations? | why do people keep blogs? | why do people kiss under the mistletoe? | why do people lie? | why do people live near volcanoes? | why do people like obama? | why do people laugh at creationists? | why do people laugh? | why do people litter? | why do people listen to music? | why do people love? | why do people like plain? | why do people like mccain? | why do people migrate? | why do people make viruses? | why do people marry? | why do people murder? | why do people move? | why do people mastubate? | why do people make computer viruses? | why do people meditate? | why do people make art? | why do people make fun of other people? | why do people not vote? | why do people not believe in god? | why do people need glasses? | why do people need sleep? | why do people not like me? | why do people need water? | why do people need religion? | why do people not recycle? | why do people need friends? | why do people need blood transfusions? | why do people overeat? | why do people obey the law? | why do people oppose stem cell research? | why do people of rajasthan wear colourful clothes? | why do people oppose the death penalty? | why do people overspend? | why do people obey authority figures? | why do people overanalyze? | why do people outsource? | why do people procrastinate? | why do people pray? | why do people plagiarize? | why do people play video games? | why do people play games? | why do people play sports? | why do people pay taxes? | why do people poop? | why do people pick their nose? | why do people participate in sport? | why do people quit? | why do people queef? | why do people quit exercising? | why do people question god? | why do people quarry in the peak district? | why do people quote other people? | why do people quit school? | why do people rape? | why do people read? | why do people recycle? | why do people resist change? | why do people run? | why do people rebel? | why do people read books? | why do people run marathons? | why do people rock back and forth? | why do people run away? | why do people smoke? | why do people snore? | why do people start smoking? | why do people say bless you when you sneeze? | why do people sneeze? | why do people steal? | why do people smoke weed? | why do people stutter? | why do people sleep walk? | why do people self harm? | why do people take drugs? | why do people travel? | why do people talk to themselves? | why do people think obama is muslim? | why do people think obama is the antichrist? | why do people tan? | why do people take cocaine? | why do people take risks? | why do people take heroin? | why do people take ecstasy? | why do people use drugs? | why do people use steroids? | why do people use cocaine? | why do people use heroin? | why do people use the internet? | why do people use illegal drugs? | why do people use meth? | why do people use tobacco? | why do people use facebook? | why do people use cannabis? | why do people vote? | why do people volunteer? | why do people vote republican? | why do people vote the way they do? | why do people vomit? | why do people vote for obama? | why do people visit national parks? | why do people vote conservative? | why do people vote early? | why do people visit kenya? | why do people work? | why do people write? | why do people wear glasses? | why do people watch tv? | why do people write viruses? | why do people write poetry? | why do people watch reality tv? | why do people worry? | why do people wear underwear? | why do people whale? | why do people yawn? | why do people yawn when other people yawn? | why do people yell? | why do people yell geronimo? | why do people yawn at the same time? | why do people yawn when others yawn? | why do people yawn when they see other people yawn? |

A New Look?

You know when I first designed SGNTN I was pretty happy with the way it looked, but more and more I’ve longed to have something a little less, um, busy. A little cleaner. It’s hard to get motivated to put much effort into something I really haven’t used all that much lately, but it occurs to me that part of the reason I haven’t blogged much lately is that it reminds me how much I’d like to make some changes. So I finally decided to do something about it. Or at least test the waters.

So the first problem: I’m currently using Movable Type which is a bit creaky and not so much fun to maintain. I’ve looked at a couple of alternatives, but decided if I’m going to change my blogging engine that Word Press is probably the most straightforward solution. Next, the flexible width 3 column layout is neat technically (I was quite happy when I got that worked out), but really crams a lot of stuff on the screen at once so I’m thinking 2 columns. While were at it, those Adwords can go. Although it amuses me to see what ads Google decides to attach to my posts, I guess most people find them ugly and annoying. I think I’m going to get rid of categories too and whatever else I come across that will tend to make my site look a bit cleaner.

With that said, I ask you (one of my 3 loyal readers) what do you think? Should I stick with the current design, perhaps poke around a bit and clean up the rough spots, or should I make a move to a new look that is hopefully easier on the eyes? You can take a look at how SGNTN might look (if I decide to go through with the makeover) here:

https://www.somegeekintn.com/blog/

Feedback is greatly and anxiously welcome.

What Apple Needs

So there’s been a lot of talk lately about Apple’s rejection of Podcaster from the App Store. Reaction has been almost universally negative and at least one noted developer has decided to discontinue developing iPhone software. There have been a variety of calls for Apple to at the very least clarify the App Store submission guidelines so developers don’t risk wasting months of development effort only to be rejected by the only available outlet for iPhone software distribution.

This is only the latest in a series of disappointments from the iPhone developer community. A brief timeline:

  • We have an SDK, it’s html and javascript (boo!)
  • OK, just kidding we have a real SDK (yay!)
  • But you’ll only be able to distribute your apps through our store (boo!)
  • But all the tools will be free (yay!)
  • And it’ll be $99 per year to become a developer (yee… meh)
  • Oh and you’ll need to be an authorized iPhone developer to post apps on the App Store and you’ll go through a potentially long drawn out process where you’ll receive no feedback from Apple and in the end probably get chosen or denied at random (boo!)
  • OK you can submit your apps now (yay!)
  • But it’ll take days or weeks before they’ll be approved… or denied. And again you won’t know the progress of your submission until the point we reach our decision. (boo!)
  • Oh and by the way this is still all under NDA (BOO!)
  • NullRiver’s NetShare is available. At last we can tether with the iPhone! (yay!)
  • No you can’t (boo!)
  • Yes you can (yay!)
  • No you can’t (boo!)

There have been plenty of suggested remedies to deal with these issues, but everything in Apple’s history leads me to think that Apple will tighten, rather than loosen, their control of, well pretty much everything they do. We love Apple because they create great hardware and software. They devote resources to the little details that another company might gloss over, but these details are what sets them apart from their competitors. But let’s be honest, the man running Apple would like very much if it were possible to sell you a product in which everything that you need (and don’t) has been decided upon based on aesthetics and function. The degree of openness for each of the three platforms: the Mac, iPhone, and iPod, is directly proportionally to the amount of competition Apple has in each category.

For example look back at the original Mac 128k: it will have no fan, by God, or hard drive, or ability to expand it in any way. And to make sure people didn’t try and fiddle around in it’s perfect innards the case was held together with screws that could only be removed with a special screwdriver. (Later Apple would learn their lesson and remove screws altogether from the iPod and iPhone. Can anyone, anyone at all provide a valid reason, other than aesthetics, for not providing a user replaceable battery on these devices?) The Macintosh did make a dent in the universe, but not in the way that Apple originally hoped. It brought the graphical user interface indirectly to the masses. Indirectly since sadly it was Windows based machines, which were much more open to user customization, that came to dominate the desktop computer market.

This control applies not only to hardware and software, but perhaps most importantly to the image that Apple projects. They make products for the crazy ones, the misfits, the rebels, the troublemakers, and the round pegs in square holes. You’re cool if you buy an Apple product. Not a lemming like some Windows user. Ironic, since some Apple devotees happily camp out for new iPhones, iPods, OS updates, new Apple Store openings and frantically refresh their browsers windows during live blogs of any Steve Jobs presentation. This is all cultivated by Apple. All of the information that comes from Apple is carefully crafted to try and insure that they are on message. I’m not sure I’ve ever read any news articles about them that didn’t end with “Apple declined to comment”. They sued and then shut down Think Secret. Radar, Apple’s bug reporting service, is of little use to developers since they’re not allowed to see bug others have submitted. Recently I heard of a situation with a developer that had appended an iPhone application description to say that an update was ready, but Apple was working through a backlog and had not yet approved it. The developer was contacted and asked to change the description so it did not appear that the delay was Apple’s.

OK, so I’m kinda of going off in the weeds here. I didn’t really intend to just bash Apple. I only wanted to illustrate that the company has its faults and we should try and view things objectively. Apple is trying to make money. Period. They’re not trying to make the world a happy shiny place. So, while I appreciate Fraser Speirs gesture, their are thousands of developers lined up waiting to develop for the iPhone that will step in to take his place. So what incentive does Apple have to loosen the restrictions they’ve placed on development? Civil disobedience could be fun. All the developers could simultaneously change the price of their apps to $9999.99 for a day in protest. That would make news and we’d all lose our App Store privileges and likely enrage our customers, so maybe not. Or, we could hope that the outcry becomes such that it becomes felt in wider circles than just the developer community. If Apple’s image starts taking a hit they might change their minds. Although there is a slow undercurrent of dissatisfaction forming based on the cumulative effects of the recent negative actions, by and large people are willing to give Apple the benefit of the doubt in most situations. Certainly Apple is given far, far wider latitude than a company like Microsoft.

So what if the iPhone comes to dominate the cell phone market the way the iPod has dominated the mp3 player market? Will we end up with the same diversity of development that we see on the iPod? Perhaps not to the same degree, but it’s reasonable to expect that the smaller players would be slowly squeezed out. What the iPhone needs is legitimate competition. Yes, there are plenty of smartphones out there, but Apple needs someone to deliver a device as elegant, or nearly so, as the iPhone. Perhaps Google’s Android or RIM is up to the challenge?

At the very least Google / RIM should try and capitalize on some of Apple’s missteps, especially with the developer community. What if RIM tried to woo away developers of applications like Podcaster with an offer to assist in bringing the application to Blackberry? Hey we’ll give you a phone, a system to develop on, the tools, and a nice chunk of cash and no NDA, if you’ll bring your application to our platform, whadaya say? It might be harder to lure away deeply loyal developers that cut their teeth on the desktop platform, but plenty of developers have no such history and would be perfectly happy to learn another SDK if the opportunity looked promising. RIM could then turn that into a great little PR campaign while their at it. Maybe even make their own 1984 type commercial with Apple playing the part of Big Brother this time.

Does all this mean, am I rooting for Blackberry, Android, Symbian, Windows Mobile?! No of course not, I’m rooting for the consumer. Technology. Innovation. Apple’s recent tactics will stifle innovation and the only real remedy is healthy competition. This is exactly what the iPhone brought to the creaking cell phone industry. Now we need to the competition to respond to insure innovation continues with mobile software development.

C4[2]

Last Friday evening I found myself eating dinner with a bunch of really smart guys. One of these smart guys was Tim Burks (@timburks) and he tells me, oh hey I read your post from last year about C4. I’m not sure I actually thanked Tim for taking the time to stop by sgntn (being as I was surprised that anyone reads my blog) but I’d like to take the opportunity to now. Thanks Tim! You see, we were there for the 3rd annual C4 conference (aka C4[2]) which gathers together some of the brightest minds in the software development community and in particular the OS X developer community. Happily, I once again slipped in under the radar. Tim’s mention of my post got me thinking, hey maybe I should write something up this year when I get home. And hey, maybe this time I’ll take some notes. So I am and I did.

First though I’d like to send a big thank you to Jonathan ‘Wolf’ Rentzsch (@rentzsch) and his crew for once again doing an outstanding job putting together C4[2]. And a suggestion if I might: next year it would be great if we could get the rest of the C4 team in front of the audience and give them a round of applause. Perhaps this happens at the end of the conference. I’m not sure because this year and last I’ve left roughly an hour before things completely wrapped up and I suspect I’m not alone.

Friday Night

FIRST UP WAS CRAIG HOCKENBERRY (@chockenberry). Okay, remember how I said I took notes? Actually I didn’t bust out my notebook until Saturday so I don’t have detailed notes from Craig’s presentation so I have to go from memory a bit here. Bear with me. Craig presented a brief history of the user interface from the command line all the way up to the iPhone and then lingered a bit on iPhone user interface considerations in particular. He explained how he tested human / iPhone interaction when designing Twiterrific for iPhone. Paying particular attention not only to the areas of the device that were easiest to reach with your thumb, but also different ways he found himself, and others, holding and using the device in a variety of situations. In addition he noted a variety of lighting conditions and the effect this had on the ability on the usability. All these details and more are considered as he crafts his applications for the iPhone and the gist of his talk was that you should too. The iPhone is not a frickin’ miniature computer and we need to think, really think, about the new ways that people will be interacting with software on the iPhone. Twitter highlights included a running count of the number of wangs in Craigs presentation.

Next up was D. Richard Hipp. Dude, he invented SQLite. Have you heard of it? So I really have to apologize for my lack of notes here, but I sat mostly slack jawed during his presentation. First he cleared up any misunderstanding people might be having regarding the pronunciation. He pronounces it ess-kyoo-ell-ite, “like it were a mineral”. He explained during his presentation some of the design considerations behind SQLite and some of the many ways it can be put to use by you. He also explained visually the differences between SQLite and Oracle by contrasting a full sized mixing desk (Oracle) with and iPod (SQLite). Both can listen to music. And also explained that SQLite’s competition is not Oracle, it’s fopen(). Oh and finally as far as I can tell D. Richard Hipp was also the only presenter with a wikipedia entry, although I didn’t check everyone.

Later on Friday night I understand there may have been a bit of drinking

Saturday Morning

The morning sessions began with Alex Payne’s talk on Scala. Let’s see I think Alex is even on Twitter… ah, yes: @al3x. So Alex works for Twitter and looked to move some of Twitter’s functionality from Ruby to another language which would address some of Ruby’s shortcomings (who knew!?). He wanted a language that was fast, functional, expressive, statically types and concurrent and eventually settled on Scala. He took the audience through several samples of Scala code. I have to admit if I don’t see an immediate use for some of the languages discussed at C4, that I tend to tune out a bit. But if you’re not satisfied with Ruby and want to look at alternatives it couldn’t hurt to investigate Scala more closely. Twitter highlights included praise for Alex’s choice of typeface in his presentation.

Rich Siegel (@siegel), from Bare Bones Software, gave the next presentation. Rich talked about longevity in the software business. Rich has been coding since like punch card days or something, so he knows what he’s talking about. Among the nuggets of wisdom Rich shared: Trying to stick to ideas that have a naturally long product life spans and avoid fads. Avoid “me too” applications and ship products when they are ready, not before. Don’t let external events such as new OS releases or trade shows dictate what your release schedule should be. Avoid the release early, release often philosophy. Charge what you think your app is worth and not what others think it’s worth. Have goals, but don’t try and conform to a rigid five year plan that doesn’t allow flexibility to react to new opportunities. Seek varying opinions from partners or elsewhere. Twitter highlights included a tweet from Paul Kafasis (@pbones) of Rogue Amoeba stating that he and Craig Hockenberry nearly gave themselves whiplash from all the nodding in agreement during Rich’s talk. Attendees also praised Siegel’s choice of typeface. Presentation typeface selection is far more important than I realized.

Saturday Afternoon

A couple days before I left for C4, a coworker asked me if I’d heard about Cappuccino which is a javascript implementation of Objective-C and large portions of the Cocoa frameworks. I answered that I had, but hadn’t really looked closely yet. The next presenter, Ross Boucher (@boucher) of 280 Slides gave a presentation on Cappuccino and… wow. Even if you’re not a web developer, you have to check this out. Basically most any (non nib based) Cocoa app can be ported to Cappuccino by changing the NS class prefix to CP and loading it up in your browser. There’s a bit more to it than that of course, but it looks shockingly easy to create desktop apps in a web browser without having to worry so much about your Javascript skills. Twitter highlights: not to take anything away from the other presenters, but based on tweets, the most impressive presentation to that point. There was also talk of how distracting the carpet was.

Tim Wood (@tjw), VP of Software Development at The Omni Group had the unenviable task of following Boucher’s Cappuccino presentation with his talk about Omni Data Objects and he did pretty well I thought. Omni Data Objects is essentially a streamlined replacement for Core Data. They needed a framework that would allow them more easily share and maintain code for both the desktop and iPhone OS X platforms. It’s built around SQLite, supports KVC / KVO, faulting, object uniquing and other things that seem impressive and it’s optimized for the iPhone so it is particularly fast on the desktop. The framework is intended to be open source and publicly available when it’s ready, but wasn’t at the time of the presentation. When it is, you’ll be able to find it here Twitter higlights included talk of the ampersands and which typefaces render them most beautifully. Perhaps a detoxification side effect.

The anticipation of the next presenter’s typeface was fever pitched. Buzz Anderson (@buzz) gave a talk about his journey there and back again. There being Apple. This lead to a discussion of emulating Apple, or at least the good bits, such as taking a very simple idea, implementing it very well and slowly expanding it in ever increasing arcs. Putting design first. The lion’s share of your work should be the design portion. He also mentioned the “tent pole” philosophy, which is choosing a few features that really define your project and building around those features.

I came in late to the next presentation. Hearing laughter outside I was thinking, aw, I missed the funny bit. No. No I did not. I missed A funny bit. There were many many more. Thomas Ptacek (@tqbf) and company from Matasano Security had the audience rolling with a hilarious (and occasionally frightening) talk about security. There advise was very common sense stuff: sanitize input, initialize variables, fail on malloc don’t make your executables writable, vote Obama, etc. And don’t try and roll your own encryption or related functions. Even the experts can’t do it right, you have no hope. Twitter highlights: not a word was said about the font used in their presentation. That’s how funny these guys were.

Boy I’d hate to be the guy who had to present after the Matasano guys, and yet Brent Simmons (@brentsimmons) did a great job in his talk On Going Free. Brent interspersed his talk about the history of NetNewsWire with some great pictures and let me just say right now that Brent has fantastic boobs. Brent said he always figured that NetNewsWire would have to become a free app. That one day RSS would become a commodity built into the web browser or offered for free by a company like Google. The most interesting part (to me) was the mention of a discussion that occurred between Brent and Paul Kafasis at the time NNW went free, about how a premier application going free would impact the pricing expectations of other applications. While Paul eventually came to see Brent’s point of view, it was still interesting especially when you think about the pricing of iPhone apps and consider how the public might come to expect similar pricing for desktop applications.

Saturday night wrapped up with a panel discussion hosted by the be-tuxedo’d Wil Shipley (@wilshipley). Shocking because Wil is typically very understated and doesn’t like to draw much attention to himself. The panel consisted of:

It was at this time that I got distracted by trying to get my boarding pass printed out for the next day’s flight but even had I been able to focus more on the panel I would have been hard pressed to keep up with all the questions and answers during the panel discussion. Suffice to say there were many and varied questions and answers regarding the state of OS X development, in particular iPhone development. But nothing that violated the FINE NDA! Oh and whatever the problem, SQLite is probably the solution.

After the day’s session we all wandered over to Gino’s and had some wonderful pizza and beer and wondered back to the hotel for some hideously expensive drinks supplied by the hotel. Those that were smart or foolish (I can’t decide which) went to O’Tooles for more serious drinking. I mean for God’s sake, look at O’Tooles logo.

Sunday Morn… er Afternoon

Mike Lee (@bmf) of Delicious Monster Tapulous United Lemur, got us started Sunday morning with a talk called Pimp My App. Mike took a look at one app that he was very much looking forward to on the iPhone that didn’t come out quite as well as he had hoped. That app being AOL for iPhone. Mike did an excellent job illustrating how several relatively minor changes could have given us an app that felt more at home on the platform and provided a much nicer instant messaging environment. Mike also offered his advice for developers such as not skimping on art. Hire someone that knows what they’re doing with both user interface and artwork in general. Make sure that you’re familiar not just with the APIs on your chosen platform, but the expectations of the users of that platform with regards to software (a sentiment that I strongly echo given some mistakes I’ve made in the past). And also really try and empathize with your users and how they interact with your product. Once again, less is more. Focus on those features that define your application and don’t be afraid to cut other features that aren’t well fleshed out, unneeded, or quixotic. Look at user interaction in everyday objects and consider how they might be improved. Mike suggested the idea of incorporating telemetry into applications, to see how users are executing various functions. How are they spending their time. Where might users be struggling while using your app. An interesting notion. And finally, whatever you do, do not use a splash screen or Mike Lee will kill you.

Andy Finnell (@macgeek02) gave a great talk about being an independent contractor. He listed the pros and cons and what pitfalls to watch out for as a contractor. How cultivating a network of contacts is vital to becoming successful. You don’t want to rely on just a few or one client. How you should make sure that contracts are structured such that the final payment is the smallest chunk, lest it build held over your head in an effort to squeeze more work out of you. He talked about partnering with other contractors so a variety of jobs, and payment schedules can work together to provide a more steady source of income. What you can expect from larger employers versus smaller ones. While larger clients offered more stability and potentially larger paychecks, the work might not be terribly exciting. Whereas with a smaller client the work might be very interesting but you have to weigh that with the chances of the company staying around long enough to actually pay you. Andy emphasized that everything you do is a reflection upon you and your company and how a bad experience might cut you off from future work. There was a great deal of information in Andy’s talk and those are just a few of the points he covered.

Troy Gaul (@tgaul) of Adobe Systems gave the final talk about Adobe’s use of Lua in Lightroom. Troy went over the design of Lightroom and Adobe’s rationale for using Lua to tie all of the various pieces of Lightroom togeter. He mentioned that 63% of Lightroom is written in Lua. And he also revealed that his team created an IDE used to edit all of the Lua code that they produce and that they plan on making this available in the future.

And that pretty much wrapped up the speakers which brought up to the Ironcoder portion of the conference. Sadly I had to leave before I had a chance to see everything. Zac White (@zacwhite) showed a sneaky little application that could read all of your previous locations from Core Location even if you did not give the application permission to allow it. Next Tim Burks was going to do something incredibly cool using an application written in Nu for the iPhone which ran a Bonjour exposed server and could talk to your desktop machine via Acorn plugins also written in Nu. This was going to be awesome. Sadly Tim ran into a snafu and it was at that point I had to make my way back to the airport and home to Nashville. I’ve no idea who won Ironcoder or if Tim got the wrinkles ironed out of his submission.

There you have it. A lot of words I’ve attempted to string together for you which hopefully give you a little bit of an idea of all of the very interesting stuff that went on at C4[2] this year. Of course this post is just the high points of the various sessions and doesn’t even begin to cover all of the discussion that happens outside the conference rooms. As with WWDC, and perhaps more so at C4, just the energy from hanging out with this group of people really feeds back on itself, fires your imagination and inspires you to aim higher, and hone the craft. Once again I’m deeply grateful to Wolf for the work he has done putting this conference together. And if it comes down to a lottery next year I hope that I win a chance to come back again.

My Sincere Thanks

G15 - Album Art

While I was finishing up 5 Card Touch I started casting about for ideas for my next iPhone app. I got plenty of suggestions, but the most popular, and perhaps more convincingly, the app my wife wanted to see most was a slot machine. While I do gamble from time to time, slot machines have never really been my thing, but I went ahead and started planning one. The result was Lucky 7 Slots and the response has been way way beyond my expectations. It’s been a week since it was released and has steadily climbed the charts on the App Store reaching, at the time of this writing, #23 overall! I can’t describe how happy it has made me that so many people are enjoying my application and you have my sincere thanks. Excuse me, having a bit of a Sally Field moment.

OK

Perhaps I shouldn’t be surprised at the popularity of Lucky 7 Slots. Slot machines are obviously a huge draw in casinos. When I set about to make my own, I wanted to try and capture a little bit of the excitement and suspense of the classic three reel slot machine. The newer slot machine with twenty payout lines have their followers, but every time I’ve tried to play one I just have to let the machine tell me if I won. I have no idea how people can track all of those lines quick enough to have any suspense while waiting for that last reel to stop spinning. And sometimes even after I’ve won I’m not sure how. So, anyway a three reel machine was what I wanted to make, and I assumed might have a broader appeal than some of the newer varients.

In order to make Lucky 7 a faithful recreation of the types of machines you’d find in Vegas, I had to learn a bit more about what makes them tick. The Wizard of Odds came through again with a excellent description of how slot machines work internally. This was a nice reference, but the payout described in that article is a miserable. 87.47%.

I wanted a slot machine that paid close to, but not quite 100%. After all I don’t want people playing my game and thinking: “Hey this is easy, I’ll just take the rent, head to Vegas and double it!”. You’ll fare much better on my slot machine than you will in Vegas, but eventually your luck will probably run out. This was possibly the trickiest part of the app. I tried very hard to create a table with a nice balance of small payouts and enough large ones to keep things interesting. I wanted it to pay regularly, but not at the cost of never hitting the big payouts. But I couldn’t put in too many big payouts and sacrifice the frequency that the smaller ones would hit. As I was creating the tables I found that a change to the probability on a single symbol on a single reel would ripple through the payout table and upset this balance. Oh, and I also hated seeing a blank on the first reel. It’s depressing when you know you’ve lost before while the last two reels are still spinning. So you’re less likely to hit a blank on the first reel than the other two. Long story short it was a pain in the ass 🙂 But I think I hit upon a fair balance. Lucky 7 has a 99.5% return and, on average, every 1 in 4.8 spins will be a winner.

There were a couple of ideas for the game that didn’t make the cut. The first was a pull handle on the side of the screen that the user could grab and “pull” to set the reels spinning. I don’t think I’m breaking the NDA when I say that the iPhone has a resolution of 480 by 320 pixels. Even less if you subtract the status bar which I really like to keep visible if possible. A handle would consume about 10% of the screen at a minimum running vertically along the side. Did I really want to give up all those pixels for a feature that would probably be used a couple times as a novelty? No, I did not.

The other idea was to use the accelerometer and some sort of gesturing motion to set the reels in motion. The excellent MotionX Poker Dice makes use of the accelerometer to roll dice and it is very good, but the novelty wears off fairly soon and I’ve found myself wishing for a button (a side note about MotionX if you have it, watch the shadows cast by the dice while tilting the phone about. Excellent touch). So again, a novelty feature. What’s more, how do you make sure you don’t inadvertently trigger a spin when you didn’t intend to. What if I win a big payout and in the excitement, my victory dance triggers another spin? And finally, monitoring the accelerometer uses extra cycles even if the app is just sitting there. I try to pay attention to battery usage in my apps and conserve where possible. As a matter of fact, muting the sound in my apps doesn’t just set the volume to a lower level, but bypasses the audio methods altogether. In the end, using the accelerometer to trigger a spin just didn’t seem worth it.

So there you have it. Lucky 7 Slots. Once again a huge thank you to everyone that has tried it and if you haven’t I hope you will and let me me know what you think.