Robert Zaremba blog Information Technology and programming thoughts by Robert Zaremba en-us Wed, 26 Apr 2017 00:00:00 +0200 <![CDATA[Smart Grid: the Solar Power]]>

Smart Grid: the Solar Power

The age of solar revolution

In recent years we experienced a great boost in renewable energy sources. Hundreds of companies have born to supply the need for wind and solar plants installation. Tesla, the market leader in environmental friendly energy, moves the Solar power to the next level with their new products (Solar Roof [1], Gigafactory [2], Powerwall 2 [3]) and SolarCity acquisition. The world doesn’t end with Tesla. Big corporations like Samsung, Panasonic, LG are participating in the manufactures pursuit. Oil companies, like Total [4] are taking the challenge as well. We see lot of emerging companies: Powervault SolarEdge, Leclanché, Verengo Solar, SunPower, OneRoof Energy, Suniva, Global Solar ... This only confirms the big shift in energy production which is happening now [5]. Speculants agree that solar will become a dominant energy source by 2050.

Smart Grid

So what is a Smart Grid? In a traditional setup, consumers are connected to an electric network, which is controlled by DSO (Distribution System Operators). The energy is supplied by semi-centralized big utilities. An average John has little to no impact into that network. The energy flow is one-directional, more predictable and controllable. Basically, tt looks like this:

Read more...]]>
Wed, 26 Apr 2017 00:00:00 +0200 <![CDATA[FoundShare - an ICO marketplace, Startup Weekend Fin Tech Geneva]]>

FoundShare - an ICO marketplace, Startup Weekend Fin Tech Geneva

21 - 23 April 2017, Fintech Fusion was hosting Startup Weekend Fin Tech Geneva.

The Fintech Startup Weekend is a huge pot of skills, ambitious people with complementary background wanted to challenge their powers.

The goal was simple: accelerate the FinTech movement, use the community power to research and create new disruptive ideas, face yourself to judges. Everything in 52 hours to create a validated business plan.

The event was supported by Swiss FinteCH and theScreener. Eve

Thanks to Cyrus Fazel, I took the time to create a business idea for the initial pitching session. And guess what? The idea got support and was selected to the finals ✌!

Read more...]]>
Mon, 24 Apr 2017 00:00:00 +0200 <![CDATA[Values for Personal Development]]>

Values for Personal Development

In this essay I will highlight the self-reflection process and it’s importance for personal development.

Personal Development covers activities that improve awareness, skills and develop potential. The concept involves formal and informal activities. Looking at people aims in life one should set goals in order to realize and maximize the potential. Personal development should start with finding out what are the personal skills and qualities.

Read more...]]>
Sun, 09 Apr 2017 00:00:00 +0200 <![CDATA[Agile Workflow - essay for an efficient work methodology]]>

Agile Workflow - essay for an efficient work methodology

Having spent years in startups and corporations, I have gathered a wealth of experience in all IT operation levels. I had a good chance to take roles which have been far-reaching and dynamic ones. Currently, I’m evaluating new business idea and I revisit the soft-skills I’ve learned before.

Being open-minded I feel extremely motivated to review the working methodology I’ve develop during my professional career. The output is a set of essays about workflow, IT Team Agreement, and Leadership.

Read more...]]>
Tue, 14 Mar 2017 00:00:00 +0100 <![CDATA[Notes: Applied Machine Learning Days 2017]]>

Notes: Applied Machine Learning Days 2017

This post includes notes from the Applied Machine Learning Days 2017 conference at EPFL which I attended in Jan 2017.

Read more...]]>
Sun, 12 Feb 2017 00:00:00 +0100 <![CDATA[Notes: ReactiveConf 2016]]>

Notes: ReactiveConf 2016

The ReactiveConf 2016 is a great venue where you meet and hear from the new technology drivers, early adapters and it innovators. It had place in the organizers home town - Bratislava, which is another reason to attend the conference - to visit a charming part of the west Europe.

Despite the name, the conference wasn’t much about React

Read more...]]>
Wed, 02 Nov 2016 00:00:00 +0100 <![CDATA[Microservices - the good the bad and the truth]]>

Microservices - the good the bad and the truth

You may went through this multiple times: Why should I consider a microservices architecture? It has been written and spoken a lot in recent years about Microservice Oriented Architecture (MOA). I’m not going to describe it, because there is enough about this in internet[1] and books (highly recommend Building Microservices 2015 from O’Reilly). Here I will like to discuss which project should consider implementing Microservice Oriented Architecture.

Read more...]]>
Wed, 06 Apr 2016 00:00:00 +0200 <![CDATA[Useful application challenge]]>

Useful application challenge

Every software developer and an application designer is facing over-engineering. Instead of providing a great user experience, over-engineered features frequently are not useful and are missing the deadlines.

What is a useful application?

When doing software development I like to think that users want crazy applications and complex solution. I tend to believe that the more robust and generic applications is the more useful it is for users. Thankfully this is utterly wrong.

Read more...]]>
Tue, 29 Mar 2016 00:00:00 +0200 <![CDATA[A simple way for polymorphism and structured programming - Go interfaces]]>

A simple way for polymorphism and structured programming - Go interfaces

On 2015-01-08 I was presenting different polymorphism methods at Institute of Computer Science University of Wrocław. I’m a big fan of simplicity in IT. During that presentation I was trying to persuade why we need simplicity in IT: both for maintenance and high quality software. One of the most important programming language feature to make a program source code more conscious is polymorphism.

Read more...]]>
Wed, 21 Jan 2015 00:00:00 +0100 <![CDATA[Frontend components in React]]>

Frontend components in React

Last week I made a presentation for meet.js PL about React. meet.js is a free front-end meetup organized by web enthusiasts in 6 major Polish cities - Warsaw, Gdańsk, Poznań, Wrocław, Cracow and Katowice.

In a nutshell, I presented why we chose React among other available options (ember.js, angular, backbone ...) in AgFlow, where I’m leading the development team.

Also I try to highlight some problems with MVC pattern everywhere.

I really like a way of React frontend components development. It makes more clear for us to implement use cases views.

Read more...]]>
Sun, 20 Oct 2013 00:00:00 +0200 <![CDATA[Which technology for realtime communication for a web app?]]>

Which technology for realtime communication for a web app?

Web is the main medium to share information and access data on internet. It is usually tight to browser - proxies/routers - web server. The main protocol is HTTP and most of the internet services are HTTP oriented.

HTTP at the beginning was only about one site communication: client makes a request to server and server prepares response. Now web is more then simple request response. It’s a medium for application. And applications often require more then a single site communication.

push notifications - often denoted as a mechanism which allow server to sent requests / events to a client.

There are a lot of solution to integrate HTTP with bi-directional communication, to implement push notifications for a web server.

Read more...]]>
Tue, 30 Apr 2013 00:00:00 +0200 <![CDATA[Which programming language you should use for a web backend]]>

Which programming language you should use for a web backend

Probably a lot of business clients are worried about technology stack they want to use for their IT web services. Recently I was talking with some company about new project. They were concerned about technology they should use for their web startup.

It is a responsible decisions, and a lot of people have similar concerns. If you want to contract a serious project, you probably want to be aware about technology choice, you won’t end up in a dirty hole.

For a frontend you don’t have many options. You probably end up with W3C standards + JavaScript. For a backend the things are different.

Read more...]]>
Fri, 08 Mar 2013 00:00:00 +0100 <![CDATA[Emacs on fly syntax checking for Go programming language]]>

Emacs on fly syntax checking for Go programming language

Emacs is a great, flexible editor. Go is quiet new powerful programming language. There are a lot of blog posts about pros of both Emacs and Go.

Out of the box, configured Emacs looks like text editor for geeks. To make it more useful you need to spent a little of time and turn on some functions. One of the most desirable features for programmers is syntax checking, so the programmer don’t need to make to much edit-save-compile cycles.

Standard Emacs has Flymake built in package. But it is not fashionable. It’s generic and useful, but it’s configuration is awkward. To add syntax checking for buffers (emacs name for a file content) you need to write fight with Elisp (the script language in which Emacs is written).

But there is also Flycheck - new package which supersede Flymake. Essentially it’s “flymake done right”. If you are not familiar with it, I encourage you to read more on Flycheck project site and use it. Flycheck requires Emacs >= 24.

Back to the topic. Adding on fly syntaxt checking for Go programming language is relatively simple. Presented solutions are pure syntax checkers. They don’t compile or make cross modules checking.

Read more...]]>
Mon, 04 Mar 2013 00:00:00 +0100 <![CDATA[Wikipedia processing. PyPy vs CPython benchmark]]>

Wikipedia processing. PyPy vs CPython benchmark

Lately I’ve done some data mining tasks on Wikipedia. It consist of:

  • processing enwiki-pages-articles.xml Wikipedia dump
  • storing pages and categories into mongodb
  • using redis for mapping category titles

I made a benchmark on a real tasks for CPython 2.7.3 and PyPy 2b. Libraries I used:

  • redis 2.7.2
  • pymongo 2.4.2

Furthermore CPython was supported by:

  • hiredis
  • pymongo c-extensions

The benchmark mostly involve databases processing so I fought I won’t have huge PyPy benefit (since CPython drivers are supported by C-extensions).

Below I will describe some interesting results

Read more...]]>
Mon, 18 Feb 2013 00:00:00 +0100 <![CDATA[Tornado - the best Python web framework]]>

Tornado - the best Python web framework

Today web frameworks mostly utilize HTTP requests, usually delivering MVC stack. But web frameworks should do different (because of the web!).
Now web consists mostly of patterns around HTTP protocol (HTTP itself, RESTful, HTTP API ...). Moreover we have bidirectional communication, long requests, high traffic etc...
The ideal framework must:

  • have generic methods, network libraries and asynchronous support to handle previously mentioned stuff.
  • be extensible for new web (web2.0, web3.0 ...)
  • be aware of Python WSGI standard
  • have features to easily develop www platforms
  • have good documentation and community
Read more...]]>
Fri, 25 Jan 2013 00:00:00 +0100 <![CDATA[New Years homework for developers]]>

New Years homework for developers

Are you using some OpenSource tools? Which one the most? Did they allow you to make money? How your life would look like if they didn’t exists?

Name them, type them!
Linux, Python, PyPy, Firefox, vim, emacs, git, wine, ... just to name few. There are systems, applications, languages. Some have big funding. Some even don’t have full time employee positions, are run by open contributors which spend their free time.

Do you want to say thank you?|br| Most of them collects money (e.g. through Software Freedom Conservancy).

  1. Choose the project which you like and which you think it needs your support. Go to their homepage and fine a way to donate. If don’t find, choose the other one, or go to some software foundation (Free Software Foundation, Software Freedom Conservancy).
  2. Donate. It doesn’t need to be a lot of. Everything is counting. Everything is good to say “thank you”. It can be just 5$, which you could spend on a beer.
  3. PrintScreen you confirmation and share on the net, social ...
../../../_images/donate_pypy2013.png ]]>
Sat, 19 Jan 2013 00:00:00 +0100 <![CDATA[Python - language of the decade]]>

Python - language of the decade

Recently I found a PYPL - PopularitY of Programming Language index. It rediscovers the indicator of programming language popularity. Author argue that TIOBE index can be hypocritical due to the ambiguity of programming languages name, and introduce other phrases to use in Google Trends.

Looking at the author study, we can deduce that Python has the biggest increase in the last decade. What’s better we can see good linear growth for 10 years! Greetings for Python!

Read more...]]>
Mon, 07 Jan 2013 00:00:00 +0100 <![CDATA[The Python condition. Why PyPy is the future of Python]]>

The Python condition. Why PyPy is the future of Python

Python is now far more then simply glue or scripting language. For those who think otherwise just check the couple of Python success stories:

I recommend My-Favorite-Python-Things presentation if you are looking for a quick intro to the beauty of Python.

Read more...]]>
Mon, 17 Dec 2012 00:00:00 +0100 <![CDATA[Scala tutorial for programmers]]>

Scala tutorial for programmers

Finally I get myself together and publish my Scala tutorial for programmers (it is linked under menu -> documents).

I started working on two years ago, but didn’t have enough time to finish it. This year I almost didn’t make any update (fortunately Scala also has’nt much of them). If you find any errors please contact me.

I started fascinating Scala in 2008, when I found this language as an impressive work on JVM, and how many clever features can be work on top of it. Scala shows that programming on JVM can be fast and compact. Just dive into and read!

Unfortunately I dislike Scala implicits overhead and abuse of symbolic functions literals, like :%, :=>, ~>, \/, \\/ (here I typed 5 different names). For a Scala expert it can be fun. But Scala world is tight to Java one and not everyone a programming master. When someone needs to look into implicits mess, I’m sure he will need some painkillers. Neverless it contains a lot of brillinat constructs and state of the art solutions from programming languages theory and programming patterns (eg: cake pattern).

At the end I’m still Python evangelist :)

Thu, 13 Dec 2012 00:00:00 +0100 <![CDATA[Blog moved]]>

Blog moved

I’ve just moved my blog from I migrate most of the content. Here you can find my new posts.

The blog was redesigned. It is based on my previous blog. Big thanks to Marta Zaremba who makes the final design, which is so cool (at least for me).

Previously I used platform for blogging. But since twitter bought it there was no development and progress in the palatform.

Mon, 10 Dec 2012 00:00:00 +0100 <![CDATA[Keep your session open]]>

Keep your session open

Have you ever thought how to keep session open on remote host, or want to run multiple processes in a background?

You may hear about nohup, but it is uncomfortable and doesn’t allow you to come back to this process.

tmux and screen

Multiplex virtual consoles are the way to go. Both are well known and widely used in the Linux world.

I prefer tmux. It has more features, is more comfortable and beauty out of the box. According to tmux FAQ:

Read more...]]>
Fri, 16 Nov 2012 00:00:00 +0100 <![CDATA[Hash function benchmark in python]]>

Hash function benchmark in python

I got a task to process a documents which might change. So there need to be some worker process which crawl for processed documents, read new version and check the difference. I don’t want to get into details, but there was no point to store whole document, or some part of it to detect if document changed. If it changed it needs to be reprocessed from the beginning.

The simplest solution is to keep hash of the document, and than compare to hash of the new version. If it is different, than document was changed.

There are a lot of hash function. We can divide then into two groups:

  • noncryptographic
  • cryptographic – we have additional requirement – having only hash result must be hard to find a document which hash equals result.
Read more...]]>
Mon, 04 Jun 2012 00:00:00 +0200 <![CDATA[Scala posts on]]>

Scala posts on


Recently I’m posting some articles about Scala programming language at It is in polish language. But someone might find it interesting.

My posts are reachable with:

Sun, 13 May 2012 00:00:00 +0200 <![CDATA[Actor and functional thinking in contrast to imperative one]]>

Actor and functional thinking in contrast to imperative one

After reading “Why has the actor model not succeeded?” (which I really recommend to read) I’ve started to think about similarities with functional languages.

Actor model was introduced to as an easy and straight solution for designing distributed systems.

Functional languages substitute imperative style focused on “how machines think” by a maths model - “how human would think straight away”.

Read more...]]>
Fri, 27 Jan 2012 00:00:00 +0100 <![CDATA[Jabber client behind firewall and proxy]]>

Jabber client behind firewall and proxy

There is a great article explaining how to setup jabber client to connect to jabber server which is outside firewall:

Behind the scene, if your jabber server don’t support connection through 80/443 port, then you can:

  1. register new account on
  2. Most of the desktop clients support automatic account registration.
  3. install a client that support proxy connection (vacuum-im, psi)
  4. manage a account to connect through proxy (need to know the company proxy)
  5. use as a server to connect to.
Read more...]]>
Mon, 09 Jan 2012 00:00:00 +0100 <![CDATA[How to add GPS (geolocation) tags to photos]]>

How to add GPS (geolocation) tags to photos

There are a lot of web services which read the metadata from pictures and display them. Among doses metadata are those to store gps coordinates. Some services use them to present the location, where a picture was taken. The usually metadata info are stored is EXIF which is one of the popular by camera manufactures and web services. There are also other standards, but not such popular or quiet old.

Read more...]]>
Mon, 02 Jan 2012 00:00:00 +0100