Evil Coding Monkey Ubuntu, Android, web development, open source, etc.


Laptop choices for software developers

Asus ZenBookPro UX501

Asus ZenBookPro UX501

I recently found myself looking for a good developer laptop. Depending on the stack that is running on your development machine (Web server like Nginx, Apache or IIS, DBMS like PostgreSQL, MySQL, Oracle or MS SQL Server, an IDE or advanced text editor, etc.), but also other softwares like a Web browser with 12 active tabs, tools like Adobe Photoshop, a music player, several command line consoles with ssh sessions or Gulp running, a virtual machine, etc., etc., you might find today's trendy ultrabooks not so powerful as they are usually limited to low-power CPUs with only two cores, and most often rely on integrated graphics. (sorry for this really long sentence)

This is the conclusion of my own little quest to find what I like to call a good developer laptop. There is nothing exhaustive here. I am simply talking about the models that I think are interesting right now, and why I think they are.

Going quad-core... and 15 inches

First thing you need to know is that sub-15-inch laptops are almost impossible to find. Intel's CULV specification for ultrabooks limits power for CPUs to 17 watts, which is not enough at all for, let's say, a Core i7 6700HQ which has a TDP (thermal design power) of 45 watts. You can make your own research here, but long story short, if like me, you decide to go quad-core, you'll most likely have to accept to buy a laptop with a 15-inch screen, at least.

My three favorite options (right now)

First, I want to clearly state that some links in this article point to Amazon products. By following them, you may be helping me pay for groceries, diapers, cat food or coffee. So thanks!

Dell New XPS 15 Laptop

Dell XPS 15

Dell XPS 15

Dell has really hit something last year with the New XPS 13: a great screen with a very thin bezel called InfinityEdge (from a distance, it really looks like an 11-inch laptop), an acclaimed keyboard, very good performances for an ultrabook, good built quality, and a nice look. The camera's position (below the screen) might be a problem for you though.

For 2016, Dell just arrived with the New XPS 15: something very similar to the XPS 13, but as you have probably already guessed, this new model is built around a 15-inch screen, which means it's got room for a quad-core CPU (yay!), and a discrete graphics adapter. Dell offers many configuration options: touch-screen or not (with PPI from 141 to 282),  i7, i5 or i3 CPU, 500GB old-school HDD to 1TB SSD, integrated GPU or Nvidia GeForce GTX 960M, etc.

Working around several people owning the XPS 13, I must say that I am tempted by Dell's very slim design (the thin bezel helps a lot). I love the keyboard, and the mousepad is kinda great too, but I would have preferred a numpad on the 15-inch version. For obvious reasons, my next laptop will be equiped of an SSD. But the way Dell has done things. that would force me to invest in a multi-touch 4K Ultra HD screen, and I'm really not sure I want to go there. But the more I read, the more it becomes a standard in high-end laptops. So in the end, I might actually "go there".

Here's a great article about the New XPS 15 made by the guys at Ars Technica.

Asus ZenBook Pro UX501

Asus ZenBook Pro UX501VW-DS71T

Asus ZenBook Pro UX501VW-DS71T

Let's stay in high-end models a little more. Kind of new Asus ZenBook Pro UX501 offers something very similar in terms of performance. With this model, you have no configuration options, so you'll have to pay for the multi-touch (10 points, really?!) 4H Ultra HD screen. You'll get the same i7 6700HQ and Nvidia GeForce 960M the XPS 15 has. A not-so-small difference (for me at least) would be the numpad that is present on the Asus' keyboard.

Living in Canada, it's relatively hard for me to compare MSRPs, mostly because electronics are always more expensive in the Great North, but also because right now, 1 US Dollar equals 1.39 Canadian Dollar. But for what I see, for a comparable configuration the XPS 15 might cost about $350 US more than the ZenBook.

Acer Aspire V15 Nitro

Acer Aspire V15 Nitro Black Edition

Acer Aspire V15 Nitro Black Edition

As you might have noticed by now, what I really want is performance, without paying for features mostly gamers will want, and as of now, I'm still not a huge fan of touch-screens on laptops. So my last option could be to go with something cheaper, but with very comparable "core performances": Intel Core i7-6700HQ, Nvidia GeForce 960M, but only 8 GB of RAM, and an old-school 1TB HDD, that I would immediately replace with a 256 GB SSD. I would lose the Thunderbolt port (which I really don't mind right now), and save maybe $300 when compared to the Asus, and even more when compared to the Dell.

Anything to add?

I am still thinking about all this, and like I said, I'll have to compare Canadian prices before making a final decision. If you would like to share your opinion on the subject, please do so! That might help me a lot. I usually keep my laptops for at least 5 years, so I want something that is going to last.

Thanks a lot for reading!

Filed under: Hardware No Comments

Deploying Flex iOS7 applications on the App Store

flex-ios-appsIf you did not know already, Apache Flex is a technology (a software development kit or SDK) used to build, and deploy cross-platform mobile applications or rich Internet applications (RIA). The technology has been donated to Apache in 2011, but still uses Adobe AIR or Flash Player as runtime. For many years, Adobe has been doing a great job of keeping its runtimes compatible with Apple's guidelines and requirements.

A recent problem

In the past weeks, Apple announced that "Starting February 1, new apps and app updates submitted to the App Store must be built with Xcode 5 and iOS 7 SDK." Could this really mean the death of Flex applications for iOS?

The solution

Fortunately, Adobe released a fix that is currently available through the latest beta release of Adobe AIR. So if you plan to publish on the App Store soon, you should re-run the Apache Flex SDK Installer, and where the installer asks you to select an AIR version, just select AIR 4.0beta. Proceed with the installation, and that's it! Now build your app as you have always done, and enjoy the power cross-platform development!

Source: Building Apache Flex apps for iOS7

Update (March 2nd, 2014)

Please note that Adobe just changed the AIR versioning from 4.0 to 13.0 to synchronize it with Flash Player. When running the Apache Flex SDK installer, select the latest AIR version: AIR 13.0beta.


Ubuntu: Activate multi-touch on Elantech touchpad

elantech-touchpadIf like me you recently bought a new computer with an Elantech touchpad, and installed Ubuntu on it, chances are your touchpad lacks the multitouch features, and therefore, you can't scroll with it. This is extremely annoying to most of us. Tonight, I went back to Ubuntu bug page to realize someone has submitted a fix, and it seems to be working for many users. Just tried it on my Acer Aspire S7, and it worked perfectly for me too. So let me share it with you...

First, if you aren't sure your computer was built with an Elantech touchpad, open a terminal, and type the following:

cat /proc/bus/input/devices

You should find a block containing a line looking like this one, which confirms you are on an Elantech touchpad:

N: Name="ETPS/2 Elantech Touchpad"

Download this archive (from Ubuntu's bug reporting page).

Open a terminal, and follow these steps (after step 4, you will have no mouse at all):

cd ~/Downloads
sudo dkms ldtarball psmouse-elantech-x551c.tar.gz
sudo dkms install -m psmouse -v elantech-x551c
sudo rmmod psmouse
sudo modprobe psmouse

Enjoy multitouch!

Source: Elantech clickpad/touchpad lacks multitouch features


Installing Apache Flex SDK under Linux


Recently, the Apache Flex team released the latest version of Flex SDK: 4.10. This release came with a Linux installer for the first time since Adobe Flex Builder 3 alpha, several years ago. As a member of their user mailing list, I take part in certain discussions, often on the Linux support subject. It seems that users have difficulty installing the Flex SDK, even with the .deb (Debian software package) available on Apache Flex's website. Taken from those discussions, here's the easy way to install the Apache Flex SDK under Linux.

AIR dependency

Flex SDK is best installed using the SDK Installer, which requires Adobe AIR 2.6. If you didn't already know, installing Adobe AIR on Linux isn't that easy, as it is not supported by Adobe anymore. The easiest way I have found is this one:

  1. If you're using a 64-bit Linux system, install the ia32-libs (AIR is 32-bit only):
    sudo apt-get install ia32-libs
  2. Go here (http://update.devolo.com/linux/apt/pool/main/a/adobeair/) and download the AIR installer for 64-bit systems (amd64) or 32-bit (i386)
  3. Install the package you just downloaded:
    sudo dpkg -i adobeair_2.6.0.19170_amd64.deb

You're done with the installation of Adobe AIR.

Installing the SDK Installer

  1. Download the installer (.deb) here: http://flex.apache.org/installer.html
  2. Once you have downloaded the .deb, install it using dpkg (this command will force the installation, even if the AIR dependency is not resolved):
    sudo dpkg -i --force-depends apache-flex-sdk-installer-2.6.0-bin.deb
  3. Once the installer has been installed (you might encounter several warnings and errors, just ignored them), open a terminal and go the installation folder:
    cd "/opt/Apache Flex/Apache Flex SDK Installer/bin"
  4. Run the installer:
    ./Apache\ Flex\ SDK\ Installer
  5. Now you just need to decide where you want the SDK to be installed, and you're good. Everything should go smoothly.

Uninstalling the SDK Installer

I really suggest that you uninstall the SDK Installer (but not the SDK, of course!) when you're done, because it will cause you all sorts of errors with apt-get in the future. Errors that look like this:

org.apache.flex.installapacheflex:i386 : PreDepends: adobeair:i386 (>= 1: but it is not installable
E: Unmet dependencies. Try 'apt-get -f install' with no packages (or specify a solution).

This can be done very easily with the following command:

sudo apt-get -f install

As always, feel free to ask any question you might have, I'll do my best to answer them. Have fun developing with Apache Flex and Linux!


Advanced Linux Mouse Configuration Made Easy

logitech-mouseThose of you using a mouse with multiple buttons, such as the one shown here, probably already know how painful it can be to make it work just as you'd like on Linux. I have myself been postponing the configuration of my Evoluent VerticalMouse for years. I recently gave myself a little kick in the butt, and came up with the following solution.

Identify your mouse

First, find the exact name of your, and copy it somewhere for later use:

xinput list

Mine is: "Evoluent VerticalMouse 4"

Learn your mouse's buttons' positions

Install xev if not already installed:

sudo apt-get install xev

Open a terminal, and run xev from the command line. A small white window will open. Put your mouse in that window, and try clicking one of your mouse's buttons. You will get a lot of output for every click. You need to find a block that looks like this, the most important part being near the end (button 3 in this case):

ButtonPress event, serial 36, synthetic NO, window 0x3c00001,
 root 0x269, subw 0x3c00002, time 14058208, (44,38), root:(1725,240),
 state 0x10, button 3, same_screen YES

Now you can easily write down the number associated to every button of your mouse.

Choose the right order for your buttons

We will use xinput to change the button mapping. Starting with the button map you have just written down, you can easily swap buttons to match your preferences. For example, here's what I had at first (my mouse has three buttons like in the old times, and two thumb buttons) :

  1. Left click
  2. Middle click (paste selected text in Linux)
  3. Right click
  4. Wheel scroll up
  5. Wheel scroll down
  6. ?
  7. ?
  8. Upper thumb click (back)
  9. Wheel click (forward)
  10. Lower thumb click

Here's what I wanted :

  1. Left click (1)
  2. Right click (3)
  3. Forward (9)
  4. Wheel scroll up (4)
  5. Wheel scroll down (5)
  6. ?
  7. ?
  8. Back (8)
  9. Paste selected text (2)
  10. Lower thumb click (unused... 10)

In my case, the xinput command looks like this:

xinput -set-button-map "Evoluent VerticalMouse 4" 1 3 9 4 5 6 7 8 2 10

You can run this command in the terminal to test if your configuration works well. You can always come back to default with :

xinput -set-button-map "Evoluent VerticalMouse 4" 1 2 3 4 5 6 7 8 9 10

Make your command run at startup

We're almost done... Now create a file in your home directory with a name something like .mouse_config, and paste your xinput command in it. Open the automatic startup program that comes with your OS. Its name in Ubuntu 12.04 is Startup Applications. Add a new entry that points to your script, add a name and a description if you want to, and that's it! Enjoy a perfectly working mouse!


Installing a Transmission Daemon on Ubuntu

TransmissionLet's say you have a computer (could be your home file server) on which you want to install a torrent client as daemon (command line), and manage it through a Web interface. Would be great, right? It's pretty easy to achieve but there are a couple of details you need to pay attention to.

Note: This tutorial was written for Ubuntu Server 12.04 but it doesn't mean it can't be useful for other versions or distros.

Required packages

It's pretty simple as only a couple of packages need to be installed, and they are already in the repositories. For readability, I'm putting each of them on a different line, but they should all go on the same.

sudo apt-get install transmission-cli

Create folders for Transmission

Even if you could always use the default folders, I like keeping track of everything, the way I want it. So here's what I've done. I think the folder names talk by themselves.

sudo mkdir ~/transmission
sudo mkdir ~/transmission/complete
sudo mkdir ~/transmission/downloading
sudo mkdir ~/transmission/torrents


This step isn't crucial, but it will save you lots of "sudo" commands in the future. By default, Transmission always gives downloaded files permissions to the transmission group (debian-transmission to be more precise). This is why adding your user to this group could be a good idea. Make sure your replace your_user in the following commands:

sudo usermod -a -G debian-transmission your_user

Now you need to set the correct ownership and permissions:

sudo chown -R your_user:debian-transmission ~/transmission
sudo chmod -R 755 ~/transmission

A good configuration file

Now this part is very important. The configuration file must be filled correctly or else you might not be able to access Transmission's web interface. Many other things could also "go wrong". But don't worry, you can edit this file anytime in the future to fix any problem you might encounter.

First thing to do is to stop the daemon. If you don't, the configuration file will be overridden when Transmission closes the next time.

sudo /etc/init.d/transmission-daemon stop

Use any text editor (I use Nano here) to edit the configuration file.

sudo nano /etc/transmission-daemon/settings.json

You will find all possible settings here: official Transmission wiki.

When you're done, restart the daemon.

sudo /etc/init.d/transmission-daemon start

Configuration file example

Here's an example of what I have added or changed from the default configuration file. Don't forget to change your_favorite_list_url and your_user in the following example.

"blocklist-enabled": true,
"blocklist-updates-enabled": true,
"blocklist-url": "your_favorite_list_url",

"download-dir": "/home/your_user/transmission/complete",

"incomplete-dir-enabled": true,
"incomplete-dir": "/home/your_user/transmission/downloading",

"rpc-authentication-required": false,
"rpc-whitelist-enabled": false,

"watch-dir-enabled": true,
"watch-dir": "/home/your_user/transmission/torrents"

Make sure there's a comma at the end of each line, except for the last one. The last entry (watch-dir), means every torrent file your copy in that folder will be automatically added by Transmission. Download should start only seconds after that.

Port forwarding

For optimal performance in both download and upload, it is recommended to open/forward Transmission's default port, 51413. To do that, you will need to access your router's from your favorite Web browser (usually at or If you need help passed that point, I suggest googling for something like "your_router_model port forwarding". You should find plenty of information.

Access Transmission WebUI

Now that you have stopped the daemon, edited settings.json, and restarted the daemon, you should be able to access the Web interface. Simply navigate to your server/computer's IP and port 9091 (can be changed in settings.json if it doesn't suit your needs), which should look something like:

Last step: show your girlfriend how to add new torrents using WebUI. 😉


Playing Diablo 3 on Ubuntu Made Very Easy!

After trying to install Diablo 3 on my Hackintosh from and original DVD an failing (it installed fine but the game won't start), I decided to look for an Ubuntu solution. This is when I learned about PlayOnLinux, a Wine graphic user interface that makes installation of Windows programs very easy. So here's a VERY EASY guide to install Diablo 3 on Ubuntu with online installation files.

  1. Make sure your game is correctly registered in your Battle.net account
  2. Download the Diable 3 Game Client (for Windows) from that same account
  3. Open the Ubuntu Software Center
  4. Search for PlayOnLinux and install it (this might take a while)
  5. Start PlayOnLinux, and complete the basic configuration steps (mostly automatic)
  6. Click on the Install button, and select the Testing category in the menu on the left
  7. Select Diablo 3, click install, and follow the instructions
  8. Complete the download/install process
  9. You're done! Enjoy Diablo 3 on Ubuntu!

Note: I had a little resolution glitch when first started the game. Changing the resolution from the login screen inside the game fixed it.

Other note: the guys at PlayOnLinux say they will support the DVD install method soon.


If you're using Ubuntu 12.04, and experience the connection error #3007 over and over, here's a solution that seems to work. Before connection, open a terminal and type this command:

echo 0|sudo tee /proc/sys/kernel/yama/ptrace_scope

This solution comes from that thread in PlayOnLinux forums. Please let us know if it works for you or not.


Installing Dictionaries in LibreOffice – Ubuntu 12.04

You just installed or updated to Ubuntu 12.04 (Precise Pangolin), and now you realize you need correction tools for a language that didn't come by default? Follow these very simple steps, and you'll be ready to go in a matter of minutes.

Make sure you have sudo access

First, you need to make sure you have administrator (sudo) rights on your system (which you most probably have if you installed it yourself). If you are not sure you have sudo access on your system, try the following:

  • Open a terminal (can be done from the Dash Home menu)
  • Type the command written below (it updates APT's local package index and is totally inoffensive)
  • The command will ask for the sudo password, enter your usual password
  • If you have sudo access,  you should see a list of package update URLs go through the terminal window
  • If you don't have access, find who does! (sorry, we can't really help you here)
sudo apt-get update

Install dictionary packages

Two packages must be installed. The first is the dictionary itself, the second will add correct hyphenation patterns to LibreOffice's corrector. Examples here are for French, but you only need to change the last part (fr) for the language of your choice. For example: sp for Spanish, or de for German.

sudo apt-get install myspell-fr
sudo apt-get install hyphen-fr

Thesaurus (synonyms and antonyms) for your language

If you are interested in having thesaurus features for your newly installed language, you only need to install one package:

sudo apt-get install mythes-fr

The shortcut to access thesaurus in LibreOffice is CTRL+F7.

Change the default language for all documents

Now that you have installed a new dictionary (and maybe more correction tools), you probably want to change the default language/dictionary for new documents you will create. Here's how to do that:

  1. Open Writer
  2. From the top menu go to: Tools / Options. A new windows will open
  3. In the left menu of this new window, go to: Language Settings / Languages
  4. Look for Default languages for documents, and just under it, choose your preferred language
  5. Take a look at the other options above if you want to
  6. Close the Options windows
  7. You should see the language you have just selected at the center-left of Writer's bottom toolbar

Tips to Strong Passwords for Improved Privacy

Many people think the strongest passwords are those made of special/foreign characters such as É, &, * or ¿. A password looking like g&J2!3aQ must be pretty strong right? What about taking a dictionary word, and replacing letters with numbers, for example, 0r4ng3? Well, these two examples aren't THAT strong.

For a human being without automated tools, the first one is kinda hard to break, and the second one is a bit easier. For a specialized bot though, it's almost as easy as breaking 87654321. Many algorithms exist to help dishonest people break into your email, bank Web access, or social media accounts. I'm sure all of you will want to prevent that. Following are my personal advices for safer passwords (or pass phrases). Some are based on computer science facts, and others on real experiences from friends, and myself. They can't be taken as the ultimate truth, but will help you achieve better safety for your multiple on-line accounts.

Don't use the same password twice

Imagine you are on a public computer signing in to some irrelevant website, let's say to leave a comment on a forum, and someone sees what you are typing: your email address (which is often used as username), and your password. He can now access your email account if it is protected by the same password. From there, he can do almost anything because he'll be able to use the "retrieve your password" feature of all other websites you have an account on.

Prefer a long phrase to a complicated short password

As illustrated in this image, the longer the password, the better. More than that, you can choose it so it's easier for you to remember. "I lost my favorite green shoe" (if it means something to you), is much easier to remember than uJ@ggC9K!.

Some miscellaneous tips for short passwords

If a site limits you to a short password (10 or 12 characters for example), here are some easy tips you can follow :

  • Don't use dictionary words or people/place names, even with numbers at the beginning or end, this is the first thing password crackers will try
  • Same thing with replacing letters with "matching" numbers: m4st3r, those are broken easily
  • Find something easy to remember so you don't have to write it down, for example : 1994 with "turtles" (the year you bought your favorite turtles): 1tURt99Les4
  • You might wanna use a more complex combination of uppercase and lowercase letters, and also numbers to make it hard to break for humans

Don't change your password for no reason

If your account hasn't been compromised, and if you don't have a good reason to change your password, don't change it. You risk forgetting it or maybe not choosing a password as strong as your first one. Remember, it hasn't been cracked yet! 😉

Please, I'm sure some of you readers will have more tips, and maybe discredit mine, who knows. Feel free to leave your comments.


Free Unity 3 “basic” License

Last year I talked a bit about some of my augmented reality projects. Many of you have sent questions and posted comments so I suppose there is a certain level of interest in that field. One of the conclusions I had back then was that to achieve a certain level of quality (great lighting effects, surface reflection, etc.) when rendering a 3D model in an augmented reality project, you better use a good 3D engine (such as Unity). I still think this is true.

Yesterday I "discovered" that Unity is offering its iOS and Android "basic" license for free until April 8th. Normally, you'd have to pay $400 for each of them. So if you were unsure Unity was a good choice for your project of not, go ahead and buy it for free. 😉 What a great way to finally test it out.

  1. Go to https://store.unity3d.com/index.html
  2. Select Unity FREE
  3. Add features: iOS and Android (both free until April 8th)
  4. Proceed to checkout
  5. Open email upon reception, and follow the instructions

Now enjoy your brand new installed Unity development tools!

WordPress SEO