tiistai 16. kesäkuuta 2015

How to join the Django's Cookiecutter-based project and get it up and running in Ubuntu Vagrant?

Django's cookiecutter project template is really nice package of the commonly used best practices. It makes some of the boring stuff which usually consumes few days when you're creating a project.

If you have followed the Speeding up the Vagrant-instructions, you'll get the Cookiecutter project up and runnign by using these instructions.

Install Postgresql & virtualenv
sudo apt-get update
sudo apt-get install postgresql postgresql-contrib
sudo apt-get install python-virtualenv
Create a virtualenv
virtualenv venv

Create your user & the database
sudo su - postgres psql CREATE USER vagrant WITH PASSWORD 'vagrant'; CREATE DATABASE databasename OWNER vagrant; \q

Add your db-details to venv/bin/activate and activate it
export DATABASE_URL=postgres://vagrant:vagrant@localhost:5432/databasename
source venv/bin/activate

Get files from the repository
git clone https://yourusername@repourl.git

Go to your repository and install OS & Python-dependencies

sudo ./install_os_dependencies.sh install
sudo ./install_os_dependencies.sh install

And you're done almost done! Run the last command and see if it works by browsing to
python manage.py runserver_plus

maanantai 15. kesäkuuta 2015

Vagrant & Windows - Terrible slow - How to cure the sluggishness?

Honestly, I hate Windows CMD and from developer's point of view the Windows is no fun from many different aspect. Most of the fancy guru's are using Linux / Mac for completing their task and I don't wonder why.

Why Vagrant?

Since I got a new laptop and I don't hate Windows 8, but I still want to use familiar Linux for my development environment I decided to use vagrant instead of many other options.

Vagrant brings all the benefits of the unified dev-environment in to your Windows without sacrificing the battery life / peripheral-device support, which might happen when you'd install Linux.

Why it's better than basic Virtualbox? 
It won't install any UI for you, unlike basic virtual box installations, which makes it work much faster. Also you can install your packages from your WINDOWS CMD! <3

Installation of the Vagrant is really easy. You just install the preferred package from https://www.vagrantup.com and install virtual environment from your CMD.


Everything seemed to be working nice'n easy at the begining, but after a while I grew pissed off for the unexplained sluggishness of the development.

Rebooting the Django-server toke 60 second or so... and development started to remind me more and more Java-coding than agile Python coding, no offence Java-coders.

I started digging out the issues and couldn't exactly pinpoint the cause for this problem.

Finally I found a nice article, which proposed that I should try to use Samba-file sharing instead of NFS. I didn't realize that the slow booting cycles were causer by slow file sync procedures.

Fix slow Vagrant in Windows with Samba

1st log in to Vagrant:

vagrant up && vagrant ssh

Install Samba
sudo apt-get install samba

Edit samba's config
sudo vim /etc/samba/smb.conf

Add the following pieces in the end of the smb.conf
comment = Local Dev Server – /var/www
path = /var/www
browsable = yes
guest ok = yes
read only = no
create mask = 0777
force user = root
force group = root
#[shared] End

Restart Samba:
sudo service nmbd restart
sudo service smbd restart

Add static IP in to your Vagrant-file
config.vm.network "private_network", ip: ""

Now everything should be in place and you should be able to access to \\ Just copy your files there and stop slacking!

tiistai 26. toukokuuta 2015

Master of the Gits! - Feature Branch Workflow

Git is overly complicated!

Git used to be a bit... mmm overly complicated ball of fur, back in the days, but those days are long gone. Here's what Mr. Torvalds thinks about that:
Interviewer: People have said that Git is only for super smart people. Even Andrew Morton said Git is "expressly designed to make you feel less intelligent than you thought you were." What's your response to this?
Torvalds: So I think it used to be true but isn't any more. There is a few reasons people feel that way, but I think only one of them remains. The one that remains is fairly simple: "you can do things so many ways."
10 Years of Git: An Interview with Git Creator Linus Torvalds, 26th May, 2015

Git is awesome, honestly

Nowadays git works really well even for non-super-nerd-kind-of-software-developers. So, basically I really recommend in starting to use that, even though you'd have background in other SVNs. Git doesn't really have any childish problems, it doesn't rely on your internet connection and it really gives you some nice tools for improving your team and your code quality.

However if you're using git as you'd using SVN you really should consider to use Feature Branch Workflow instead. Since when using the git as SVN it won't really justify the existence of the software.

If you're using Git without branches, please reconsider

If you're just developing your application by using the master branch, you really should try feature branch workflow. It gives you a number of benefits over the basic workflow.
So what are exactly the benefits?

  • All features are encapsulated.
  • Pull requests -> bump up your team's communication, learning and quality.
  • Pull request, yes again. If you get stuck with your code, asking help is really easy. Just make a new PR and yell for help.
  • Master branch will (hopefully) never break.

Here are some solid basic settings for your git (in Ubuntu)

1. Install git bash autocompletion
Autocompletion is a breeze, you'll love to find your branches and git features when you keep banging your tabulator.

sudo apt-get install git bash-completion

2. Add to your ~/.gitconfig
Everyone loves colors!

    branch = auto
    diff = auto
    status = auto
[color "branch"]
    current = yellow reverse
    local = yellow
    remote = green
[color "diff"]
    meta = yellow bold
    frag = magenta bold
    old = red bold
    new = green bold
[color "status"]
    added = yellow
    changed = green
    untracked = cyan

3. Add your personal settings
Add your username, email, default editor, simple push, and timeout for your credentials.

git config --global user.name "John Doe"
git config --global user.email johndoe@example.com
git config --global core.editor vim #All cool guys loves vim!
git config --global push.default simple #make sure that you're only pushing the active branch
git config --global credential.helper 'cache --timeout=27000' # remember credentials for 7.5h

Pretty good basic workflow for anyone

Get the copy of the repository, only needed on 1st run:
git clone https://your-repo # make a local copy of the repository
Start working with a new branch:
git checkout -b name_of_the_feature master #-b creates a new branch if it's not existing
Make some work and commit your results to local repository. Lather, rinse and repeat:
git add <file_name>
git commit # Check out how to write good commit messages
Keep the copy of your branch in central repository only needed on 1st run:
git push -u origin name_of_the_feature #push the feature branch to the central repo.
Finish your work:
git rebase -i <first-commit-hash-of-the-branch> #Squash commits in to logical sections
git checkout master; git pull; git <feature_branch> #update the master
git rebase master #if someone has merged some new branches in to master.
git push

Where does the learning take place?

The learning and static QA-process starts now! When the feature is finished and new branch is about ready to be merged in to the master. The name of this phase is pull request.

Pull request

Pull request really give you a great set of tools for code review, learning from the code and collaboration around the specific feature branch.

Pull requests are amazing. They're really pushing your team and your code quality towards.

Here's how it goes:

tiistai 1. heinäkuuta 2014

Ensimmäisen purjeveneen hankinta

Olen aloitellut purjehdusharrastuksen muutamia vuosia sitten. Purjehduksessa yhdistyvät monet hienot ominaisuudet, jotka mahdollistavat suuremman vapauden nykyajan tarkoinsäädellyssä yhteiskunnassa. Arvoja, joita erityisesti arvostan ovat: omavaraisuus, kohtuulliset kustannukset, valinnanvapaus ja luonno parempi ymmärrys. Vesillä olen kulkenut koko pienen ikäni, lähinnä moottorikäyttöisillä paateilla. Näissä veneissä minua kuitenkin häiritsivät iänikuinen meteli, polttoaineen hinta ja katku.

Purjehtiminen on suhteellisen edullista. Millä muulla keinoin voit kiertää Eurooppaa n. 15€ vuorokausihintaan? Suurimmat kulut syntyvät ruokakustannuksista ja satamamaksuista.
Purkkarin omistaja kykenee tuottamaan itse tarvittavan energian liikkumiseen ja sähkölaitteille. Enää ei tarvitse olla öljy-yhtiöiden liekassa.

Purkkarilla voi mennä ja tulla kuten itse tahtoo. Kiireinen nykyihminenkin voi kiertää vaikka koko maapallon pienissä osissa. Lomalla purjehditaan niin pitkälle kuin keretään. Jätetään alus satamaan odottamaan seuraavan loman alkua ja lennetään kotiin jatkaman arkista puurtamista.
Purjehtiminen pakottaa kipparin tutustumaan säämekanismeihin ja antaa mahdollisuuden vaikuttaa omaan hengissäsäilymiseen ja jänniin seikkailuihin. Samalla purjehtiminen on myös kokonaisvaltainen harrastus, joka auttaa saamaan etäisyyttä arkiaskareihin.

Ensimmäisen purkkarin valinta

Koin tärkeäksi, että ensimmäisessä purkkarissa pitää pystyä seisomaan 174cm pituisella rungolla. Veneen tulisi olla tarpeeksi nopea (LYS ~1.10) ja siinä tulisi olla hyvät sisätilat kahdelle hengelle pidemmällekin reissulle.
Purjevenemalleja on monia, siis määrä tuntuu jopa hämentävältä. Osa kulkupeleistä on lisensoitu ja osa on myyty puolivalmisteina tee-se-itse-sisutalla. Kaiken lisäksi tulevat pituudet, syväykset ja leveydet. Luonnollisesti kaikki ominaisuudet vaikuttavat purjehdusominaisuuksiin. Mistään ei oikein tahdo löytyä kovin hyvää tietoa ja olen kuluttanut paljon aikaani selaillessani vanhoja lehtiarvosteluita ja suomi24:n "asiantuntija" kommentteja.

Toppiriki vai osatakila?

Mitä eroa eri rikkauksilla on purjehdusominaisuuksiin? Osatakilassa keulan staagit eivät kiinnity maston huippuun vaan esim. 7/8 mastonhuipusta alaspäin.
- Suuri keulapurje
- Sopivampi matkapurjehdukseen
- Tukevampi

- Pienempi keulapurje
- Mahdollista asentaa itse skuuttaava fokka
- Mastoa voi trimmata, jolla saadaan nostettua reivauskynnystä.
- Nopeampi reagoida tuuliominaisuuksien muutoksiin, kun ei tarvitse reivata purjeita.
- Parempi kisoissa ja saaristossa.
- Pidempi puomi?

Muutamia purjevenemalleja alle 20k€

Oheiset veneet on kerätty Suomi24:n purjehtijoiden avustuksella. Mikäli haluat kommentoida paattien ominaisuuksia tai jokin tieto on väärin, niin voit ottaa minuun yhteyttä osoitteeseen heikki.mustonen@gmail.com tai kertoa kommenttisi Suomi24:n keskustelussa:http://keskustelu.suomi24.fi/node/12343581.

Albin Accent 26

Pituus: 8,05 m
Leveys: 2,77 m
Syväys: 1.54 m
LYS: 1.04

- Matala ja liian pieni


Murena 30:

Pituus: 9,20 m
Leveys: 3,20 m
Syväys: 1,50 m
LYS: 1,09

Jättimänen ja kolkko, jotenkin ei vaan sytyttänyt

Scampi mk. IV  30

Pituus: 9,07 m
Leveys: 3,04 m
Syväys: 1,65 m
LYS: 1,097

- Nopea
- Hyvä sisusta
- Seisomakorkeus?
- Moottori keulassa -> kuivat petivaatteet
- Moottori keulassa, mahdollista katkua

Lupaavan oloinen, nopeahko hyvällä sisustalla ja purjehdusominaisuuksilla. Malli dominoi kilpailuja saapuessaan markkinoille. Kelpaa myös avomeripurjehdukseen. Seisomakorkeus on vielä kysymysmerkki.

Maxi Fenix (Dinette) 28

Pituus: 8,30 m
Leveys: 2,85 m
Syväys: 1,55 m
LYS: 1,07
Riki: Osa-takila
Suunnittelija:  Pelle Petterson

- Hyvän oloinen sisusta
- Seisomakorkeus
- Kohtalaiset purjehdusominaisuudet
- Kohtalaisen nopea
- Mukava matkapursi
- Peräsin ongelmia, tarkista
- Alkuperäinen moottori on liian pieni
- Hankala ajettava moottorilla.
- Yhden hengen keulapunkka


Sunwind 27

Pituus: 8,22 m
Leveys: 2,60 m
Syväys: 1,55 m
LYS: 1,03

- Laadukkaasti rakennettu
- Johdonmukainen purjehtia
- Hyvin tarjontaa
- 183cm henkilö sopii seisomaan suorana ainakin pentterin edessä.


Rakenne ja materiaalit kestävät aikaa.

B31 Boström

Pituus: 9,34 m
Leveys:  2,76 m
Syväys: 1,80 m
LYS: 1,06?

- Tukeva
- Hyvä perhevene
- Pieni istuinkaukalo

Albin Ballad

Pituus: 9,12 m
Leveys:  2,95 m
Syväys: 1,55 m
LYS: 1,08

- Jämerä, kestää myös kovemmassa kelissä.
- Hyvät tilat kolmelle
Asiallinen paatti, jämerä jolla uskaltaa kovempaankin keliin. 

Nardus 92 (Ballad)

Pituus: 9,20 m
Leveys:  2,96 m
Syväys: 1,50 m
LYS: 1,08

Albin ballad:n kopio. Kelpo paatti

Albin Cumulus

Pituus: 8,64 m
Leveys:  2,85 m
Syväys: 1,60 m
LYS: 1,10
- Suurempi sitlooda kuin Balladissa
- Salongissa korkeutta 185cm- Purjehtii hyvin

Tukeva ja hyvin purjehtiva.

Shipman 28

Pituus: 8,86 m
Leveys:  2,60 m
Syväys: 1,55 m
LYS: 1,04

- Helppo purjehtia
- Merikelpoinen
- Hyvä kryssillä
- Seisomakorkeus sisällä
- Hidas avotuulilla (huono perä)


Finn Express 83 (FE83)

Pituus: 8,30 m
Leveys:  2,80 m
Syväys: 1,40 m
LYS: 1,07

- Tasapainoiset purjehdusominaisuudet
- Hyvä saatavuus
- Verraten vankka ja yksinkertainen rakenne
- Matala syväys
- Seisomakorkeus 175cm henkilölle.
- Reagoi hyvin säätöihin

- Rautaköli

Aktiivinen kilpailuluokka.
Hyvä artikkeli.

Nordisk Familjebåt (NF30 / Nöffi / Merten vinttikoira)

Pituus: 8,85 m
Leveys:  2,65 m
Syväys: 1,55 m
LYS: 1,10

- Liikkuu hyvin kevyelläkin kelillä
- Kryssii hyvin
- Ottaa hyvin aallot

- Hivenen ylirikattu
- Loiskuttelee istumalaatikkoon helposti


Ohlson 29

Pituus: 9,09 m
Leveys:  2,84 m
Syväys: 1,58 m
LYS: 1,04
Riki: Toppi

- Jämäkkä
- Seisomakorkeus

- Vanhemmassa mallissa nousuherkkyyttä.


Maestro 31

Pituus: 9,30 m
Leveys:  3,10 m
Syväys: 1.7 m
LYS: 1,13

- Tottelee hyvin säätöjä
- Hyvä luovissa
- Reivikynnys säätömahdollisuuksien takia luultua ylempi
- Isohko salonki 
- Isohko salonki
- Avomerikelpoinen

- Ei erillistä ovellista vessaa
- Pieni takakajuutta
- Jos purjetrimmi ei ole mitenkään hallinnassa, kallistelee
- Harvemmin myynnissä


Inferno 29

Pituus: 8,80 m
Leveys:  2,50 m
Syväys: 1.50 m
LYS: 1,14

- Kevyt
- Seisomakorkeus
- Tottumatonkin saa 10 solmua vauhtia avotuulella, ilman spinnua.
- 4 aikuista yöpyy mukavasti ilman ahtauden tunnetta.
- Pentterijärjestelyt ihan OK

- Kevyt
- Ei sovelias perhepursi.
- Ei sovi aloittelijalle.
- Herkkä ajettava, tämä tarkoittaa vähän jollamaista käytöstä.
- Kallistelee paljon puuskissa.
- Karkaa käsistä helposti
- Keulassa ei ole köysiboksia.
- Kryssissä vaatii boatspeediä kohtuullisen paljon (ainakin pitäköliseen tottuneelle), muuten sortaa pahasti.
- Aallokossa hakaa varsinkin kryssillä tosi ikävästi.
- Reivata saa (ja pitääkin) jo melko hiljaisissa tuulissa, kun kölipainoa on liian vähän veneen muihin ominaisuuksiin nähden.
- Pinnamiehen paikalta ei ihan yltä fallien vinssinvapauttajille, joten yksinpurjehtija kaipaa kyllä herkästi pinnapilottia.

Manio peli. Rahalla saa kohtuulliset tilat, mutta vauhdissa löytyy ja LYS 1,14 on sellainen, että sillä pärjää parhaiten 3-5 m/s tuulissa. Kovassa kelissä iso purjepinta-ala kostautuu ja reivillä vene ei oikein tahdo nousta tuuleen. Mielestäni paras yhdistelmä vauhti ja asuttavuutta tässä hintaluokassa (20-23 t€). Hyvät sivut www.vihne.com.

Mamba 31

Pituus: 9,35 m
Leveys:  3,07 m
Syväys: 1.65 m
LYS: 1,09




Linjet 32

Pituus: 9,47 m
Leveys:  3,09 m
Syväys: 1.70 m
LYS: 1,12

- Hyvä pienen perheen kesälomapursi.


 Erinomaisen laadukas vene, pesee sen suhteen muut ruotsalaiset aikalaisensa mennen tullen. En ole Linjettiä omistanut, mutta aika paljon sellaisella purjehtinut ja monipuolisesti tutustunut. Vene kestää vielä varmasti seuraavallekin polvelle.
Lähde: http://keskustelu.suomi24.fi/node/11614410.
Linjett 32 purjeveneen matkakertomuksia

Jon 30

Pituus: 9,04 m
Leveys:  3,06 m
Syväys: 1.80 m
LYS: 1,09

- Erittäin tukeva avomerivene. Ei hötky pienistä.
- Seisomakorkeus 184 cm.
- Käyttäytyy selkeästi ja rauhallisesti.
- Lyijyköli
- Toimiva sisustus. Peräkajuutta kahdelle hengelle on 30-jalkaisissa harvinaisuus.
- Tilava pentteri ja erillinen vessa.
- Viimeistely koko- ja hintaluokassa poikkeuksellisen laadukasta.
- Iso istumalaatikko. Kuusi mahtuu istumaan reilusti.

- Hidas kevyillä tuulilla. Silti mainettaan nopeampi.
- Luovikärkkäyttä. 

- Vaatii tavallista enemmän paneutumista purjeiden trimmaamiseen.



Pituus: 9,85 m
Leveys:  3,56 m
Syväys: 1.45 m
LYS: 1,13
Riki: Osa-takila
Suunnittelija:  Hans Groop





Pituus: 10,5 m
Leveys:  2,60 m
Syväys: 1.5 m
LYS: 1,13
Riki: Osa-takila
Suunnittelija:  Hans Groop




Guy 33

Pituus: 10,12 m
Leveys:  2,94 m
Syväys: 1.76 m
LYS: 1,13
Takila: Osa-takila
Suunnittelija:  Guy-Christer Lönngren

- Runsaasti makuupaikkoja (etenkin takakajuuttaisessa "cruising mallissa" joita muutama yksilö valmistettu).
- Rungon pinta-ala käytetty tehokkaasti mikäli mittarina paljon makuupaikkoja. 
- Purjehtii hyvin ikäisekseen
- Suhteellisen kevyt kulkemaan leppoisammassakin tuulessa.

- Keveys näkyy hentoina rakenteina, kansien koko pinta-alan kattava kallistus satamassa ollessa (inhottavat kulkea).
- Ei mikään erityisen kovan kelin vene jos mielii vaikka joskus pidemmälle reissulle.
- Melko niukat säilytystilat.
- Seisomakorkeus uupuu muualta kuin kulkuaukon lähettyviltä.
- Eri yksilöiden vertailu vaikeaa koska osa ei veistämön itsensä tekemiä sisältä.

Omistajan kommentit:
ihan hyvä vene kattamaan suurimman osan tarve eli kesäloma matkailu esim saaristomerellä ja viikonloppuja lähisaarissa perhemiehistöllä hintaansa nähden. Oma kokemus 5 kesää kyseisestä veneestä. En hankkisi kyseistä venettä uudestaan jos tuon kokoista & hintaista hakisin vaan mielummin tukevammin rakennetun veneen kuten esim Jon 30/Shipman 28 yms.

Comfort 30

Pituus: 9,09 m
Leveys:  3,03 m
Syväys: 1.68 m
LYS: 1,09
Riki: Toppi
Suunnittelija:  Rolf Magnusson

- lyijyköli
- seisomakorkeus
- omassa koko- ja ikäluokassaan varsin tilava
- purjehtii mukavasti
-  Pentteri oli riittävän kokoinen ja säilytystiloja mukavasti.
- Avotila suhteellisen ja ruotsalaiseen tapaan turvallisen korkealaitainen antaen sparayhoodin kanssa hyvän suojan.
- Runkomuoto on esimerkiksi hiukan parempi kuin Balladissa.


Rakenteellisesti kannattaa tarkastaa rakenteet maston ympäriltä. Masto tulee kannelle ja ensimmäisissä veneissä rakenne oli turhan heppoinen, joka aiheutti ainakin maston pumppaamista

tiistai 19. helmikuuta 2013

DYI Arduino based temperature system

The problem:

The heating system of the house is based on water circulation, which is heated up by burning renewable materials, mainly wood. The system has a water reservoir approximately 2000 liters. The main adjustment of the temperature is made by manually adjusting the main shunt. The issue in here is that the temperature in reservoir varies a lot (+40C - +95C) causing the constant need to make adjustment for the shunt in order to keep stable temperature inside of the house. The variation in reservoir is caused by warming up the heater every now and then, depending of the outside temperature.

The ideal situation would be that the water temperature after the shunt would be stabilized around the 60 C. Higher temperatures would lose the part of the energy to the structures of the house and too low temperature  wouldn't keep the house temperature comfortable.

Simplified block-diagram of the house.

The Solution

Stabilasing the shunt's temperature would be the solution. This could be done by using few temperature sensors, some sort of servo for adjusting the shunt and something, which would glue these all components together and bring logic to the actions.

Yes of course there are several commercial solutions for this purposes and the prices ain't too bad either. For example Ouman's EH-800 would be quite perfect for the price of 500€. But that ain't the spirit. Real DYI-man will go to shop and make the perfect solution for any need.

So I decided the dig in to the problem and start browsing the internet. Quite hastily I found a perfect prototyping board, Arduino uno, from Robomaa.com. It's extremely user-friendly and easy to use-platform, made by Italians. Also all other gadgets could be found from Robomaa, so we're nearly ready to begin.

Shopping list:

Arduino Uno25.00€
Screw Shield For Arduino13.00€
128x64 Graphic LCD, ST792022.20€
3x Onewire DS18B20 Digital Temperature Sensors7.00€/each
Jump wires & Wiressome euros
Heat sinking tubes3.00€
1x button2.00€/each
1x 10Kohm PotentiometerI had one in my storage
Bread board8.00€
ResistorsI had some at my storage
Small screw drivers, soldering iron and thin tinI had some
Digital multimeter20.00€
Strong servo Power HD 1501MG20.00€

I recommend in buying Arduino starter kit for 100€, since it has a good variety of different electronic components.

What's Arduino?

Arduino is a programmable board with multiple digital and analog IOs. It's designed to be user friendly and can be reprogrammed by using C++ and USB-cord. It can be powered by using USB or by using power source.
Arduino Uno R3
It's a fancy platform allowing you to make robots, sensors, human interfaces, camera triggers, autonomic flying devices, stabilization systems, distance sensors, heat cameras, etc..

The Goal

Arduino tries to maintain shunt's temperature in given value by using the servo.
Initial UI-design

The work

At first I tried all separate units separately so that I understood how they should be assembled. The biggest issues I had with the driver of the LCD-screen, which is REALLY lousy. Gladly after the time I found amazing library called u8glib which allows me to make graphs and print text on screen with decent framerate. 

The biggest issues with other libraries were that they didn't support LCD's serial connection, since it doesn't require so many data-pins. Serial-mode requires only 3 data pins and it loses 1:100 in performance compared to parallel-mode.

Digital vs. Analogical temperature sensors.

Digital sensors are great! They're not so dependent of the length of the wire than the analogical sensors are. With a long wire and analogical temperature sensor you need to calibrate the temperature reading separately. Also you need one IO-pin for each temperature sensor. By using digital sensors you may attach many sensors on one wire in parasite mode.

Prototype with 2 temp sensors. It logs the outside temperature in to histogram. Assembled in  to ice-cream box.


Problematic, how to keep temperature kept as close as possible wished value?

It took few iterations before I finally figured out a possible approach for this problem. Ideal approach would be that servo would adjust the shunt such a way that it would slowly approach the user defined value and would somehow keep the temperature as close as possible that desired value.

The best approach for servo's control seems to be rather simple and dynamic, without a huge and complicated functions. I'm simply checking the temperature in near history and projecting the time difference in to future.

For example:
Temperature difference = Current temperature - Temperature 5 minutes ago.


Temperature after 5 minutes = Current temperature + Temperature difference

Final assembly

The assembly of the servo raised to be quite complicated. I had to go trough many iterations, before I found solid way to attach the servo. The bed of the servo is made of the iron and bars, which are controlling the shunt are made of 4mm plastic, which happened to be available.