Basic Android App

Posted by banane on June 15th, 2014 — in android dev, technology

Just wrote up instructions on how to make the most barebones Android app. Enjoy!

Code here.
Instructions here.

Simple example of scheduled, self-clearing Android notifications

Posted by banane on May 7th, 2014 — in android dev

Banana Alarm
I couldn’t find a relevant example of doing a schedule notification that launches the app, then clears it. Various bugs and design flaws in Google’s Android O/S make this needlessly complicated, in my opinion. In this, iPhone made it easy.

The basic functionality: schedule daily ordinal time (say, 10am daily) notifications. Upon click, display main activity and clear notification from the notification manager. Sounds easy right? Nope.

I found a good example here, but my notifications weren’t clearing. This solution of using the AlarmManager and Notifications is quite common- but doing both userCancel and loading the MainActivity are a little nuanced.

The general architecture is such: You’re going to create a scheduled alarm event, and upon that event’s firing, kick off a notification. Notification manager lists the notification. When the user clicks the notification, it will launch the app. The app will then globally erase all notifications, then reschedule them.

Questions you may have:
Why not just field the notification on app launch? Delete if necessary, instead of all of them? There may be a stack of notifications. It’s just cleaner to delete them all.

Why not just use the “auto cancel” feature of the notification builder? There are known issues in Android with removing a notification and also launching an activity upon click.

How to build this:

1. Create Alarms
In your

public void setAlarm(){ alarmManager = (AlarmManager) getSystemService(ALARM_SERVICE); alarmIntent = new Intent(MainActivity.this, AlarmReceiver.class); pendingIntent = PendingIntent.getBroadcast( MainActivity.this, 0, alarmIntent, 0); alarmStartTime.set(Calendar.HOUR_OF_DAY, 10); alarmStartTime.set(Calendar.MINUTE, 00); alarmStartTime.set(Calendar.SECOND, 0); alarmManager.setRepeating(AlarmManager.RTC, alarmStartTime.getTimeInMillis(), getInterval(), pendingIntent); } private int getInterval(){ int days = 1; int hours = 24; int minutes = 60; int seconds = 60; int milliseconds = 1000; int repeatMS = days * hours * minutes * seconds * milliseconds; return repeatMS; }

2. You’ll notice we have a Receiver class. This is to handle the broadcast of the alarm. Create a new class

public class AlarmReceiver extends BroadcastReceiver { NotificationManager notificationManager; @Override public void onReceive(Context context, Intent intent) { Intent service1 = new Intent(context, AlarmService.class); context.startService(service1); } }

3. This simply takes the intent and passes it onto another class we’ll make, the service class. Creating a service class (instead of just doing it on the onReceive()) enables it to work in the background.

public class AlarmService extends Service { private static final int NOTIFICATION_ID = 1; private NotificationManager notificationManager; private PendingIntent pendingIntent; @Override public IBinder onBind(Intent arg0) { return null; } @SuppressWarnings("static-access") @Override public void onStart(Intent intent, int startId) { super.onStart(intent, startId); Context context = this.getApplicationContext(); notificationManager = (NotificationManager)context.getSystemService(context.NOTIFICATION_SERVICE); Intent mIntent = new Intent(this, MainActivity.class); pendingIntent = PendingIntent.getActivity(context, 0, mIntent, PendingIntent.FLAG_CANCEL_CURRENT); NotificationCompat.Builder builder = new NotificationCompat.Builder(this); builder.setContentTitle("Bananas"); builder.setContentText("get your bananas"); builder.setSmallIcon(R.drawable.ic_launcher); builder.setContentIntent(pendingIntent); notificationManager = (NotificationManager)getSystemService(NOTIFICATION_SERVICE); notificationManager.notify(NOTIFICATION_ID,; } }

Some important notes:
Above, we “setContentIntent()” and that tells Android O/S what to load once the user clicks. Pending Intent has to have a new Intent(), and that will launch the correct app. There’s a conflict between AutoCancel and that working right, so that is why we do a global clear all notifications onStart() of the MainActivity.

Download Code

Sample code available on Github: BananeAlarm.

– If your ordinal time is before the current time, it will notify immediately. This annoyed me, so I put some logic in to check if now() (another instance of Calendar getInstance()) is after setAlarmTime. Then, I bump it forward one day.

if(now.after(startingTime)){ startingTime.add(Calendar.DATE, 1); }

– Don’t put the clear and create notification cycle in onCreate() because of Android’s application lifecycle, you have a lot more control if you put it under onStart();

More Reading:
Google on Notifications
Google on AlarmManager

SF GoogleBus Appeals Hearing Recap

Posted by banane on April 2nd, 2014 — in local color, north beach

(Or, some other super sexy title).

SF politics- so interesting.

So, a few months ago the city transit board decided to respond to protests regarding the Google buses (all Silicon Valley employee shuttle buses- intercity, not intracity shuttles) by creating a pilot program. This program would charge the companies $1 per stop, per day. The stops were red-zoned, illegal spots, where usually Joe Blows get charged $271 for double-parking, stopping, or otherwise parking. The shuttles stop there for upwards to 15 minutes. The pilot program would collect data, so that later on we can regulate and enforce a better program. GPS’es on buses would make sure that they are stopping in certain stops. Those stops though- are similar to the ones they’re at now, in congested, high trafficked areas, etc.

There was an appeal to stop the pilot program, and this hearing was to hear the appeal, and from the public. Note, this is the first and only public feedback on any shuttle matter. Local districts heavily impacted by shuttles- the Mission, Noe and Bernal Heights- have not had any hearings. There have been talks between the local transit and the companies, but again, no public hearings. It’s caused unrest and simmering, and this has been the first “airing of grievances.”

The appeal is stating that there should be an Environmental Impact Review. The SF MTA (public transit board) states that there’s an exception here. It’s important to note that EIR’s aren’t just about birds and flowers and air quality but about how frequently and heavily used bus routes will be impacted, whether costs are involved to enforce, and damage to infrastructure (wear on roads & sidewalks, bike lanes, handicapped access, etc.) Safety, current programs, etc.. Various SF Supervisors asked questions- including, do we have a baseline? Is there any law somewhat similar to this? It’s a state vs. city law issue, and they city lawyers couldn’t find relevant case law.


So just to repeat: intercity shuttles have been illegally double-parking. They’re called on it, and the city responds by proposing a legal pilot program with minimal fees. There is some talk about the illegal-now-legal issue. No statewide precedents on making an illegal activity a baseline.

Let’s talk fees. The legislative aide asserted that SF lost 1M a day, upwards to 200M a year, in possible collected revenues from the illegal parking. SF MTA states that the cost of their pilot program will be 1.5 M for 1-1/2 years. Just to frame this money, the SF MTA budget is 18M. Why were fees not collected? “Because it wasn’t a priority.”

A supervisor, Campos I believe, asked for a continuation. It was voted down. They took a vote on the appeal to the pilot, and voted that down. While some supervisors- Kim, Cohen, Campus and Avalos had lots of objections, only two, Campos and Avalos, voted for the appeal.

Apologies for typos and inaccuracies- transit policy/city politics is a hobby not a vocation!

More reading:
Google Bus Saga Continues: San Francisco Upholds Plan to Charge Shuttles Not entirely accurate, a bit biased towards Silicon Valley companies.
SF supervisors reject challenge of Google bus pilot program Biased the other direction, perhaps not as easy to interpret for out-of-towners.
Supervisors deny appeal of SF commuter shuttle fee program The most balanced report – from SF Examiner (of all things)

ThinkNote: Make Music With Your Mind

Posted by banane on February 11th, 2014 — in technology

Went to the best hackathon ever last weekend. Why? A combination of invention, skill, participation and sheer nerd energy. And a buffet (well, I am pregnant…). And, well, I really love the app we made.

“ThinkNote: Make Music With Your Mind.” Yes, that’s right. Depending on how you control your thoughts you can compose music. Electric brainwaves, picked up by the NeuroSky headset, transfers via bluetooth to our iPhone app, which converts the values to different sounds, and scales. It is very fun to play (or think?). We used a modicum of music theory and applied it to some composite algorithms from the NeuroSky API- namely, “concentration”,”meditation”, and blinking. As you concentrate more, the violins climb the scale. As you mediate more, the deep tones become enhanced. A blink clashes the symbols. It ends up sounding like the theme to 2001: Space Odyssey.

Isn’t that freaking amazing? We wrote it up in one day. Started at 10am, demo’d successfully at 6pm. My team: Stacie Hibino, software engineer at Samsung, Kyle Mock, my business partner at PickAxe and design/UI guy, Estelle Weyl, HTML5 expert and front end dev, and me, mobile engineer.

In reality, the process was something like this. We sat around wondering what to make on Friday night, from 8 to 10 PM. We played with the NeuroSky- Stacie had used it before- and noticed that when we’re playing Flappy Bird, our concentration goes way up. It’s also hard to understand feedback while you’re doing something else, because that creates a feedback loop. So, we went down the road of, well, a sound feedback would help, you could watch something and hear your levels. Then we toyed with other ideas: a meditation helper, a remote control game using the NeuroSky, etc. We went to bed that night still not deciding, but we had a lot of ideas. The next morning over bagels and hot sandwiches (food was top notch), and a good night’s sleep, we agreed that we’d start small, associating sounds, work up to some other ideas.

As hackfests go, of course it took all day to build what we thought would be easy! We spent an hour or so customizing a sample app from NeuroSky, while another built a simple sound feedback app. We merged them, and started testing simple sound playback from the NeuroSky. We tested single sound, continuous sound, and then overlapped channel sound.

We realized we wanted some visual feedback so we worked hard on radiating circles, but that wasn’t working so went back to squares that fade between colors (easy in iOS). Up until the last 5 minutes, we were coding UI changes, integrating graphics and adjusting the look and feel.

Our demo wasn’t hot- our backs were to the audience, for some reason the “blink” wasn’t working on my phone, but worked on Stacie’s. Our crowd seemed sympathetic. It’s a raw creative tool, and we intend on some improvements before we put it in the store:
– record and save, and share to social outlets “A song while I was thinking about you,” essentially.
– record your own sounds for input – small half second tones can be used to make custom music

Notes on the Hackfest
Overall the hackfest was great- there were little groups, a few sponsors offering loaner materials, from a pedometer, heart rate monitor, print-and-go api, and at&t’s medical cloud platform. There was continuous food; this is a problem at a few hackfests where food runs out, or you are given one choice – hot dogs. I actually packed snacks with me because of food limitations since I’m pregnant.

It was also a great hackfest because of diversity. I estimated half the teams were co-ed. Almost all teams were people of color, with very few exceptions. It was on the Peninsula in the Bay Area, so we got a nice mix of SF and Silicon Valley folks. Lots of kids were there- we were pitched pretty hard by a 9-10 year old girl who wanted us to help her make a pet-finding platform.

There was a bit of a learning curve with most materials- Arduino, for example- but it was a very friendly space to try out new things. My one suggestion would be to have some intro tutorials on materials offered in some of the conference rooms.

There were only 20 or so demo’s, and it was one of the best demo rounds I’ve seen in a while. Perhaps because of the learning curve, almost all demos worked, and just the fact that it was hardware, and multiple device made it fascinating.

The location had great parking, and in general nice workspace. NestGSV hosted the hackfest, and there was plentiful chairs, tables, work areas, etc. One suggestion in the future: childcare, and someone cleaning up. For some reasons hackfests always have an issue with the inherent slobbiness of nerds!

Pregnant & Entrepreneur = Pregpreneur

Posted by banane on January 15th, 2014 — in feminism, technology

First trimester in Vegas… a bit hard.

Standing at a conference all day, during first trimester, isn’t fun. Your business partner doesn’t know because you and your boyfriend have decided not to tell anyone. You’re not showing, but beyond exhausted and nauseous. I power-napped in the hotel hallway. I started with caffeinated tea, and then moved onto the hard stuff – evil coffee. It wasn’t great networking-wise to miss out on happy hours to sleep. Walking through smokey gambling halls was a definite low point, but walking along the Strip was really entertaining. In general, of course, Vegas is not great pregnant.

“It’s really hard to find maternity clothes that say: “CTO.” “

Our first client, Women2.0, hosted the event at The Bellagio, and the catering was top notch, which is great when your palate is changing and you have no idea what is going to sound appealing. To save on costs we drove down and back, and the long freeway drive was wonderful to start fantasizing about child-to-be. And, a great time to sort through our new contacts and work on marketing strategies.

These things lined up for me in a way I can only express as “timing”: months of introspection resulting in a business idea- PickAxe Mobile, fast, inexpensive mobile prototypes for entrepreneurs. And, then, realizing I’m pregnant in an unplanned way: getting laid off work, having fun hiking local parks in the Bay Area, and a few vacations to New Orleans and Southern California resulted in a delightful surprise. The anxiety of genetic screening coincided with long conversations regarding our Articles of Operation.

Some small issues have arisen – it’s really hard to find maternity clothes that say: “CTO.” Luckily a trip down to Cupertino’s Target had great working mom outfits, in suitable blacks and grays. Zulilly, while it took a long time to ship, helped out with some nice professional styles from London (at a great price). With a colorful scarf or footwear, I can rock a meeting. Working in our co-working space, I just remember to bring mozzarella sticks, crackers and a big water bottle. Lots of meetings occur over drinks, but a lime and soda works great, and looks grown-up.

Starting a company at this time comes with some perks- friends and acquaintances are understandably more interested in a new person in the world than a new company. In a time of hyper-networking over free infant strollers and onesies, we also get the word out about our very new value proposition. Community takes a front seat during a pregnancy. For a services-based startup, community is all you need, want, or should have. It’s turning out to be a very natural combination.

Second trimester- much easier

I recently fantasized about working at a 9-5 with real maternity leave. I could zone out all day on BabyCenter and Pinterest. Just a few hours later I was eating lunch at Facebook with a friend, and looked around. The sheer amount of “at your desk” time, even at a great solid company like Facebook, would drive me mad. It was vital to take a few hours off to nap my first trimester. And it’s really awesome being able to leave at 4pm to walk for an hour, and pick up at 6pm until 9pm coding. Getting in an afternoon swim- a regular occurrence. I love the freedom of my own schedule, especially at this time in my life. Sure, CEOs like Marissa Mayer have a daycare in their office, but for working grunts? It’s not ideal.

Professionally, I’ve noticed also that I’m a lot more focused on what’s important. Priorities are easier to line up, and everything seems clearer to me. I think having a big life occurrence happen does that to you- also being an older mom. Things seem less scary and more predictable, and thus do-able. Recently a friend suggested we make a “techie working mom’s, who drink, have coffee, and live in SF” mailing list. I’m secretly creating a list of friends in their 40s/having a second kid in SF list, especially if they’re techie. One of my developer friends does all the iOS apps at BabyCenter, now that is hooked up ;) He hears me regularly kvetch about features. One of my app biz partners is also a mom of a 2 year old, neighbor, and thus one of my best hand-me-down sources. As I said, it’s all about community.

I think starting a business at this time isn’t necessarily wise… in fact, if I hadn’t run a successful consulting business, and later a profitable blog, I’d be at a real disadvantage. But that stands for anyone starting a business. If you’re not ready, you’re not ready. I was getting some free CEO coaching from my brother, who also had a child during one of his successful endeavors. He told me in all sincerity: “Good timing.” My mother (mom to 5 kids) had her own business most of my childhood, and I grew up in it. I honestly think that for me, while hard, starting a business has an energy and creativity that’s totally natural. By the way, usually conversations with my mother start off with pregnancy and end with financial business advice.

Chicken Pot Pie, and other uses

Posted by banane on January 9th, 2014 — in food

My New Year’s Resolution was to be more thrifty. To this end, instead of buying a few chicken breasts the other night, ($11-15 at Trader Joe’s) I bought a whole chicken ($8). Then, ended up stretching it to about 6 meals, not exactly on purpose.

Meal 1:
Roasted chicken (Rinse chicken, cover with olive oil, salt and pepper. Place in oven for 45 mins.)
Instant mashed potatoes
Green salad
Steamed veggies
ready to eat turkey gravy (trader joe’s)
Served 2

Meal 2-5: Chicken Salad Sandwich lunches
Pick out some meat from carcass, mix with diced artichokes, mayo, mustard and relish, toast some bread, put lettuce on bread, put salad on top. Voila.

Meal 6: Chicken Pot Pie- serves 6/8
(Variations from Joy of Cooking)
Pick all remaining meat from carcass.
Sauté chopped 3 medium carrots, 1 large onion, a few small red potatoes, 1 large apple in olive oil.
Boil water with carcass in a saucepan. Once carcass is clean, remove, add a few tablespoons of sherry, salt, pepper, strain through cheesecloth. (After the recipe I still had 2 jars full of broth!)
Make quick biscuit dough (either from mix or scratch)- flour, baking powder, salt in bowl, cut in 1/2 cup of butter. Add 3/4 cup of milk. Flatten or roll out.
Combine meat, veggies, gravy, some plain yogurt, leftover gravy from first dinner, and a cup or two of broth. Put biscuit on top. Brush egg yolk on top. Cook at 375F for 1/2 hour to 45 mins, or until top is brown.

My mom asked me how long it took- I said, “Not all of Fresh Air,” – to be honest, I got in the zone a little and wasn’t rushed.

Starting a Business

Posted by banane on December 3rd, 2013 — in technology

I decided a month ago to start a business. The funny bit is that my business partner and I had been collaborating for a while- we both worked closely at two different jobs, and many projects together, before deciding to “go legit.” We already had clients, even. We just hadn’t done the paperwork.

Between jobs last transition, I thought I wanted to start a business, but didn’t have any idea of *what* kind of business. I went to networking events, as a founder/CTO, hoping to be inspired. I went to a lot of them. I remained uninspired.

Then, like all big life transitions, you realize that it’s staring you in the face. I actually had clients that were still in the limbo state I had left them when I took my last job. So, we picked up right where we left off. I think, in retrospect, my last two positions were actually training grounds for this venture. In a weird way, it all cosmically made sense. Not that the road isn’t rocky. I was very down yesterday– I admit it– and wondering if this was the right decision at all. In a way that’s what makes partnerships great, he reminded me that we had such a great run of it recently, that this was a bit of start-up reality soaking in. Sometimes things don’t always go your way, etc.

And, it’s not all an accident or unplanned. I had conscientiously been building up resources and connections, people who I wanted to work with for x,y,z, all those things that prepare you. Now that we’re in the midst of it, it’s still overwhelming and there’s so much to do. So this isn’t some kind of triumph story, it’s definitely still a struggle. And I always question our value proposition, wondering if we should pivot, if we are viable, etc.

I don’t believe in the “you’ll find work doing what you love” life coach ideology- I would sit around eating cake and watching TV “for work.” I do enjoy helping people out with my skills, and building tight little good-looking prototypes.
Also, if you really want to do something, I do think everything ends up being easy. We had our first app launch, and I had a lot of jitters. I had to seriously convince myself that there was a small possibility everything would be fine… and it was. In fact, the users were more engaged than I’d hope, usage was higher, and we were able to live deploy about 5 changes during the launch. (Our strategy was to build an app that could be modified during launch).

Starting a business isn’t for everyone- I occasionally long for a situation where I can just show up at 9am and get paid, instead of wearing 5 hats. But it is nice to put into practice what we’ve observed, learning from errors and successes alike.

My cat (when she was a kitten)

Posted by banane on October 30th, 2013 — in Uncategorized

The Perils of Lack of Diversity (TitStare, Circle Snake)

Posted by banane on September 9th, 2013 — in feminism, technology

Last night I learned of the opening demo at TechCrunch’s Disrupt, “TitStare”. An app that takes a photo of you (and you are of course a heterosexual male) staring at a woman’s breasts with or without her consent, doesn’t really matter. Also, an app Circle Snake that ranks your (male) masturbation technique.

Got a voicemail from my boyfriend this morning offended and that I should write about it something like, “Anna Billstrom finds this kind of app horrifying…” (he tends to think I’m more influential than I am). My reluctance to tweet about it last night is perhaps another post altogether. Something about fatigue, desensitization, laziness in trying to find yet another way to talk about this issue. When it happens so often, is it new to you or other people, and therefore interesting anymore?

One switch up to this situation as compared to all the other conferences where I have to sit through boring brogrammer apps… there was a 9-year old girl presenting her app. Did the developers of TitStare or Circle Snake know that? If they did, did they care? Like me, did they assume all the audience was young, white, heterosexual men?

Well, how did these two offensive apps get in? The apologies from TechCrunch say that they didn’t screen or vet- the Twitterverse has been wondering how dumb they are to let “titstare” – even just in the title it’s obvious – get through.

To me, screening isn’t the answer. Diversity is the answer. Opening up the playing field. Because it’s really not a good competitive contest if it’s just one section of the population. When we start getting new, fresh ideas from other sections of the population- racial, age, gender, sexuality- then we start getting some interesting apps, interesting concepts, truly “out of the box” concepts. I’ve stopped going to Silicon Valley-only tech conferences. instead I like mashups with schools, museums, government, heck anything than *just* tech guys. Making it so the audience, the participants, the judges, everyone is a healthy mix of our population (and really, our eventual customers). It’s just so myopic and provincial to think geeky guys are the only consumers. For top bikes, yes. For Google Glass, sure. But for a mobile phone? Absolutely not. And technology, as we see here, is not what was offensive. Both of these apps were relatively simple technical concepts, but *applied* to a very narrow market.

The TitStare guys were followed by Adria Richard’s demo- Adria was well known for her blog post – also from a conference where guys behind her were opening making chauvinist remarks. Methinks these brogrammers like the attention. “Fun aussie hack,” the TitStare devs apologized. How is that an apology is beyond me #badapologies.

More Reading
Developer Adria Richards was fired from her job after tweeting about sexual comments at a technology conference.2011, MSN
An Apology From TechCrunch 2013, TechCrunch
TechCrunch Disrupt Kicks Off with “Titstare” App and Fake Masturbation 2013 TechCrunch
*this* woul dhave been funny – an app for Forehead Tittaes, by Marion Cotillard
Really, I Have To Write This Article Again? 2013, Women2
How To Prevent Inappropriate Presentations 2013

How To Interview For Mobile (When Nobody Knows Mobile)

Posted by banane on August 23rd, 2013 — in android dev, iphone dev, technology

This Christmas, close to 90% of shopping will occur on a mobile device. Companies are scrambling to get in-house developers.

Imagine you’re hiring an in-house team. You’re tired of outsourcing with contractors. You want to be able to walk to someone’s desk and ask them, “Can we do that on Android?” And, in this fantasy, the engineer lights up, does a few keystrokes, and voilà! Your new Android app does the dishes or your taxes, or some awesome feature. No long protracted meetings and $100,000 later you get a feature that doesn’t remotely look like what you asked for, and doesn’t even work that well doing something else.

I know these companies, and I understand their situation. They don’t have someone in-house to interview mobile. If they did, they wouldn’t have to hire them, ha. So here’s my opinion as a senior mobile developer and lead engineer, on how to interview candidates for mobile, as well as leadership roles.

1. Get rid of the fantasy that quick deployment will happen. Be realistic- two out of three marketplaces require review. Old software rules apply, that with good planning, iteration, and testing, you will get a great product. You can setup a quick deployment environment, but it’s not about the developer, it’s about your engineering group and how quick you release in general.

2. Mobile engineering is not rocket science. Complicated, obscure, and varied, yes, but mostly about getting up to speed on different systems and SDKs and hands-on experience. Put away the Google Questions, engineering exercises, and hypotheticals. Good design means thin clients to a single code repository on the server where you have the hard core engineers. Look for architecture chops- that limit the development on the client. If a mobile developer wants to “do everything on the client” that is generally a bad design. There are interesting problems on the client, but mostly around UI, caching and responsiveness. Hard-core developers in mobile are very tight with the operating system, or moving out of native and into web- HTML5.

3. More and more (and this is a good thing) the user interface and user experience are key elements to good mobile apps. Quick feature development is nice, but good and elegant solutions, from people who have done many apps are better. As an experienced iOS developer, my most intensive code is around a gradient button that I subclassed from the usual UI toolkit from Apple. Yes, making a button. And, it’s a damned good button. Also, my highest points from StackOverflow come from the blog post I made sharing the love on how to make gradient buttons on Android and iOS. So ask them about buttons. Ask them what apps they like and why. Ask them what is slow responsiveness, what is fast, what users can expect. Propose a problem and see how they answer it. Like, “What’s the best way to do a login and facebook login on the same app?” Have them whiteboard some mock-ups and screens. That is probably what they’re going to be doing all day- mobile mock-ups to communicate functionality. If you have an amazing design team, have them meet and interview the mobile developer. This will be a significant portion of their job. The right answers to “what is your favorite app”- one that you like as well. If you have different opinions, it’s probably not a match (or it’s a battle you’ll keep fighting during their tenure, if you want that.)

4. Hire someone who knows how to setup A/B tests for product design and customer feedback, analytics, and testing frameworks. That raises engineers from hobbyists to professionals. If they’ve been in a large engineering group, more the better. Working side by side with your API developer is key, key, key, to a successful internal mobile team. Can they “speak” to the server developer about how to access the API, or how to build one? Setup an interview with server developers and have them focus on data calls, modeling the server side, see if communication is good and they can work together. This will be approximately 30% of their workload, working with server engineers.

5. The “front-end” and “back-end” engineering roles of most web sites does not apply to mobile. If it does, it would be all front-end, but you need to handle memory management and work with a computer language that is Java or C. So, it’s a combination of a serious back-end developer, with user interface and UX interests. Hiring someone internally who is “interested in mobile” – I wouldn’t recommend this as it will be the blind leading the blind. There’s a lot of catching up to do, and while folks may learn fast, you will be their guinea pig, and all deadlines will be pushed out, or products released poorly. Without mentorship, I have seen this go very wrong. So, if you do hire a senior iOS or Android developer, or a lead, do train someone from another department if they’re interested. But don’t saddle them with product and feature deadlines, in a high pressure situation, right out of the gate. It is an expertise, and your business is important.

6. Ask them if they’ve ever versioned an app, and how they did it, and what they recommend or lessons they’ve learned. This will prove that they were involved in the architecture and implementation of a released product. The right answer is that they’ve done it before and can easily explain it to you. There are different flavors, but mostly it’s just whether it’s been done.

7. For developers who point to a lot of iPhone apps in the store that don’t list them as the creator, ask what role they had in the team. Many folks claim apps that are in the store that aren’t theirs, and understanding how they worked with their teammates, and the roles they had, and if they can justify certain code or decisions. Ask them how it got started, what their invovlement was. Were there any changes along the way? Did feature get dropped, if so, why? Sniff out bullshit here, and ask if you can get a reference from another team member. Developers are pretty territorial and will make sure that their work is theirs.

8. Points if the candidate has done packaged/downloadable software (application developers) are good candidates for mobile- the versioning is similar (vs. web), as it’s released software to devices. The problem with web developers who want to do mobile… the movement to HTML5 and mobile web is a great transition in the mobile space, but not completely done at this moment (to be in the store you still have to do a native wrapper app). The modal style of development for applications is still more application (vs. web). Application developers have been solving similar problems as mobile, just with bigger monitors. Web developers have two dangerous tendencies: live updates (not on a release schedule), and easy to create interfaces. Mobile development has a structured, timed release, and the user interface elements are more complex (longer to build) than web.

9. If you happen to land yourself a very senior mobile developer that you’d like to lead your group, the key elements to interview for, in my opinion:
– Ability to code for Android *and* iOS, and gravy if they can do mobile web
– Experience in the server language, or, structural and architectural understanding of the rest of your site and/or product.

Having architecture expertise, and proven experience in developing for multiple platforms, will place them in a unique situation to understand what the clients need to have responsibility for, and what others systems the clients need to interact with. Then, you can start doing the fun work of lining up all those cool features you want to develop.