Category Archives: Technology

This category contains articles talking about today’s technology advances & issues.

Developing & debugging an HTML5 (phonegap) app – part 1 DEVELOPING

Over the past week, I spent my mornings developing an HTML5 mobile app. The main idea behind the project was that I wanted to learn a couple of new tools and technologies out there, as well as figure out how far you could push HTML5 apps in general (“are they close to native at all, or can you possibly get them there?” kind of thing). I set out to use the following new tools to develop the app:

Following is a summary of the things that surprised me most, hopefully providing some people with a shortcut to the right tools and techniques that I had to look pretty hard for 🙂

This post is made up of 2 parts, make sure to check them both out if you think they could be helpful! 🙂

  1. DEVELOPING – this one
  2. DEBUGGING

Developing…

The Cloud9 IDE

First of all, as I pointed out, I have been using the Cloud9IDE to develop my app and I have been more than happy with that. I love the live css preview, the code-completion and the general feel of the IDE itself. What was most interesting for me, however, was that I could test my code, live on an Android and / or iOS device through the use of SauceLabs (integrated with the Cloud9IDE). I did a separate post on Cloud9 here, so I won’t go into more detail in this post.

Adobe phonegap BUILD

Available at build.phonegap.com, this service enables you to upload your html5 code (or github repository) and it spits back a fully functional native (hybrid) app using PhoneGap. Using this service has MANY advantages ranging from auto-updating plugins (you specify your phonegap plugins in config.xml, but the BUILD service makes sure you always use the latest available version when compiling) to updating your app over the air (a service called Hydration) which I’ll get into a bit later. As I was really embracing the development in the cloud, all of this meant I could continue to get away with not installing ANYTHING and never leaving the browser 🙂

Hydration service

Whilst using the BUILD service, you have an option to enable “Hydration” under the “settings” tab of your app.

basic settings adobe built

 

This will adds a little snippet of code to your app which will enable you to update it over the air the next time you upload / update the source code of your app (and ask BUILD to rebuild it). The way it goes is simple:

You update your app source code -> commit to git -> ask BUILD to “pull latest source code” -> builds a new app -> open up your app on your phone and it will ask you to update it -> DONE

Documentation

It doesn’t happen a lot, so when it does it’s worth to point it out: the documentation on PhoneGap BUILD is very good. You can find it at http://docs.build.phonegap.com/ and it really does cover anything you need to get up-and-running.

Google Drive Forms as survey in-app!

This is my first jab at developing an HTML5 mobile app and I wanted to get a little feedback on it from people, mainly to figure out how their experience was in relation to the performance of the app. I was very happy to realize that all I had to do was to create a Google Drive Form, get the embed iframe and insert it in the app. That was it and I was ready to go.

the Ionic Framework

For my first html5 mobile app, I decided to use the Ionic framework. This was partly based on some research on popular mobile frameworks I had done before and partly because they used Angular JS, which I also really wanted to get in to (and thus, this gave me a good excuse to do so).

Set-up

Again, in combination with Cloud9IDE, getting set up to develop with the ionic framework was extremely easy. I ran a single command in the console and I was up-and-running.

Learning curve

Ionic itself is really nicely documented and is easy to pick up. If you are unfamiliar with Angular JS however, you probably have a little bit of a learning curve ahead of you (as did I, and I’m still learning :)).

Other than the Angular JS aspect, the framework is really nice and easy to use and very powerful once you get into it. It’s also accompanied by a pretty active community, which was useful to me mainly because it meant most of the questions I had, had already been answered previously (and thus google picked them up :)).

Conclusion

This is my first try and proper html5 mobile development, so there are probably many tools I should be mentioning here, but I might add them as I find out about them :). I hope this post will help some people get set-up a little more quickly and effectively than I did (as I had to look around for these tools) and of course, all comments welcome!

Developing & debugging an HTML5 (phonegap) app – part 2 DEBUGGING

Over the past week, I spent my mornings developing an HTML5 mobile app. The main idea behind the project was that I wanted to learn a couple of new tools and technologies out there, as well as figure out how far you could push HTML5 apps in general (“are they close to native at all, or can you possibly get them there?” kind of thing). I set out to use the following new tools to develop the app:

Following is a summary of the things that surprised me most, hopefully providing some people with a shortcut to the right tools and techniques that I had to look pretty hard for 🙂

This post is made up of 2 parts, make sure to check them both out if you think they could be helpful! 🙂

  1. DEVELOPING
  2. DEBUGGING – this one

Debugging…

My main pain whilst starting the development of my HTML5 app was debugging and more importantly figuring out: how to debug the app once it was packaged as a PhoneGap app?…

I searched google for many tools and came up with results such as

but none of them could show me my JS console events such as errors, warnings, etc. (WEINRE came closest, but it could only EXECUTE statements in the console, not read events). UNTIL!

Chrome developer tools

This seems pretty obvious now, but no blog or other site I was reading mentioned it: Chrome inspector can debug your HTML5 Android apps like it can debug any normal website! The rule is: as long as it contains a webview, you can debug it using chrome! You can launch this through your usual Chrome Developer Tools menu: Tools > Inspect devices

chrome inspect devices screenshot

screenshot & more info from this site: http://www.letzwrite.com/how-to/remote-debug-mobile-website-android-chrome-firefox/

And if you have your phone connected to your PC (with USB debugging enabled) + a phonegap app running on it, you should see something like this:

inspect devices chrome

Those tools have definitely been a lifesaver and as soon as I got to see the console, it took me about 2 minutes to identify the problem my phonegap app was having (which was related to a different way of resolving urls than what the chrome browser does).

SauceLabs emulators

As I used the Cloud9 IDE, sauce labs emulators came fully integrated and enabled me to test my code straight on live ios / android devices. This was also pretty neat and definitely helped me out a LOT 🙂

Long time no write – Cloud9IDE

It’s been quite a while I didn’t write anything, mostly due to the fact I simply didn’t take the time to do so. I will try and get back into the habit of making this at least a weekly thing, but we’ll see if that’s realistic 🙂

Cloud9IDE

cloud9ide logo

 

For the past couple of weeks, I have been trying out Cloud9 IDE over the weekends and am really happy I did. I made the switch to a full cloud work environment about 6 months ago, but hadn’t tried actually developing that way (my current job doesn’t require me to do a lot of actual coding) so I thought it a good idea to give it a go with a small project and see how it would work.

Starter: Sign-up to new project

The initial sign-up is very smooth and quick. Not many details to fill-in and, most importantly: they do not force you to give a credit card (A REAL TRIAL! :)). You can then go on and create 1 private (as in, without anyone else being able to look at your source code) project with the free account and that is where the real fun starts.

When you create a new project, this is called a “Workspace” in Cloud9. You can choose from a variety of starter packs (that pre-configure your workspace for the types of technology you’re going to use) or simply go for something “custom”. The first interesting thing I saw whilst creating this workspace was “clone from url”. This option enabled me to specify a github url and create a workspace directly linked to it (pulling the code and letting me commit without a problem). That was a really nice surprise to start off with, as I was anxious as to how I would solve problems with getting stuff into the cloud during my development process.

First steps

The IDE looks pretty neat from the first try. Here is an example of both the first page you see (upon project creation — node.js here) and some syntax highlighting

cloud9 new project screenCloud 9 screen with syntax highlights

The editor is really smooth and definitely works as nicely as any text-editor I have used natively (granted, I haven’t tried a 3000 line file yet, but still). It is very easy to create files, write code and most importantly… run it…

Running your code

It is in running, testing and debugging my code that I see the enormous benefit of using cloud9. A couple of things quickly jump to mind:

  1. Live-preview in the same browser tab. It simply updates as you save your files
  2. SauceLabs integration enables you to test in ANY browser you want – MOBILE INCLUDED. Yup, you heard that right: it takes 10 seconds to save your file and have it run on both an emulated android and an ios device…

cloud9 mobile testing with saucelabs

  1. Live link. If the “live preview” is not good enough for you and you want to test your code outside of the cloud9IDE preview, you can simply take the link and open it up in another tab, to test it the old fashioned way.

Wonderful easter-eggs

Whilst getting to grips with Cloud9, I was trying to learn a little on html5 mobile app development at the same time, so I wanted to use phonegap and, more specifically, ionic (a framework based around phonegap for html5 mobile development). That is when the power of the terminal became really apparent. I thought I would have to go through all the trouble to get node.js installed and then make it work with phonegap, but no. Node.js was already fully running and the only command I had to put into the terminal was “npm install -g cordova ionic”. That was it… and I’m not even kidding… No errors, no hassle, everything simply installed and my whole workspace was set-up to start developing apps for mobile…

Another useful thing was that at some point I wanted a public URL for my app. As it was HTML5 I also wanted to support normal browsers so I decided to get a heroku app and push it there. Again, I thought I would have to set up the heroku toolbelt and some other things to get this working, but no… IT WAS ALREADY THERE. This meant that the whole process of pushing my code live on a new heroku app took under a minute (setting up the new heroku app INCLUDED).

Conclusion

After 3 days (over the space of 3 weeks) with Cloud9IDE, I am completely sold. I think it is one of the better applications I have tried out over the last years and definitely feels like a major leap forward in the development landscape in general.

I haven’t tried out very heavy set-ups yet, so I’m not saying this is for everyone and every project, but I am definitely recommending this for small to medium-scale web development and any html5 mobile development.

Hope this overview was useful, but let me know if you have any thoughts / comments!

 

 

Windows speech recognition

This week, starting my MBA, I was reminded of windows speech recognition for the use of writing and commenting on documents.  As I have never really got into it,  and people were telling me that it could save me a lot of time using it, I thought I would try it out and provide a small summary of my experience here.

 

Setting up speech recognition systems was very easy.  It took me about 30 seconds to find the right configurations and switch it on.  The next thing to do was to run through the system tutorial, which took me a lot longer (about 30 minutes).  The tutorial itself runs through many different actions that you can accomplish through speech recognition on windows.  Many of these are very intuitive and whilst going through them the system starts learning how to interpret your voice.  I was pretty confident after having finished the tutorial, but have now been stuck for a over 10 minutes on this post, as I was trying to post it using speech recognition alone.  Admittedly I have only been using voice recognition for about 45 minutes and things are getting better as I progress in this post, but it is still not where I would have wanted it to be.  I will give it a fair trial in writing long documents, but I am really not convinced yet.

 

I am keeping this post short, as I would not want to lie when I say that I wrote this post fully using speech recognition.  I just hope that my experience will not stay as bad as it was for the past hour, as I do not think I will be able to hold my calm for much longer.

Incredible start-ups, impossible goals and inspiration

Today I thought I’d write about a nice phenomenon we’re starting to see around the world concerning successful entrepreneurs, specifically in the tech area. As technology enthusiasts and future-focused people, successful tech entrepreneurs have a healthy disregard for the impossible. That, coupled with the fact that a lot of technological innovation is accomplished through (initially) abstract thinking makes for a special type of entrepreneur that simply doesn’t see the limit. What is new, however, is that after these entrepreneurs have had their first big tech success they go straight for the next, biggest possible challenge they can find and simply decide to tackle it. Following are a couple of examples which came to be recently and clearly show the trend.

Calico (Google) and defying aging

Calico is a Google venture, spun off into a separate company to have full autonomy. It’s goal: not making people immortal per se, but increase the lifespan of people born 20 years ago by as much as 100 years…

When you stop for a minute and think about that, it is HUGE. This is one of the biggest companies in the world, committing to making people live 100 years longer… and that’s definitely something I could get excited about (please, please, please Google include 25-year-olds, I’m only 5 years off! Smile with tongue out).

Gates foundation and eradicating Malaria

Everyone knows the enormously successful and richest-man-alive (for many years) Bill Gates. He made his fortunes through founding and guiding Microsoft to where it is today: dominating enterprise IT. A few years ago he decided he had had enough and, instead of taking it slow and deciding to sip off some of that 50 BILLION $, he thought of something else. He decided to change the world, AGAIN, but in a more fundamental way this time, by eradicating Malaria. His fortune and contacts at his side, he simply decided it was enough and that big challenges should be face head-on. He has publicly stated this is now his life goal and I must say, it puts a whole new light onto what many would consider the emblem of a capitalist system Smile.

Elon Musk, SpaceX and a Mars Settlement

Elon Musk is the CEO & CTO of SpaceX and CEO & CPA of Tesla Motors. He made his fortune through previously co-founding PayPal. After PayPal, he decided that electronic cars were a cool and necessary idea for the future and due to the market dynamics, current car manufacturers did not have enough incentive to do it themselves. For this reason he founded Tesla Motors which is aiming (and very close to succeeding) to become the first fully electric car made for the general consumer (under $30,000). Although that is a completely honourable goal (and many would say an enormous challenge on it’s own), it doesn’t seem to be enough for Elon Musk, as he decided to found another, even more ambitious project: SpaceX.

SpaceX develops and manufactures space launch vehicles with focus on advancing the state of rocket technology. It was awarded a $1.6 Billion NASA contract on December 2008 (for 12 flights to of their Falcon 9 rocket and Dragon spacecraft to the International Space Station) and in seven years, it has designed the family of Falcon launch vehicles and Dragon multi-purpose space crafts from the ground up. The goal of the company: Expand life beyond the green and blue ball we call earth (in more recent interviews, this was more precisely defined as creating a human settlement on Mars)… Now that is a pretty exciting goal!

Impossible goals and inspiration

As a tech entrepreneur, there are 2 things I really love about these examples:

  1. It promises an enormously bright future ahead, with too many interesting things to count and adventures to take. It has been a while since we have had these big challenges taken-on by people who actually might make it.
  2. It sets a clear example to follow, milestone to reach and moon-shot to better. It’s as-if we’re starting a challenge of “who can make the biggest impact, with the most amazingly impossible project and succeed”… and I love the idea of it!

Personally, I am really optimistic and feel inspired by the examples these people put in place. They’re showing the way to a “culture” where people simply try the impossible and that can only be a good thing Smile

Online storage solutions for start-ups (& why dropbox or box aren’t the only players on the market worth considering)

Recently I had been tasked to find an alternative to our company network drive that was running out of storage (don’t ask, this was before my time Smile). Initially I thought of Box and Dropbox of course, as everyone knows about them, they are solid, have mobile clients and present most bells & whistles you would want. However, in my case I didn’t think this would suit the need of the business very well for a one main reason: The documents still physically stay on your machine, meaning your disk space continues to fill-up instead of “moving” it to the cloud (personally, my disk starts to fill up quickly). For this reason, I started my search and was really surprised to find out it was pretty hard to find anything that perfectly suited my needs.

What I wanted

In my case, the perfect solution would include the following:

  • Backup of files on all our computers
    • Partly common disk that everyone could access
    • Enable for private folders that are also backed-up
  • Enough storage to not have to think about it
  • Opt-in to sync instead of opt-out (in essence, unless you decide to sync a folder, it is only in the cloud) – saving space on disk
  • Share files easily with third-parties
  • Manage all users from a single interface (not have to create separate accounts for each user, without a management console)

Initially, I thought this would be a pretty straight-forward set of requirements, but for some reason the “Opt-in to sync instead of opt-out“ was really hard to come by.

What I found

After quite a bit of searching, I ended up at RackSpace, whose costomer support directed me to JungleDisk (a subsidiary) and LiveDrive.

RackSpace & JungleDisk (www.jungledisk.com)

JungleDisk has two editions: WorkGroup or Server. The workgroup edition allows you to share your files, sync and back them up for teams between 2 and 100. It sells itself as “Shared Online Drive”. The server edition allows for secure, robust automatic backups, specifically designed for servers. It was clear that I was looking for option number 1.

After a bit more research on the workgroup edition, I found it managed to fulfil all of my requirements so I decided to give it a go.

Credit card details for trial

This is where everything went wrong and I hope someone will read this one day: credit card requirements for a FREE trial don’t make it a FREE trial and put people off… I went through the first screen asking my details and was all ready to try out the solution before I got to screen number 2 asking for my credit card details: FAIL. I turned around and never looked back, going with a competitor instead. That’s how much it annoys me…

LiveDrive (www.livedrive.com) — UPDATE: DO NOT TRY (End of article for details)

LiveDrive promised to be part of what I was looking for : Cloud storage as a shared network drive. Although because that was my main concern, I opted to give them a try and after reading some more and fiddling around a bit, I found out they do much more than a cloud network drive. They also include backups, sync, file sharing and all the other features you have come to expect from Box.com or Dropbox.com. The reviews were mixed, going from 5 to 1 star, but my personal tests were very favourable. On top of that, their pricing is a lot lower than their competitors and they provide a whole range of features that are “nice to have”, which come with it for no extra charge.

Conclusion

I’ll be trying out LiveDrive for a little while longer, but am pretty confident of it’s feature proposition. The only thing to find out now is just how reliable it will be and if it’s good enough to rely on for the entire business. Please let me know if anyone has tried other services that suit these needs and if you liked them / disliked them !

UPDATE: LiveDrive has proven amazingly unstable, to the point it has CRASHED MY PC multiple times over a couple of days… I guess I’m still on the lookout for a good solution!

Heroku, AWS and SSL

I haven’t posted on my blog for a while, but as always after a period of holidays, you have good intentions and posting on this blog is one of mine, so I thought I’d start today and make it more regular.

Over the past couple of months I have been using Heroku for a couple of websites with both PHP & Python / Django. It’s been a very good experience, although there are some real hiccups and I thought I’d put some of them up here for whoever might be interested in using it:

download

Pros

In terms of simplicity, I don’t think you could make it any simpler: you push from git to Heroku and the rest is automatic. For quick iterations and continuous deployment this is pretty much the dream, and it’s all done for you.

On top of this first step being very easy and automated, there are a bunch of modules that you can add to it through a simple click. This makes for very fast integrations of mail servers, logging, etc. that would take you a lot longer to set-up otherwise.

Other than making it easier to set-up, I think the biggest point for Heroku is that it enables you to focus on the application you present to your users.

Cons

It’s expensive. Heroku uses AWS and adds a bunch of automated stuff on top. As AWS is not the most inexpensive cloud provider, you can imagine Heroku can become costly pretty quickly.

Also, SSL is badly integrated. You can only use a single certificate, which means you generally have to buy a wildcard and that becomes expensive. It is an even bigger problem if you host multiple domains on the same heroku instance: it is impossible to use an SSL certificate on heroku in this case.

A last, but very important point is that you lose control over your infrastructure. You are reliant not only on Heroku, but also AWS (as Heroku uses AWS). Over the past 3 months, we have had several hours of downtime and another 12h+ where the Heroku API was inaccessible (effectively cutting access to deploy anything). This is of course to be expected, as no service can be perfect, but something to take into account when you make the choice to move to Heroku.

Conclusion

As of today, I am still undecided. We will continue using it for a bit and try to find possible fail-safes that would enable us to fall back on other services if we need to. As we are still a start-up, iterating fast is more important than scaling costs, but that is only the case until the costs become too high to bear.