Archive for the 'Tech' Category

How To: Get the m4a from Smule’s “I Am T-Pain” app

Hilarious app. So I monkey patched Smule’s javascript to get the m4a URL. Lame that they don’t just give a link.

1) Record a song

2) Share it

3) Go to Smule’s play page in Firefox

4) Open up Firebug and paste this into the console:


sendPlayerAction = function(action, param) {
var url_prefix = 'http://smule-media-app.smule.com/tpain/';
var file_ext = '.m4a';
var file = url_prefix + param + file_ext;
var player = getPlayer('playercontainer');
console.log("FILE URL: " + file);
player.doAction(action, file);
};

5) Hit enter

6) Hit play and the file url will be printed into the console

7) Download it w/ your favorite HTTP client and you’re set

Opinion of Objective-C

Programming can be incredibly entertaining. And I don’t just mean finding hex arrays with 17 entries either. Programmers benefit from a wide range of languages — tools to get the job done. Sometimes, it’s easier to use one language over another (e.g. don’t write an app in C when a bash script will do). When asked about their favorite language, many nerdy types will probably throw out Ruby or Python. Generally speaking, only masochists will say Java or C. Whatever. Every so often, you’ll meet a crazy AND nerdy person who will respond Objective-C. I’m crazy and nerdy.

So Hamed asked if I wanted to help write the first Radio Javan iPhone app. Naturally, I said yes. At first, I wondered WTF was up with all the brackets. Don’t worry, they grow on you. The @ before NSStrings is a little strange at first too. I like it. In fact, I like it so much, I try to use it when writing other languages (O.o). Objective-C has other quirks, too, like the crazy-long-and-oddly-amusingly-verbose method names. I guess I’m trying to say that Objective-C is really cool and it’s a shame programmers are scared of it. Objective-C is just plain sexy (as far as programming languages go). I’ll admit that I’m not much of a fan of lower level languages, despite knowing their usefulness. Srsly, do yourself a favor and learn Objective-C.

Just Learn the Damned Language

I hear the same pitch, over and over: I have this widget. It lets you write <insert high level language that everyone already knows here> and it spits out <insert lower level language and its UI toolkit here>! It saves so much time and it’s easy and it lowers time to market and and and you can even write Java! There’s ALWAYS Java going on with these things, for some reason. NO! Bad idea.

Well, let me be clear about it. The idea itself isn’t so bad; it’s the HORRIBLE implementation that almost always comes along for the ride. There are exceptions, of course, but I contend they’re the minority.

There is generally some huge functional void since someone has to implement classes to fill functionality gaps where there isn’t a reasonable mapping between libraries of the two languages and they never quite finish. This makes using the widget not quite as good as learning the output language, not to mention having to learn the widget’s libraries, which are supposed to mimic the output language’s libraries (and they often don’t). Then, there are bugs. Lots and lots of bugs to terrify you and give you nightmares. Why not just spend a few days learning the language you need to use? Your engineering skills will get you through it.

Why iPhone 3G S Doesn’t Suck Like You Think It Does

My wife wanted my iPhone 3G so I couldn’t hold off on upgrading until next year so I trotted down to the Apple store at 5:30 AM to wait in line this past Friday. Lots of people have called the 3G S a marginal upgrade since there was no aesthetic change but it’s actually a significant upgrade. Although I wanted a new design, it makes sense to redesign every could of years instead of every year and I was glad to continue using my existing accessories.

iPhone 3G S got a storage bump. Thirty-two gigs of flash memory makes for a handy iPod with plenty of storage for my music (those with large music collections might find this cramped, but it’s double that of the old high end iPhone). Apple also added a significant processor upgrade (Anandtech has already gone in depth so I will not) and iPhone 3G S has 256MB of memory, up from 128MB in the original and iPhone 3G. These upgrades make for a “snappy” UI experience. It’s noticeable. The GPU was also upgraded, which will make for better looking games as soon as developers take advantage of it (that will not take long) and smoother frame rates with existing games. The phone comes preloaded with the iPhone 3.0 software (thoughts here) — it’s good. Although the phone supports 7.2 mbps HSPA, AT&T’s network doesn’t. They’re rolling it out, though, so hopefully it’ll help despite reports that show otherwise.

Apple threw in a 3.2 MP camera and added support for video recording. I was a bit miffed at video recording being a 3G S only feature as it could have been added to existing iPhones as well (via software, don’t give me that processor too slow crap..older candy bar phones record video fine). Apple also added speech reco via a voice command interpreter (dial, play music, etc.). This should also have been possible via software (again, candy bar phones). At the end of the day they needs to sell hardware so I understand the business reasons but I’m not a fan. Basically, Apple changed everything on the inside of the phone, added a bunch of software features, and called it the 3G S. If you have a first generation iPhone, this is a must-have upgrade. If you are on an iPhone 3G, it’s a toss-up but I’d spring for it.

Lessons Learned while Planning an Unconference

Mobicamp was an extremely gratifying experience. I had a great time at the event but also learned a lot about planning such things. This is an abridged how to, a list of pitfalls, and a list of things I would likely change for Mobicamp 2010. Look for another post in the near future regarding some of sessions given at Mobicamp.

There are, of course, plenty of things to consider when planning an unconference:

  • Attendee limit
  • Venue
  • Food/Snacks/Drinks
  • Design/Web presence/T-Shirts
  • Charging Attendees
  • Sponsorship
  • Theme and Audience
  • and more that I’m likely forgetting

Attendee Limit:

Event size impacts everything on the list above. Figure this out up front and realize that the time to plan the event and the cost both go up as you increase the number of attendees. I suggest keeping the event reasonably small if you want folks to interact with a lot of others. In my opinion, the sweet spot is in the 70-100 person range.

Venue:

Finding a venue was reasonably easy for me thanks to the wonderful resources in Atlanta. I spoke to @lance at the ATDC and asked if the ATDC could offer space for the event. They were able to assist and the cost was very reasonable. If that had fallen through, @billcutts at GTRI was more than willing to assist. Many thanks to both. It’s not always the case that resources like this are easily available. Often venues are the most expensive part of events like Mobicamp. Shop around for quotes (you can try hotels, universities, tap into your network, etc.). If you’re going for a BarCamp, you probably need several small rooms.

Food/Snacks/Drinks:

Once you’ve figured out the number of spots you will make available at your event, shop around for prices on feeding that many people. Talk to managers at restaurants about their catering options. In my case, food and drink was a around $8.33 per person. I accounted for approximately 120 people with a guess that 70% would actually show up.

Design/Web presence/T-Shirts:

Find a good designer and ask for a logo and T-shirt design. If you’re not savvy enough to put up a webpage yourself, tap into your network. A wiki or blog works fine. You also need a way for attendees to sign up. I didn’t ask for T-shirt sizes, which made guessing a bit difficult. I’m asking for T-shirt sizes next year. I used Kingscreen.com, which worked out very well (they were able to print a two color gradient, etc. without issues). Shirts seem to range from about $6 to about $10 each. Again, shop around and find a good deal.

Charging Attendees:

Mobicamp was free. My rationale was more people would attend if there was not a cost barrier to entry. I believe I was wrong. If there is a modest fee, say on the order of $20, attendees have a vested interest and want to get their money’s worth. This makes them much more likely to attend. Since unconferences depend on attendees for content, it’s more important to make sure people actually make it to the event than other conferences. This is something else I will change if I host Mobicamp 2010.

Sponsorship:

If you’ve gotten this far, you have a good idea of how much your event will cost. Get in touch with evangelists from companies to see if they can help out. I was fortunate to have several wonderful sponsors for Mobicamp. In fact, none were pushy and interestingly the largest companies were the most easy going about things. I recommend creating a single “sponsorship package” — a list of stuff companies get in return for sponsoring your event. Make it worth your sponsors’ while and treat them equally. I recommend going with a slightly higher sponsorship amount and a handful of sponsors instead of many many small sponsors. It’s also a good idea to keep sponsors relevant to the event, although this generally a nonissue (usually only sponsors with some vested interest will offer).

Theme and Audience:

Having a theme helps keep your event’s topics focused. If the theme is too broad, users may walk away feeling O_o; if the theme is too specific, then you may not have enough users signed up to provide an event’s worth of content. Mobicamp was originally intended to be an event for mobile developers and students. This was broadened a bit, on advice from a friend, to include more business-y topics like marketing, etc. This absolutely added to the event because many relevant sessions about things like experiences with certain App Stores, new technology and its real world impact on users, what platforms to target, etc. that may not have come up otherwise. I highly recommend asking attendees for their mandatory session topic on signup. A major value proposition of unconferences is the sharing of information by all attendees. This is cut short if half or more of the attendees decide to stay in their “comfort zone” and listen instead. Make people step out of their comfort zone and watch amazing dialog begin to emerge.

Mobicamp 2010:

Although Mobicamp went very well, there are a number of changes I’d like to make next year. As you might have guessed, there will be a hard limit on the number of spots and I’m going to charge a modest entry fee. I will also make contributing by giving a session mandatory, ask people to send their topics early on and pick time slots based on the expected length of their talk (at the event). Topic focus was not an issue At Mobicamp, save one or two sessions.

Thanks to all of my friends who volunteered their time to contribute to and run Mobicamp.