Subscribe: Alex Bosworth's Weblog
http://feeds.feedburner.com/AlexBosworth
Added By: Feedage Forager Feedage Grade B rated
Language: Malay
Tags:
android  app  apps  bitcoin  code  good  google  great  heroku  ios  lot  make  new  node  people  tomorrow  web  work 
Rate this Feed
Rate this feedRate this feedRate this feedRate this feedRate this feed
Rate this feed 1 starRate this feed 2 starRate this feed 3 starRate this feed 4 starRate this feed 5 star

Comments (0)

Feed Details and Statistics Feed Statistics
Preview: Alex Bosworth's Weblog

Alex Bosworth's Weblog



developing software, living the expat life in beijing, other fun stuff! previous projects: alchemy, swik, open source stuff, now adylitica.



 



Memo Notepad

Fri, 04 Jan 2013 20:10:35 +0800

In 2012, my company Adylitica made a very big switch.We made the decision to focus our development efforts on building Apps we really believed in. This meant that instead of concentrating on our profits, we would concentrate only on projects we really believed in.The list of these projects is varied, but at the top of our list was our most successful and widely used App “Do it (Tomorrow)”In building the sync system for Do it (Tomorrow), I learned a lot of lessons about what an enormous challenge sync is to get right. Even though Do it (Tomorrow) sync seems simple, there are many, many things that can go wrong, it is very complex, and there are various deficiencies that were a result of compromises or incorrect decisions.In 2012 my goal was to build a successor to the Do it (Tomorrow) sync system (which was already on v2). This new sync system would power the next generations of our Apps, which were on track to be much more complex.Another goal of mine was to set up the next generation of our Web Apps. Currently there is a huge mismatch between Web App capabilities and smartphone App capabilities. The differences are vast, but we really want to support access to our Apps on the desktop, and via the web.Finally, in my everyday life, I have a lot of ideas that I want to get down. Things to do go into Do it (Tomorrow). My weekly plans and appointments go into Everyday Notes. Bugs and ideas for improvements of our Apps go into our Github. But a lot of what I want to get down is more free-form: sketches, or simple general notes.To match all of these goals: a next generation sync system, a next generation web app framework, and an App that captures my day to day thinking and notes, I began work on an App called “Memo Notepad”. This would be a general purpose notepad, that could be randomly edited, would work without loading times or delays, and allow for me to solve my problem of keeping track of my thoughts.I finished the new sync system and Memo Notepad by the summer of 2012, and I shipped it to the Google Chrome store in September.If you have Google Chrome, you should check it out!https://chrome.google.com/webstore/detail/memo-notepad/nmoihkoninaoanjobiiknmgenhpaececThe sync system that powers Memo Notepad syncing is based on Amazon’s DynamoDb service, which is a very limited sort of database that is however extremely fast and reliable. It is based on flash memory drives, which are much faster than the hard disk drive system we were previously using. At least 5 times as fast in our testing, up to 10 times faster.The Web framework that I made for Memo Notepad is also based on a new database product, but this one is a new web standard called IndexedDb. IndexedDb is definitely the way forward for building web apps that can keep pace with smartphone Apps, as it allows you to read and write data without the delays or costs of a server connection for every data access. Local Storage APIs already exist, but in building my Twitter App TweetBe.at, I realized that Local Storage is never going to work for a serious standalone web app data model due to critical performance and API design problems.Unfortunately, Firefox and Safari are not completely on board the IndexedDb standard. Firefox has implemented IndexedDb, but its implementation is not good, in my continued testing of Firefox Nightlies, it continues to fail in critical ways that would prevent me from using it in a production web App. Safari hasn’t even touched the standard. Google Chrome on the other hand has pretty good support for IndexedDb, and does a lot to support web Apps with its App Market, so Memo Notepad is a Google Chrome exclusive for the time being.Since Memo Notepad launched a few months ago, it has been featured by Google on their App Market, and has attracted a lot of nice reviews and ratings.Since then I’ve also added a few cool features to the project:1. Two way sync with Google Drive2. Two way sync with Dropbox3. Variable fonts support4. Tumblr post integrationAlthough we plan to support mobile access of Memo Notep[...]



How To Use Bitcoin

Wed, 31 Oct 2012 10:11:13 +0800

I’ve been interested in Bitcoin for almost two years now, and it’s something that I’d really like to succeed. It has the potential to disrupt a lot of industries by radically improving the efficiency of commerce. If you don’t know what bitcoin is: it’s a system of conducting transactions where all transactions are secured by a decentralized network of computers working together over the internet. At the core, payment processors and banks are profiting from a position of trust that they have spent a lot of time and money to attain. Bitcoin flips this model on its head: instead of amassing capital and spending a long time to establish a reputation of trustworthiness, bitcoin offers full transparency and mathematical proofs of why users can rely that their transactions and currency are safe. Of course just flipping things around only gets you so far. Many problems that the big transaction processing players have spent centuries mastering are still in a slow process of being solved in the bitcoin world. Name awareness. Security from theft and fraud. Ease of exchange. Speed of exchange. General trust building. Software and apps. Merchant signups. That doesn’t mean it’s not very usable today however. Right now, for bitcoin to succeed, people will have to find ways to use it in a sustained, ongoing way. For a few months now, I’ve been working on finding ways to use bitcoin in my daily life, and I’ve found a lot of very cool ways it can be useful. Since the start of September, I’ve carried out over 100 transactions, sending and receiving in total about $570. How To Use Bitcoins First: get a wallet. Like everything bitcoin related, this is more complicated and technical than it should be, but it’s getting easier and better as the community grows. By far the best option at the moment is the wallet software at blockchain.info. They have apps for iOS and Android, which makes it a true wallet you can carry around with you and use everywhere. Next: get bitcoins. This can be more complicated than it seems. Most transaction processors allow for rollbacks of their transaction. You can cancel Paypal and credit card transactions for a long time after you have sent them. This makes trading them for bitcoins problematic, since it only takes about 10 minutes for the bitcoin transaction to be quite securely complete. There are still many ways to purchase bitcoins however, even using paypal and bank cards. Personally I favor bitcoinary.com which is something like an ebay currency exchange market for bitcoin. Another great way to get into bitcoins is through advertising. Online advertising is essentially trading links around, and bitcoins make a great medium for facilitating those trades. Bitcoin advertising can pay out within 24 hours, it doesn’t require a check or connecting a bank account, and even if you make just a few pennies, consider that you can also buy advertising for just a few pennies. I’d say I’ve made about $10/month from advertising, and I’ve also spent a lot of that on advertising in turn. A good option here is anonymousads.com - akin to an extremely simplistic Google Adsense. Buying and selling retweets is an option at feedzebirds.com Get someone to buy you coffee or lunch. One problem that I have on a daily basis is splitting the check at lunch. More often than not, someone doesn’t have exact change, so we have to figure out how to get the correct change back, or remember to pay someone back, etc. My main use of bitcoin is just trading them back and forth, essentially as chips or tokens: I’ll buy lunch today, you buy lunch tomorrow. Or not. Or for someone else. Bitcoins make for a lot of very useful flexibility in this situation. Via my iPhone, I can also typically send bitcoins to settle a bill faster than we can pay in cash. Gamble, take some risk. Of course even playing with bitcoin is risky: the price goes up and down, there is no central backer to try and stabilize its value, there is no tax[...]



We have just released our newest App on the Apple App Store:...

Mon, 03 Sep 2012 17:15:08 +0800

(image)

We have just released our newest App on the Apple App Store: Everyday Notes.

Here is the idea behind the App: just write down what is going on in your life. A simple piece of paper for every day.

Do it (Tomorrow) was made for people who don’t want to be super organized. There’s no labels. There’s no due dates. There’s no ‘hey why haven’t you done this’. Instead there’s a big button next to every task: “I’ll do it tomorrow!”

Everyday Notes is made the same way. Not every event in your life has a time. Most things are just 'will/should happen on this day’.

Our goal is to give you a great, elegant planning notebook that you don’t have to carry with you: it’s in your phone. It’s not software. It doesn’t say 'fill in these forms to continue’. It’s paper. You write down what you want. If you want a photo, you paste it on.

That’s our mission in bringing these Apps to life: we love paper, but we’d love it even more if it also had the convenience of our mobile devices.

(image)



Working with JQueryMobile

Sat, 17 Dec 2011 17:41:13 +0800

I’ve been playing with and building small apps in JqueryMobile since it came out.

I still can’t make up my mind if I like it or not.

On one hand, it is completely against the principles of JQuery: which a simple, non-intrusive, non widget focused library. Jquerymobile on the other hand holds your hand the whole way and is basically an app framework.

However, it is very fast to develop on, and it does try to be un-intrusive.

I really want it to succeed, but there is a lot that worries me about committing to it as a development platform:

  1. It was pushed out as ‘final’, but the performance is still pretty bad in a lot of situations, even on my laptop.
  2. The architecture is very much designed to make static web apps easy, which is really weird since the rest of the design is very helpful for building dynamic apps, and how often do you need a static app? I guarantee that if you are building a dynamic app on jquerymobile you will either have to give up their multi-platform benefits to some degree, or spend a lot of time fighting with their automatic caching stuff.
  3. The overloading of data attributes is an interesting idea, but you start to get a lot of style markup in your page content, and it can be frustrating to write so many data attributes
  4. It doesn’t help you with the difficult offline stuff - it assumes you are building an always online app
  5. Some features are added because they are cool, but don’t actually work very well: fixed position title bars for example.
  6. It’s not designed with targeting tablets or the web in mind - it’s a false premise that anything can automatically handle all screen sizes without you worrying about that.
  7. I would like it to target more modern browsers and aim where the market is going: the jquery 'A-grade’ experience browser list is really broad

It’s so fast and easy to create apps on jquerymobile though I think it will have some good success, particularly in intranet situations - what is more reassuring is that it seems like an independent, truly open source effort, which should prevent potential lock-in problems in the future.

(image)



Fear and Civilization

Fri, 16 Dec 2011 12:59:44 +0800

“The only thing we have to fear is fear itself.” - FDR summed it up nicely.  Society has a flaw: paranoia. At the core of human psychology is a processing error, a bug: our ability to logically assess risk is out of whack.  We are living in a golden age: from the Renaissance to modern times, the embrace of reason has carried us on a rapid wave of advances that have extended our lifespans beyond our twenties, has put a universe of information in our pockets, has enabled instant communication between anyone, anywhere in the world. In computers, there has been a golden age: microchips. Every generation, like clockwork - smaller and smaller, faster and faster, cheaper and cheaper. But this golden age has been slowly winding down, because it is hitting fundamental limitations: the speed of light, available power, quantum uncertainties at microscopic scales all mean that the focus is now on low power chips and multiple cores, the well of infinite computing plenty has started to run dry. The golden age of civilization is powered by human reason and civilizations across the world that support reason. At a level above capitalism vs communism, democracy vs dictatorship, there is realism. But in modern societies, progress has started to hit a limit to growth: our world has grown so complex, it is hard for regular people to understand what is going on, uncertainty is fear, so regular people are becoming afraid of dangers real and imagined.  The problem is that psychologically speaking, people are likely to put equal weight on clear and present dangers that they would on imagined dangers or unlikely dangers. Very many people are killed by hamburgers, the flu and car crashes. Very few people are killed by sharks, airplanes and terrorists. Movies and politicians and newspapers and schools play into these fears, because that is what people want to hear about, because of a psychological failure of reason around the unknown.  If reason is the driving force behind the advance of civilization, then a limit to reason is also a limit to that advance.  This limit is slowly becoming more apparent as we work to advance within the framework of our societies’ ability to promote reason: SOPA - stop online piracy: there are pirates out there, they threaten established business models. What will happen when these business models change? Regular people and congresspeople don’t understand these issues: an irrational response that seems reasonable is to shut down progress to protect the past. “Shut down your electronic devices” - This is ludicrous even with back of the envelope math. Assuming a tiny fraction of people ignore this, we have a testbed of millions and millions of flights a year that take off and land without issue with an electronic device online. The FAA just approved the iPad for use during take off and landing - but only in the cockpit of the aircraft! “Take off your shoes” - the irony and cynicism of airport security could take ages to lay out. The most horrible example is that the 911 hijackers had no special devices and were actually stopped by airport security, who saw their box cutter and let them through anyway. Free and easy travel to anywhere in the world is progress that is being stopped by fear of an uncertain world. HIPAA - For the thousands of great web apps and smartphone apps and desktop apps that have come out, why is there still no great medical apps? The answer is: fear stopping innovation in this area. I can startup a new online business like Mint and take your bank account passwords directly from you and have the power to take your money, but if I want to store the fact that you have congenitally high blood pressure, I need to follow expensive protocols and pay for an independent auditor to make sure I am following some arbitrary and largely useless security rules. The stop and rollback of new drugs. More and more money has been rolling into the medical fie[...]



Should I use Heroku

Thu, 24 Nov 2011 14:44:46 +0800

To Heroku or not to Heroku, that is the question. (I should preface this with the info that the CEO / now General Manager of Heroku was my previous boss) I personally love building web services, but hate configuring Linux boxes, and database and web servers. That is why when I build new services, I gravitate towards outsourcing the configuration and database/web server stuff, or using a solution where I can control and understand all aspects of how it works because it is either simple or familiar. Examples of things I like because I can understand how they work and I control them Memcache Node JQuery Nginx Examples of things that work by complicated or magic rules and I try to avoid Ubuntu, CentOS, etc MySQL, Postgres Any ORM solution Apache Examples of things I outsource because I don’t want to worry about them Amazon EC2 / S3 / SimpleDb Tumblr GMail Github So where does Heroku fit in for me? I am actually very wary about outsourcing, because there is a good chance that an outsource partner will change the deal on you at some point unexpectedly, not behave as you expect or hope, or just disappear. I have in fact always been burned by outsourcing: Amazon changed their SimpleDB API and said I must change or my App will break. If I control a solution only I get to decide when I must change. Tumblr has let me down by not really improving anything that I use on their site.  GMail has had progressively worse usability with every update, and they failed to make a decent iOS App because they are putting their Android strategy ahead of their users’ needs. Github’s pricing plans don’t match my business needs, they are focused on other kinds of businesses But all of these negatives don’t mean I want to do everything myself, the world is not a black and white place. Not outsourcing has costs too. So where does Heroku fit? In the beginning, I thought the idea of Heroku was wrong: Amazon is already doing for me what Heroku is selling. But Node changed everything for me. Node is a framework that is very bare-bones. You have to do a lot yourself. When I switched to Node over a year ago, I started work on a scalability system for Node where I could reduce process failure vulnerability and increase my ability to easily scale beyond a single machine. I did this all on my own server, an EC2 instance that cost money every month to run, although thanks to Node’s great performance characteristics, was not stressed at all. But eventually I saw a series of factors that made Heroku the right choice for me: Node support (one of the few vendors, even Joyent who invented node wouldn’t let me pay them to host my apps on their platform) Salesforce.com owns Heroku which means it’s not going to go bust anytime soon There is incredible community support for Heroku Heroku is free to start, and for me even with tens of thousands of users it’s still free Heroku’s dyno system is almost exactly like the system I built for myself, only more reliable and better Heroku is git based and has a very simple command line interface Heroku is hosted on Amazon EC2, which I already was using and trust Heroku’s pricing model is incredibly friendly to Node, almost troublingly so. The model of pricing is based on the idea that web servers ‘block’ on requests - so to get more simultaneous requests you will have to pay more money. But node doesn’t block on requests, so it’s like getting thousands of servers for free. Heroku’s customer support is very friendly and good, even though I’m not a big customer Heroku has a nice logging command It takes only a single command to scale up and down OK, so I made the full switch in August of this year. I said before: every outsourcing solution will burn you. How has Heroku burned me? Heroku makes an implicit and sometimes explicit promise that you can just write code and stop worrying about the server[...]



iOS 5.0 / iCloud Release day is here at long last! This...

Thu, 13 Oct 2011 12:43:28 +0800

(image)

iOS 5.0 / iCloud Release day is here at long last!

This means: 

  • You can get our new iOS 5 exclusive App with the insanely great new Apple Page Flip wooo! http://bit.ly/todayApp
  • Did i mention our new App: Everyday Notes ;) ? 
  • You can reorder spaces in Lion
  • Your Pages and Numbers and soon all your Apps magically sync together
  • You create an incredibly enormous music library in iTunes Match and it will take up 0 disk space
  • Configure your Airport from your phone/iPad
  • Text message and MMS anyone on iOS all you want for free

This is an incredibly important day for Apple.

We are smartphone developers. We are paying attention. Today, we have over 2.5 million people on our App Do It (Tomorrow). It started on iOS, but the tides are turning: we now have 1.5 million downloads on Android, and only 1 million downloads on iOS. 

Apple’s business model is one of the highest risk and highest reward models: they must consistently leapfrog the competition every single year in order to justify their margins. Their only natural monopoly they can rest on is their amazing brand. Google can rest on their data, Microsoft and Facebook can rest on their network effects, but Apple must always, always make ground breaking products.

The reality today is that they have started to lose momentum to Android. As indie developers, iOS is still our preferred platform but we are starting to invest more in Android and stabilize iOS investment. 

Whatever the case though, if Apple loses or Android loses or even if they both lose, you and I will win. The super smartphone model is here to stay, it will replace everything in your home and in your office, and everyone will have them in every location in the world. Some people will lament or put on blinders to the passing of the HTML centric world, which does have its advantages and will probably eventually return to dominance, but this revolution is just starting: 95% of mobile phone users do not have a smartphone, but it is certain that they will.

 

(image)



Do It (Tomorrow) Web in HTML5

Wed, 20 Jul 2011 20:43:00 +0800

We’ve now had 1 million iPhones, iPads, iPod Touches and Androids install our App Do It (Tomorrow) - So we figured we should also bring the App to the Web as well :D If you are not interested in the dirty details of development, depart. If you are, great: read on.  Prototype I often like to develop in a quick style where I put together a prototype and then look and see what I learned. Sometimes I can go directly into a shipping App, sometimes tweaks are required, sometimes I throw the idea out completely. The prototype revealed a couple major design issues with porting an iOS App to the Web: In an iOS App, if you start using it you expect it to save all your data. In a web app, you expect it to lose all your data if you don’t register/login first. To get the App to a level of polish that matches the iOS App, I was going to need very modern CSS features, which meant that older browsers were not going to be supported. Just like we did a redesign for iPad, yet another redesign was necessary for Desktop - a flexible resolution design for computer monitors is a lot different than a fixed resolution design for iPad or iOS. Redesign Login and Register If you have the smartphone version of DIT (I hope you do!) You notice that you don’t need to register. You can just type in an email and password and it will use that as syncing credentials to make sure we know whose todos are whose. This actually turned out to be too clever by half, and something that we did as a reaction to Apple’s limited Settings feature, but the net result means that we don’t have a register feature. This makes for a very weird Web experience, so instead I just added what is essentially a “placebo button” to register. The register button doesn’t really do anything, it just opens the book and sets up your credentials, but it is functionally almost equivalent to login, which also sets up your credentials.  This also gives you a chance to read a blurb about the App. On the App store you can read a description of the App, but people like to just jump on in when it comes to Web sites. We debated this blurb a lot, but the basic message of Do It (Tomorrow) is represented: “blessed are the procrastinators.” :D 3d rotation transforms One thing I began experimenting on as a wow factor is something called 3D transforms. Do It (Tomorrow) has always had an ‘opening’ effect, and we put a lot of work into making that look right. The prototype used a 2D CSS transform, but I did research into doing a cover opening in 3D, based on demos I found of this Webkit feature. Moving divs in 3d space took some trial and error, the way it works is interesting: you set up a “stage” in which you view your transforms. You can set the stage close, so the 3d effect jumps out at you like a cheesy 3d movie, or you can set the stage far away, so the 3d effect looks like it is in the distance. Once you have established your stage, you set axis of rotation on your div, and you can rotate it around that axis in the 3 dimensions.  Now the tricky part is animating :D This can also be a trial and error process. To animate the cover, the cover is 3d rotated until it hits an apex, at which point some magic happens and now it’s not the cover rotating, it’s the left page! Important here is to match up all the timings correctly, and to make sure that the functions describing the animation speed are also well matched to each other. Server architecture The backend architecture of Do It (Tomorrow) syncing was designed for iOS, with one major goal in mind: be as simple as possible. The tasks are stored on S3, which means that Amazon can worry about keeping them safe for us.  To process the tasks, and to serve the web page, I used a small Node script that doesn’t do all that much except deal with the mundane work [...]



Buy Bitcoin!

Mon, 16 May 2011 14:40:43 +0800

Here at Adylitica we have been paying close attention to the new currency you probably have heard of by now: Bitcoin.  In a sentence: Bitcoin is a new currency of virtual coins that are limited in number and can easily be traded in a decentralized internet marketplace. Obviously the concept of Bitcoin is to be used as a medium for commerce, but to a person everyone I have talked to about Bitcoin has been extremely skeptical.  When I started looking into Bitcoin seriously in January/February of this year, Bitcoin’s exchange to the dollar was headed from about $.60 to $1, already high volatility. But now 4 or 5 months later it is up to $7 to $8. Half seriously in January we attempted to buy some Bitcoin but it was too much trouble and they were sold out. Looking now, was not buying Bitcoin a huge mistake? Theoretically, in opportunity cost on paper we have already lost a lot of money by not buying when we first heard about it. When I analyzed Bitcoin in February I came to the following conclusions: Bitcoin is based on a piece of software, the marketplace and transaction hub for Bitcoins. Even though this software is open source and decentralized, it may have bugs or vulnerabilities that have yet to be considered fully or even found. Fixed supply commodities have volatile prices. Part of the reason for governments switching away from a commodity backed currency is that these standards are subject to random whims of the market. (Silver up 100% in 1 year) Trading with Bitcoin will have a lot of resistance until it becomes mainstream, a chicken and egg problem. Trying to actually buy and using Bitcoins, it’s definitely doable, but akin to setting up desktop Linux, it’s just enough of a hassle for a small benefit that it’s not a good sell for ‘normal people’. Bitcoin has absolutely no intrinsic value and no backing whatsoever. Gold and diamonds are shiny, and have brand value at the very least. This is not to say that it wouldn’t be great if Bitcoin were to take off. Currency and monetary trading today is an entrenched system that is hostile to innovation. Bitcoin’s wide adoption could trigger a www or app store style innovation boom in the money space. A lot of fields could benefit: Micro-loans in poor countries, tips to bloggers, in app purchases, easy funding and purchasing for small businesses and indie developers.  So buy Bitcoin now? Not to advocate too strongly for it, but definitely buy Bitcoin if you want to help the movement, or at least talk about Bitcoin: awareness of Bitcoin as a currency will actually increase its chances of becoming a currency. This is a big reason the value of a coin has gone up over 10x in the past year: people are talking about it. Buy it as an investment? No. As a gamble? Yes. Bitcoin is a zero sum game, it’s not like a company’s stock where money can be created from nothing given innovation and hard work. It’s a commodities market, not a stock market.  The relevant questions: Are people undervaluing Bitcoins? Are people likely to overvalue Bitcoins in the future?  Not to prognosticate, but Bitcoin by itself is a very intriguing idea and piece of technology that probably deserves mainstream attention. In the future it is likely to be over-valued on that basis alone. I’m not going to buy myself as I don’t have so much money I feel like I can gamble it, but I would say yes it’s a good gamble if you do: it will probably rise in price when it gets mainstream attention, at which point you can sell for a profit. Use Bitcoin for actual commerce? Not yet, unless you are prepared to change your prices frequently and only keep limited amounts of Bitcoin on hand, or you don’t care about the risks. Bitcoin is too volatile, there are too few players, it still is a hassle to integrate, and it is r[...]



Android Gripes: Why do apps from the same company look worse on Android than on iPhone?

Fri, 08 Apr 2011 11:38:28 +0800

Android Gripes: Why do apps from the same company look worse on Android than on iPhone?:

Interesting comparisons, I think Android is getting better fast but it still has a long way to come before it’s as good as the iOS platform.

android-gripes:

When I use an iPhone and an Android phone at the same time, I often find that apps from the same company look a lot different on these two platforms - the ones on Android usually look much worse.

Here is a couple of examples.

This is what Meebo IM looks on Android, the contact list screen and…

(image)



App Advice reviews our iPad App

Wed, 23 Feb 2011 22:08:49 +0800

App Advice reviews our iPad App(image)



Very happy to announce that Do It (Tomorrow) iPad is our first...

Tue, 22 Feb 2011 19:45:54 +0800

(image)

Very happy to announce that Do It (Tomorrow) iPad is our first iPad App release ever! It’s a universal App, so it will work on both iPads and iPhones.

We’ve had 800k downloads of our To-do App for the iPhone, and one of the biggest requests was an iPad App. 

Doing an iPad App required a complete redesign of the iPhone App as well, to maintain continuity between both Apps. 

I think to the surprise of a lot of people, the iPad is a solid success, something that is not just a cool toy, but something that has become a part of people’s lives. Since getting my own iPad, I use it a little less than when I first got it, but it’s still a daily part of my life: for travel and for around the house, it’s an awesome device.

(image)



Services + HTML5/iOS, a new model for App development

Wed, 15 Dec 2010 12:42:09 +0800

A lot of things are changing with the advent of HTML5 + the rise of iOS/Android. We are going to have to throw out a lot of how we make service oriented Apps.  This stuff isn’t going to be done overnight, but the kind of web frameworks that exist now and new web frameworks and languages going forward are going to need to adapt to a new dynamic of smart clients like HTML5 browsers and iOS/Android Apps. The next steps for service architectures remove HTML/CSS/JS from the equation. Apps will consist of: data store access, business logic, and static file + JSON service endpoints, with separate client code driving interaction and interfacing with the service endpoints. Notice what’s missing? No more “page” classes. Client agnosticism is coming, and it will make service development a bit more abstract but a lot more fun to do in the long term.  No More HTML Munging The curse of web development is working with an ugly mess of strings that is HTML. Why do we put up with this? No one really wants to work with putting HTML together, it’s long been just a necessary evil. Template frameworks help but also add complexity and present annoying walls to rapid development. So celebrate, this is going away, it will be the client’s problem to deal with the interface! Yes HTML will still exist, but JQuery is now a great solution for putting pages together from scratch, you get more dynamic interfaces and importantly interfaces that are clearly separate from server code. Before, a big reason to do server-side HTML munging was SEO. (Thanks Chris for rescuing that article from my old blog). Today, Facebook and Twitter both use what will likely grow more and more common: Google’s #! syntax. Many apps don’t even need SEO, and Google themselves have moved to JS driven clients. Now that we have HTML5, killer fast JS engines and and rich plugin resources like JQuery’s, putting all web pages together on the client transforms from a Quixotic time sink into the smart design decision. Finally: HTML browsers are now just another client for backend services, iOS/Android apps are a major way to consume services - the most cost effective and maintainable solution will move to a common API layer for all clients. Eliminate Cookies Developing based on cookies is not a good model for server development. Cookies are a terrible model for maintaining state between the server and client. They add latency, they are extremely limited and a hassle to work with, and are the source of a litany of exploits. Cookies are going to be less and less relevant. localStorage APIs obliterate the space limitations of cookies. Request header manipulation + cross domain request standards provide security + flexibility as well as natural speed improvements by eliminating the cookies model of sending state variables back and forth with every single request. Service Oriented Frameworks I’m through with web frameworks. What’s the point of a web framework when I do my HTML generation on the client, or iOS/Android apps use my service? That’s a huge reason I’m through with PHP. PHP was a language built from the ground up for web development. It was a great tool for HTML munging, for rapid development, and for scaling to large numbers of page requests. PHP is not fundamentally a good language however, and now that the HTML munging and page request models are fading, it’s time for something else. Node is right now at a great position for leading a new model of service oriented development. There’s no framework yet to make this stuff easy or idiot proof, but the fundamentals of Node are all right on target to drive the next generation of web and smartphone apps. I’m onl[...]



Switching to Node

Tue, 28 Sep 2010 05:32:50 +0800

Although it’s still very new, I’m confident now that Node represents a changing point in web application development and the line blurs between front end and backend development. 

I’ve been porting my http://tweetbe.at/ code over to run on Node, and it’s not seamless as Node is still a different environment, but my end goal is to merge the two worlds and write client code and server code at the same time.

Node still has many flaws, but they are the kind of flaws that the developer in me likes to see: problems that require interesting work to solve, and the realization that this is the future and eventually the problems will give way to an overall better solution.

I’ve started work on various pieces of code to bridge the gaps in node’s still nascent libraries. One thing I’ve been working on is a port of jQuery to Node. The idea here is that if you do $.getJSON() in a function on your client, you should be able to do that in your Node code as well.

The issue though is that Node has no XMLHTTPRequest (obviously, since it can just make normal HTTPRequests), so I have had to clone XMLHTTPRequest. There are many other issues and I am not done yet, but my goal is to be able to do var $ = require(‘node-jquery’) and have all the same jQuery functionality I depend on in web javascript.

If you are interested you can see the code on github here: http://bit.ly/node-jquery

Another thing that keeps me interested and loving JavaScript is that the basic language is so abstract, there are a lot of different ways to do things, and no clear answer on what is the best. Generally what I hope to see out of the node community is the practicality of jQuery come through, a balance of 'optimize for the most common tasks’ with 'dont push the language too crazily far’.

Another piece of code I’ve been working on is a simple Amazon S3 library for node. I use S3 a lot instead of going to disk, because it’s reliable, affordable, scalable, and I never want to rely on a single machine. I have had my issues with Amazon SimpleDb, but I want to go back to it and I may do a node library for it.

If you want to check out how my amazon s3 project is coming by the way, the code is on github here: http://bit.ly/amazon-s3  

(image)



Our App: Do It (Tomorrow) has reached 265,000 downloads and we...

Tue, 03 Aug 2010 14:16:31 +0800

(image)

Our App: Do It (Tomorrow) has reached 265,000 downloads and we are trying to figure out what lessons to take away on what factors are important to reaching the iPhone App market.

The biggest lesson is that you must, must get to be listed in Apple’s various lists to drive downloads, in order of importance:

  1. Top Overall - the biggest driver by far, 10x as big as category.
  2. New and Notable - luckily for new app developers this is a very big driver
  3. What’s Hot - after new and notable fades, you can wind up here, which is about ½ as big a driver.
  4. Category Top - very hard to stay there without the other lists
  5. Staff favorite - unknown, we didn’t end up here.

Surprisingly to us, it required zero marketing to reach 260k downloads. We followed a naive plan of build it, write a description, publish, done. 

The big thing we did focus on is keeping it small and focusing on design. The actual code was not the major part of the project, the big time sinks were the icon and the overall design polish. 

Now that we are out of Apple’s New and Notable section and only in What’s Hot, we can see the end of the road for the App. Getting out of that list knocked us from #1 productivity app in 38 countries to #1 in only 16 countries, overnight - but we had a nice run.

(image)



Working with Javascript Worker Threads

Tue, 27 Jul 2010 22:01:20 +0800

When the Web Workers feature was announced for the good browsers (safari/chrome/firefox), it seemed to me like something fairly cool but mostly useless. How often do you really need to calculate a Fibonacci sequence in the browser, as Mozilla suggests?

Well I finally found a legit use for it in TweetBe.at, in calculating follow back percentages - which is a major new feature for the site.

Currently other Twitter apps show you a twitter users’ follow back percentage by comparing the total follower total to the total following total. But that ignores the fact that followers and followings may be completely different sets.

Enter Worker Threads. To calculate the intersection between hundreds of thousands of followers and following in id matrices, even Chrome on my Macbook Pro was having a tough time and stalling the UI. 

The Documentation for Web Workers is terrible, but it’s actually a straightforward feature, although unfortunately you must have a separate javascript file for your workers, something I feel is a mistake.

To show you how easy it is here is my main JS file code:

var intersections = new Worker('intersections');
  intersections.onmessage = function(event) {
  showIntersections(event.data);
};

OK and now the worker code

self.onmessage = function(event) {
  var results = findIntersections(event.data);
  return postMessage(results);
}

Easy as pie, and very useful in a pinch.

(image)



Our Todo App has been doing great. 60,000+ iPhone downloads in...

Mon, 26 Jul 2010 14:29:52 +0800

(image)

Our Todo App has been doing great. 60,000+ iPhone downloads in our first week, from a simple problem that we wanted to solve for ourselves turning out to be a problem many people want a solution for.

The idea is that being too disciplined and organized saps zest, creativity and fun from life - but it pays to be at least a little organized. We wanted a Todo app that looks good, but is simple enough that you don’t feel overwhelmed. 

It sounds a little weird doing a productivity app that is more about having fun than being maximally productive, but can’t argue with downloads.

(image)



App Store Bad Karma

Sat, 19 Jun 2010 22:58:21 +0800

Having experienced getting Electron Zero through to the App Store was good, but now I can feel the other side of the equation - of the last 6 apps we submitted to Apple, 3 were approved - our awesome Beijing, Formula 1, and Stock Trading apps all got through!

(image)

You can search Adylitica on the app store to check them out btw.

Also if you want a free copy of one comment or email me (alexbosworth on the gmail)

It’s definitely kind of a bummer to put work into Apps and then Apple shuts you down - hopefully we can appeal and get two through, but for the World Cup one it’s too late.

(image)