Robert Zaremba blog Information Technology and programming thoughts by Robert Zaremba en-us Wed, 26 Oct 2022 00:00:00 +0200 <![CDATA[Regenerative Metaverse]]>

Regenerative Metaverse

What is the metaverse? We are hearing about it a lot. For the sake of this talk, metaverse is a virtual place where we live, work and play. It’s an Infinite Garden. Can a metaverse create a sustainable place to live work and play? Certainly yes if we apply regenerative approach. How to assure that a value is not extracted from the users (as in web2.0), but given to the users and the ecosystems?

Read more...]]>
Wed, 26 Oct 2022 00:00:00 +0200 <![CDATA[Blockchain startup canvas]]>

Blockchain startup canvas

I have a long experience with startups: form being the first employee in a startup, partnerships, setting up own startups, advising and mentoring. I won few hackathons and gained lot of very valuable experience. Business Canvas is present at almost every hackathon. Today I’m writing about the central point - startup idea and market validation.

However this one is a bit different - it’s shaped toward blockchain products.

Read more...]]>
Thu, 16 Apr 2020 00:00:00 +0200 <![CDATA[Moving blog to a new domain]]>

Moving blog to a new domain

Finally I decided to move the blog to my main domain: From now on, this blog will be hosted at

Hope the indexers will catch up soon ;)

Sat, 04 Apr 2020 00:00:00 +0200 <![CDATA[Fully decentralized DeFi won't scale.]]>

Fully decentralized DeFi won’t scale.

DeFi in it’s visionary form (fully open, inclusive, custody-less, decentralized) won’t work in the real world unless our civilization will restart. Here is why.

Read more...]]>
Thu, 05 Mar 2020 00:00:00 +0100 <![CDATA[Substrate Workshop in Geneva]]>

Substrate Workshop in Geneva

Note on my Facebook.

Early September I had a pleasure to co-organize with Parity Technologies Substrate workshop in Geneva. Our goal was simple - get hands dirty with Rust and Substrate code. We gather great engineers from Geneva are and coded our first Substrate based blockchain. The whole event was composed from 2 parts: DevChain meetup and classes at CREA.

Read more...]]>
Fri, 18 Oct 2019 00:00:00 +0200 <![CDATA[Well done at Swiss Blockchain Hackathon 2019]]>

Well done at Swiss Blockchain Hackathon 2019

Note on my Facebook.

SBHack 2019 was amazing. Great atmosphere, energizing people. I was building a team for my ongoing project: a next-level (legal) contract management system (more info about the project later).

I was super happy to build a rock start team! So let me start with a short team description.

Read more...]]>
Tue, 02 Jul 2019 00:00:00 +0200 <![CDATA[Applying Lean methodology to do hard things.]]>

Applying Lean methodology to do hard things.

Note on my Facebook.

Recently I’ve stumbled upon a great article: “How to do hard things” by David R. MacIver. I found that the technique he proposes follows the Lean Principles. Lean is all about baby steps and early feedback:

  • Find a pivot which is at yours fingertips and which brings the value.
  • Do your best to achieve that pivot. Build!
  • Measure what is working what is not.
  • Learn from the work - try to get the best sense of what is good enough (now, in the future etc...). Learn what you did well what bad. Learn if the pivot was successful. Learn how much closer you are to the customer satisfaction (try to be quantitative).
Read more...]]>
Fri, 31 May 2019 00:00:00 +0200 <![CDATA[Token Economics: Token Design problems & classification]]>

Token Economics: Token Design problems & classification

Note on my Facebook.

Most of the blockchain based crowdfunding (ICO, ITE, TGE, STO...) want to promise positive returns. Fair enough ☺ Later in the article I will cumulatively refer to any sort of token issuance as an ICO.

Entrepreneurs, when seeking for a capital for their business using an ICO , need to create a token growing mechanism in order to attract investors. The most obvious way is to promise financial returns. This obviously creates all sort of legal problems related to regulations, customer protection, AML / anti terrorism. It’s very often that the ICO thinking process is following:

  • We need money
  • Let’s sell tokens (ICO...)
  • Tokens can be used for A, B and C...
  • Now let’s find a find a way to attract investors. The token value has to grow.
Read more...]]>
Tue, 23 Apr 2019 00:00:00 +0200 <![CDATA[Moving blog to FB pages]]>

Moving blog to FB pages

I decided to continue my blog using Facebook Pages. Please follow me at:

The main reasons:

  • It’s easier and faster to publish.
  • Convenience for creating a quick posts with photos using mobile.
  • Convenience for uploading videos.
  • Facebook Notes just works for creating nice posts (example)
  • Social networks effect - easier to share / follow.
  • FB Pages works for people who don’t have FB account.

One may ask about privacy. My blog is public!

Fri, 01 Feb 2019 00:00:00 +0100 <![CDATA[Working DNA. Stop Politics!]]>

Working DNA. Stop Politics!


Politics (Oxford Dictionary):
Activities aimed at improving someone’s status or increasing power within an organization.
Politics (Organizational Politics):
Organizational Politics are the activities managers engage in to increase their power and use it to achieve their goals
Politics (Acting):
Politics is an act of saying and performing different things to different people in order to gain influence or power.

“The test of a first-rate intelligence is the ability to hold two opposed ideas in the mind at the same time, and still retain the ability to function.”
     - F. Scott Fitzgerald

In a true Agile Team spirit, politics not targeting the company and team growth are miserable acts of individual autocracy. This kind of acts has to be early detected. The company (or any other partnership) has to define a DNA to eliminate politics as much as possible.

Read more...]]>
Sat, 15 Dec 2018 00:00:00 +0100 <![CDATA[EOS - a breakout the world doesn't need]]>

EOS - a breakout the world doesn’t need

After spending a time digging into EOS, looking at the community and researching all pros & cons for using EOS as the blockchain platform, I come into following conclusions.

EOS.IO is a great piece of technology and amazing experiment to make a “global computer” working. It’s uber challenging to design and came across the Decentralized Ledger Technology to provide a secure and trustless settlement platform for transaction operations. Let’s have a look if EOS solves that problem.

Read more...]]>
Sat, 11 Aug 2018 00:00:00 +0200 <![CDATA[Agile Workflow update]]>

Agile Workflow update

Building a team and setting up the project on rails is a lot of challenges. That’s the main reason why Agile Methodologies are on the table all and over again.

Having some time for reflection and going over more tools and processes I’ve updated my Agile Workflow - essay for an efficient work methodology.

The update includes:

  • The value of customer targeting, both for the project teams and marketing.
  • Value of CRM tools.
  • Analytics.
  • The Lean Startup key points (by Eric Ries).
  • Site Reliability Engineering (all together with SLO, SLI, SLA).
  • Design thinking.

Hope you will find some inspiration from it. Have a good reading!

Mon, 04 Jun 2018 00:00:00 +0200 <![CDATA[Winning Blockchain Xperience Hackathon!]]>

Winning Blockchain Xperience Hackathon!

We did it!

I was honored to lead the winning team of the Blockchain Xperience Hackathon @ Oracle [1] [2], part of the Open Geneva Festival.

Our project, DEX Escrow, aimed to provide a solution for deferred money transfers where the funds are locked under management of financial institutions.

The DEX Escrow project was following my Escrow Protocol research for the SIX hackathon, where he was I was pitching an idea of inter-banking systems. The project was highlighted and go into the SIX finals (among 5 other teams).

Many thanks to our Blockchain Xperience team:

  • Guillaume Goutaudier
  • Raphaël Vieira
  • Pierre Guiol
  • Myself ;)

I’m honored (and thankful) for Guillaume testimony he provided to Oracle:

“When Robert suggested to build up a team for the Oracle Hackaton, I immediately accepted the challenge. I had previous experiences working on public blockchains (mainly Ethereum), but wanted to explore use cases where having a “permissioned” Blockchain would make more sense. From this perspective, the DEX escrow protocol was a nice opportunity to work on a solution where there is a limited number of participants, and where the reliance on a 3d party could be replaced by a Blockchain.”

Please read the Aires Marques post detailing the hackathon experience [3].

Read more...]]>
Tue, 24 Apr 2018 00:00:00 +0200 <![CDATA[Hollywood style crypto-specialists]]>

Hollywood style crypto-specialists

2017 was the year of ICO. It created a bunch of new professions:

  • ICO Specialists
  • Blockchain Specialists
  • Crypto Adviser

This was followed by an outbreak of so called advisory crypto-specialists. On LinkedIn I witness thousands of specialist level profiles without any track of records! The demand is huge, so people naturally fill the gaps to catch appreciable market occasion and obtain visibility. Don’t get me wrong. We need profiles who understand the Distributed Ledger Technology (aka. Blockchain). However, at the same time we need more education and awareness to correctly assess and utilize “specialists”. Especially the advisory-level who are going to provide valuable business and technology input into your new projects.

Read more...]]>
Sat, 17 Feb 2018 00:00:00 +0100 <![CDATA[Word of the day: Praxeology]]>

Word of the day: Praxeology

Why do we do the things we do? Why do some people like tea while others prefer coffee? Why do act as we act (communicating, learning, driving, working...)? This and many more questions are important part of any business and artificial intelligence.

Praxeology is the science of human action, which is purposeful behavior.

It’s one of the greatest AI challenges to learn the human behavior. It’s necessary for all kind of artificial assistants which we will see more often in our households and offices in the next decade.

Read more...]]>
Wed, 14 Feb 2018 00:00:00 +0100 <![CDATA[Doers, Coachers and Product Managers]]>

Doers, Coachers and Product Managers

What do you think about the following statement?

We Need Fewer Product Managers.

John Cutler recently published an article with same title.

Later, the author clarifies:

This post has been brewing as I interact with more and more companies struggling to define (and scale) product “management” in increasingly complex organizations.

Personally I can’t agree more. We need more clearly defined roles and more doers.

Read more...]]>
Tue, 06 Feb 2018 00:00:00 +0100 <![CDATA[Essential values for leadership]]>

Essential values for leadership


  1. The action of leading a group of people or an organization.
  2. An act or instance of leading; guidance; direction

Leader [by Oxford Dictionary]:

  1. The person who leads or commands a group, organization, or country.
  2. An organization or company that is the most advanced or successful in a particular area.

“People go farther than they thought they could when someone else thinks they can.”
     – John Maxwell

Leadership is about delivering the values through the balance of development, business foresight, performance, and character.

Read more...]]>
Wed, 20 Dec 2017 00:00:00 +0100 <![CDATA[Stop publishing PDF]]>

Stop publishing PDF

PDF, currently, is the dominant file format in the internet. You can see it everywhere: documentations, manuals, research papers, white papers, yellow papers ...

PDF, Portable Document Format, is a complex file format to present documents without being dependent on the platform (hardware, OS).

PDF is NOT portable in the digital world

The title might sound suspicious. This is what I mean by the digital world: the robots (and applications), which are parsing and consuming the data, and people who are using variety of devices to consume the content in a friendly manner.

This days most of the content is consumed by digital devices. There are many initiatives promoting environmental conscious life and work style (e.g. not printing the documents, emails ...). With smartphones, tablets and ebook readers the digital content is even more accessible for an average user. Instead of going with a bag of papers we can use digital devices to easily store, and read documents whenever we will like. Life should be easy, right?

PDF is not portable on digital screens. It doesn’t scale. It’s not comfortable to read PDF files on a mobile or ebook readers (which, is my favorite way to read documents). Even for the printed documents, people don’t agree on the paper size (US Letter vs A4 ...).

PDF is not easy for parsing and data-mining. The format doesn’t carry any knowledge representation. You can’t connect the “dots” (piece of information) in the PDF document and easily parse it. Other formats are more friendly. For example: HTML has OWL extensions which embeds ontology into the document elements.

Moreover It’s not easier to create the PDF document. You need to think more about the design and typesetting. Having formats which automatically construct the document flow (eg HTML) and editors which will do it automatically, we can focus on the content rather than design.

How about typesetting? Sure, if you want to publish a good-looking book, than you need to care about typesetting. Though majority of documents are not published as books. Even so, popular auto-adjustable formats will compose the content into nice looking paper publications. PDF documents has it’s use-cases (aforementioned complex typesetting, interactive forms, ...) - but as discussed here, it’s not the best neither the simplest for common publications.

Finally all popular devices have ready to install EPUB, MOBI or HTML viewers.


So here is my call: Stop using PDF for internet publications unless you have rigid typesetting requirements (e.g. books with non-trivial design). Try:

  • EPUB - which is basically the HTML page with all dependencies bundled into a zip file.
  • any other markup language, which can easily generate EPUB or HTML.
  • Google Docs (they scale well and you can easily export to docx, epub and PDF when needed).
  • Publish in multiple format if you want to stick with PDF for some reson.

Let’s make the life easier for digital users.

Wed, 05 Jul 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.

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[Essential values for Personal Development]]>

Essential 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? Do they collect donations? 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?
Most of them collects money (e.g. through Software Freedom Conservancy).

  1. Choose the project which you like and needs your support. Go to their homepage and fine a way to donate. If they don’t collect donation, choose the other project, 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 internet, 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