Current Flow

Endeavours into the world of programming and electronics


Getting Rid Of Physical Buttons: The Right Way

Three days ago a friend, which is a regular user, asked me about my opinion on the “new button-less phone that was just released”, he was talking about the Sony Xperia Z. First I explained him that those kinds of phones (button-less) existed for a long time before the Sony one, then I gave him a long explanation why I think the Android way of getting rid of buttons was just wrong.

If you really want to get rid of the physical buttons you shouldn’t replace them with virtual ones, since I still loose part of my screen to that piece of the past, so don’t get rid of them, I prefer to have something more “natural” than just an abstraction of it.

To get rid of the physical buttons in the right way you should first of all replace their place with pixels (shocking!), so I can see more content. After that you replace the button actions to be triggered by something that won’t take more screen space, for example gestures.

A clear example where a company made the transition perfectly is RIM, they came from a OS that was completely driven by physical buttons (BBOS) and went to a fully gesture driven OS (PlayBook OS and BB10). Another great example of how to use gestures is the awesome Ubuntu Phone which in my opinion is one of the best implementations I ever seen.

So, if you want to replace the buttons you shouldn’t just virtualize them, but really replace them with something different.


My Raspberry Pi Post-Mortem

This might be the worst day of this current year. As you might already know yesterday, after 4 months of agony, I finally received my Raspberry Pi. It cheered me up a lot, since in the same day my old Galaxy S bricked. Today the perfect chemical reaction occurred. All the excitement and expectation converted entirely (maybe multiplied) into a strange mix of frustration, sadness, and anger. My Raspberry Pi arrived dead.

After 4 long months of wait, ~20 items on a TODO list, 3 projects, 2 VMs, ~50 tweets, and 3 articles, it all came to a sad end. Today my friend borrowed me his spare USB keyboard so I could turn ON an configure my Raspberry Pi for the first time. While it was booting I had one of the most awesome experiences ever: I’ve watched the original Linux boot, with a logo on the left corner and all those awesome lines blazing through the screen, just like in 2005 when I booted Linux for the first time on my extremely old IBM ThinkPad. After I saw those lines for the first time I decided I wanted to know more about how things were made, Linux got me into programming, and turned me into what I am today. It was a awesome moment to watch those lines again.

The first thing Raspbian did was show me a nice ncurses-based configuration tool. I started configuring it and suddenly “No Signal”. I looked at the Raspberry Pi and the only thing that showed me it was working was the Power LED, all the other LEDs (including the internet ones) turned OFF. I disconnected the power and tried booting it up again. This time it did the same thing, but a lot earlier.

I rushed to my computer to check if it was a known issue and if someone had a fix, many users had similar issues, but not the same, the suggestions were the same: Check the power source voltage and the SD Card. I’ve started by downloading the other distros and flashing them on different cards, without success on the Pi, I was still having the strange issue. Then I decided to get a multimeter to check the voltage of the board, when I checked the board voltage it was great, so it means it wasn’t the power source causing the issue. All I got was to acknowledge that I got a faulty unit.

I inserted the Raspberry Pi back into its case and gently stored it into the drawer were I put all the electronics that stopped working, which currently contains only my first laptop (that ThinkPad with Linux) and my Galaxy S. I care a lot about all my electronics, even after they are “dead”, that’s why I never sold, or trashed any of them, which means I almost have a museum here in my room, with all the devices I ever owned.

I’m curious to know what will be the next thing that will get me as excited as the Raspberry Pi did. Computers, they aren’t fun to play with anymore, and the Raspberry Pi changed this. The mobile world that always excited me, since the day I got my Palm, is no longer that exciting. So what’s next?

I don’t think I’ll be buying another Raspberry Pi, probably not. All the excitement extinguished today.

Updates:


The Linux GUI Development Nightmare

For about 2 weeks I’ve been having some fun with Linux development, mainly using Ruby to build command-line applications. My decisions, to create command-line applications using Ruby instead of GUI applications, were made because of a simple factor: GUI development for Linux is a nightmare, since there isn’t at least one good GUI prototyping tool available to help you design your UI without having to do everything manually.

First I tried Glade which is just a nightmare. It’s extremely complicated to deal with and you have no clue about which control you should use or how to arrange things, and most importantly there’s not a lot of tutorials and documentation for new users to learn how to use it, and how to integrate with other languages.

Then I was told that Qt Creator was an awesome thing, so I decided to give it a try. I’ve created a new test project and selected the Qt Quick option so I could use QML, which is a lot better for a developer with Javascript background like me. One of the things that made me like this was the amount of good documentation and tutorials.

When I started playing with the Designer one of the first things that I noticed was the lack of simple controls like Buttons, this was pretty strange and I thought I haven’t installed all the things needed, but when I searched for it I got this tutorial from Qt itself, which explains how to create a button in QML (from scratch!!). QML is one of the most awesome things I ever seen to build the GUI logic, it’s simple and flexible, the problem is that there isn’t any kind of controls to create real world desktop applications with it.

After that I took a look at wxWidgets, which lacks good documentation and a decent GUI designer. Then after all this horrible nightmare I thought about creating all my UIs using HTML5 and wrapping everything around a GTK WebKit window, but I don’t think this is a good approach since my apps would look like an alien to the system.

Where are the Delphis of modern computing? I remember how easy it was to design UIs using Delphi and with a right-click on the control you could easily attach an event to it’s logic. It’s this kind of IDE that I’m expecting, one that focus on the fact that you don’t need to struggle to create a UI, but instead that you should be able to create the UI fast and easily enough, so you can focus on the most important thing that is your application logic.

Linux is a awesome OS, I’ve been using it since 2007, and it needs/deserves better tools to create awesome GUI applications, this is one of the reasons that developers aren’t porting their apps to Linux. On Mac OS X we have the awesome Xcode that includes a incredibly awesome GUI designer, and on the Windows side we have Visual Studio with a designer that is the best one in my opinion, since it’s easy, flexible, and powerful. Isn’t this the perfect time for a great Linux GUI designer?


If it's Good I Don't Care Which License it Uses

Today I could finally watch the Stallman’s interview on The Linux Action Show, and their second video about it, and I couldn’t agree more with Bryan, so I thought about writing an article about it since most of the responses I saw were just a lot of crap thrown at a person that wants to make a living out of software development.

Stallman has a great dream that software should be “free”, but I think that the developer must also have the freedom to choose if they want to charge or not for their software. Free software is great, but if a developer wants to make a living out of their software, which means be dedicated full-time and not have another job, it’s almost impossible if you only make free software, even if you accept donations they won’t be good enough to make a living. Which means you’ll have to charge for some of your software.

When I’m going to get any kind of software the first thing that I look is at the description, what it does and what it doesn’t, then I look at the screenshots. If the software is considered good (in my opinion of good) I’ll download, if it’s free, or buy, if it’s paid. The developer has the freedom to choose the price of their software and I respect that, if the developer thinks that his app is worth $10 and I think it’s worth too, I’ll surely buy it.

Bryan and Chris also talk about the proliferation of the “App Stores” as a bit of a bad thing. Of course it has it’s cons, but they have a huge pro which is how easily it makes for users to discover and get software. This is good for the user, that will be able to get more software to fit his needs, and is good for the developer which will get more downloads/revenue.

Let’s take me as an example. I’m a student which is very thankful to my parents for supporting me to study and have some time to develop software for fun. That’s why I build software that I want/need to use the best examples (and the ones I’m mostly proud for) are build.prop Editor and stream.json, these are all licensed under the GPLv3, but I’m going to start reworking (long story, worked for 1 month to start this project, all was almost ready and a lot of bugs on bbUI.js made me very depressed and leading to my rage quit from BlackBerry development) and it will be a $0.99 app for iOS, Android, and maybe BlackBerry. My decision to charge for this app is just because of the time I’ve invested and will invest on it.

Free software is a great thing, but the blind way that Stallman looks at this scene is just mind blowing. If he really wants that every company that develops proprietary software fails he is just going to kill his own idea because most of the big free software projects are possible because huge companies that earn money from proprietary software can pay for employees to contribute to these free projects.

Stallman also said that he wouldn’t use/recommend the Raspberry Pi just because of one single proprietary part of it (which is probably the GPU). This, and the discussion about child’s food that he had with Bryan, showed how he cannot think about practical implementations of his ideals of freedom. Projects like the Raspberry Pi are the things that are currently keeping my interesting on programming, since the programming scene is so saturated that everything I think might be a cool week pet project never comes out of the paper I’ve sketched, because there’s already a well known and successful project which does exactly what I wanted and more.

What are your thoughts about my opinion? Want to troll? Agree? Leave a comment and I’ll love (or not) to read it.

PS: This post was written using proprietary hardware on a Apple MacBook Pro 17" (2010 model), running a proprietary OS called Mac OS X, using a proprietary word processing software called iA Writer.