Posts Tagged: open source

Text

I’ve been toying with the idea of open sourcing Wooden Rows for a while and I’ve finally bitten the bullet and released the app under the Apache2 license. You can now grab the source from GitHub.

The app will remain on sale in the webOS App Catalog for $3.99 and I still plan on bringing it to iOS and Android for a price as well. This is sort of an experiment.

My hope is that this excels development and brings the app to other platforms quicker. I also hope this brings new data sources for users. You’re free to fork the source and build your own app from it, build your own client that stores data on my server, whatever.

I’ll be monitoring things and seeing how it goes. I hope to build a community around Wooden Rows as a platform and not just some proprietary system I built.

The API will not be documented (at least, not anytime soon), but new features are welcomed and if new API end points must be added for new features, I will be handling this personally. The server-side code will remain closed source.

I hope this brings some great new ideas will we all work on the app together and I’m curious to see what new toys develop from my source.

It’s not clean. It’s not efficient. But it works and is a decent app. I want to see it become more with your help.

Text

I’ve always been a big fan of open source. It’s how I’ve learned how to do most of what I do. I’m also a fan of getting some income from my app sales. I’ve struggled to find a balance between the two.

While I know open sourcing doesn’t always negatively affect profits of an app, I’m not sure I want to risk it.

So, I’m not positive if apps like incredible! or Wooden Rows will ever be fully open source, but I will open source older apps. I will also continue to post Gists of code on GitHub for components and CSS and functions I think could be useful to others.

My first mobile app (foursquare) has always been open source and my Untappd webOS client growlr has been too. So, to add to that, I’ve opened the source for neato! today.

You can find all of my open source projects on GitHub (foursquare is under their account).

I will also make the commitment right now that neato! will always be open source, so when I port neato! to Enyo for cross-platform development, it’ll still be opened. It’ll still be for sale in the various app stores, but it’ll be open as well.

I like the idea of opening up Wooden Rows, but there are lots of server-side aspects of the app that I’m not sure I want to open up, especially since I don’t want my server to get hammered or compromised. I am willing to work with members of the Open Source community to discuss the feasibility of this. Not that it means I”ll definitely do it, but I’d like to hear some ideas before I decide not to.

Text

So, some time has passed since the open-sourcing of the Enyo framework and I’ve had some time to put aside my “Oh my god! Oh my god!” excitement and start formulating a plan and to reflect on what being a webOS developer has afforded me.

Let’s Take a Step Back
Mid-2009, Palm shows off the first webOS device, the Palm Pre, at CES. I happen to be in the market for a new smartphone. 

Actually, let’s take a few more steps back.

I’m a problem solver when it comes to the way I use computers. I’ve been a developer in some capacity since the second grade (built a Tic-Tac-Toe game in BASIC). Once I discovered Visual Basic 6 (using a “borrowed” copy from my uncle), I discovered that any time a program frustrated me, I’d just make my own that didn’t. Hated the calendar application in Windows 95, so I wrote my own to pop-up reminders for important events, like birthdays. The idea that I could fix something by creating something new excited me.

It was around that time that I got into web development. My first major web project was in high school where I built an online community around (yes, I know…) “new metal”. Yep, a community for Korn and System of a Down and Coal Chamber fans to post lyrics, photos, music videos, etc. It got pretty large. All of it was static pages. I’d take e-mail submissions and manually update the HTML files. A few things were done by copy-pasted widgets, but it was mostly static.

As I got older, I got into ASP, and later PHP, where I started to make websites for friends and family. I’d eventually start my own side business developing websites professionally, once my design and user experience skills increased. By 2009, I had been a professional web developer for about 10 years, both as a freelancer and for my day-job.

Now that you have my background, we can jump back to 2009.

So as I saw and read about webOS I instantly knew it was for me. Why? Because I could develop my own apps for my phone! I had never considered becoming an app developer by any means. I wanted to write apps for my old Windows Mobile 6 device, but frankly, I didn’t want to learn something new.

webOS opened a door for me to make my life easier, not only because the OS was, as I saw it, ahead of its time, but because I could make little apps that did things for me when I found things I didn’t like in existing apps.

And so I began writing the foursquare app for webOS. I wanted foursquare, but webOS users were out of luck. SMS was a terrible way to check in, and the mobile website required you to search for the venue, which wasn’t very helpful or speedy. So, I started writing the app, got some big help from a couple of other guys (Chris van Buskirk!) and the foursquare team (Naveen has had a huge hand in my success as a mobile developer as a result), and people liked what they saw. I made it prettier, made it more like the Android and iPhone experiences, and I got the confidence I needed to build more apps.

It’s important to note that I never intended my foursquare app to be used by anyone but myself. It was, in my eyes, a stop-gap until foursquare eventually developed one in-house. Unfortunately, partly because of my diligence and partly because of webOS’s lack of market-share, that never happened. So, as a result, I kept building to make the app what it is today.

The same thing happened when Google built Chrome-to-Phone for Android, an app that allowed you to send URLs from your web browser to your Android phone. I loved this idea and wanted, so I set out to build a little utility for webOS that did basically the same thing. Again, I was aiming to just make something for myself. But, people wanted the tool themselves and so I expanded its capabilities, made it prettier, and neato! was born.

Not much later, I did the same thing, only because Untappd’s mobile web interface couldn’t get GPS coordinates in the webOS browser, webOS users couldn’t add their location to their beer check-ins. So, to work around that, I built growlr, a little app to let you check-in to Untappd and attach your foursquare location to your check-in. I actually got the very first API Key for Untappd’s API to develop this app. Greg Avola, the CTO, had to add me into the database manually!

These three apps and the support from the webOS community made me realize that I was, sort of by chance, a mobile app developer.

Coming to Terms
Once I realized I was mobile developer, I needed new ideas. I also needed to make some decisions. 

I had come up with my latest idea — incredible!, a sort of aggregator for a user’s social media accounts — and I absolutely wanted it to be a webOS app. At this point, my then-girlfriend-now-wife Rhea was a Pixi user, I was a Pre user, and the murmurs of what webOS was going to be were loud. HP had purchased Palm and all we heard about was what great things were going to happen with this revolutionary mobile OS.

So, because of all of that, I put all of my eggs into the webOS basket and started development for incredible!. This felt like a good idea. Sure, webOS was barely fighting for 3rd place in the mobile market, but everything felt like it was going to advance. It felt like my choice was a smart one. As an indie developer, making the leap to crossplatform is expensive, what with developer program fees (about $100 on most platforms) and the cost of buying devices for each platform (and, in most cases, phone and tablet devices for each platform). It didn’t make financial sense for me to go cross platform at the moment.

So I stuck with webOS. And, despite HP killing off webOS hardware, despite webOS never reaching 3rd place in market or mind share, despite people laughing any time I said “webOS”, despite the quick buck being an iPhone developer made you at the time, this was the best decision I ever made.

I’m Ahead of the Game
You see, because I wrote my apps as webOS apps first, I probably missed out on some cash. That sucks. But, because the webOS community is so good and strong and supportive, and because the webOS Developer Relations group is so good and strong and supportive, I was somewhat successful. I have some dough in my PayPal account. Not much, but it’s there. 

But, because I chose webOS as my target platform, I’m ready for what 2012 webOS will bring. With the open-sourcing of Enyo, I can easily port my apps to iOS and Android using the same code base.

You see, I, today, right now, have a working version of my next app, Wooden Rows, running beautifully on webOS on my TouchPad. Taking that same code, I built a PhoneGap application and have that same app running beautifully on an iPad. And, because of the open source nature of webOS, the Android community has managed to get Android running on the TouchPad, which means, for free, I have an Android tablet to test on. Which also means, in addition to my same code running on webOS and iOS, I also have it running on Android.

That’s such an amazing thing to me, I want to state it again:

I have the exact same code for my webOS app running on iOS and Android.

Is it perfect? Nah, I have to make a few tweaks here and there, but the point is, it’s there and it works, and it’s worth charging money for in the App Store and the Android Marketplace.

And what’s awesome further is that because of webOS and Enyo’s web-based technologies, making my apps scale down to phone-sized screens is pretty much a matter of making some changes to my CSS for the app to work on smaller screens. I’m about 60% done getting my webOS tablet app working at phone resolutions on 3 platforms.

This means that Wooden Rows will be available on:

  • HP TouchPad
  • Palm Pre (all)
  • Palm Pixi (all)
  • HP Veer
  • iPad (all)
  • iPhone (all)
  • Android phones (as many as possible!)
  • Samsung Galaxy Tab
  • Amazon Kindle Fire
  • Other Android tablets

And that’s just the beginning.

So, again, being a webOS developer means that I have a cross-platform app almost ready for the masses, and I have a free webOS and Android tablet device. All because I made a seemingly silly decision to stick with webOS.

Looking Into the Future
Since I’m well-versed in the ways of Enyo, I am head of the game even into the future. Once Enyo 2.0 is fully baked, I’ll start developing all of my new apps using it and targeting webOS, Android, iOS, and Windows Phone 7. 

I can build apps for pretty much any platform using everything I know right now, without having to learn a new language. I can sell my apps 3 to 4 times over. 

I can, for real now, feel like a mobile developer.

And I owe every bit of it to choosing that Palm Pre back in 2009 and never looking back. Thanks, webOS community. Thanks, webOS Developer Relations team. 

incredible! Autocomplete Usernames (and how I did it)! That’s right, I’ve got auto-complete built in for Twitter accounts. As you type more letters, the box moves a bit to the right and narrows the results.

It does a global search in the username instead of a “starts-with” search. I chose this because often I’ll remember part of a user’s handle and this way I can find it easily. For instance, local brewery Abita’s Twitter name is @TheAbitaBeer, but I often forget about the “The” in the beginning. This way, I can start typing “@ab” and they’ll show up in the list. The other way would require me to remember to type “@the” which is lame.

I’ll probably clean up the appearance of this, but I like that the box moves with the text.

Wanna know how I did all this? Check it out on GitHub: https://gist.github.com/1150840

Text

Just like foursquare, growlr for Untappd is also open source. It’s not as feature-rich as foursquare, but it does some stuff you might learn from, or if you want to make your own Untappd app, here’s some stuff to get you started.

growlr on GitHub

Text

Foursquare announced a cool new feature! Notifications! Obviously, they aren’t push, but it’d be cool to have these as dashboard notifications. There’s no documentation on the feature yet, but it does appear in the API at the users/self/ endpoint.

If you want to tackle this, lemme know!

Text

Thanks to everyone that has ever downloaded the app! While 100,000 pales in comparison to foursquare’s in-house apps, it means a lot that this unfortunately small mobile OS has had such an interest in a very young location-based network. Foursquare just recently hit 10 million users which puts webOS right around the 1% mark, which we’ve been hovering around since early 2010. I’d LOVE to see this higher, but, considering this app has been a side project I’ve been building for free, I’m cool with it!

With the TouchPad’s launch this week, I’m working to make sure the app runs well enough on it. While it may not run at launch, rest assured, it will eventually!

Want to help make foursquare better, add features, and/or increase device-compatibility? Join me and @rretsiem and @millertech in the great world of open source development! Go here and may the fork be with you!

Thanks again for downloading the app and for all your help and feedback, everyone!

Text

For those working on or looking to work on foursquare for webOS, another task!

Foursquare allows apps to set the global settings for a user. For instance, on the website, you can enable sending mayorships to twitter or Facebook. The API allows apps to provide a preference for users to do this.

It’d be cool if someone would add these preferences into the Preferences of the app with on/off switches.

Documentation is here: https://developer.foursquare.com/docs/settings/set.html

Leave out “receiveCommentPings” since the app doesn’t support those. (Another task?!)

Basically, I envision there being a “Facebook Settings” and a “Twitter Settings” section in the Preferences.

Facebook Settings
- By default, send check-ins to Facebook
- Share the badges I earn to Facebook
- Share the mayorships I earn to Facebook

Twitter Settings
- By default, send check-ins to Twitter
- Share the badges I earn to Twitter
- Share the mayorships I earn to Twitter

The API will return a JSON object with a message to display to the user. an Alert Popup should display this message.

Obviously, these settings will have to be retrieved when the app is launching, which it already does in the background when the user is logged in. So, you should tap into this response that already happens and set the preferences accordingly. https://developer.foursquare.com/docs/settings/all.html

Since these settings affect server-side functions, the app doesn’t need any other changes.

Let me know if you want in on building this. Source code is here: https://github.com/foursquare/foursquare-palmpre 

Text

As a lot of you so nicely retweeted last night, I really need some extra help on foursquare. I’ve got too many projects and too many personal life stuff with my wedding and all, plus my day job that I’m running out of hours in the day.

Foursquare is my most popular app and it gains more users every day. Not thousands, but an extra 120-250 new users every day. So, I need some extra help getting all the bugs worked out and adding small features I’ve neglected.

So, if you are a webOS developer familiar with the app and have some spare time, I would greatly appreciate it if you could help out.

Here’s what you need to do:

  1. Set up an account on GitHub if you don’t already have one.
  2. Set up Git on your computer. They have instructions for Windows, Mac, and Linux. Git is a source code repository and versioning system not unlike SVN, but better.
  3. Once you have Git set up, you’ll want to visit the foursquare for webOS project site and fork the project. This will basically copy the source code to your account.
  4. Follow the steps here to get the fork set up on your computer. This will sync all the source code files to your computer.
  5. Once the source code is on your computer, start developing! I’ll post a TODO list below. Once you’re satisfied with the changes you’ve made and feel they work well, follow these instructions on issuing a pull request. This will ask me to pull in your code changes into my code. Once that happens, I’ll package the app and submit to Palm, assuming it works out ok.
  6. Make sure your commits all have a message detailing your changes.

Here’s what needs to be done:

  • GPS is mostly working but for some users, they still get a GPS error on start up. We want to go from 2% of users to 0%, obviously, but anything less will be an improvement.
  • Some users are experiencing issues when going through the OAuth process of adding a new account. It won’t go past they point of signing in to foursquare’s site. This needs fixing.
  • The list of available Twitter clients is out dated. I’d like to add Carbon, Spaz, and phnx to the list.
  • Any other weird bugs or visual glitches you see, feel free to fix them.

What’s in it for you?

Not much, really. You will get recognized in the About scene of the app for your contributions, and I’ll publicly thank the hell out of you for getting me out of a bind. Really, think of this as you helping get incredible! released for legacy devices and the TouchPad faster since this will give me more time to work on that.

If you don’t have time to do this, please please pass this along to other devs who may be interested.

Thanks for being so helpful, everyone! After all of this calms down, I’ll resume the regular foursquare updating.

Text

The time is coming near, webOS fans. The TouchPad is set to launch this summer and all rumors point to June-something. This means one thing:

I have to get off my ass and start coding for the TouchPad.

I’ve filled you all in on my development roadmap and I wanted to give an update since I’m at a turning point right now.

MOJO
I’ll give you some updates on my apps built on the Mojo (current) framework.

growlr
Version 0.7 of growlr was submitted to Palm this weekend, adding the ability to view the beers your friends are drinking and the ability to toast and comment on them. I expect it in the Catalog this week. This will be one of, if no the last update to growlr for a while. Don’t worry — it’ll make its way to the TouchPad.

neato!
A new version of neato! — version 1.2 — is almost finished. I plan to submit this to Palm this week. It’ll add two new features: scheduling and card-only mode. Scheduling will allow you to have neato! launch and close at specific times so you don’t have to remember to open or close it. Useful if you only use neato! when you’re at work, so you could, say, have it launch at 8:30am and shut down at 4:45pm. Card-only mode will allow neato! to stay open and connected but without a dashboard icon. This will require a full card open, but won’t take up any screen real estate,  which is precious on the Pixi and Veer. I’ll also be adding support for Carbon, Spaz, and hopefully phnx Twitter apps. I am 90% certain this will be the final Mojo release of neato!. Oh, and a new browser extension will be launched with it, but I’m not saying which browser yet. neato! will probably make it to the TouchPad down the road, but it’s not a high priority.

foursquare
This is a tough one. It’s my biggest and most widely-used app. Version 2.6 just launched this week, adding the new leaderboard and some other stuff. I have one more maintenance release (read: bug fixes) I’m working on that’ll release soon, but that will be about all that happens now. Bug fixes, and minor tweaks or small feature additions. If enough people clamor for whatever awesome new stuff foursquare cooks up soon, I’ll add it in. Don’t worry — support won’t cease and I’ll pick up development on foursquare later this year to rebuild it in Enyo for future device support. I’ll always be your foursquare developer.

incredible!
The big one! This is a huge project, but it’s getting close to a beta launch. I’m hoping for a beta launch around early June (which is super soon). I want to have a full launch of the Mojo version shortly after. 


ENYO
I have some info about the Enyo/TouchPad versions of my apps.

I’ve prioritized all four of my apps for how they will come to the TouchPad. It’s sort of the reverse order they originally launched.

  1. incredible!
    This will be my first TouchPad app. I want desperately to have it coincide with the TouchPad launch, but I don’t see it being spot on. However, I’m going to start working on it now, during the same time I’m developing the Mojo version. This way, it’ll be mostly done by the time the Mojo version launches and hopefully development will go speedier since some ideas and designs already happened. 
  2. growlr
    While Untappd isn’t super-duper mainstream, I feel this will be a nice TouchPad app as people do drink beer at home, so the odds of checking-in to beers on a tablet are pretty good. Plus, it’s a 75% finished app on Mojo, so it’ll get completed on TouchPad.
  3. foursquare
    I had trouble deciding between neato! and foursquare, but I think foursquare will be the biggest benefit. Plus, it’ll give me a chance to rewrite it, and it really needs it.
  4. neato!
    With Touch-to-Share’s ability to move info from your phone to your tablet, device-to-device is handled natively. And, since Mojo won’t be killed off any time soon, neato! will still work on the TouchPad. In fact, I think its dashboard icon will be less intrusive on the TouchPad, so it’s not as high priority. It will be rewritten at some point, though.

So, what about time frames? I’d love to have incredible! out by July, but we’ll see how that goes. As for the other apps, the last chunk of the year is completely booked up for me between getting married and probably going back to school, so foursquare and neato! might not see rewrites until 2012. Unless Enyo is super fast to develop in. I dunno, haven’t started yet.

Remember, foursquare is open source, so if there’s a bug and you fix it, send me a pull request! It’d be a big help! It’s a free app, so it’s no big deal to me if you guys help out! Just send me a pull request and if I’m down with it, I’ll merge it with the master and submit it to Palm! It’s a good way to keep the app alive while I’m super swamped right now.