iPhone Beta Software: A Cautionary Tale

Posted in Geek Stuff on July 14th, 2011 by admin – 1 Comment

I know I’ve been working on all these high minded posts, about big hand wavy topics, but sometimes I guess blog posts can just be about your day. Especially when your day has some helpful lessons that other people might learn from.

I’ve had every iPhone since they first came out. I am an unapologetic Apple Fan Girl. I do my work on MacBook Pros, have iPods aplenty, and just generally live in iOS or OSX all the time. I frequently run beta software, and the Universe has generally protected me from the pitfalls of such behavior, but apparently this is not a given.

I have a new iPhone, which I got so I could switch to Verizon. Not because I hate AT&T, although they certainly deserve any amount of hatred folks want to dish out. I’m just not really a hater. But I wanted tethering. And I like shiny new things. And I like unlimited data. So I got the new phone and I switched. And other than the weird no-data-while-voicing rule, the phone has been pretty well behaved. There are times when it gets confused, after I’ve finished talking to someone, about how to be a data providing mobile device, but it generally remembers how after a few minutes. I just figure it’s trying to teach me patience.

This phone, though, does have a problem. Sometimes, for no apparent reason, it just shuts down. It’s going along fine, I’ve just finished a conversation, my battery is over half full, I do a couple of app-y things and look away, and when I look back the screen is black. Poking at the button doesn’t help. Pushing the power button and the front button to reset it does nothing. It’s just… gone. It tends to do this at really inconvenient times – when I really *need* it to do some sort of task that’s time sensitive. Once about 15 minutes have passed, plugging it into a computer brings it back to life as if nothing had happened. This happens about once every couple of weeks, and it’s really kind of annoying.

The last few days at work have been really stressful, and as a result my critical mind seems to have gone on walkabout. So when it performed this awesome maneuver yesterday when I was trying to log my bike ride to work, I got annoyed and decided to… upgrade it to the iOS 5 beta. Sadly, nobody was around to tell me what a colossally stupid idea this was – my phone was doing something that looked a lot like a hardware problem, so I decided to put some unstable software on it in case it might help.

Shockingly, it did not help. It turned my phone into something resembling a brick. My coworker Jeremy finally did manage to get it to upgrade to iOS 5, and I was happy with my phone for several hours, until… I plugged it into my laptop. Which didn’t have the newest version of iTunes on it. And my phone turned into something resembling a brick that knew a single trick – if plugged into a computer, any computer, it would boot to the Apple logo over and over, but wouldn’t do anything else. I pouted and poked at it, but to no avail. My phone wouldn’t recover for me. So I made an appointment at the Genius bar in Los Gatos for the morning and went to sleep.

The Genius bar in Los Gatos was spectacularly unhelpful. Since I had upgraded to a beta OS, they claimed, they couldn’t possibly do anything with the phone. They suggested I try restoring it on my computer again, and sent me on my way. So I went off to work, hoping that Jeremy could fix it again. He tried valiantly, for much of the day, with only minor scolding for thinking that installing unstable software on broken hardware was anything resembling a good idea. To no avail.

The story does have a happy ending, though. I made *another* appointment, at the Valley Fair Apple store, and the genius there was supremely helpful. And somehow, he convinced my phone that it wanted to be back on 4.28. Which was fine with me. If it starts doing the weird crashing thing again I’ll take it back without attempting any bizarre maneuvers next time.

So the moral of the story here is… don’t put beta software on your broken hardware. You know what, just don’t put beta software on your primary mobile device. It sucks to have no phone. Especially when it’s your own fault. iOS 5 is really cool, but you can wait a couple more months until the kinks have been worked out… trust me.

Posted in “Don’t be an idiot…” – actually, in Geek Stuff. On G+ I’ll send it to my Friends circle.

Hackdays: Playgrounds for the Imagination

Posted in API, Geek Stuff, JSAPI, LinkedIn on July 13th, 2011 by admin – Be the first to comment

One of the best things about working as an engineer at LinkedIn is the monthly hackdays. This is an amazing opportunity that feels a lot, to me, like playing the lottery – it’s a time I can set aside to let myself imagine the possible, to think about what people might want to do, play with, or learn.  Think of better ways to accomplish the things that frustrate me, or to share things I love with other people.  Individuals and teams of LinkedIn employees take the day (and sometimes the weekend afterwards) to create mockups, prototypes, and sometimes complete applications to demonstrate the ideas bouncing around in their head.  Our company benefits by getting tons of new ideas, and our engineers benefit because… well, because play is fun, and this is play.  And we get to present our ideas to the executive team, and earn Apple gift cards for our efforts.

Not wanting to keep all this fun to ourselves, on July 29 LinkedIn will be hosting our first ever Intern Hackday – we’re offering cool prizes and free food, and the opportunity to collaborate with a bunch of other inspired and inspirational interns for 24 hours.

But that’s not all!  The open source developers among you know that OSCON is coming up at the end of the month, and Jeremy Johnstone and I will be there all week talking to developers and helping them started with the LinkedIn platform.  We’ve just teamed up with Mashery, Urban Airship, and a host of other fantastic companies to help put together the API Hackday PDX on Saturday, July 30.  I’ll be there to give a presentation on our APIs and help people with LinkedIn platform questions, and LinkedIn is going to give 3 $100 Apple Gift Cards to the best applications using our platform – whether it be brand new applications, multi-platform mashups, or integrations into existing systems. Come show us what you’ve got, get some LinkedIn shwag, learn about our platform and win some Apple dough!

If you want to get a jump on the competition, head over to our Developer Portal and start playing with our APIs. We’ve got a Javascript API and a REST API, along with some plugins you can use for quick integrations.  We’ve got cool tutorials, documentation, and a very active community in our forums.

Here are some links to code walkthroughs you might find helpful:

    Posted in API, Geek Stuff, JSAPI and LinkedIn here.  Posted in Friends and Open Source in G+.

    The Price of a Monopoly

    Posted in Geek Stuff on July 12th, 2011 by admin – Be the first to comment

    Before coming to LinkedIn, I worked at Netflix, which has been one of my favorite companies for a very long time.  I’ve had an account with them since the very beginning, and I for a long time I’ve loved their loyalty to their existing customer base.  Until just a few years ago, any increase in price to their new member subscription price wasn’t passed along to existing members, who were allowed to keep their existing subscription prices until they chose to change to another plan.  When they added streaming, they added it as a bonus to the DVD plan – I know the goal here was to increase streaming viewership, but it was still very nice.  Until today’s change, every change they’ve made has looked at least a little bit like a benefit for the subscribers.

    Today, they’re rolling out a new plan.  Fortunately for me, at my particular level (4 unlimited DVDs plus unlimited streaming) the price is just about the same.  But for those people who are on a tighter budget and happy with the $10 for 2 unlimited DVDs plus streaming, they now have to choose one or the other for $8, or move to $16 for a slightly worse plan (only 1 DVD at a time).  Wow.  I mean, I think it’s nice that you can choose to have one or the other, so those people with no internet can just watch DVDs and those people who hate the USPS can just watch streaming, but really?  You can have one or the other for $8, or both for $16.  No discount to have both?  Really, Netflix?  And precisely no benefit for having been a customer for years?  I’m sorry, but 2 months notice is really not a reasonable amount of consideration.

    I realize that Blockbuster is dead.  And Amazon hasn’t really mastered the art of streaming subscriptions.  And Apple is struggling with the same thing. So Netflix can do what they want and they’ll continue to print money like gangbusters.  But you know, I liked giving our subscription money to a company that I felt valued their subscribers.  Even though my cost hasn’t changed at all, I’m much more likely to look elsewhere for my entertainment choices.  I know that may seem a little hypocritical as an Apple fan-girl, but continuing to give money to a company who makes it clear they’ve suddenly decided not to value their existing user base anymore feels a lot worse than continuing to buy items from a company that’s never pretended otherwise.

    Oh jeez, I have no idea how to tag this.  Um, Geek stuff.  And, uh.  Friends in G+.

     

    Doing what you Love

    Posted in Geek Stuff on July 11th, 2011 by admin – 2 Comments

    A friend of mine created an amazing company called DailyEndeavor, where real people with real jobs explain what their job is… really.  Not a “job description” where there’s a high-level buzzwordy list of things that you do, but actually… do you spend 75% of your time pushing papers around?  Would a detail-oriented person love or hate this job?  Who would make a great candidate?  This site is fantastic for people who have just graduated from college and don’t know what actual job they want to pursue, or people who are looking to shift careers mid-stream, or… just anyone who wants to understand a particular job better.

    I mention this now because I’ve been having a lot of discussions with my daughter about what she wants to do for her “job” when she “grows up”.  She’s 14 now, at that age where she needs to start putting some focus and attention on how she’ll feed herself once she’s no longer a kid.  She’s an amazing person, who loves to do many things at a time (marching band, professional Shakespeare, venture scouts, role playing games, art…) and I know there are lots of jobs she’d just love – and many that she would really detest.  I, of course, think she would love my job because it is perfect for me in every way and she shares my genetic code, but really… no.

    She currently thinks she really wants to be an animator at Pixar.  The girl is an amazing artist, don’t get me wrong, but she gets frustrated by the indirectness of computer art – and I’m not sure she’d really enjoy the demanding precision of such an endeavor.  She just spent a week on a tall ship with her grandmother and had the best time ever, and now she wants to spend at least a few years doing that sort of thing – which, to me, matches more closely with her personality.  But really, I don’t care what she does.  I just don’t want her to do a job she hates.  I’ve done that, even things I was particular fantastic at (typing title policies at an insurance company) and the entirety of your life is really dragged down when you do a job you dislike.

    I’ve had trouble explaining to her exactly how I ended up with the job I have, and why it is so perfect for me.  I have a BA in Philosophy. I failed the only computer class I took at UCSC because the terminals gave me migraines.  I took a job as a sysadmin at SGI in 1993, which I got because the interviewer liked my attitude even though I had no experience.  While doing that job, I discovered that I hated seeing people do things that were unnecessarily hard, or failing to understand information because it was poorly presented.  I created a hyperlinked sales system to run on Mosaic in 1994 because I didn’t like the Wingz experience for the Sales Managers.  I created tools to do things for users or answer their questions because I didn’t want them to have to do it manually.  I have, since the beginning of this experience, loved enabling other people by making things easier or clearer.

    My current main loves are the semantic web and data visualization, but that’s just because I want a user to be able to fully understand a data space without expending any work to figure it out.  Sharing our platform with other developers, and making them successful in helping our members, is a natural extension of this desire.  So I have the perfect job for me.  I get to write and debug code, which is fun.  I get to help people past stumbling blocks.  I get to talk in front of developers and get them excited about our system, which feeds my need for periodic attention waves.

    So, how to help my daughter?  I’m glad she doesn’t have the mindset I had in high school where you were supposed to breathlessly rush through all 16 years of el-hi-university and then off you go to work without stopping to consider where you were going.  I’d love her to take a year or a few after high school to wander around and just be young.  She’s studying Japanese, and while I know that at just-about-6-feet she’ll stick out there, I would love her to spend a year in Japan learning about their culture.  I envy her this freedom, but can’t wait to see what she does with it.

    If you haven’t see DailyEndeavor yet, I suggest you check it out.  He could always use more descriptions, and you might be surprised to discover what other people do all day.

    Posted in Geek stuff.  Sent to my Friends circle.  Really, that’s kind of a copout, isn’t it?  What kind of circle would make sense for this, I wonder.

    Race Training

    Posted in Fitness, Geek Stuff on July 10th, 2011 by admin – 1 Comment

    Well, I’ve signed up for a wacky adventure race for September 24, and will be signing up for the Catalina Triathlon on November 5th.  Just like every year, this means I’m going to have to actually get off my lazy butt and start training.  But how does one train for an urban adventure race?  And how does one do it without getting bogged down in specifics?  I can ride on the bike with the best of them, running is ok, I enjoy swimming but it takes more planning.  But really, 20-30 miles in 4-6 hours, with some implied “rest time” (shopping? trivia? scootering?) – how does someone train for that? I need to make sure my seat doesn’t get sore, that my feet can run a decent amount, and that I can keep going for 4-6 hours with some breaks.  I know how to train for the Sprint Triathlon in Catalina, but 4-6 hours is longer than any sprint tri I’ve ever done, so I need to work on my endurance before the Oyster.  I do need to make sure I get in enough cycling that I can easily cycle 25 miles if it turns out the Oyster is mostly that – and for my own sanity, and that of my teammates, I’d probably better work on getting my average speed up above 10MPH.

    But, you know, I get bogged down a lot in specifics when I’m training, and in this case it’s really not necessary.  So, let’s go with a really hand wavy SWAG (silly wild ass guess) at what a training program would look like for the Oyster. This year I’m going to go with the aerobic points system.  where you get differing points for biking, swimming and running.  Let’s assume 20 miles biking and 10 miles running.  Let’s go with the least-aggressive 1.5x/week-at-the-end plan and work up to that (remember that the Oyster will have lots of rest time available)

    So, for the Oyster, 1x distance/week is:
    20 miles biking: 20 points
    10 miles running (or walking): 40 points

    And (duh) 1.5x distance a week is 1.5 times that (or 90 points/week)

    So for July, 40 points a week is my goal

    For August, 60 points a week.

    The first 2 weeks of September, I’ll aim for 90 points, then the 3rd week of September I’ll go back to 60 (tapering).  Note that 90 points could look like:

    3000 yards swimming (30 points)
    30 miles biking (30 points)
    7.5 miles running (30 points)

    The Catalina Triathlon is effectively 8 points of swimming plus 15 points of biking plus 12 points of running, or a total of 35 points, so I’ll train October at about 60 points/week to be ready for the triathlon.

    Now, the tricky part is, as always, to track this stuff.  I’d love there to be an aerobic points iphone app that integrates with RunKeeper, but alas, nobody has written one.  So I’ll track my exercise with RunKeeper, and when I have time to put an application together, I’ll create one to track this stuff for me.  For now I’ll report my numbers to my Fitness circle to have some accountability, and I’m sure my Oyster team members will kick my ass if I don’t do a good job.

    Tagged as Fitness, APIs and Geek Stuff here, posted to my Fitness and Friends circles in G+.

    Upping my Game by… Running Games

    Posted in Geek Stuff on July 9th, 2011 by admin – Be the first to comment

    My job includes a lot of tasks.  Listing them here would probably put most of my readers to sleep.  Updating documentation, triaging bugs, writing example code – I find these things fun and engaging, but I’ve recently started doing more of the “Evangelist” part of the Developer Advocate role, and it turns out that this is a whole new type of fun to have, requiring an entirely different skill set.

    Over the last couple of months, I’ve given talks to groups focused on iOS development, the Semantic Web, data visualization – and a couple of startup accelerators.  I’ve gotten gradually better each time and have come to really enjoy this part of my job.  I know the topic and I’m good at doing presentations.  But what does “good at presentations” mean, really?

    Presenting to an audience of tech-interested folks (whatever their focus) requires that I know my technical topic well enough to explain it to anyone.  That’s just the beginning, though.  Telling stories helps them understand why I am there to talk to them, why I find the topic interesting.  Giving examples of things they can do helps them to stay focused and head away with something gained – they understand the technical topic I’m presenting, and they can go off and give it a try themselves.  I need to entertain and amuse them to keep their interest, create context they can relate to, and send them off with a sense that they’ve accomplished something themselves (learned how to do something with our platform).

    Recently, I started running role playing games for my family and friends.  I specifically chose the Pathfinder Society modules because I like them and they’re, to me, understandable and engaging.  And after running 5 games (the same number of talks I’ve given) I find that there’s a really amazing amount of overlap in the skills I’m using.  I’m trying to provide a fun and entertaining experience for the table of players.  I’m helping them to get through a set of challenges so they leave with a sense of accomplishment.  I’m enabling an experience which they will take away with them as something they contributed to.

    Running these games has actually helped with my talks. Sometimes a role player will do something completely unexpected, and you have to engage your verbal aikido to let it pass by without distracting from the story.  Similarly, sometimes an audience member will want to engage you in a discussion of how your platform doesn’t meet a very specific use case, and you want to keep the attention of everyone else.  The skills you need here are the same.  Warmly addressing the person’s concern while deflecting it from the central topic looks very similar in any context.

    Both role-playing games and technical talks will have audience members who want to make themselves look good (without concern for, or even with intent for, distraction from the main topic).  Your goal is to make sure that as many audience members as possible leave the experience having gained something.  When 10% of your audience comes up to engage you in discussion afterwards, or when your players spend 2 hours discussing a particular encounter in your 4 hour game, you’ve done a good job.  Sometimes you’ll get someone who’s not happy with being thwarted from their attempts to hijack the experience, but the needs of the many outweigh the needs of the attention seeker, and your job in either case is to make sure that the majority of the attendees get what they came for.

    Anticipating the unexpected is very hard.  Reacting to it gracefully, and redirecting the energy back to the main path, is also hard – but it’s a critical skill for any Developer Advocate.  Or Gamemaster.

    Tagged here as Games and Geek Stuff.

    In G+ this is tough.  Most of my gaming friends aren’t on G+ yet.  So I’ll post to my straggly Gamers circle as well as the APIs circle (and Friends.  My friends never get away from anything).

    Targeted Sharing via Google+ Circles

    Posted in API, Geek Stuff, Google+ on July 8th, 2011 by admin – 3 Comments

    Like many of you, I have a Twitter account, a LinkedIn account, a Facebook account, and I have my tweets go to LinkedIn and Facebook so that I can lazily update everyone when I have something to say.  The resulting stream ends up being pretty spammy and unfocused, and so I post much less frequently than I might.  My “regular” friends feel like I’m super spammy, and my “geeky” friends complain they never hear from me.  This is exactly the kind of problem that G+ circles should be able to solve.

    For this reason, and also because I love mashing stuff up, I can’t wait until G+ releases their APIs.  I want to build (or use) integrations with other systems so I don’t spend all my life bouncing from social network to social network – or pretending to engage in them by tossing messages over from other systems.

    I’d love to have a LinkedIn circle, a Twitter circle, and a Facebook circle, so when I share something that I intend for my LinkedIn audience I can just add them and it’ll appear in my LinkedIn stream.   Now that I have G+ I don’t spend much time at all on Facebook (although I do on LinkedIn) and I feel a little guilty .  G+ could add this integration themselves, or third party developers (like me) could create applications that do the shuttling from place to place.  I’d love to have one place to keep my stream – and decide what other streams should get any given update.  This would make me much more likely to participate actively, because I could protect my less-geeky friends from seeing updates about semantic web visualizations.  And honestly, it’ll be a long time before everyone I know is on G+ (if ever) so I do want to make sure my Farmville-addicted friends see my updates too.

    I’d also love to see incoming integration.  For instance, Runkeeper integration would totally rock.  It already takes input from my FitBit, so everything’s in RunKeeper, so I could send those updates to my Fitness circle of people-who-actually-care-about-my-training.  My Runkeeper updates go to Facebook, but again, it’s kind of spammy.  I’m generally more ok with dumping everything to Facebook because the stream is so noisy to begin with, but I’d really rather target those messages to folks who have an interest in hearing about it.

    So, G+, can we have some APIs soon?

    Sharing this on G+ with Friends, APIs

    Tagging here as Geek Stuff, Google +, API

    The 30 Day Blog Fitness Challenge

    Posted in Geek Stuff, Google+ on July 7th, 2011 by admin – 1 Comment

    Inspired by my coworkers, I’m going to participate in the 30 Day Blog Fitness Challenge.  In contemplating it, though, I want to add a little bit of extra interest for myself, and remind myself of the value of taxonomy and categorization.  I used to post about all sorts of things, and I find that I stick to work-related things mostly.  Why? I don’t know.  I mean, there are categories. I can use them.  People can find what they need!  But recently I’ve become super lazy and avoided any sort of tagging, just tossing things willy nilly onto the blog, and focusing mostly on work related topics.  Add to this the fact that I’ve just joined Google+ and I find myself categorizing my people into circles which I’m not exactly confident about.  Are they the right circles?  Do I need more (or less)?  Am I ever going to send messages to that group?

    So not only am I going to post every day for 30 days (or more), I’m going to put meaningful categories on the blog posts.  And then I’m going to post to (and list) the Google+ Circles I’m sharing that post with.  This should actually help me get better at creating and maintaining meaningful circles for the things I want to talk about.  Fitness, entertainment, work, open source, philosophy… there is space for all of this and more in my thoughts and in my blog, but if I am talking to a specific set of people I’ve identified in Google+ as interested in the topic it may help focus the message and make it more compelling and engaging.  Otherwise I seem to soften it a bit for the general masses.

    So prepare for 30 days of posts about… whatever.  Adventure racing.  Google Plus itself.  The Semantic Web.  Food.  I’ll tell you what the names of the circles I’m sharing them with are.  And they’ll be internally categorized reasonably on the blog.

    Anyone else want to join me on this?  I think this will be an excellent test of those circles we’ve been making.  Are there topics that are appropriate for one or two of your circles? If not, maybe you need to adjust them?  What is the purpose of circles unless they help you target specific conversations to the right people?

    This post be sent as public on G+.  It’s not a copout.  Seriously :-)

    LinkedIn’s Faceted Search

    Posted in Uncategorized on June 29th, 2011 by admin – Be the first to comment

    On June 7, I gave a presentation to the Semantic Web Meetup in San Francisco on using LinkedIn’s Faceted Search.  The presentation talked about using the Faceted Search capabilities of LinkedIn’s Search API to create a semantic browsing experience within an application.  This topic is explored in much more depth in a previous post on this blog, which has all the code and logic needed to make it work for you.

    More information on the LinkedIn APIs can be found on the LinkedIn Developer Portal.

    Let me know if you have questions or thoughts, and I’ll make sure you get what you need!

    Silicon Valley iOS Developer Meetup

    Posted in API, LinkedIn on May 17th, 2011 by admin – Be the first to comment

    Last night was the Silicon Valley iOS Developer Meetup hosted here at LinkedIn. I talked through a sample client for the iPhone which iOS developers can use as a springboard for creating their own LinkedIn-powered apps.

    Slides can be found here.