Friday, March 7, 2014

Independant Review of the Bitcoin ecosystem

Recent actualities stroked the Bitcoin world. A major exchange, Mt Gox closed. Smaller ones, like flex coin closed too. These news are mainly the result, of either fraud or blatant security incompetence from these exchanges. But, according to me (make your own opinion), there are more pressing concerns about the Bitcoin ecosystem. Here are the top 3 reasons I think Bitcoiners should worry about :

1) Mining pools : Bitcoin protocol security is based on the condition that no actor can get more than 50 % of computing power. The hashrate distribution shows that bitcoin is almost a centralized system were 2 or 3 actors, control more than the mythical 50%, this is quite bad for a wannabee "decentralized" currency.
Did I mention that the actors who rules the mining pools are in majority pseudonymous?
The existence of mining pools derives from the fact that only a block is only mined every around 10 minutes, so there is only one winning miner per 10 minutes (there are security problems to reducing this interval to under one minute), which means that miners lose most of the time, so it soons became interesting for miners to smooth their income revenue.
Mining pools are kind of electoral representatives, miners vote for them, but in the end mining pools can do whatever they want.

2) Mining hardware limits : Most bitcoins are mined using specialized hardware cards, which is currently mining at about 2Th/s.
   This hardware market has its own flaws exacerbated by the low morality of most of its actors. Currently this hardware pre-manufacturing buy market is ruled by KNCMiner and Cointerra which both by the way have higher morality than others. This mean that if you want to participate in the Bitcoin decentralized regulation process, by voting with your computing power, you must pre-buy from one of this 2 company. Bitcoin is like a democracy where you have to buy your voting bulletins 3 months in advance with no guarantee that they are delivered before the elections if they are at all delivered.
But most importantly the 2Th/s bring us close to an electrical consumption of around 2500W. Which bring us very close to the limit of electricity consumption available to individuals in most european and american countries. This means that most individuals cannot mine (or won't soon be able to) anymore.

3) Centralized security review : Bitcoin protocol is not really a protocol implemented in software but a software defining a protocol. This software "bitcoind" which derive from original Nakamoto (is it him ?) code is a sort of spaghetti legacy code. Although there are some nice ideas in the code it's very far from being clean. But the problem, is with the reporting, if you find a security leak and want to help you either have to go public or exchange via PGP and convince a benevolent developer that there is a bug in the code he wrote that could result in serious financial loss for many low morality people.
By the way, although the cryptographic part of the code may be safe, I definitely believe the network part is not safe enough, but I guess I have higher standards (and higher revenue?) than the developer I reported it to.
The problem of "transaction malleability" that allowed the disappearance of Mt Gox, has been public since 2011, yet silently ignored by various actors.

Did I mention the funny 3-step 11 slides cavalry plan of Mt Gox to illustrate the morality level of various Bitcoin actors ?

But all this FUD should not make the bitcoiner in you afraid. There is money to be made, this is a bubble that won't pop out today, it will rise because all invested actors has an interest for it to rise. It's a pyramidal scheme that still has space to grow. Yet crypto-currencies are useful and have the potential to change positively the face of the world. We are not there yet, but by highlighting current fragility points, we are giving the opportunity to build a better one.

Le Vent se Lève, il faut tenter de vivre.





Saturday, May 18, 2013

Filter bubbles endangering Internet freedoms

The "filter bubble" is a kind of media bias ; resulting from over-personnalization, it tends to feed you only with "confortable" informations, isolating you inside your own bubble of filtered informations from the wide variety of opinions of the world.

In random graphs theory there is an interesting phenomenon called percolation. It basically says that when you have a very large random graph, depending on the average of the local structure (i.e. how many links each node have), you can determine some properties with respect to the general connectivity of the graph, and the number of hops you need to get from one node to the next. High percolation value means few hops are needed to navigate between to different ideas.
What the mathematical theory says is that depending on the local structure, there is a strong threshold effect where if you had just a little more local connectivity, you would need exponentially less hops to reach any other node in average.

"Filter bubbles" are appearing because by a clever choice of (search engine) personnalization policies we are now losing the high percolation value.

It results from the algorithms used inside search engines, which analyses your online behavior, and decides to push you the information, you will most likely enjoy. Infomation is now personalized so much that when you search for something, you will probably only find something that shares your point of view with regard to the subject you searched, which will tend to confort you on your own perspective, but at the same time, you are less and less confronted with opposite perspectives. 



This bias is particulary hard to avoid, and is self reinforcing, because of economic interest of various actors. I think it's becoming increasingly overwhelming these days mainly because of another bias of search engines, which is ultra-specialization. Most search-engine-visible websites, are now ultra specific to your query. This mean that when you have visited one page of the website you will most likely go back to the search engine, rather than following a link on the website to an unrelated surprisingly interessant subject.

It is getting harder and harder to escape from filter bubbles.

How to avoid them : As a user the cleanest way to avoid getting trapped in a filter bubble is to have control on the filter. Unfortunately, that's not something search-engines offer for now.
As a user, being aware of them and searching for a wide variety of point of views is a good step. You can also start following some website that spreads ideas on various unrelated subjects. Would the percolation number be higher would I recommend to follow links rather than using search engines.
Social medias, are not an answer to this phenomenon, as friends and communities typically show a strong cluster-like behaviour.
As a blogger, if you feel the courage (massive de-ranking is previsible), you can contribute by diversifying your blog so you could expose to a wider variety of subjects.

Friday, May 17, 2013

Quantum computing : the end of Moore's law ?

This week, independent tests have been passed by DWaveSys. A company, that has been working on quantum computing for a few years now. It was the source of some controversy in the past, but it seems that the doubts were not founded. 

The principle they use is quantum annealing. It's the property of matter to rest in the state of lowest energy when put near 0 degree Kelvin. Using some digital analog converters, they can define some energy landscapes corresponding to the problem they wish to solve, then cool the computer, then read the states of the qubits.

The results are in. When running full-hardware (i.e. best case) it's 3600 times faster than a software version at solving the particular minimisation problem (a version of the Ising problem (which is NP-Complete so it holds the promise of solving all NP-hard problems in polynomial time ) ). But what's important is not that it's more than 3 orders of magnitude faster, it's that up to now the scaling is exponential (more exactly it scales in exp( sqrt( number of qubits) ). This means that when the number of qubits will be 4 times greater, the chip will be 10 000 000 times faster than software. If the trend continues as it seems it would, moore's law will no longer hold, but contrary to what pessimistic minds could have thought, it would no longer hold because the scaling would now be doubly exponential.

Singularity, may just be a few years away...

Wednesday, May 8, 2013

Physic cooking tips

Barbecue times are coming. It reminds me of the observations I made a few times when seeing different people cooking raw cow steaks using frying pans. Basically it can be summed up as : "most people have no ideas of the physics of cooking" . They have no clue regarding how to control the fire. They have no clue regarding the flipping of the steak. And what's even more frightening, is that often this results in risks for your health. So let me show you how to improve.

Why are we cooking things ? The first reason is a sanatory one. Cooking kills bacterias. To kill bacterias by cooking, you need to have the temperature inside the bacteria maintained over a temperature for a certain time. Sterilisation time-temperature charts varies with bacterias, but you can consider that  if the raw meat cell is cooked, bacterias are dead. For cow steaks, dangerous bacterias are only on surface of the raw steak. This mean that if your steak is raw you can cook only the sides, but if your steak is grounded, you need to cook the inside (because bacteria that were on the sides are now everywhere). Depending on the type of meat you are cooking you may or may not cook only the surface. For exemple chicken, pork and most fishes should be cooked to the heart. The second reason for cooking is to ease digestion. Cooking chemichal reactions are somehow similar to reactions that will occur in your stomach. Stomachs used only to cooked food, may need some time to adapt to rawer food.

Now that we know  how it can be cooked, we need to know how to cook it the right way. Cooking is all about controling the "temperature over time" inside the meat. So you need to understand the heat diffusion inside the meat. The rule is that heat transferts are slow, and the speed of heat transfert depend on the local difference (gradient) of temperature. This mean for example that if the temperature on the side is very high, the heat will not have time to propagate inside the meat, and only the exterior will be cooked very rapidly. If the temperature on the side is lower, then heat will have time to be diffused inside the meat, and the meat will be cooked to the heart. The thickier the steak, the more time it takes to heat the heart. Flipping a steak, allow to bring quickly down the temperature of a side.

Now we need to know how to precisely set the temperature of one side. This is usually done using grease. This provide an accurate mean of setting the temperature, because we have a nice physic property which states that at a given pressure, vaporisation occurs at a constant temperature. (Around 200 Celsius depending on the oil). This mean that if you use some grease, as long as the grease is bubbling, the temperature is precisely known. No matter how strong the grease is bubbling, it will be at the same temperature, but if it bubbles strongly, the grease will evaporate and disappear more quickly while forming lots of fumes. Once the thin layer of grease between the pan and the steak has evaporated, temperatures will skyrocket and your steak will get carbonised on the outsides, grease fumes might get carbonated which is cancerigenic. So the way to regulate the fire is to set it as low as possible while preserving a bubbling greese, ideally when the fire is perfect, only the greese below and near the steak should bubble, and fumes should be quasi inexistent.
When flipping a steak be sure to maintain a thin layer of greese between the steak and the pan.

Now the last thing you need to know is that "cooking" is in fact modifying the internal structure of the meat. "Cooking" are chemical reactions that occur inside the meat. There are plenty of various reactions, but each of these reactions occurs at different speed, speed of which depends both on the reaction, and the temperature. By controlling the temperature precisely inside the meat, you can favor certain chemical reactions, and limit negative ones (like carbonization). 
An other factor that you can modify is the inner pH by cooking with some acids.

Hopefully, you now have a physically correct model, of the cooking process, which will allow you if you use a chronometer (up to seconds (once cooked remove from the pan to slow down the cooking process) ), to cook consistently. This model will help you understand what you are doing, which will make more easy to cook safely according to your tastes. 

A corrolary of this model you can use to cook salmon steak with a frying pan :  put a thin layer of water, make it boil, put the fish in the frying pan, skin side down, cover the frying pan to keep the vapor inside. As long as there is liquid water in the pan, the steam will stay 100 Celsius. Cook to the heart, find the time needed depending on the thickness. Because we only heat with less than 100 Celsius, the inside won't go higher than 100 Celsius, therefore the fish will retain its water and savor.



Saturday, January 12, 2013

Having fun with the java zero day vulnerability

One more time, there is a java zero day in the wild. There are not yet any fix except for disabling java plugin.

This vulnerability is a great introduction to computer security, for three reasons : First it is high level and very simple to use. Second, it's very effective, and lot of people are affected (Every one using java 1.7.xxx 100% of time, mac, windows, linux, any browser (even so some browser require the user to click "execute this applet" )). Third, it's not yet patched :-)

What you need to realise the attack : 
Have your target visit a webpage that displays a custom made java applet, this java applet will have full access, that's it, game almost over... (For it to be really game over : add privilege escalation then rootkit to the list)

How do you create the custom made java applet :

You copy paste from the code source avalaible on

(or https://gist.github.com/4506143 for line by line explanation)
in a file yourfilename.java (name of the file should match class name)
Fix the (intended) small mistakes ( add line 24 :

public class yourfilename extends Applet {

and fix the missing " in place of " in ByteArrayWithSecOff )

Compile with javac from a 1.7.010 JDK. You obtain a yourfilename.class that you should put somewhere on the web.
In the webpage source your target will see add 

<applet code="pathtoyourfilename.class" width="300" height ="300">

You can now test it. The victim should see a calculator opening when executing the applet.
(If you test it locally, you need a webserver to serve the html page in http(s) so that in the address bar there is 'localhost'  (instead of file:/// ) )
Depending on browser settings, it may not require any user interaction.


If you want to modify it, you just have to substitute 
Runtime.getRuntime().exec("calc.exe"); //Adapt on linux or mac
By any java code you want. 

Of course if you don't want to enter in so much details, you could just use metasploit (where there is more documentation).

Variating the source while keeping its spirit combined by serving from infected clients should allow to circumvent many antivirus. 
This vulnerability is itself a variant of a vulnerability from august 2012.

R.I.P Aaron Swartz

Tuesday, December 18, 2012

Killing the mouse with firefox

As part of a 10-foot experiment, I decided to use only a keyboard. 
I'm currently on Ubuntu 12.04. 

To use your computer efficiently from a distance, you will need a complete wireless keyboard with arrows and numerical pad. If it even has an included mouse it may help you to start and in some circumstances (like controlling some javascript buttons) but it is counterproductive in general.

I recommend you install firefox with the following add-ins : 

-AddBlock Plus (nothing more painful than a blinking add on your fullscreen TV with sound)

-Custom New Tab (so that the focus is not lost when you create a new tab)

-Stylish (so that you can install a style to remove the scrollbars (totally hide scrollbars) as they would now be useless)

-Vimperator (it will take a little time to get use to it except if you are a vim fan but it will allow you to easily follow links)

In firefox check that the option : Display, Zoom, Zoom Text-Only is disabled, it gives poor results when you need to often zoom in and out like you will in a 10-foot experiment.

Useful key for Vimperator : Insert : toggle vimperator
                                                  f : show hints to follow

Useful shortcut to learn for firefox : zoom-in (Ctrl + "+"), zoom-out (Ctrl + "-"), back (alt + left); forward (alt + right), home (alt + home), arrows, new tab (Ctrl + t), rotate tabs (Ctrl + tab), fullscreen F11

There probably exist a plugin to be able to use Vimperator to launch flash video but I have not yet found it.

Choosing a new computer

My computer, a mid-high range laptop from early 2009, was quite old, and couldn't handle the work he was required to do. So I needed a new computer. Choosing a new computer is somehow quite a strategic move. I could go a few different ways. I will here try to explain my reasoning.

First I could follow the consumer trend and go tablet, keyboard, cloud. The plan is renting a dedicated machine for 45$ a month, to have high bandwidth and a non restrictive computer remotely controlled by a cheap tablet when need be.

This solution has the advantage of being able to be fully mobile and quite cheap. The main inconvenient is that this solution is still restrictive, and require lot of work to do natural things. Mobile platforms like iOS or Android are quite restrictive by default. The second non negligible inconvenient is that I lost control over my computing and my data. Third inconvenient is that I lose the ability to play powerful games mainly for latency issues (though it should change in the future when higher bandwidth network will be available).

Second I could go the laptop way. It's the old fashion choice. I guess it's quite OK, but rather expensive. It's expensive because computer seller would rather sell you some tablets, so laptops are becoming more expensive. Would have I selected this option, I would have chosen a Retina Mac Book pro, mainly for the display. But it's very expensive and the disk is so small, it cannot handle a correct triple boot computer.

Third choice, and the one I have selected, is to have a home desktop computer, for use as a home server. If you buy it from distributors, it's quite expansive because they take such a large margin to compensate for the lost market due to the arrival of tablets. But if you assemble your computer from new computer parts, and that's so easy for anyone, it's really cheap (less than 1000$), powerful (4 core, 8thread @ 3.5Ghz, 16Go Ram, 3 To hard disk), and customizable. Concerning display, you can use the living room TV screen, to enjoy a 10 foot-experience, raspberry-pi for display on any screen, and remoting with Splashtop for a fully mobile tablet screen experience.

This third option is I believe the smartest choice for about any home computing need, it will allow efficient use of both tablets, and clouds.





Splashtop

Splashtop initiates the new generation of remoting. It's like VNC but with sound, and so much faster with such a low latency that you can even play video games. VNC should have evolved this way long ago.

This a partially closed source shareware which is its main problem especially with regards to security. It is designed so that you can use your tablet as a screen to your computer.

It still misses a lot of platforms but it is currently rapidly evolving over the course of a few months.

Inconvenient : you need a SplashTop account which you can currently only create with the use of a tablet.

My current tests : streamer (beta) on Ubuntu, client on android iconia tab over a wifi local network.
Positive points : -Impressive performance
                          -Very responsive.
Negative points : -usb keyboard by default only partially supported (although it maybe because of the tablet) ; in particular the navigation keys (which are supported through VNC on the same tablet)
                            -real mouse supported in an unintuitive fashion.
                          -Stability problems (but it's only beta), if you don't have a fix ip, it will not work for a long time, you will lost connection without being able to reconnect. Some keyboard input on the client make the streamer crash. It crashed 3 times in 30 minutes. It sometimes even crash the unity desktop when used in conjunction with x11vncserver. 

Assemble your computer

This is the smart thing to do when it comes to computers. You have to assemble them yourself. It's fast, easy and will save you thousands of dollars. Simple how to :
(Browse http://www.rue-montgallet.com/ to easily filter components)

1) Choose your processor brand : mainly Intel or Amd
This is a personal choice though Intel have easier to find linux drivers, and are the only way to go for hackintosh.

2) Choose your processor according to your budget and computer need. The best computer power per $ is around a 350$ processor. Each processor has a specific "Socket" that will allow to interface with the motherboard. For example for Intel i7 3770K the socket is 1155.

3) Choose the form factor of your computer. Should it be small or big. Should it possible to add lots of cards in it. What your computer should look like. For example if you want a small computer you can choose the mini-ITX format.

4) Choose the mother board : It must have a compatible socket, and a compatible format, and a compatible chipset. The mother board is what will allow you to connect your computer to the world, so choose one with the functionality you need (like hdmi output, wifi, bluetooth, pci16x ports, usb3). It will have a ram specification frequency and maximum ram memory. And an hard drive format.

5) Choose the ram, with a compatible frequency in the allowed sized range, Most important criterion is size, then frequency, higher frequency ram is faster but more expensive per dollar, and the best speed / $ is for ram around 1600Mhz.

6) Choose your disk. Solid State Drives are silent and fast but small, ideal for system disks. Hard-drive are bigger but noisy and slow.

7) Optionally, if neither your processor or mother board has a graphical unit, you will need a graphic card. Choose one that will interface with the mother board. Check the compatibility on-line on the graphic card manufacturer site.

8) Choose the power block and box.
Should be compatible with the mother board format. It will contribute a lot to the noise level of the computer. Should be able to provide enough power. If you don't use a graphic card, and don't use a lot of power, use a mini-itx format you can use a silent small power source from mini-box.

My configuration : 680€ all tax included (less than 1000$), in France, probably cheaper in the US.

Processor : Intel i7 3770k (4 cores - 8 threads @ 3.5Ghz overclockable up to 5Ghz with water-cooling)

Motherboard : Gigabyte Z77N-wifi It has the mini-ITX format, dual Gigabyte, dual HDMI, usb 3.0, 2 sata III ports, one pci 16x port, wifi, bluetooth. (This mother board is a really good bargain)

Memory : Kingston 1600Mhz 16Go

Hard-drive : Baracuda 3To 7500rpm (quite silent)

Box : Elite Advanced 120 (quite silent), mini itx could have a much more smaller box, but this one allow for about any graphic card.

Power : Be quiet 480 W (quite noisy) but I will soon buy picoPSU-160-XT from minibox so that it become more silent

Graphic card : None

Display : Any recent Tv, although you will need a DVI monitor to access BIOS if it does not recognize your TV.

Operating System : Tested on Ubuntu 12.04 fully operational. Should work on Windows 8. Should work for hackintosh except for the integrated wifi.
Please do not install Ubuntu 12.10, it is spy-ware.

Assembly in 30 minutes with experience and 4 hour with no experience including time to watch youtube video to learn how to assemble the pc, or reading the motherboard manual.
First elementary rule to follow to avoid frying a component : always plug off your computer when you insert or remove parts or components.

Second elementary rule : don't panic; there is no need to. Double-check when in doubt. Computer parts are quite robust (much more than you think), but yet avoid putting your finger on the processor connectors.

For the first boot you will need a bootable usb key which you can create with linux live usb key creator, or a windows 8 usb key which you can create via the microsoft site. You then just have to follow on-screen instructions.











Sunday, November 18, 2012

Typewriting Accessibility

My grandfather used to typewrite in the past, but has used computers very little. He recently turned 90, and begins to use an android tablet. His main motivation for the use of the tablet, is to be able to write a book he cares about. It has been for me the opportunity, to improve my skills with regards to accessibility. The problem I have to resolve is to make the task accessible to my grandfather, so that he can use it without me, without errors, without losing his work and still be able to get my help from a distance when he needs it.

It was also my first experience with an android tablet. Well It was really disappointing. Globally it works OK, but the devil is in the details. My first idea was to check for an easy typewriting application. But I couldn't find any which was not missing a key feature : Only one action to open document, fullscreen, autosave, automatic versioning, block caret, simplest possible use, and keyboard accessibility features. 

Then I basically have two choices, either I roll my own android application, or I go for the quick win with remoting. I choose to go with the quick win. I go to the android market to get a vnc app. The free android vnc app looks exactly like the one I want : one click access to the remote location. But it's missing a key simple feature, which makes it useless over distance : compression (and encryption)!!! Other numerous free vnc applications are all harder to use, and miss some features. Except for one : "free bVNC",  which is the open souce android vnc app with the missing feature added by some russian developper. Exactly what I needed. 

Then I'm back in kwown world. On a computer somewhere in the world, I create a virtual machine, install Centos 6, install geany (i.e. notepad++), configure block caret in geany, configure current line color, configure keyboard with accessibility options (filter fast repeated key), adding autosave/autoarchive plugin to geany. Adding the file to a versionning system (mercurial with a little script to autocommit and an occasionnal save to a remote location). Then fullscreen in geany. (The only drawback of geany is that in fullscreen mode you have still a menu line (but you can modifiy the source if you want) ). I also configure Centos to accept multiple vnc user on the same display.
I launch the vncserver -geometry 1280x752, and configure free bVNC to be able to connect in one action.

Then it's OK, my grandfather can type his book. He plugs his azerty keyboard in the android tablet. And then the tablet recognize it as an qwerty. If you want to be able to use it as a azerty keyboard, you have to use an app which you have to grant full permission !!! Without rooting the tablet, there is no easy way to use the azerty keyboard, (probably because this allows Acer to sell specific 100$ keyboards for this tablet). But because I use a remoting system, I configure the Centos keyboard, and the keyboard is now OK to type the book.

Latency is very low, even over distance, and everything is working like a charm, (obviously the tablet needs internet but that is the one thing that usually works with tablets).
I'm even starting to consider using tablets for my usage as remote screens to clouds. It's a bit of an overkill, but at least, overkilling is easy and generic. One negative point noted is the sound over VNC is not yet supported.

Friday, November 16, 2012

CloudFlare

A company which as experienced a great increase in usage over the last years, but which is unknown to non IT specialists. It's a content delivery network. It helps internet sites to load webpages faster. CloudFlare also prevents Distributed Denial Of Service.

The principle is easy, from the website user perspective, it's like your site is hosted by CloudFlare. The user never know the real ip of your server, and dialogs only with a CloudFlare machine. Your server only dialog with CloudFlare machines (so you can block all other traffic easily and fast if your ip is somehow discovered). For the technical details : They have a bunch of worldwide distributed ips, and behind each of these ips hides a reverse proxy (a customized nginx server using consistency hashing).

They are a very small structure of less than 50 people. And have scaled very rapidly using opensource and big data technologies. They analyse and filter all the data that goes through them, i.e. all the data of CloudFlare websites. They act as a SSL endpoint. This mean you don't have to own a ssl certificate. But it also means they decrypt all the traffic, and possibly inject anything. Oh, by the way, their terms of use, grant them ownership of everything that pass through them...

But they have very attractive pricing starting gratis. Lots of users, lots of traffic, very easy to use. An other player which is centralizing Internet. This is Man in The Middle 2.0.



Friday, October 12, 2012

Eric Schmidt on 92nd Street Y, the 10 october 2012


Every year or two, Eric Schmidt gives us his, thought a lot, point of view about the current state of the tech business world. He comes back on the various tech industry leading companies, and promises us a world of useful mobile computations.

Tuesday, October 9, 2012

Open source should be banned


Open source is one the biggest scam of the lasts decades. And as all big bad wolf, it is hidding in sheep clothes. It's a perversion of a nice idea. It all started with the free as in free speech software mouvement. But the contagious characteristics of freedom prevent sane business to build upon it. As business drive this world, freedom let place to open source. It was good for business. You don't have to pay for licenses anymore. You can concentrate on your business. And it gets better over time for free. Ohoh, the scam arguments starting to appear.

So companies all over the world started to adopt it. Some companies, even promote it. They can now outsource for free their I.T. development. They can also share the cost of maintenance with their competitors. But the better part for companies, is that they got leverage on their developpers. There are now two kinds of I.T. man, the vast majority are I.T. workers spending their time assembling, maintening and pipelining the various bricks of open source software, where as the remaining minority is consenting to create great wealth and be rewarded with breadcrumbs. If you want to be a part of the glorious minority, all you have to do is to participate in open source. This is why companies often requires you to have contributed to an open source project before they employ you. For companies, contributors are like old prostitutes, they don't shine but they will do anything for a few dollars.

But who get spoiled in the way ? Well obviously, the I.T. man is getting lifted. 
Then there are all the companies that use open source. They think they are getting advantage of it, but in fact they are the fall guys. By using open source, they surrender and consent to be a few years late, their developpers always running to catch the next patch. It's basically saying they are refusing to compete on the software ground.
So I guess that in a concurrential world where companies collude, end users are getting spoiled too, aren't they ?

Why Work in Information Technology is doomed to failure


I have been developping software for a few years now. Both in small and big companies. And in both cases, there are more and more needs with regards to software functionalities. But what I have noticed is that over the last few years there is a shift currently taking place. 

It is a shift similar in nature to the transformation from craftmanship to industrialized era over the course of a decade. A few years ago, writing something from scratch leveraging on generic libraries was quite often a good choice. Now, most of the time, it is not. Today you will often find code right for the specific functionnality you need. 

The work in Infomation technology has shifted from building to customizing. Sure you can customize a lot faster than you can build and therefore are a lot more productive in the economic sense. But it is a profound change like going from leader to follower, or from active to passive. 

But we are not over yet, it is all about scaling. And in computer science, it is often an exponential scaling. But user needs, at least the monetizable ones, don't scale as fast. And that where it's getting bad for the IT man. One man and a few dollars can serve millions of users. And what's even worse is that one man and a few more dollars can serve tens of millions of users. Systems are build to scale by adding money in it rather than by adding people.

So how as an IT man, can you get advantage of this. I see a few options.
Either be among the few best, to get a chance to work on the few remaining jobs building new useful stuff used by many. You can also choose to join an open source project. These two first options are quite good for the philantropic mind, others you will be forced to pass your way.

An other option is to start it up. Create a business, where you can use your I.T. skills. You will also need a lot of other more useful skills. The probability of failure is high, but a small chance is better than no chance right ?

The last option, is to work somewhere else, nobody is forced to be a programmer right ?

This blog is evolving


I am now jobless.
This mean, I will have more time to better explain ideas. The format and the subjects will change.
Becoming more diverse and accessible to the novice.
It will also be more subjective.

Thursday, August 23, 2012

Monads


In your quest for genericity
In your quest for abstraction
In your quest for instanciation
But could you invoke their name

42

In life when rules are simple 
Things get pretty messed up 
In pretty messed up life 
The rules are simple

Sunday, June 24, 2012

Life


When chemisty is code
When code is form
When form is functionnality
When functionnality is life

Saturday, May 12, 2012

P2P

Decentralized computation and communication
Scaling accordingly so that offer match demand.
A global public playground is being taken by private clouds.
Should P2P survive in hostile environment...


The times they are a-changin'...

Hashing

Converting a huge sparse space into a small dense one
An ancient key to new probabilistic treasures
Double murmuring into a bloom filter just about anything
To collide certainty, time and space, my dear neighbour.