Monday 16 November 2015

Why PaaS sucks

Praising PaaS or SaaS, why not.. yes it saves on maintenance time, thus cost.

The "Cloud" is good, in many ways. But Platform as a Service just sucks. here is why:

- You get application containers out of the box
- Everything is there, what's is left to do is push you app code,
- Here you go your server is running. Rails, Node.js, Java, PHP.
- Those container gets updated automagically, great !

But what is actually running on those hosts ? Errrr whatever the provider choose to maintain.
So, currently, OpenShift decided to stick to Node 0.10

Can I control the container ? no. Can I decide when to upgrade, No !

So I have this baked application, running on Node.js 4, arguably it could run on 0.12. But not on 0.10 (pretty lagging behind there OpenShift!)

[nodejs-hackathonboard.rhcloud.com hackboard]\> node app.js 

events.js:72
        throw er; // Unhandled 'error' event
              ^
Error: listen EACCES
    at errnoException (net.js:905:11)
    at Server._listen2 (net.js:1024:19)
    at listen (net.js:1065:10)
    at Server.listen (net.js:1139:5)
    at EventEmitter.listen (/var/lib/openshift/5649ab437628e1e2a400019f/app-root/runtime/repo/hackboard/node_modules/express/lib/application.js:617:24)
    at Object.<anonymous> (/var/lib/openshift/5649ab437628e1e2a400019f/app-root/runtime/repo/hackboard/app.js:199:5)
    at Module._compile (module.js:456:26)
    at Object.Module._extensions..js (module.js:474:10)
    at Module.load (module.js:356:32)
    at Function.Module._load (module.js:312:12)
    at Function.Module.runMain (module.js:497:10)
    at startup (node.js:119:16)
    at node.js:929:3

Yay, I don't have to maintain the environment or database servers, but I now have to troubleshoot and refactor the application code just to get it running ? ...

Unpacking binary distribution
build/Release/bitcoind.node
build/Release/bitcoind.node.sig
npm ERR! EEXIST, open '/var/lib/openshift/5649ab437628e1e2a400019f/.npm/d6b027ca--npm-bluebird-2-10-2-package-tgz.lock'
File exists: /var/lib/openshift/5649ab437628e1e2a400019f/.npm/d6b027ca--npm-bluebird-2-10-2-package-tgz.lock
Move it away, and try again. 

npm ERR! System Linux 2.6.32-504.34.1.el6.x86_64
npm ERR! command "node" "/opt/rh/nodejs010/root/usr/bin/npm" "install"
npm ERR! cwd /var/lib/openshift/5649ab437628e1e2a400019f/app-root/runtime/repo/hackboard
npm ERR! node -v v0.10.35
npm ERR! npm -v 1.4.28
npm ERR! path /var/lib/openshift/5649ab437628e1e2a400019f/.npm/d6b027ca--npm-bluebird-2-10-2-package-tgz.lock
npm ERR! code EEXIST
npm ERR! errno 47
npm ERR! not ok code 0

Taking those steps wouldn't really solve the core issue anyway, a single dependency requiring a newer versions of the container would make the app fail. Thus forbidding huge portions of the rapidly evolving gems one can find out there for web development.

Sorry PaaS, you already put me off by having to install your own tools just to be able to upload an application, which both with Heroku and OpenShift gave me a headache early on.

I don't call this a sustainable business, hiring engineers to write tools supposedly assisting clients to deploy, run, and scale easily.
What clients need is bare infrastructure, no provider can maintain the numerous combination of versions an application might need to run at best. This business is *not* about solving real problems, it solves some and create a whole bunch of new ones. In particular for production applications.

IaaS is an infrastructure I have full control over, that's what we need. Not a restricted environment where the provider decides which versions to run. It defeats the very purpose of PaaS claims: Getting ride of cumbersome maintenance.

Also, all of this run on hardware provided by other IaaS provider. So, even considering the economy of scale, I'm being charged your service + the service of the IaaS provider, right ?



I will pay for the goods right from the source, EC2, Azure, whatever. No middle men thank you.


Sunday 1 November 2015

What I like about Penang

Staying here for a while here's the good things about this place.




  • Coffee shops generally close after 11pm, and yes there is WiFi.
  • Food is everywhere, a delicious fresh meal costs under £2 with a drink.
  • It's warm 365 days a year.
  • People do speak a decent English in this part of South East Asia.
  • Broadband is truly high speed.
  •  Free 90 days Visa on arrival



Wednesday 8 July 2015

Tools for the job

What are tools for the job, and what job am I talking about ?

Following jeff's article the-programmers-bill-of-rights.html
I spent some serious time trying out various equipement to help me get things done better and faster.

Some set of gear is a must for every software developer, be it professional work or in house development.
So the job target definition is: Achieving completion of pieces of technologies that work together to perform particular tasks.


But this can be applied to other computer based work such as web design, text editing or other long and tedious cycles that millions of people experience every day.

When I realised the productivity I gained by buying myself better equipment, I started enumerating every pieces which would be ideal to optimise work. 

This can be finding a keyboard making one typing faster - but also improving the overall experience of doing some work which also, in the end, increase productivity as there is a gain of focus and some non-coincidental willingness to work a bit longer...

Headphones

Headphones help gain focus. I find that both in the office environment, which can be noisy, and at home in total silence, having some music or white noise going on helps getting in a mind cocoon and get the work the attention it needs.
Non lyrical music being a particular choice.




Some over the head, or in-ear buds are more or less comfortable. With the convenient Amazon return policy, trying out a model for a few days helps pick the right set as wearing those for a couple of hours can become irritating.



The right Keyboard

It's a very personal thing, I find scissor and mechanical types the best. See my other article here that discuss the different keyboard technologies.









Mouse


Must have. Laptops often have decent touch pads, but don't be fooled, nothing is as accurate and fast as using a real optical mouse.

I favour the gaming mice as they offer the best dpi, with a cable so that I never have to worry about batteries, but I also recently used some wireless min-mice from Logitech that I found pretty good, and more convenient to carry outside.







Chair



Considering the hours we spend sitting in front of the screen, it's important to invest in a comfortable and ergonomic chair.

My choice goes for one of those china-made models that copy really got inspiration from high end designer chairs. 













Sweatshirt



Unless work takes place in a tropical country, a comfy and warm sweatshirt helps working long hours without having to worry about the heater.










Laptop



I'm an adept to desktop computers with proper keyboard and large double screens; but also to having a laptop.

Coffee shops are a good fit these days to do real work. My preference goes with no doubt to the macbook pro 13'. I struggle to find non mac hardware doesn't have to make a compromise.
Battery life, solidity, power, and the ability to run all osx, windows, and linux for testing simply makes it the perfect developer laptop



Internet connection

I see too  many IT enthusiasts, or even professionals who are not interested or knowledgeable when it to home broadband connections.
Get the facts straight: latency, downstream vs upstream bandwidth, network shaping and get yourself a quality hook to the cloud.



Also make sure that WiFi equipment internet provider sent you is reasonable. I find quality routers/WiFi to be a little hard to find for free.