Over time software developer also develop a special sence in what conditions they can concentrate best. Some programmer need it absolutly silent, such as the linux inventer Linus Torvalds. But for me that is nothing. Because there is always something. When it is to quiet, I will listen to my own breath or some neighbors do anything. Then I listen to them. I found that even more distracting then having music running.

situations

From situation to situation I listen to very different music. That made me get used to say, I am listening to good music. Because I like music from electro, classic, rock/metal and hiphop/rap. Texts can realy lead make an average song great. When programming of course I don’t want to get distracted. So when coding I like to listen to radio paradise. I don’t know any song they are playing, but it sounds good. An othere way I use to not get distracted, is listening one song in a loop. For that I take a song that I realy like, then I listen it “to dead”, until i have no more emotions to it. So, then it is still a good song, but it is not distracting. The last songs I was listening in a loop have beed Ambitions by Donkeyboys, Mysti mountains from the Hobbit-movie, die immer Lacht, or “kein bock by eure Mütter”.

quality

As a good software developer I know of course about the parameter of audiofiles and the quality of sound is very important. But actually i don’t care about kb/s or 80-40000Hz. I think even 32kb is ok. Having that, voices sound good and feelings get transported well. When programming it is better to use headphones. I like to head deep bass, but I don’t want my heart to get shocked. For that good headphones are important. I think there are many good brands that offer nice headphones. Both is fine, a small button I stick to my ear or bigger once that cover the hear.

settings

I like to feel a deep bass. So I change the settings in my operating system. with very low mids and very high deeps and hights. There it is important not to increase the bass. but to reduce the mids. Because otherwise the quality get very bad. On the image is my current setting for the pulseaudio driver in Ubuntu. In Windows a similar setting is called Bass-Improvement to have system-wide stronger bass. Actually my notebook is not very good. It was cheap, 4 years old runing by an i3. but with that setting, even guys with mac-books tell me the sound of my notebook is so good. So the notebook can not be as loud as on default settings. It is still worth it.
equalizer

By the way, I am not good at dancing or singing. I don’t play any instrument. I just listen to music.

My notebook is now 4 years old and when I look to get a new one, it seems if there are no better notebooks today. 4 years ago I was paying 460€ for my acer with an i3 4010u, 4GB, 250GB-SSD, 1080p 15.3” screen. Even after so long time it is very hard to find something better, for the same price AND I am looking to have a nootebook of the same size and thikness.. If I want more, I need to play more.

And actually I want more, but when spending a little more, the increase is to little as that I want to do it and it the spects are better, the price easily goes out of range.Since 4 years I live with a broken left mousebutton, so the quality of my notebook was even at that time on a low level. So next time I realy want to spend more for my PC, so that it is every day a better feeling when working on the machine. And as a software developer I work a lot on this machine. most of my opensource projects are developed on my notebook.

Actually I am happy. I am happy that it is not nessasary to get a new device. And I like, that cooding usually requires so little hardware. I am happy, that this hardware lasts so long and delivers a good reliability. since about 8-9 months I am switched to linux and in this area the hardware seems to olden much slower.

And I am not just thinking for myself. It is better for the environment.A device less, that I buy, is a device less, that is on a mountain of crap. And as it seems others are also using there devices longer. 10 years ago, you could buy every two years a new machine. But now a 4 year old computer is still good. I like that. Not to forget is the social stability. A so old machine, is still capable to fulfill most important tasks. I think most of it is on the internet, and a internet PC is today very cheap to get.

With that I want to thank Intel and AMD for a slower innovation cycle.

Recently I had to reinitialize my webserver, doing some updates and just clean up all the stuff, with that I broke with testing the previouse installation. For the new system I decided, that it should be hosted with nodejs, not with apache. Doing that step, I also had to move from wordpress to something new. On the server I had already running serveral nodejs services. That help me to watch youtube videos in china or store files right from the web.
setup

Now the main webserver should be replaced. After checking some options, I decided to run the nodeprocess on a port of my choice and redirect port 80 to that new port using iptables. In this way, the nodeprocess don’t need to get started with root-privileges. With my previouse nodejs services I had the problem, that they always shut down over time. The solution for that is as the following listing:

process.on(‘uncaughtException’, (err)=>{
console.log(err); // actually I log into a file
});

This snipped prevent the server from shutdown after an error and later I can check out what happend. So the issue was, that the servers logged to console. The console was filled up. and the process broke. This issue was the same with using forever, pm2 or run the server in background and ‘disown’.
system

The server that is running now is an express server, serving static files from its public directory. First I begun to do prepare some basic layout writing underscore templates, managed by my template manager. But actually I didn’t wanted to build a layout now. That made me looking for static page generators. On github are many pages made using jekyll. But it is a system made with Ruby and I wanted to use something with node.
hexo

After a while, crawling some websites, I found Hexo. A static page generator, that has some CLI programm to initialize a new project, import content from my wordpress page, create new pages and posts. The structure with pages and posts has directly been familiar to me. For Hexo, there are about 50 themes on the official website. I chose one and tweaked it to look like a page for a software developer. The theme is already responsive and looks very clean.

I can directly write new posts and pages from the console. The cli initializes for each a new markdown file. Where I can direcly write new content. For local, to check out how the page looks the clitools provices a buildin webserver, that will live regenerate the page. For production, you use “hexo generate” to create the static htmlfiles. after generating simple copy the files to the public directory of my live host and there is the new conent. The system even generates archive pages that let the visitor brows the site by time. on the sidebar is a tag-cloud, that help to explore the webside with given tags. This will be a great plus for Search Engine Optimization.

For now I am very excited about hexo, it is great to make simple websites and I can have a good seperation from the rest of the code, that I will add to the server.

Designing APIs is an important task. The API should be simple, follow good conventions, behave like expected, be efficient. This post is about updating data in bunch operations.

Lets say you have a blog-system with many authors. On the back-end the authors have a list of all posts and pages. Now they can select many and publish all at once. It is also possible to select a few and change there rating. Actually I don’t want to talk about a blog system. It is about changing many items in a list.

In a standard RESTful-API it is the case that the client will send a patch-request for each of the items. This RESTful approach is simple to implement, in many cases the API can be generated almost automatically. For example you have a MongoDB or MySQL. Using sails.js or loopback you can easily expose an HTTP-REST-endpoint. Also on client side that API can be used very easy. Loop over the selected items, trigger the update-call and handle the response, one by one.

But as comfortable as it is it is also not efficient. When always sending the same information for different entries. In slow connections (mobile, village, shared internet, China), it can reduce the user experience. For this cases the server can provide additional methods to handle bunch operations. like publishPosts many, changeRatingTo. Both methods would in our case expect a list of postIds and the value to change to.

Having a list of Items to change on the server, you have the same question again. Do you execute a single update command on the db or one update after the other. Can you check the permission in as list-operation? Then you can decide, refuse all item-changes if one item fails with some precondition. Last is the result reporting. do you need to send success states for each item, only the success items, only the failing item-changes.

How ever the solution is, that you chose. You should give a transparent report to the user and update the item list accordingly. In the end I want to give you some questions you can ask, when you get the task to implement an API with list operation.

  1. can each item get a different value using this procedure?
  2. fail-one-_fail-all or detailed report?
  3. how should the error reporting look like?

Last time I told you about txml, the fastest XML parser in Javascript.

Now I have a new bonbon for you. tReeact. A framework that is inspired by facebook’s react. In react you are compiling JSX letting you generating an object-tree representing the html-DOM structure. In tReeact you are generating an html-string representing your UI. tReeact will parse that string (usind txml) and do the reconcilation, to update the UI and only change the elements that need an update.

This is good, because you can directly reason, why your UI looks as it is, according to your app-data and the generation of the XML. Making updates to the DOM-Elements, it is easy to apply animations using CSS. The XML can easily get created with a templating language of your choice or be send to you from your server.

An important feature are also components. They are used to handle UI-Events. In your app, you can provide some generic components to set a value on click or on change of an input with a direct rerendering. That will provide two-way databinding between your UI and your app-data.

So the idea and the usage are discribed quickly. If you like to generate your UI using a templating language of your choice, if you want a separation of your app-logic and the UI development, if you want to handle your UI in a pure procedural way or if you want to build your app with a flux framework, You should give it a try and check it out on Github and npm.

tReeact is a great option, that let you scale from small apps to complex enterprise applications.