Category: Comparisons

PIcking Your Javascript Mobile Framework: Part 2 – The Field

Right on the heels of the first instalment, here the second, where we will consider the options we have in mobile frameworks.

First of all, the number of frameworks out there is simply staggering. There are literally hundreds of them, from industry behemoths like jQueryMobile to one-man projects already abandoned by the creator.

Variety is the spice of life, but too many options make for big headache. Unfortunately, the web has zeroed in on the predicament of mobile developers and offers even more click-bait articles about the “Best Mobile Frameworks 2014” than you can possibly read. Most of them, sadly, consider it a “comparison” when you simply put up the name and the first paragraph of the web site description.

What to do? I decided I needed some general criteria before moving forward. Here they come:

  • Availability as open source with no licensing restrictions: I am not going to pay a fixed per-download fee, a per-app fee, or even a per-developer fee when there are hundreds of free options available
  • Cross-platform and mobile design: Many of the frameworks out there are rooted in one particular development paradigm, operating system, or use case. I wanted something that would handle anything from a tiny phone to a large tablet – and the desktop, too.
  • Easy to learn: That doesn’t just mean that the technology is easy to grasp, but also that there is good documentation, both for the novice (tutorials) and the seasoned user (reference)
  • Fast: Fast, Fast, Fast. Loading, running, responding. That turns out to be a killer feature – as in a feature that kills many otherwise solid contenders. They are great frameworks, it just takes forever to load even a Hello World
  • Adaptable: iPhone or Android? Tablet or phone? The framework should handle them all gracefully, and should give me the option of picking what to do when in doubt.

So, with that list in mind, I started going about evaluating. After about 20 alphabetic picks, I started doubting myself. This was going to take forever.

I did what anyone in my situation would do: I fired up Steam. ☺

Then I got back and thought: there’s got to be a better way to do this. Which is when I found the TodoMVC Project. There you find a list of implementations of a very simple app that shows you how different frameworks handle the task.

The name hints at two things: first of all, the app all the frameworks had to implement was a ToDo task manager. It was supposed to be a CRUD application, where CRUD stands for Create-Read-Update-Delete. The single todos were just text, and you could set them active or completed, so they had one single attribute.

MVC in the name of the project stands for another abbreviation: Model-View-Controller. That’s the (current) gold standard for application implementation. You have a model, which is the abstract entities (a todo would have a text and a flag completed). You have the view, which is the buttons and fields and labels and menus on the page. And you have the controllers, who mediate between the two. So when you click on a button in the view, the corresponding controller would, for instance, delete a todo in the model.

There are tons of frameworks that don’t follow that paradigm, but luckily the TodoMVC Project is not too picky about MVC-ness. In fact, there are implementations in non-MVC and even non-framework environments. Turns out they are not half bad, either.

I liked this project, because it did many things at once:

  • It listed those frameworks that someone cared enough about to do actual work in, instead of simply dumping it into the field thinking it a good idea
  • It showed how different frameworks would handle the exactly same task
  • It gave a vague idea of the performance of each framework
  • It showed structure and limitations

It was free to download and easy to install. In fact, you just run:

git clone https://github.com/tastejs/todomvc/tree/master/examples

and you are done.

The master tree shrinks down the number of contenders from a few hundred to a much more manageable 77. That’s of course still way too many to fully evaluate, but here is the rundown:

agilityjs
ampersand
angular-dart
angularjs
angularjs-perf
angularjs_require
ariatemplates
atmajs
backbone
backbone_marionette
backbone_marionette_require
backbone_require
batman
canjs
canjs_require
chaplin-brunch
closure
componentjs
cujo
derby
dijon
dojo
duel
durandal
emberjs
emberjs_require
enyo_backbone
epitome
exoskeleton
extjs_deftjs
firebase-angular
flight
gwt
jquery
kendo
knockback
knockoutjs
knockoutjs_require
lavaca_require
maria
meteor
mithril
montage
mozart
olives
plastronjs
polymer
puremvc
ractive
rappidjs
react
react-backbone
sammyjs
sapui5
serenadejs
socketstream
somajs
somajs_require
spine
stapes
stapes_require
thorax
thorax_lumbar
troopjs_require
typescript-angular
typescript-backbone
vanilladart
vanillajs
vue
yui

PIcking Your Javascript Mobile Framework: Part 1 – Preliminaries

Part 1 in a series that also includes:
Part 2 – The Field
Part 3 – Functionality
Part 4 – The Code
Part 5 – Performance
Part 6 – Elimination
Part 7 – Activity
Part 8 – Documentation
Part 9 – Ampersand
Part 10 – AngularJS
Part 11 – Backbone
Part 12 – CanJS
Part 13 – Durandal
Part 14 – jQUery
Part 15 – KnockoutJS
Part 16 – Mithril
Part 17 – Ractive
Part 18 – React
Part 19 – Stapes
Part 20 – Thorax
Part 21 – Vue
Part 22 – Conclusions and My Pick
So I recently decided to switch from native mobile development to Javascript in a browser. What changed is that I needed something that works on more than just Android, and I faced the steep curve of dipping into iOS development. That’s a pretty steep one, because it doesn’t just involve getting into a completely new paradigm, but because you have to own dedicated hardware and pay an up-front fee to Apple.

But what do you know, Steve Jobs was right: the future of the web is in the browser. When the first iPhones came out, in 2008, the brilliant man said we didn’t need native toolkits. He said so mostly because he didn’t have one to offer, since back then mobile browsers were super-crappy and the web just wasn’t ready for them, anyway. Today, a startlingly short 6 years later, the mobile browsers are not only on par with their desktop cousins, they start becoming the default targets of development.

Instead of creating apps on the mobile device, you could simply send mobile users to your site. That would require no download, which means no headaches with old versions and no complaints from users that can’t make it work on their phone. On the other hand, you become unavailable when there is no internet connection, you are as slow as that very same connection, and you have no access to device internals – like the GPS or the accelerometer.

(more…)

Why You Should Wait to Buy a New Laptop

This will be an incredibly short post:

If you look up the best selling laptops on Amazon, you’ll notice striking pricing. The best seller is the Samsung Chromebook, 11.6″. The best selling “real” laptop is a Toshiba Satellite, at 15.6″ quite enormous.

The downside: here in two images.

screencap8screencap9

The price on both is fluctuating, currently $250 for the Chromebook and $300 for the Satellite. I guess on an 11.6″ Chromebook that resolution is acceptable, but I imagine you can see the pixels on the 15.6″ as little ponds on the screen.

Next is the best selling high-density screen:

screencap10

Sadly, it belongs into a completely different universe:

screencap11

It’s the MacBook Pro. Of course, the price is more justified if you consider everything else you get with a MacBook Pro.

But then we have this little pearl:

screencap12

So you can have a high-resolution display on an 8.9″ screen for a little more than you get from a Chromebook.

There is no single thing you will use more on a laptop than the screen. If you do any actual work, or if you just like browsing around, you should not buy a laptop with a crappy, 1366×768 display. Enough said.

Non-Linear Video Editors in Linux

Imagine you collected a bunch of home videos (in my case, with a surfcam) and you want to make them into a coherent stream. Imagine you want the finished product to look cool, or at least watchable. Imagine you want to do this on Linux. What are your options, and how do they work out?

I took the time to test the five major Linux contenders in the space, and published the results below. Here the list of software tested:

  • Cinelerra
  • LiVES
  • Kdenlive
  • OpenShot
  • PiTiVi

You’ll be surprised at how things worked out!

(more…)

Creating DVDs in Linux 2. The Shootout

[Note: this is the second of two articles on DVD Authoring in Linux. The first one introduced the concepts that are going to be used in this shootout, so if there is anything here you do not understand, please read the other article here first.]

Now that we understand the setup and process, let’s look at the software available for DVD creation and compare our options. If you just want the process I am following after all the shooting out, look at the far end of this post.

(more…)

Creating DVDs in Linux 1. Basics

I bought a Contour, to record some videos of myself struggling to surf, and now I decided it would be fun to splice the good parts (all three seconds) into a DVD I can give people I don’t like for Christmas. But how do I go about it? Are there any good DVD authoring tools in Linux that take the video formats I have and easily burn them onto a DVD? This article is a survey of the apps I found, and of my experience using them.

I am not measuring the absolute quality of the application, only its effectiveness for the single purpose of creating a DVD of random clips, organized according to a structure I apply arbitrarily (maybe time, maybe type, maybe source). My criteria in evaluating the software include:

(more…)

Comparison Shopping: Tcl, Perl, PHP, Python

I have always been fascinated by programming languages, and scripting languages have always had a particular place in my heart. After all, they allow you to develop without much encumbrance, starting from nothing to program in no time. There are no lengthy build and compilation cycles, and sometimes you can even use dynamic language features to make your changes to a running application – neat!

For me, it all started with Forth, which cannot really be called a scripting language at all. It compiles functions into bytecode as soon as they are defined, and the only feature that reminds one of scripting languages is just how easy it is to write and rewrite. Since Forth reacts dynamically to changes and is interpreted,

After that, I discovered Tcl, which quickly became my favorite programming language. It had a rich set of extentions that included GUIs (albeit at that point only on UNIX) and highly dynamic capabilities. It seemed like an ideal choice. 

(more…)

Personal Finance Software under Linux

Amazing how many people (= geeks) say the only reason they still use Windows is because of Quicken™. The ease of use and the power of that little application that could defy even the Grand Master of software powerhouses ends up being a good paragon of things to strive for.

Linux enthusiasts have been resorting to using Quicken on their favorite OS by virtue of emulation software like Wine. Indeed, the Wine site lists 21 different versions of Quicken and their users’ ability to run the software or not.

Not surprisingly a movement went afoot that tried to create fully open source applications that would behave like Quicken and allow for the same stability and ease-of-use, but add flexibility and for some an almost mystical aspect.

After a quick review of the field, there seemed to be only two packages that vied for the title:

  • GnuCash 1.8
  • KMyMoney2 0.8

(more…)

NetBeans or Eclipse?

There is your expert nerd again! This time the question is: should I use the IBM IDE or Sun’s?

The question is tricky, since the philosophy of the two engines is different. Sun’s NetBeans is a pure Java IDE with support for everything under the sun (pardon the pun). Eclipse is a common IDE for any language, and support for Java and C/C++ is currently under way.

I use my IDE only for Java. C and C++ happen in separate IDEs that are more suited for the environment. This means, currently, that all development on Windows happens in Visual C++ and all development on UNIX on KDevel 2.0.

I have been working with NetBeans extensively, and it has made wonderful progress. Still, it is a resource hog (over 150MB in development mode), debug is slow (but that may come from the socket debugger I use) and the responsiveness of the IDE leaves a lot to be desired (and this on a machine with 512MB).

Eclipse is much faster, from the first impression I got. Still, there are obvious holes in the development process. You can’t easily debug an applet, or even make it run. How do you create graphical applications?

In the end, it is probably a wash-up. If I’d have to choose I would love NetBeans with dynamic support of features, so that it loads only the stuff I am actually using. Then I’d have the advantages of Eclipse and those of NetBeans, and I’d be happy.

Oh, yes – the UI engine of Eclipse eclipses the really ugly UI sported by NetBeans. Eclipse looks like an application should look like. NetBeans is 1998 at best.