May 2012


Why is it so Difficult to Think in The Connected Era?

This week I woke up with a awesome idea: Almost an entire first chapter of a sci-fi book, so I decided that I should wrote this book. Also I always had this desire of writing an entire book that would include all my theories about the society.

A week passed and all my progress at the time is 2 pages (A4). What happened? It’s difficult to have more ideas. On the era that we are connected 24/7 and work, studies and all our “offline” activities consume our time, minds and ideas, it’s difficult to think since our minds and thoughts are occupied with other “more important” activities. That’s why most of my great ideas and thoughts come to my mind while I’m not connected or doing any other activity (not that I haven’t mentioned “worried” about the activities), they usually come when I’m going to sleep, taking a bath or on the car. A great example is this article itself, I thought and wrote it on the car.

So here is a tip to end this story: If you want to have more/better ideas all you have to do is go “offline” and try to distract yourself from any other activity that might keep you away of thinking. Listening to a so g you love is also a good idea to have ideas.

Do you have the same problem of having ideas because of all the activities and distractions of the connected era? I would love to hear your opinion.


Why You Should Start Dart’ing Right Now

With this article I hope you understand more about the Dart idea and how you can become more productive and happier as a developer of web applications by using it as your main language.

First of all here are some words, from the official site, for you to understand what Dart is:

With the Dart platform, you can write code that runs on servers and in modern web browsers. Dart compiles to JavaScript, so your Dart web apps will work in multiple browsers (not just ours).

The Dart platform includes a language, libraries, an editor, a virtual machine (VM) for both servers and browsers, and a compiler to JavaScript.

The Community is Awesome
One of the biggest advantages of Dart is the vibrating community. Since it’s still under development the developer base is very helpful and shareful too. If you’re on Google+ you’ll know almost every new project that is done using Dart, this way you have more attention on your project.

Libraries are Needed
Because it’s on it’s early stages Dart needs libraries to fulfill developers, this way you have a lot of libraries you can create, from scratch or porting from Javascript. This way you’ll be learning more, helping the community and earning respect from the community.

It’s Incredibly Easy to Create Web Applications
Since it was built by Google for web applications from scratch, it’s the perfect language for web application development. You’re not having to adapt a old language for the web revolution, you’re using a language that was built for the web revolution.

Weekly Updates
The language is under active development. Almost every single week a new build of the language, or the tools (Dart Editor and Dartium), is released. This way you can feel something that any other language can provide you today, the feel that it’s mutable and is evolving. It’s awesome when I open my Google Reader application and there is a new update on the Dart feed. I quickly download and test what’s new.

Organized Syntax
As a node.js developer I know that as you dive deeply into a complex part of your web application the code becomes a hell to understand. With the Dart syntax this is a bit more difficult, your code becomes more readable and a lot more maintainable. Also the Dart team published an awesome style guide to make your code even better for your eyes and brain.

Easy to Learn
Dart is incredibly easy to learn. There are three ways of learning Dart. If you’re already a Javascript you can learn by reading the awesome Translations from Javascript table which will show everything you must know about Dart comparing to Javascript. The second way of learning is by reading their lengthy Language Tour which will give you an in-depth look at every single aspect of the language. The third way is to learn by practicing and looking at the previous links when you don’t know how to do something or the compiler is giving you a strange error.

Those, in my opinion, are some of the key features of the awesome Dart language. I hope you give it a try and have lots of fun with it. Don’t forget to comment about your experience with Dart and your opinion about it.


We Don’t Need Another SIM Standard

Three days ago I received my first BlackBerry development device, a Torch. As I said, it will be just a development device, so I have to use it for a while to learn how the apps look like and how they feel, so I can start to develop/port applications to the OS. Why I told all this story? Simple, I use a microSIM on my iPhone, so I had to purchase a converter to use it on my BlackBerry, because it’s the SIM my carrier automatically activated the BlackBerry Internet Services. The day I had to buy the converter I remembered the new nanoSIM project and thought: “The problem isn’t SIM design, it’s the SIM itself”.

We don’t need another SIM design, we need to get rid of the SIM. It’s a 1998 that just got little updates over time. We are moving everything to the cloud (I know a lot of people hate this term, but I don’t care, I like it), our contacts, files, photos, our entire lives, why not all the informations the carrier needs to authenticate our plan?

The idea is fairly simple: Just as I have to register a username and password to have BIS (BlackBerry Internet Services) with my carrier, just make this for everyone on the carrier, as soon as you get your first phone/plan you register a username/password and all your information gets stored on the carrier. When you turn your phone ON, it connects to the carrier and ask you for the credentials, if they are valid it will download all the information and get your plan up and running.

What’s your opinion about this idea? Any thoughts about this topic? Leave a comment, I love to read and respond to them.


We Are Living The $0.99 Application Era

I can still remember like it was yesterday, a time where paid applications never would cost less than $10. Today I can get on the App Store or the Play Store and download an fairly powerful app for no more than $3.99, but even at this prices I think twice before buying it. The App Store effect, as I like to call it, made the app consumer not want to pay more than $0.99 for a decent app, even if it’s just $1.99 it might hesitate buying it.

I would comfortably pay more than $3.99 for a extremely well done, powerful and useful app. The problem is that those kind of applications aren’t very common, but they are an expressive number, but I’m not here to talk about the apps that deserve this price tag, this article is about apps that aren’t deserving their price tag.

In my opinion the best way to actually charge for an app is by using the freemium model, that’s why Paper was such a success, you get the app for free and test it, if you like/need more features, in this case tools, you pay for them using in-app purchases, and if you want to unlock all the potential of the app you pay a discounted price for all the tools. This way the user can feel the app before buying it, which makes me hesitate when I need to buy the app without a way of testing it first.

On this model I’ll start with an Android app called Flick Notes, if you’re a heavily SimpleNote user like me you might know this app. It’s an awesome clean and simple app, the problem is that in order to unlock all the (missing) features of the app: Note and notes list widgets, To-Do list style notes, and remove ads, you must pay a extremely expensive CA$4.99 fee. I think this is to much expensive just to get rid of ads, enable to-do lists, and have the widget of the app. I would comfortably pay $1.99 for those features, and I’m sure the developer would earn a lot more money since a lot more people would buy the full version.

Another example of this, now on the desktop side, is a awesome new app for SimpleNote users that have a Mac OS computer, called MetaNota. It’s a free, ad-supported app, but it’s possible to remove it by paying a $9.99 fee, yeah that’s just to remove the ad.

These are just some small examples of what I’m talking about. If you’re a developer that is planing to monetize your app in some way I suggest you to do the freemium way, but don’t forget: We are living the $0.99 era!


There is Still a Market for Resistive Displays

Since the first iPhone came out, in 2007, the world of touch screens went to capacitive because they were a lot more finger-friendly. Because of this people started to think of resistive screens almost as 90’s technology and forgot that they were good at one key thing: Handwriting and pen recognition.

We, humans, are used to write and draw with pens, not with our fingers. This makes the experience with drawing, sketching, and note taking apps terrible. Some will say that anyone can buy a capacitive stylus that will work on all the modern mobile devices, the problem with those stylus is that they are not precise enough, they help a lot, but humans are precise when they want to draw or take some handwritten notes.Very often I take my HTC Touch Pro2 so I can take notes digitally.

At least this idea, of having a stylus on mobile devices, is still not dead yet. The Samsung Galaxy Note is the proof of this, also I want to mention that their stylus (S-Pen) implementation is very good, they managed to put a fairly precise stylus to work on their capacitive display. If other companies start to see this market and come out with great new ideas to merge the new technologies with the old ones I’m sure they will increase their profit significantly and will make their customers a lot happier.


The Raspberry Pi Will Bring Fun To Computers Again

I was browsing the Raspberry Pi forums these days and I came across a very interesting thread titled PC’s Are Boring. I read all the posts until that moment and started reflecting about that statement. The thread starter was completely right about this, PC’s (which I understand for computers that run Windows or Linux, excluding Macs) are really boring, that’s why the mobile industry is so amazing these days, because people stopped changing their computers every ½ years and started changing their mobiles.

A lot of the users on the forum were talking about “the old times” of the Commodore and Atari when you felt like you had power over the machine and today you’re just part of a mainstream movement. Also they were talking about how “normal people” are discouraged to program because are afraid they can break the computer (which isn’t true of course, but that’s what the average user thinks) and how the price of the Raspberry Pi could help people to get into Linux or programming. They are completely right, as soon as the Pi comes out a lot of programmers are going to rush to get their hands on one (I am very excited to get my hands on one too) and possibly a lot of people that want to start programming will get it too.

The RPi will make the feeling of having power over the machine come back again. The best example I can give is my own. I’ve never been so excited for a “computer” since the first dual cores came out, I’m thinking about the awesome things that I could do with it like: Making my own Linux-powered tablet (which is completely possible), porting new Linux distros to it, porting other OSes to it and even making my own distro only for the Raspberry Pi.

I’m sure all the geeks are very excited waiting for the release and wondering all they could do as soon as they get their hands on it. Leave a comment below with your opinion or ideas. If you want to keep in touch to the latest news about the board just visit their blog and don’t forget to contribute on the forums.


My Dream Reading Device

Today I was reading some of the 109 articles saved on my Pocket account and I thought about something that I would love: A tablet running a fully customized (for stability and lightness) version of Android sporting a awesome e-ink display. As soon as possible I posted it on Google+, since I really wanted to philosophize more on this idea I’ve wrote this article.

Why e-ink?

First of all, if you’re going to read for long periods of time the LCD screen is just going to burn your eyes, that’s why e-ink is the best alternative. Second, if you ever owned a Kindle (I own the DX, and the new non touch screen version), or any other e-ink device, you know that the experience is incredibly great. I know the refresh rate is a con, but seriously there are a lot more pros and also this technology is still evolving.

What about a touch screen?

Maybe, but I would buy the non-touch screen version because on a reading device I prefer to navigate and switch pages using physical buttons, also be able to holding it anyway I want without worrying about touching the screen by accident.

Why not just root a Nook Simple Touch?

Yeah, the Nook Simple Touch can be rooted and turn into a “fully functional” e-ink Android tablet, the problem is fairly simple: The lack of Android e-ink optimized apps. That’s why if a startup start this trend and it gets some attraction of reading addicts I’m sure developers of big reading apps for Android will optimize their applications for this new category. Also the interface isn’t actually optimized, it’s just a lighter version of ADW Launcher with some tweaks, nothing drastically changed from stock Android, and for this kind of screen a UI with more contrast and less mid-tones is a must.

What’s your proposed interface for this device?

This is my sketch of the perfect UI for it, made with Paper (sorry for my terrible drawing skills):

The interface is pretty clean and extremely usable (also it looks a bit with the Kindle interface). The status bar will only show the name of the user and a clock. Below the status bar is the app drawer, I thought about it as just a simple collection of the application names (scrollable if you have more applications than it can fit on the screen). The last piece is the actual running application itself.

There is market for such product?

That’s a difficult question to answer, but as far as everyone can see the eReader/eBook market is growing exponentially and I think a lot of customers would give it a try if it was presented to them.

What you might end up doing?

As I wait until this dream reading device becomes true I’ll buy a Nook Simple Touch, root it, customize the OS to make everything with high contrast, and start developing that launcher from scratch.

What are your thoughts about this dream device? Any suggestions about it? Leave a comment.


Microsoft Finally Saw Where The Developers are Going

Today I revived my hope on Microsoft as I received the news that they released their brand new “product” for their fellow developers. The release I am talking about is the official Metro theme for jQuery Mobile. The awesome mobile framework finally got some Microsoft love.

In December of last year I got a new device to develop for, a HTC Titan, running the latest Windows Phone 7.5 Mango build. I loved the OS UI and how the applications were information-centric and not just eye-candy, but there was one problem, the same way C# is a incredible language for a lot of things, it’s parsing functions, for JSON specifically, are very difficult to learn and the articles about it were made for senior C# developers, which makes it difficult for beginners like me to understand them, at least I now can develop using the technology I love most for mobile development: Cordova (aka PhoneGap).

I always wanted to use Cordova for my WP7 projects but the Metro interface was way too complex to build from scratch and since the WP7 build of Cordova was on it’s early stages there were some features still to be implemented, for example there was no way to prevent the app from scrolling and some other things. Now there are plenty of plugins to make the app as native as possible and with the latest help from Microsoft, the Cordova development community has another great platform with almost full support of the native web app framework.

It’s great to see that Microsoft finally realized that the future of development has Javascript, HTML and CSS as the main languages. That’s why I have hopes that Boot to Gecko gets some market attraction and becomes a popular platform.


Interpreted is The Future

Interpreted languages are pretty popular since 2005. Ruby with the Rails framework (or API), Python with Django, Javascript with Node.js. These are just some examples of interpreted languages that became extremely popular, mostly because of frameworks, but the main thing that will make the future be ruled by interpreted languages aren’t frameworks. Instead the best feature of these languages are the fact that you can easily test or debug your code on-the-fly, without having to worry about compiling a test source code to see if it works.

The Node.js console for example: I can run my server script on the test machine, then I type node and I can debug/test the code I just wrote, sending GET/POST requests, doing simple database queries (MongoDB of course) and testing code I might add to the main script. A lot of people complain that they are slow because of the way they “read” your code, but seriously I never had any problem with slowness on my code, so I think this isn’t an issue.

Of course languages like C/C++ (I hope Go can kill them because they are completely outdated and there is no more reason to continue using them) or Java will continue to exist for a long time because there are some things, like bootloaders, security systems, OSes, that can only be written in code that can be compiled.

I hope the future gets even brighter for interpreted languages, that’s why I’m trying to give them all a try before choosing the one I’ll stay. At the time Node.js is the best for me because I really love Javascript, but I might get into Ruby too, I like the syntax and the community is really great too.


How To Setup And Use NativeControls In PhoneGap

As many might know the most used plugins in PhoneGap for iOS are NativeControls and ChildBrowser, but installing plugins is a bit tricky and you can’t easily find this kind of help around the internet, for example in my case I’ve learned by reading about plugins installation in PhoneGap and doing tests, so on this post I’ll cover the entire setup and usage of NativeControls (but you can use this for any other plugin in the iOS repo) in a very simple and informative way that even a PhoneGap beginner can understand. I’ll assume that you’ve already had installed and configured the Xcode environment on your Mac and is familiarized with the latest version of it. The first thing you must do is download the phonegap-plugins repo archive and extract it anywhere you like. Now go to the extracted folder and go to iPhone/NativeControls and copy the NativeControls.h and NativeControls.m to the /Plugins folder on Xcode, then move the NativeControls.js to your desired place in the www folder. After all this copying and pasting you must open your PhoneGap.plist under /Supporting Files and add a new item to the Plugins array with the Key and Value NativeControls and the Type String, at the end your project should look something like this:

Now you’re ready to start diving into the code. The first thing you should do is include the required Javascript files into your index HTML source in this order:

<script src="phonegap-1.0.0.js" type="text/javascript" charset="utf-8"></script>
<script src="NativeControls.js" type="text/javascript" charset="utf-8"></script>

The next thing to do is go to your main Javascript file, which contains the onDeviceReady event set and put the NativeControls initialization code there. On this example we are going to use the TabBar component to output something like this:

As you might have noticed I’m using the Glyphish Pro icon pack there, which you can get for $25, but it’s worth every cent, since it’s such a complete icon pack for your TabBars and more. First of all you should initialize a NativeControls variable and create a assign a TabBar to it using this code:

nativeControls = window.plugins.nativeControls;
nativeControls.createTabBar();

Then you can start creating a icon/button for a tab using this JSON object:

nativeControls.createTabBarItem(
  "books",
  "Books",
  "/www/tabs/book.png",
  {"onSelect": function() {
    // Do something
  }}
);

The first item is the name variable, the second is the icon label, the third is the icon path and the last one is a function that should be called every time icon is clicked. Be aware that you should insert the icon path relative to the project folder! About retina icons I really encourage you to check out this explanation on how to organize them. After you added all the icons you want to the TabBar you should show it in the screen. Then start to place the icons (the order you declare on this function they will get placed) and finally assign a TabBar to be active as the app is fired, just like this:

nativeControls.showTabBar();
nativeControls.showTabBarItems("books", "finished", "about");
nativeControls.selectTabBarItem("books");

If you want you can choose from the pre-defined TabBar icons that Apple include by default on their SDK by using these keywords as the icon item:

  • tabButton:More
  • tabButton:Favorites
  • tabButton:Featured
  • tabButton:TopRated
  • tabButton:Recents
  • tabButton:Contacts
  • tabButton:History
  • tabButton:Bookmarks
  • tabButton:Search
  • tabButton:Downloads
  • tabButton:MostRecent
  • tabButton:MostViewed

Remember that the label will be unusable since these will overwrite it, but you should put something on the label item or it won’t work. I’ve uploaded the full source code to my Gist and you can check it out at Example of NativeControls in PhoneGap. After all this hard work you’re ready to compile your application and test it. If you followed the instructions correctly everything should work. If anything goes wrong please drop us a comment and will be my pleasure to help you. Also leave a comment with your thoughts on this article or suggestions.