My JavaScript book is out! Don't miss the opportunity to upgrade your beginner or average dev skills.

Friday, February 27, 2015

It's your duty to develop for the Web

Let me start saying that all companies mentioned in this post resolved all problems at speed light, and either apologized or cared about the bad experience: kudos that!
There is a very annoying trend these days where any Web related issue ends up with a question like: "have you tried using Chrome?"
The moment the user's browser of choice becomes the reason an online service doesn't work, is the moment we should all realized how much we failed in promoting web standards and how many so called web developers out there are doing it wrong.

You have one job!

Web developers are a very privileged category of workers that happily live in the tech bubble.
We earn more than many other hard workers but that is not the problem: broken services, poorly developed websites, missing cross-browsers and cross-platforms tests are the problem!
If you offer a website and you do not explicitly say that only one browser is supported, going back about 20 years in competence, a time where websites where optimized for IE only, these kind of answers should never be allowed in any help desk on the Internet planet:
Even worst, if you offer "a front-to-back HTML5 app development environment for cross-platform apps." to develop HTML5, and you take care of a hub about Web development, an answer like this one should be flagged as the last resource you have once everything else possible has been verified and you are asking for a full bug report.
Apparently, it's way easier to blame the user browser, somehow also going a little bit against anti-trust rules, and somehow washing your hands about problems ... but we are all better than this, I am pretty sure everyone would agree here.
( also let me underline they came back ASAP and I couldn't reproduce the problem anymore. I also managed to buy the Ubuntu phone few hours later so that is a good service! )

Even IE moved on, so should you!

Internet Explorer marked the history of the Web. Regardless it has been most of the time the only supported browser for the first 10 years and counting, it got it eventually right, embracing standards, and contributing to make them, as much as it could.
A break from the past: the birth of Microsoft's new web rendering engine, is just the latest effort Microsoft is putting in order to be more standard and competitive than ever.
They had all developers for them at the beginning of the time and regardless, they failed at following standards until IE9, released in early 2011!
The sad story here is that apparently nobody learned the lesson so that Apple is still doing this right now.

It's your duty to develop for the Web

I don't want to go too deep into the infinite amount of problems we still have on-and-off-line, but if your business has anything to do with a browser here a quick reminder of what does it mean and, if you claim to be a web developer, what you should do:
  • learn Web Standards and don't let automations overbear your skills. Everyone can use "that IDE" so ... do you want to be good at what you do, or be just an overpaid dummy wannabe, as anyone else could be?
  • do not ever blame the user browser and fix your service, or define your targets upfront: do some feature detection, understand if your service can work on that browser before offering the service and eventually inform the user that some functionality, or the entire service, might not work. Yes, your library should be so cool to trigger something like an unsupportedFeaturesDetected ASAP or your page could use Modernizr and behave accordingly
  • you are eventually justified for IE8 and lower, if these are not explicitly your supported target, for everything else you have free access to every single possible Desktop browser: you can either download them or simulate them. You also have to test them through any sort of tool that could help: writing tests is not an option!
  • if it's mobile web that you are targeting, and not only a specific platform, throw away from the window your spoiled last minute SmartPhone because real people out there don't change phone every 6 months and don't spend a fortune each time. They also don't change contracts and related phone so frequently, since specially in the US this thing about buying unlocked smart-phones is apparently inconceivable and everyone tests on iPhone 6 .... yeah, 60FPS there ... now, test the rest of the world too!
I feel like I cannot stress this enough but I feel like we all failed here. I've failed spreading good practices, other failed even hiring people that don't care or don't know how to cross-platform ... can we please go back to the Web for everyone that we all love?

Thank you to all colleagues and to all online activities, and next time somebody asks you "have you tried Chrome?", feel free to answer: "do you know anything about Web development?", 'cause it's about the time to stop blaming customers and start looking at who's being the real incompetent here.


We reached full circle now:

The Unsucked Web Manifesto

There's much more to do than just support browsers, as @UnsuckTheWeb reminds us, so let's keep most basic facts in mind every time we develop something, shall we?

Monday, February 23, 2015

Meet archibold, my daily OS

If you are looking for an Open Source Operating System that is constantly updated, Arch Linux would likely be your choice. Put the latest GNOME on top of it, and you are in a pretty sweet damn good looking OS that will give you everything you need. Would you like to install this stack but not 100% sure how? Meet archibold!

archibold: a zero hassle installer

The "Arch way" is to learn through the amazing documentation the same community created and keep updated through their wiki.
I am one of those that learned the hard way every single thing I needed, but I am also a very pragmatic and DRY person.
As example, there are subtle, problematic, not-always-clear "little gotchas" when you want to install an Operating System, such:
  • how to correctly partition the HD?
  • what is EFI boot loader and how can I customize it?
  • how to create a graphical EFI compatible splash screen that actually works?
  • what's the minimum amount of packages I need?
  • how to login automatically?
  • how to configure a full Desktop environment?
  • how to install, remove, or search for new software?
  • and what if the software is not officially supported?
  • will the terminal open new tabs in the current folder?
I strongly believe everyone should be welcomed as much as possible in the Open Source Desktop community, so why not making an installer capable of bringing a delightful and easy to use experience to all people that would like to upgrade to Linux?

... and a zero hassle manager

Once your PC will boot into GNOME, you can always open the terminal and type archibold:
$ archibold

|                  |
| archibold v0.3.0 |


  archibold [clean|update|upgrade]
  archibold [install|remove|search] package-name

 list of included AUR packages:

  acroread                # Adobe Acrobat Reader
  broadcom-wl-dkms        # Broadcom wifi
  dropbox                 # Dropbox client
  google-chrome-dev       # Chrome dev channel
  spotify                 # music baby!
  sublime-text-nightly    # Sublime 3

These are most common tasks I could think of, but of course all usual functionalities and software provided by default will be available too.
You have the freedom to learn with the ability to start easy, reducing the learning curve to the minimum.
There are also few problem solving hints and everything else needed could be found in the Arch Linux forum or wiki: just please search before opening a thread, I can assure you 99% of the time the problem is well known and documented.

About Compatibility

Right now everything based on Intel works out of the box, but most laptops come with a Broadcom WiFi and Bluetooth that might require extra hassle to be installed. This is where archibold install broadcom-wl-dkms becomes handy, you don't need to know everything about Dynamic Kernel Module Support the first time you boot your new Desktop environment, you have a ready-to-go solution and the ability, once your WiFi works, to surf all related must know things about it.

Enjoy and ...

I hope you'll be bold enough to try it out at least in a spare laptop, Intel NUC, Mac Mini from 2010, MinnowBoard Max, Lenovo Yoga 3 Pro or Samsung serie 9 or any other tested device I could try and please bear in mind that archibold is suitable for every kind of user, not only nerds/gurus/developers, even non techy people can enjoy GNOME on Arch Linux, is that beautiful, that powerful, always updated, and finally easy to install and use for very basic tasks.
Let me know how that goes, but please read all installation infos in the archibold site.

Tuesday, February 17, 2015

A disappointing journey in the laptop industry

update as if everything I've written and experienced wasn't already disappointing enough, this security hole caused by this nonsense software installed by Lenovo to "help us", should give you an indication of how badly are ingenuous Laptop customers treated these days. But please, find out even more problems in this blog-post!
When I've left all big, cuddling, lovely, companies that gave me a MacBook Air/Pro for the last 6 years, I couldn't believe how difficult would have been to replace such important part of my daily life.
This is the story of a "once technical assistant at the Computer Shop behind the corner" person that, 18 years later, miserably failed at persecuting his ideals trying to go full Open Source.

Why I wanted an Apple alternative!

The "just work" company disappointed me so much with Yosemite I didn't want to waste my money there. I have the latest Mac Mini with the latest software in, and I've bought it after my good older Mac Mini became utterly slow behind some free OS update.
Guess what, this latest Mac Mini with best CPU and max amount of RAM already works quite slow and I haven't even installed much software in it.
I use stock OSX iTunes, Safari, everything that was already installed and Spotify that does not even start automatically, and I have the feeling it's slow! When you spend some money for "the latest, the greatest", that's not exactly the feeling you'd expect, right?
I also don't like much iTunes or the Apple store, way too close systems that together with most of the rest of OSX does not give me the feeling I am helping, improving, using, or contributing, to what I love the most and do daily: Open Source!
Will I keep using the MacMini? Yes, when I need to test stuff on OSX or as entertainment "box" (it hurts me calling it like that, it could be much more), but it's not portable and it does not give me the freedom I am looking for with everything else.

Hence the problem(s) ...

The list of well known, and unexpected things, I've discovered last month of my life were unthinkable 18 years ago. Where is all this going and why?
You might think this post is about suggesting to boycott everything that is not Open Source, you'll actually realize that who's actually boycotting the Open Source community is the industry itself, with all its caveats, locks, and constrains, that the industry itself created: keep reading if you are still here!

They don't give you a Zero OS option

This is the very first problem I've encountered: there is no such option as let me buy this laptop without a pre-installed Operating System.
The result is that you have to pay Windows licenses, it's included in the price!
And when the price is that low, is not because the OS license got cheaper, the new hardware you choose is crappier than others, and you are paying $50 extra for that license anyway.
OK, to be fair, sometimes you have the option to give the license back and being refunded ... now how much pointless bureaucracy this procedure adds is not the problem; the problem is that the moment you sign-up for such option you basically give up any sort of warranty about your machine.
They are unable to provide assistance to non Windows OS, there's no Help Desk worth or specialized enough behind laptops, you are on your own ... with your problems, and I'll tell you all of them pretty soon!

Locked up BIOS

This was one of the biggest surprise from those days where building up your own Desktop PC was all about changing and upgrading your underlying system so that you didn't have to buy another PC from scratch, you could simply change a component and be good to go.
Not anymore ... let's see what happened here, shall we? My Lenovo Yoga 3 Pro, the laptop I've mistakenly chosen as daily buddy for my work, is telling me that the Intel Dual Band Wireless AC 7265 card I've bought due problems with the bundled, closed-source, BROADCOM wi-fi Bluetooth module crap, is unauthorized.
Basically, Lenovo used a BIOS that locked its own component up so that I cannot upgrade for good. Unauthorized? What does it mean, not compatible or something?
[webreflection@Lenovo-Yoga-Pro ~]$ lspci
00:00.0 Host bridge: Intel Corporation Broadwell-U Host Bridge -OPI (rev 08)
00:02.0 VGA compatible controller: Intel Corporation Broadwell-U Integrated Graphics (rev 08)
00:03.0 Audio device: Intel Corporation Broadwell-U Audio Controller (rev 08)
00:04.0 Signal processing controller: Intel Corporation Broadwell-U Camarillo Device (rev 08)
00:14.0 USB controller: Intel Corporation Wildcat Point-LP USB xHCI Controller (rev 03)
00:16.0 Communication controller: Intel Corporation Wildcat Point-LP MEI Controller #1 (rev 03)
00:1b.0 Audio device: Intel Corporation Wildcat Point-LP High Definition Audio Controller (rev 03)
00:1c.0 PCI bridge: Intel Corporation Wildcat Point-LP PCI Express Root Port #3 (rev e3)
00:1f.0 ISA bridge: Intel Corporation Wildcat Point-LP LPC Controller (rev 03)
00:1f.2 SATA controller: Intel Corporation Wildcat Point-LP SATA Controller [AHCI Mode] (rev 03)
00:1f.3 SMBus: Intel Corporation Wildcat Point-LP SMBus Controller (rev 03)
00:1f.6 Signal processing controller: Intel Corporation Wildcat Point-LP Thermal Management Controller (rev 03)
01:00.0 Network controller: Broadcom Corporation BCM4352 802.11ac Wireless Network Adapter (rev 03)
Above is the list of components my Open Source OS uses to work, these are all Intel but the last line: Broadcom
That Broadcom controller has no Open Source drivers, and when I've found myself (together with many others) few days ago unable to use my laptop, I've instantly bought the Intel wifi replacement.
It's natively supported by my kernel and OS but my laptop BIOS decided to not authorize it, whatever the f#£k that means!

Not only Lenovo

Bear in mind that this is not Lenovo only, the MeegoPad T01 PC Stick, as example, has the worst from both worlds: you cannot easily put linux on it, due hybrid EFI 32bit boot VS 64bit system which has still many issues, and a preinstalled Windows you don't pay until it expires: it's sold unlicensed, meaning you are screwed when that evaluation time will go.
Avoid that product, if you want my advice, the MinnowBoard MAX is a way nicer device for all your experiments and it's not bound to any OS and its bios is upgradable via console (also EFI64 compatible!).

Locked Upgrades

This is the other screwed up part: if you don't have Windows, you cannot update your BIOS.

That, my dear reader, is a clear "you MUST use Windows or you cannot update what you bought" message, and I won't be able anymore in my life to update the bios of this piece of crap that does not let me install an Intel thing in a 99% Intel system.


It does not matter if you even read an Open Hardware symbol in your dev board, that does not mean what you think it does.

Above symbol means that schematics of your boards and info/names about components it uses, are freely available. This does not mean Open Source drivers, which is usually the very first big mistake everyone does in the industry, this means that if you are a Chinese factory maybe you can reproduce such board, if you're allowed of doing so.
Drivers are the main problem in Open Source OS and development, these are most of the time clsoed source. Your Mali GPU in your Open Source phone is goddamn closed source, and your Raspberry PI has a VideoCore GPU driver that is half closed source too and my bloody Broadcom WiFi module also has a bloody hybrid driver that is half closed source!
I don't want to deal with any of this anymore because if Intel can have Open Source drivers for basically every-fucking-thing it produces out there, so could every other company in this world. What's the secret behind? Why we cannot have good reliablity and performance in OS world too?
Why is that, since most of these same companies develop their own stuff in Open Source environments? I don't understand!

So here a quick rule of tumb: is that an Intel thing? Full intel thing? Go for it!

Otherwise be sure you've spent weeks finding out if that little component in the entire Open Source system could be the bottleneck of whatever you want to do with your laptop, developer board, hardware whatsoever!
Do you have a granted problem-free ability to use the closed source within the Open Source env and you don't mind it? Go for it, but ask yourself why it has to be like that ... and please tell me once you find the answer!


This is the other big topic that everyone in this planet seems to ignore when it comes to electronics.
We all love the unfolding experience we have with modern devices, where most of the time the envelop is fully recyclable ... so adorable, isn't it?
Then there is a world behind chips we ignore, where Intel in pursuit of conflict free supply chains becomes also an etic must.
Lenovo, at that time, was the only one providing a laptop with 5th gen Intel CPUs, a generation born behind this Intel's Conflict Free initiative, the only CPU I felt comfortable, from the top of my privileged life, to buy.
I must be honest, I've no idea about other non-intel components inside this machine, but I've done what I could to be a responsible buyer.

Anyway, if Conflict Free Minerals are hard to understand, imagine everytime you buy chips (or Doritos), you gonna end up in the very same way with local people, instead of trees: Have I convinced you Intel is trying to do better than others in basically all fields?

Essential hints for an Open Source Laptop

This is what I'd do differently if I was aware already about all these tiny details that screwed my new laptop experience very badly:
  • be sure all components are Intel or have Open Source drivers. AFAIK Samsung has some Laptop like this and they write all specs on the site.
  • try to understand if you can get rid of the Windows OS or License without loosing your laptop warranty. I even have a Windows License/Nuber in my Yoga BIOS, that's just ridiculous, as example!
  • try to understand if who's selling you the laptop provides at least BIOS upgrades for Linux. Most vendors do, Lenovo seemed to ignore Linux completely, at least for the Yoga line, but just one of them means they don't just care, period!
  • last, but not least, try to understand if components are green, conflicts free, sustainable, and everything else you could do as responsible buyer to make this world a better place for everyone else, including yourself
Once you've done all this, give also archibold installer a try, before going with other mainstream distros: it's GNOME on ArchLinux and I can assure you it's a damn pleasant environment to be, more than good old snappy OS X if I might, very smooth, very complete, very nice!
And that's all folks