Monday, December 21, 2015

Untitled

Almost evening... Fog outside.
I read and listen Goldberg variations waiting for Mara to wake.
We are both tired after a day of playing.


Sunday, December 20, 2015

Letting tech go

In time I got to attach to one or another technology (framework, language, tool) because I felt comfortable using it and I was productive with it.
But sometimes you have to let thing go and try others. The recent experiences I had were:

1. Gradle. It was quite hard to het rid of Ant and use Maven. But in the end it worth the switch. The dependency management was the holy grail for this. However this year I switched from Maven to Gradle. It was a painful switch but in the end of the year I started to be productive with it also. The learning curve is not steep and in the end you master a more powerful and subtle tool than maven while still retaining its best features

2. NginX. I switched from Apache to Lighty about five years ago when I needed a lightweight server that was able to run in constrained hardware resources. It was fine in the first two or three years but later on the development of new features stalled and today is in a state closer to Apache than to its original purpose. Then I took a ride with NginX. I disliked it at the beginning as I felt that for some purposes it overlapped with HAproxy. But in the end I did the math and I realized that NginX is better than any other combination (HAproxy+Apache/Lighty, ...) on both contrained hardware or full fledged servers. Since then the path changed

3. GIT. Here the path went CVS -> SVN -> ClearCase -> Mercurial -> GIT. I loved Mercurial. I am still using it for my private code but when I have to share I am using GIT.


Saturday, December 5, 2015

Catch up with the world

In no specific order:

- Learning some cryptography

- Reading "Goedel, Escher, Bach" - sometimes it is nice (at least the axiomatics of the number theory) but it is quite verbose and gets boring. The Achilles and Turtle dialogues do not seem too witty to me (at least in the Romanian translation)

- Coping with my daughter's Scarlett Fever

- Created a Storm Trooper cardboard mask - http://www.instructables.com/id/Cardboard-Stormtrooper-Helmet/

- Playing with WebRTC

- Writing the traditional Christmas postcards

- Contemplating a new tube amplifier

- Watched "The Little Prince" animation

Monday, November 9, 2015

Value?

I have been contacted by the people at crossover.com offering me a "fantastic" opportunity...

Yeap, the figures were nice indeed, but then I started to think deeper on what they are offering.

The punchline was "With us, going to the office is history!"

I love going to the office, I love the long strolls and the autumn leaves on the walkway. I love talking to people and learning with them. Why would I spend the entire day home? Would I be more productive? Will I be more technical? I doubt it? Will I produce something meaningful?

 One thing is for sure - I will get more and more intolerant and egoistic. I will start fearing my virtual job as I have no direct connection with the true project. I'd be an executor in a big BPMN diagram... Do I really want this? It would be at least heartless... And I am not an robot.

The second thing is that I am holding a grudge to someone... Not a big one... But he somehow lied me twice. And that someone is now a VP in this company. With this being discovered my final decision is a heartily: "No, thank you!"

PS: I have discussed a couple of days with some guys that were admiring the VP because he has now money. Lots of them. They were considering that he does a good deed "employing" people. Then I am wondering why none of his henchmen went together with him in this "endeavour"...

Monday, October 26, 2015

Architecture compromise budget

I have been involved lately in more than enough architecture discussions. Microservices, REST, messages, asynchronicity and all the rest... Everything looks good in theory but when it comes to finalization we hit the wall in full speed.
Here the compromise starts creeping in. Developers cut corners, business demands features, the UX should be improved. Most of these come with an architectural cost. This cost should be more or less converted into a "architectural debt". In order to work with this I decided that I have an "compromise budget" that is consumed by the architectural debt.
What I did was to quantify the architectural debt based on a simple formula:

debt = 1.3 * data model^2 + 1.7 * ui cost + logic_cost + 2 * testing cost + 1.4 * communication cost ^2

From where the formula? Well it is kind of empirical curve fitting on the projects I have worked on:

1. Data model influences most of the coding due to the fact that changes in the model might influence all other tiers of the architecture. So the impact is quadratic to the change.

2. UI cost influences the presentation layer and the impact is quite linear - as far as I have seen.

3. The logic cost is in linear relation with the change size. Although it seems quite odd in fact the change is localised in the business logic tier so it might justify the relation.

4. Testing is important as the architecture changes so everything has to be double checked with the specs and regressions  have to be mitigated.

5. Communication cost is by far the most important one as the architect has to be a jack of all trades and sit at the table with many stakeholders each one with its set of driving forces.

The formula is non-dimensional so the variables have to be described consistently (money, man-hours, ...) in the end it will all converge to money as this is in fact just a technical debt.

So how I used it? For example I have set a Compromise Budget of  150 units on a project and started to do the math:

1. Devs using synchronous calls instead of async: after the evaluation I have obtained a cost of about 20
2. Data model changed due to multitenancy, feature added late: about 80
3. Late decision on third parties used: around 20

So far I used 120 units of my 150 budget.  In the moment that I get a new request that changes again the data model the formula puts another 45 on the table. So I will have a debt of 15... Is my initial project still inline with the initial idea? Do we build the same product anymore? What to do now?

1st thing is to inform the stakeholders about this. In an agile way we could adjust the backlog and find the best sequence that maximizes the team output in the next sprints.

One important aspect of this is why in fact I accept compromises? Well there is no pure black and white situation so I learned that I have to sacrifice the architecture in order to get things done and have something to deliver. The formula is just a trigger that stops me on accepting more unconformities.
For waterfall this is quite inline with the concept.
For agile, as the role of architect is not well defined, it is mostly an informative KPI that shows the divergence trend between the initial architecture and the current one.

In the end is this budget helpful? For me it is as I use this as an early warning system that enables me to create a strategy for steering the development further on.

Sunday, June 28, 2015

Metaphors

I watched "Ex Machina" this weekend and I enjoyed the metaphorical construction of the film.
There development is cleverly constructed and there are subtle references to many myths and other SF works. The scenery is breathtaking also.

http://www.vanityfair.com/hollywood/2015/04/ex-machina-location
Also the easter egg in the movie is nice: http://moviecode.tumblr.com/post/119171520870/in-the-movie-ex-machina-which-is-really-great


Kiwi Cider



To all my friends in NZ! Cheer mates!

Thursday, June 18, 2015

Sysadmin work

In the last weeks I have been tinkering around with some sysadmin tools. I had to build a highly available L7 router/load balancer.
I haven't touched the sysadmin hat for more than three year now so I had to sync with the latest technologies. Here are my findings and musings:

1. Operating systems: I had to choose between various Linux distributions. In the end I went with Centos 7. It was close to choose Ubuntu 14.04 but in the end I leaned to Centos due to systemd. I had to get rid of firewalld and use plain old netfilter for my purpose. The drawbacks in Centos are that it not always have the latest packages in epel and that the interface names are somehow unpredictable hence making it difficult to configure them from kickstart.

2.  L7 load balancer: I had to choose between NginX and HAProxy. NginX is extremely powerful but I had no previous experience with it I opted for HAProxy. This was also in part due to the fact that it also has TCP mode. However I am still in doubt if I will keep HAProxy because I had also to install some other webserver (lighttpd) along with it. It might have been simpler for me to have just NginX....

3. Some keepalive/watchdog solution. Here I did little research. I wanted a low level solution so I had to choose between vrrpd and keepalived. I went with keepalived and it was fairly easy to use it.

4. IPS - I had to test various solutions but I settled with Snort + fail2ban.

5. DevOps: I had no prior experience with DevOps tools so I have studied lots of them. I read about Chef, Puppet, Salt, Ansible and CFEngine. I ruled out Chef and Puppet as they were too heavy for my setup. CFengine was ok but I did not wanted a server for it. Salt was speedy indeed but I was afraid that its 0MQ transport will not be always carried by proxies. The final solution was in this case Ansible as it works masterless and is based on SSH - making it virtually ubiquous.

After putting everything together I had a nice working system that I stressed a bit and it performed more than fair. It was for me a nice experience - I have especially enjoyed working with Ansible - a very clean and lean solution.

 


Sunday, May 17, 2015

Shipping News

As the character in the book/movie I sometimes have to write something...

I have lately worked on some doves tooling using Ansible. I had my share of frustration with Chef lately due to the fact that I wanted to use it with windows clients. For Unices Ansible works ok. In my opinion its playbook are simpler to understand/manage than Chef's recipes.

On the other hand I am also experimenting with HA solutions (HAproxy, keepalived). So far so good.  


Sunday, April 26, 2015

Wonderful hardware

Due to chickenpox I bought a Wii console. 

I couldn't resist it and I soft-modded it (letterbomb).

I played a couple of days all kind of games together with my doughter (Sports, Party) and some just myself (Dead Space and Quake). I am impressed how well these games work on the weak hardware the console has (at least to nowadays standards). What it does on 64MBytes RAM and on a processor running at 729MHz is amazing.

All in all I have a new collectible in my odd/vintage hardware collection that now contains a Sparcstation Classc, a SGI, a Mac Cube and a Sun Ray. I am really into buying an old HC/Spectrum...


     

Thursday, April 23, 2015

Wii Modding

I have finished soft-moding the Wii console I have bought.
Luckily I have a version that accepts a boot2 so I'm,  let's say, "brick safe"
As Mara has chickenpox I found something I can offer her while she's indoors.

Sunday, April 19, 2015

TL;DR

I have been contacted recently by some recruiters that are not able to have a business like approach to addressing the candidates. It is not the first time when the letter I receive is rather a "video-chat" invite than a true business one. However it was worse in the past but unfortunately I haven't kept them. This letter seems to be translated with Google translate (English  subject line and some oddly translated phrases: "Doresc sa vin catre tine" and so on)
The worst part is that they send these letters indiscriminately without even bothering to read the CV of the candidate they are addressing to. 
This time I couldn't take it anymore so I decided to publish the letter and my answer because keeping it just for myself will not help them nor the others that are receiving these inept letters. 

Head-hunters: Please read the CV. Please write a personalized letter because it is the minimum that you can do for your success bounty. It is the first step towards a good relationship. Even on LinkedIn please start the invite with something more personal. 

Subject:Tell me more about your Professional Challenges | Lugera
From: V************@l***********.ro
To: d*************@**********.com

Stimata d-ra/d-na, 

Probabil ca ceea ce va urma va va oripila. 

In primul rand, deoarece nu ne cunoastem personal as dori sa folosim o "particularitate" alimbii romane numita "pronumele de politete". Intr-adevar gramatica nu se mai studiaza in liceu iar in limba engleza are acceasi forma cu pronumele personal. In general in relatiile profesionale, din cate am fost eu instruit, este de preferat acest mod de adresare mai formal. 
Poate ca mai tinerilor mei colegi, "generatia Y", limbajul colocvial li se pare mai potrivit, eu sunt mai traditionalist asa ca ma veti scuza daca voi folosi in continuare limbajul cu care m-am obisnuit. 

2015-04-17 21:49 GMT+03:00 <V**********@l*******.ro>:


Salut!

Stiu cat de importante sunt pentru tine provocarile oferite de proiectele
complexe, tehnologiile noi si dezvoltarea profesionala!

De unde stiti acest lucru?


Doresc sa vin catre tine doar cu proiecte super faine, care sa fie corelate
cu motivatia si experienta ta profesionala si tocmai de accea iti adresez
rugamintea de a reveni catre mine cu un CV actualizat in care sa atingi
urmatoarele aspecte:

Dumneavoastra veniti catre mine iar eu revin cu un CV? M-ati facut putin confuz. Prea multa miscare...
In primul rand va rog sa-mi spuneti de ce as face acest lucru? Care ar fi motivatia mea sa scriu un CV fara sa existe un "pitch"? De ce credeti ca imi doresc sa schimb job-ul? Va multumesc ca imi sugerati normele de stil si exprimare in CV. Intr-adevar nu m-as fi gandit sa scriu structurat si concis, cat despre modul a ma caracteriza prin skill-uri, sincer, nu credeam ca m-as putea caracteriza in acest mod pe plan personal.


O scurta caracterizare a ta: profesionala si personala (ca si skill-uri);
Numele angajatorului, perioada in care ai activat/ activezi;
Principalele responsabilitati, structurat si concis scrise;
Proiectele in care ai lucrat de a lungul experientelor profesionale, scopul
proiectelor si aportul tau in cadrul lor;


Anumite aspecte ale activitatii mele nu pot fi facute publice. In general numele proiectelor si ce am facut in cadrul lor sunt informatii confidentiale pentru angajator. De asemenea cred ca print-o cautare pe internet ati putea gasi informatii actualizate despre mine. Sunt curios totusi de ce mai exista CV-ul meu in baza de date L*****? Si daca exista de ce nu l-ati studiat anterior?


Dimensiunea echipelor de proiect in care ai lucrat;
Tehnologiile si metodologiile folosite in cadrul proiectelor.


Deoarece lucrez in acest domeniu de peste 15 ani probabil ca lista ar fi extrem de lunga. 


  
Mi-ar face mare placere sa ne cunoastem in cadrul unei discutii si sa imi
impartasesti din provocarile tale profesionale.


Presupun ca stiti ca eu sunt in Timisoara. Cum ati dori sa purtam aceasta discutie?


Multumesc si astept cu maxim interes raspunsul tau!


Tocmai ati primit raspunsul meu, sper ca nu v-am tinut in suspans prea mult.

Cu drag,
V************
Sunt magulit ca va sunt drag, dar sa incheiem intr-o nota mai formala:

Cu stima, 
  D***********




UPDATE:
Here is another I have received. The phrase with "Hai sa ne cunoastem" was outstanding:

Stimata d-ra/d-na C*******,

Nu ma intereseaza sa lucrez in PHP.
De fapt, cred ca cel mai mult imi displace tonul pe care incercati sa imi propuneti un job.
Cred ca o oferta de job nu e o invitatie la videochat sau intalnire  - chiar daca asta face
ca mailul sa fie "amuzant". Sincer nu-l face... Dimpotriva.

Tocmai ati primit raspunsul meu.

Cu stima,
  Daniel *******

> ----- Original Message -----
> From: A********  C*******
> Sent: 03/19/14 01:52 PM
> To: d*********@*******************
> Subject: Daniel, am o propunere pentru tine
>
> Buna Daniel,
>
>
> Sunt sigura ca ai primit in ultima saptamana cel putin o propunere de job,
> insa eu iti fac o propunere altfel.
>
> Hai sa ne cunoastem! TU alegi modalitatea pentru a face asta: pe skype,
> telefonic sau live.
>
>
> As vrea sa discutam cateva minute despre piata de IT din momentul acesta si
> oportunitatile de PHP Developer pe care le avem deschise in prezent (in tara
> sau in Germania). Daca acestea nu se vor dovedi interesante pentru tine, nu
> e nicio problema putem muta discutia si in alta zona mai de interes- tu
> decizi.
>
>
> Vreau sa fie o situatie castigatoare pentru tine- stiu ca timpul e foarte
> pretios.
>
>
> Aaa, am omis sa ma prezint: eu sunt A******* (toate informatiile formale le
> gasesti in semnatura) si sunt incantata de cunostinta. Tu?
>
>
> Astept cu nerabdare raspunsul tau!
>
>
>

> C********  A*******-F*******

Monday, March 2, 2015

My Own Private Geiger Counter


Made from a Pollin kit. SI-39G tube to detect scintillations.

Sweeet!



Saturday, February 21, 2015

Behind the firewall GIT

If I'd start a company I would probably use BitBucket to host my repositories. It offers both Mercurial and Git and the pricing is quite reasonable. It might be not as fancy as GitHub but it does its job well.

On the other hand what about a small corporation that wants to unify its code repositories and is quite parsimonious? I have recently studied several tools as FusionForge, Gitorious, GitLab, Stash...

FusionForge and Gitorious were almost unusable. I am quite an experienced linux user/admin/developer but I was not able to install FusionForge. Gitorious was never able to log me in (I hadn't the pacience to dig in to tons of ruby code to learn why).

GitLab and Stash on the other hand are nice, they do their job well and are almost on par with features. But they are expensive.

To my rescue, I found just a couple of days ago a free GitHub-like repository management tool called GitBucket. It is written in Scala and does the bare minimum to make a behind-firewall corporate level GitHub. It's biggest plus its LDAP/AD integration.

So long story short, I was able to make it work in an hour. Just for comparison I spent about three days configuring FusionForge.

Wednesday, January 28, 2015

MacCube

I have bought a 2nd hand MacCube. I was hoping that it would work, but I guess that I bought it already broken. I tried for a while to make it work as it was just to discover that most of the components inside were mechanically damaged (broken hdd connectors, ram slots, ...). I repaired and repaired but finally I gave up.

So I bought again a 2nd hand Asus AT5NM10I mini itx motherboard, some RAM and USB Bluetooth and WiFi adapters. I have also bought a pico PSU from aliexpress.
I have 'dremeled' the case o be able to accomodate the motherboard - I had to create some 2mm channels/slots in the case metal in order to accept the motherboard.



I have tried to reuse as may of the original components as I could (touch sensor, back side buttons).

Finally I was able to boot it and installed Lion (the last one I knew that could be hacked to support Atom).


I installed Enoch bootloader. Audio worked with VoodooHDA. Video is unaccelerated (the 3150 is not supported on OS-X).



I am using it for the moment as a streaming audio device.

I am proud of owning this as the main reason for buying it that it is considered a work of art - one Cube being displayed at MOMA in New York.