Experienced full-stack web developer
Hi! I'm Tomasz. Currently I'm not looking for work. If you wish to contact me anyway, click here.
I’ve been delivering web solutions for over 10 years, ranging from simple modules to complex insurance or ed-tech web platforms. I’m able to work on relatively small freelancing projects, as well as on big ongoing ones, as part of your team.
So whenever you need a one-time help or you’re looking for someone to help you with (or even lead) a multi-month project, I’m able to help you (if only it’s within my area of expertise!).
|Back end||Django, Django REST Framework, Celery, nginx|
|Databases||PostgreSQL, Consul (KV Store)|
|Deployment, automation & orchestration||Ansible, Docker, Docker Swarm, Swarm Classic, Consul, Kubernetes basics|
|+ click here to see over 300 tags|
on Stack Overflow
An often undervalued aspect of web development is product security.
I always strive to provide the best security possible under given circumstances and to be transparent about any (potential) pitfalls I’m aware of –whether this means applying best practices for a web framework or making sure processes inside your containers cannot easily escalate their privileges.
I was an important member of a team working on a Virtual Labs platform which allowed online course creators to prepare and provide online training environments for their learners.
Technologies used on the backend side included: Docker, Swarm, Consul, Ansible, misc. features of the Google Cloud Platform (Compute Engine, private Docker Registry, advanced networking, etc.) managed either through Terraform (during the provisioning of clusters or individual VMs) or directly, using GCP APIs (from within the Python/Django app).
An important part of my role was working directly with some of the key customers (universities and corporations) and providing them with support and consulting services (including product planning, gathering feedback or training).
I joined the project (a web platform for issuing and administering the policies of a large US insurance company) in its early stages of development to speed up the whole process. After some months of translating the business rules and requirements into the code, the platform was ready for launching. After that I and the rest of the team provided ongoing maintenance and further development of new features.
I worked as a development team member, and gradually became responsible for many areas of the software (rates, endorsements, document management, complex web forms); additionally I undertook non-programming tasks such as infrastructure management and tech interviews with developer candidates.
During the two years I worked on the project, I became the top committer, with respect to both the number of commits and the number of lines of code.
As the lead developer I was mostly focused on the back end, though I was involved in much of the front-end scripting as well. The front-end scripts heavily relied on the Knockout library. The site was fully integrated with Facebook.
A significant part of the challenge was to implement the code for importing data from an external provider (that included team data, league/division data, fixtures, match results, schedule changes, etc.).
The imported data was a basis for social interactions, e.g. the imported match results were automatically posted as comments to the activity streams of the relevant leagues, teams and players, where they could be discussed (similarly to how it happens on Facebook).
Together with one other developer we built a replacement for a well-known CRM product from scratch, by providing a sub-set of its features while tightly integrating it with other software used by the company. The integration allowed presentation of important data & statistics in a single place, thus saving employees a lot of time and effort.
A list of sites using the AskBot forum can be found here.
I worked closely with Evgeny Fadeev (project owner/lead developer) on the major refactoring of data models to remove duplication and simplify their structures.
I also spent a good deal of time reworking the database migration scripts to make them work flawlessly on all three supported databases (MySQL, PostgresSQL, SQLite).
The goal of the project was to allow automatic two-way communication with employees using text messages (SMS) and voice calls. The system would send messages and make calls to selected employees to collect their responses.
The major challenge on this project was the integration of the Tropo API, and its speech recognition feature.
The module was meant to collect incoming data originating from remote sensors and relied on the scalability of GAE to process the volume of incoming data.
Last change: Aug 6, 2018
This website uses a single cookie (“SERVERID…”) that is used by my hosting provider OVH for load-balancing purposes (to know which server is handling your browsing session).
As an additional measure you can disable cookies in your web browser.
This website contains links to other websites which are not under my control and have their own privacy policies.
For your convenience those links are marked with an icon () where possible, but to be sure you don’t visit websites you don’t want to visit please verify the links you click.
Whenever you browse this website you share the following information with me, through my hosting provider OVH:
(Note that you can configure your browser to limit the amount of information sent and also you can use a solution like a VPN to hide your real IP address.)
This information is logged only for security (for instance preventing/detecting attacks and post-incident activities) and troubleshooting purposes and is also used to create aggregate anonymous statistics about website usage (a built-in feature provided by OVH).
As per OVH policy described in their service terms the logs should be retained only for 30 days after which OVH no longer stores them. If for some reason the logs are still accessible after that time I will delete them manually as soon as I notice the problem and/or open a support case to permanently fix the issue.
Note that there might be cases where there is a legal (or other important) reason to retain the logs for a longer period of time. In such cases the logs will be deleted as soon as the reason for retaining them stops, if only possible. (As for instance, I might not be able to guarantee the deletion of logs shared with 3rd parties in a legal process.)
The legal basis for the processing detailed in this section are articles 6.1.f (legitimate interests) and/or 6.1.c (legal obligations) of GDPR, depending on specific circumstances.
The only third parties involved in data collection performed by this website are my hosting provider OVH (in my case I have a contract with its Polish branch OVH Sp. z o.o. and its related companies).
Although this website is hosted in OVH datacenter in Gravelines, France, my Data Processing Agreement with OVH states that they can engage their non-EU companies (for instance, OVH Canada) in processing the data when it’s strictly necessary, e.g. for incident handling. OVH declares, however, that it will only engage such subsidiaries from countries providing an adequate protection level (and they explicitly exclude the USA), as decided by the EU.
As per GDPR I have to inform you about your rights. With regards to the personal data collected by this website you have the right to:
You can send any such request to: firstname.lastname@example.org
No automated decision-making, as specified by article 22 of GDPR, takes place when you browse this website.
(Although my hosting provider’s infrastructure might perform automated decisions based on IP addresses and other available data, to e.g. protect against DDOS attacks, to the extent I’m aware such technical measures that don’t produce legal effects or otherwise similarly affect individuals, don’t fall under the scope of the aforementioned article 22 of GDPR.)
You can always check the date of the most recent changes at the top of this document.