Paweł Jackowski

Everybody should learn how to program a computer because it teaches how to think.

... and you should also learn how to scan ports for bizarre services ;]

Intro

I am a versatile software engineer with 10 years of experience in web application development and 5 years in information security. I am seeking an opportunity to join an ambitious team to deliver quality and secure products and learn new skills.

As a teenager, I was interested in game development, OpenGL graphics, and the demoscene computer art subculture. This led me to a degree in Computer Science and later my interest evolved toward web application development. Over the years I have gained expertise in JavaScript, Python, and Ruby on Rails.

I spent several years in information security working on all aspects of security, including threat modeling, source code review, internal pentesting, and incident response. I assisted the dev and devops teams in web application and cloud infrastructure security. I have developed a unique set of skills well outside of the typical range of skills in a dev team.

I have a keen interest in working with a team. I am self-motivated and determined to solve problems, and I will look for the information I need to accomplish goals or ask AI for a hint ;] I like to work with well-crafted, tested, and secure code and have a great time doing awesome visuals. It has never been easier to develop web applications!

Development skills

Most of my development skills were in the front-end, and historically, the back-end has been auxiliary. Since then I transitioning to a full-stack role, as I have been always interested in becoming a more versatile, T-shaped engineer.

Information security

I have technical infosec expertise, however, security skills are either too general or too tool-specific to list them here and I don't list the tools used by previous employers for security reasons. Please refer to my CV and Offensive Security Certified Professional (OSCP) exam and PEN-200 course descriptions for more details.

Projects

Most of the projects are somewhat dated in terms of technology but are high in nostalgia ;] All the JavaScript projects are still working in the latest browsers.

Passphrase generator 2019

Secure passphrase generator based on 60k words English dictionary. It is a stronger version of the Diceware passphrase generation method. Entropy estimations for a passphrase as well as classic machine-generated passwords are provided for comparison purposes. Words are generated by the client in JS and there is no communication with the server other than fetching JS/HTML resources and the initial dictionary file download.

Scrap value of hacked computer 2015

A presentation about the value of hacked computers and ways criminals can monetize access to your computer or server. The presentation is coded in HTML/CSS and JS. There is no single image, all visuals are pure CSS, which back then was quite impressive. To see all presentations visit my GitHub presentations repo.

RC model flying 2014

A presentation about one of my hobbies, RC helicopters, and drones. It was a very interactive session that attracted a wide audience. I tend to repeat it multiple times in every office I work in, because of the high levels of interest it sparks.

Password security presentation 2014

A presentation about password security with interactive front-end presentation coded in HTML/CSS and JS.

Introduction to Webstorm 2014

A presentation about JetBrains Webstorm, excellent IDE for front-end developers. I truly believe one has to master own tools before can archive real magic.

Snapshot Serengeti 2013

I made a set of wireframes as a proposition for a mobile-friendly version of Snapshot Serengeti. It was one of the awesome projects hosted by Zooniverse. I am not an author of the original project, but I had ideas to optimize navigation and rearrange the layout to be responsive and work on the mobiles. A lot of people used to spend hours every day traveling to work, so I thought it was important to enable them to do science on the go.

Chronos 2013

Wireframes of Chronos weekend project. It was an initiative to deliver a small web application to integrate with a corporate holiday tracking system to replace or supplement the existing tool that had a horrible user experience and was widely considered* as the software equivalent of a torture chamber ;-] From a perspective of time, the expectations about the dwindling rate of enthusiasm of coworkers were underestimated ;-] Such projects aren't well received in larger corporations or rather they are, but the amount of bureaucracy required to do anything is beyond belief, so nothing gets done. The project didn't attract enough medium to long-term attention and effort to result in a minimum viable product (MVP) and integration with the rest of the suite.

The wireframe toolkit was from eleqtriq.com

Force based diagram 2012JavaScript / Raphael.js

Implementation of the force-based algorithm. Did I mention I like physics?! ;-] Position of nodes in the graph depends on the resultant force, a set of forces reduced to a single vector. There are three main forces computed for each node in each step:

  • repulsion based on Coulomb's law, as all nodes carry the same charge
  • the resilience of spring connecting nodes based on Hooke's law
  • gravity force which pulls up nodes, so single nodes or separated groups stay fairly close to the centre of mass

The initial position is random, far from optimum in terms of energy. Such a state is very unstable and once the simulation starts diagram stabilizes. In the end, the graph is very close to its local minimum state of energy. This might not be a global minimum, perfect state, but often is good enough and requires less computation.

Energy minimum means that all spring-driven forces are in balance with repulsion electric forces. Nodes aren't moving anymore and kinetic energy is very close to zero. Another important thing is friction. Dampening wastes energy, so simulation stops at some point, otherwise, it would keep moving forever.

Each node has a mass, size, and color derived from the input data. In other words, a bigger value is a bigger mass and size of the bubble. The relation between nodes is expressed by the length of the spring, a closer relationship is a shorter spring.

Analytic reports 2007-2009JavaScript / FusionCharts

Large UI project I developed for clients. Front-end was designed and coded solely by me and it was my first commercial project. Back then there were much fewer tools available to developers and incompatibilities between browsers were a major pain point.

Visualization of porous materials 2006-2007C++ / OPENGL

My university final project. The program generates 3D porous, granulated material with a fixed location of pores. The pores' position and size are calculated and collision detection ensures all pores are rendered correctly. The graphic has been done in OpenGL.

3D engine 2003-2005C++ / OPENGL

Landscape rendering engine. The engine loads height maps and creates 3D landscapes covered with textures. Data such as textures or height maps are loaded from individual, uncompressed files. Parameters of the scene can be changed by command line parameters or during run time. It is a basic rendering engine, with simple physics such as gravity and collision detection. At the time I was proud of it since it involved a lot of relatively complex math and OpenGL magic. The graphic cards weren't as sophisticated as nowadays but had a decent selection of hardware-supported features.

I planned to expand the engine into a full RTS (real-time strategy) game, but it still required a lot of work to turn it into a useful project, that is an engine capable of loading complete maps with minimum fine-tuning and customization, like in the proper games of that time. Not to mention, the game would require even more work to be actually playable, such as AI opponents, interacting with the environment, and various content including graphical assets. Instead, I managed to reuse big chunks of the code as a foundation for my final university project, and I learned a ton of things, including quaternions! ;]

Telescope model 2004SolidWorks

3D telescope model built in SolidWorks. This is a very accurate model, up to millimeters, of a real telescope. The project is fully interactive and composed of many movable parts. Constraints in SolidWorks define the position of parts and the way they move and respond to forces. It is a fully assembled, moveable model.

Gauss function visualisation 2004C++ / OPENGL

Visualization of Gaussian function. The graph shows the characteristic bell curve, also known as the normal distribution. The application was interactive and it allowed to control curve by providing different input parameters.

TetrisGL 2003C++ / OPENGL

A simple implementation of a Tetris-like game in C++ and OpenGL. Writing the game was more exciting than playing it, trust me! ;-]

Open Source

I have contributed to a small selection of open-source projects, most of which isn't worth mentioning here, see my GitHub account. I have a couple of hundred solutions to upload to the GibHub, though, notably solutions to LeetCode and Project Euler coding challenges, and HackTheBox and TryHackMe infosec challenges and machine writeups. This is a work in progress.

The Battle for Wesnoth

I was a Polish translation maintainer and coordinator of the open-source game: The Battle for Wesnoth. It is a turn-based strategy game with a fantasy theme. Wesnoth has many different campaigns and scenarios waiting to be played. It is a very mature and stable project, that had been actively developed for over a decade.

My contributions are tiny compared to the work of skilled volunteers that had created over years hundreds of beautifully animated units. Artworks are just awesome! ;-]

Citizen science

Crowd science is a way to distribute a scientific workload to the community of enthusiasts, who analyze the data in a specific way, guided in the project. Usually, there is little to no prior scientific knowledge required and the tasks are narrow in scope. People contribute for a number of reasons and I was participating because it was such a great opportunity to learn and push the boundary of science. Following are some projects I have participated in.

Zooniverse

Zooniverse is the largest, most popular, and most successful platform hosting citizen science projects. I am not active right now, but I contributed 15k classifications of the scientific data so far.

The Andromeda Project

The Andromeda Project goal was to identify star clusters in the M31 Andromeda, the closest spiral galaxy to Milky Way. The majority of identified clusters were never classified in any catalogue before, so every contribution has a significant impact on astronomy. I also contributed to Local Group Cluster Search with a similar goal to cover the remaining galaxies in the Local Group.

Galaxy Zoo

Galaxy Zoo is a large-scale galaxy research project where volunteers classify the shapes and features of galaxies. This improves understanding of how galaxies formed and their evolution. I have seen thousands of galaxies, and my favourite objects are spiral and merging galaxies. Elliptical galaxies are the largest, but they are rather smooth, oval-shaped, often with no distinct features.

Planet Hunters

Planet Hunters is all about searching for exoplanets. NASA's Kepler space telescope, now retired delivered a large amount of data. Volunteers have sifted through it over years and discovered thousands of new planets around stars outside of the Solar System. Transiting Exoplanet Survey Satellite (TESS) continues providing more data to this evolving branch of astronomy.

Space Warps

Space Warps was a very unique project. Massive galaxies warp space-time, bending light rays so that we can see around them. When it happens, the gravity lens is giving us a zoomed-in view of the distant universe behind the lensing galaxy. Lenses can help us investigate young galaxies more than halfway across the universe, as they form stars and start taking the familiar shapes we see nearby.

Planet Four

Planet Four project is a must for everybody interested in Mars. It is a great opportunity to explore the surface of the Red Planet. Using HiRISE data from the Mars Reconnaissance Orbiter (MRO), volunteers can study wind patterns on the Martian surface. The purpose of the project is to identify and measure features left by geysers of carbon dioxide bursting trough ground layer.

Snapshot Serengeti

Snapshot Serengeti was an interesting window into the dynamics of Africa’s most elusive wildlife species. I helped classify all the native animals caught in millions of camera trap images collected in Serengeti National Park. I like animals and the project was a unique opportunity to understand their behaviour and learn about the great diversity of species living in Africa.

Hobby

I am interested in science, especially astronomy, astrobiology, astrophysics, and cosmology. mostly on the popular science level, but I have contributed to real science myself in the past. I build and fly radio-controlled models and drones, which naturally leads to electronics, soldering, and DIY in general. I like hiking, and cycling and try to live a healthy lifestyle.

These are a few of the projects I worked on over the last years. Updates to this site weren't on my radar in recent years and I have more to add, so stay tuned!

RC models

I fly radio-controlled, 6-channel helicopters and drones, built either by myself from selected parts or from kits. They are very precise and powerful flying machines and fly in exactly the same way as real helicopters. There are no shortcuts in terms of rotor mechanics, control surfaces, etc.

I build foam planes. It is a cheap and simple method of constructing fixed-wing RC aircraft. Models are easy to fix in case of a hard landing and present a little risk due to low weight and density, as well as a soft structural material, which also offers some protection to the internal components. It is relatively easy to shape a good aerodynamic wing profile by sanding the foam.

DIY Workbench

I designed and built a workbench. The 3D model was created in Google SketchUp. It was a very interesting project and the first furniture I have ever made. The bench is very stable and stiff, however, I had to add diagonal supports in order to support the legs, because a 90-degree connection isn't rigid enough. Rookie mistake! ;] Drawer works smoothly, as it is mounted on ball-bearing sliders. The workbench is very handy, especially when I do soldering.

Cats

All my cats have been adopted or found homeless. Consider adopting a pet from a shelter if you can! ;] There are plenty of pets waiting for new owners in overcrowded shelters, so never buy from a pet store.

Thanks for scrolling ;]