język:

Articles on optimization by Adrian Kalbarczyk

„Połową sukcesu jest umiejętność zadania trafnego pytania”

, by unknown

Portfolio

About

Here are short stories covering each project I've took part in. The list of technologies isn't most important there. I always precisely write specification taking care of every detail, and then choose best matching technology. The most important aspects are performance, simplicity of coding and availability of libraries.

Technologies of my choice are:

  • Linux - it is free and dedicated solution for servers, but also it is good choice for home usage,
  • Debian - the most reliable, stable, and best supported Linux available; there is no other choice for server operating system,
  • PostgreSQL - the best RDBMS happens to be Oracle and PostgreSQL is like Oracle but is for free; you can have most of the functionality for free so why not using it?,
  • Python - maybe not the most well-thought-out language but you can write like you want in it, you are not limited to only-good-way of programming (like in Java for example) and it is really easy to code complex applications,
  • XML - this technology is not about the format of data but rather an ideology; it can be described along these words: validability automation, testability, exchange ability, portability and much more,
  • JavaScript - there is no choice in browser, everyone is forced to use JS and it is good! There is no better language for doing UIs, event-driven programs etc,
  • XSLT - this is the most advanaced templating engine available in my opinion and programming in it is much of fun!

Note about Java: As performance similar to Python's, I didn't considered Java as good environment to develop programs, but it seems to be outdated information. Now, Java is averagely as fast as OCaml and have much more extensions, modules and code-base. Still, it's class-based-only language so there is no way to write simple applications fast. Neverthless, for long-running applications like servers it seems to be good choice. I still prefer Python/C combo, but now it's only matter of taste.

Projects are in reverse chronological order. At the end there is described my biggest effort since the 2008. From 2004 to 2008 I have been studying computer science and did not have as much time as is needed for such big projects. In every big project I have been working about 10-16 hours per day including weekends.

Optimize Your Code

OYC is my home page, you are currently viewing. It is summary of nearly all my past activity, both in theoretical and practical fields. You can read my articles, view samples of code in different languages, see how I have done things in one of open source languages such as JavaScript, XSLT and HTML, and finally check that my own framework (described below) actually works and how. More on framework in articles, but as of now it is pretty stable and functional. I finally have a technology where I can write the logic of web applications without touching programming language and I'm VERY happy for this!

Site is hosted on small VPS with only 512MB RAM. I managed to deploy site within this limit because of extensive usage of epoll. I'm using Nginx to serve static files and as load balancer (or more like proxy), and I accommodated my framework to work with Cogen.

Project w/o name - XML framework

Since fonon project, which was database-oriented, I'm designing architecture of framework that is fully configurable via XML. It means, one don't have to know SQL, scripting language etc. to create any site he or she want. All application logic will be in XML.

The specification and architecture will be licensed under LGPL or similar. The license of implementation will be discussed with community, if there will be any, or definitely commercial when no one will be interested in developing it.

Codename: fonon

Fonon is Polish for phonon. It was meant to be reactivation of my father old project of radio station. He even had government license for international broadcast in early 90's, but before he started the project they revoked the license. Nowadays, when broadband Internet is so popular and cheap, it is possible to launch radio as streamed MP3. We had to create social network with the accent on text writing. We choose PostgreSQL, Python and JavaScript. Result of our work is very interesting, but we dropped the idea of doing own social network and headed to government financed projects where risk of loosing money is much smaller. Company is also going to extend portfolio with professional websites manufacturing. What is important to me, I have learned near everything about administrating and using PostgreSQL, gained some experience in leading team of developers, and strong Internet application architecture knowledge.

E Library

Naming it library is little over the top, but maybe some day it'll grow to that point. It's set of functions missing from YUI Library and workarounds that was needed for AHE. The prominent thing here is object handling functions. E is now included in JS Templates repository.

Since YUI3, E is in most part no longer needed, but it's still good library for YUI2 and others.

AJAX HTML Editor (AHE) - Bachelor thesis project

You can play with it at http://students.mimuw.edu.pl/~ak214620/. It's an prototype of HTML Editor. The purpose was to research thesis that it is possible to implement HTML and CSS editor in web browser. The result was promising. I implemented something that I call prototype, especially because it works only in FireFox and Opera and even here it is still buggy - this project is too complex for only one programmer to maintain. This code is set of answers to questions "can we do it in the browser?" and "what is the best way to do it?". During development, I learned almost everything about JavaScript, Firefox web browser, and YUI Library. Unfortunately, my adviser didn't took part in this project and he's request was to simply develop a application. I hope to write the real work results some day along with series of JS related articles.

JS Templates

http://code.google.com/p/jstemplates/

The two JavaScript project templates. Creating new project is time consuming process. I needed a simple way of creating them and store best templates I developed. I wanted to make it available for everyone, so I've published it on Google Code under BSD license.

BiznesPlany.net.pl

This is first (and last) commercial implementation of XMLFile library. Turned out, using XML in professional site (which is selling things, so stability and safeness are crucial) works. Maintenance of this site is quite easy. There wasn't any request from owner, that I couldn't do in one evening (and believe me - without XML some of them could took even one week). Site is selling files, so there is security layer preventing people from unauthorised downloads and integration with allpay.pl payment system. Recommendiation about this project

Project at Aurox sp. z o. o.

There was one commercial distribution of Linux back in 2006. It was Fedora-based Aurox Linux. I was hired there to make this distribution be usable for disabled peoples. We added Compiz and worked on Text-to-Speech integration with Gnome by Gnopernicus (now Orca). Unfortunately, there was profit problems with Aurox and it was sold to another company from other city so I couldn't continue work on this project.

XMLTree Library

One of Database lectures at college generated interest in XML in me. Immediately, I tried to implement it at my daily work, so I started to write XML generator in PHP5. It's pretty good implementation, but I'm not sure about performance. I think that there is much room to improvement, but I decided to move the idea to Python where is much more abilities e.g. in optimization field.

source code with description

MP3Ren - mass tagger

Some day I'd learned C language and, as always, wanted to code something useful. I was upset that there is no automatic tagger for MP3 files - I had big collection of ripped CD's at this time with mess in tags. Program takes parameters like album, name, or year and writes it to ID1 tag of each MP3 file in directory, guess song name and track number from file name etc. When no parameters is given, program checks, for each field, if any of files have information filled in and, when it's true, writes it to remaining files. I can't find this program in my backups, but I'll search and upload here some day.

Altix home site with web store - www.altix.pl not in operation any more

Since 2003, I'm maintaining company's Debian server. We needed new home site with store, with ability of keeping track on selling and products changes (there was Excel-based product database at that moment). We outsourced programming of site to mid-sized company, but after they finished and installed it, we realized that it didn't meet our needs. I took over developing of application from them and quickly rewrote all code. I developed very interesting functions like full tracking of product sales, ability to assign a person responsible for contacts with client, simple template system and so on. Project is now strongly outdated because it was written in PHP4. I don't even know if there is any backup.

Zgłoś błąd na tej stronie
Zgłoś błąd na tej stronie
Here you can let me know about errors on page. Reporting misspelings, grammar errors are very welcomed. If you are experiencing serious site bug please write how it is reproducable. You don't need to fill any of these fields!