Lukasz Baldyga

Welcome

Guide to this website

It’s very trivial to navigate the pages. Use the left side to open folders. Clicking on a section will highlight it and move your view to it. Use the back arrow to go back up. It’s very similar to your operating system’s files and folders. Please note, if you’re using the bare version of this website, you cannot navigate and you have the full page in view. Enjoy!

About Me

I am an aspiring full stack security/programmer. I self host and write my own programs for my own needs. I love Linux. I host my own websites and make my own content. My dream is to work at a company where I'll be able to grow and learn as a person and a programmer.

I'm currently studying Cyber Forensics and Security at Leeds Beckett University. Check out some of my projects I have done at university, they’re the best example I have of my growth.

I have written a lot of code in the past, most of it is under the Unlicense Licence, or other “free” licences because I want to make the world a better place with my code. You can see my code and some of my projects on GitHub. There are some of the examples of my code and projects on this website.

My Projects

This Website

Intro

This website was built using my own open source code. I’ve made it in such a way that it allows users to download the website in full, excluding all of the project files (the file would be too big). The one of most impressive parts is that I’ve developed technologies that allows people to download the website without any external sources, (go on, try it!). This means that images and other media in this page have been embedded into a single HTML file. This includes, but is not limited to:

You will see that if you download this website by using the download link, you will be able to still browse it and use it as if it was the main website, even without an internet connection.

If you’re very old school, you can also view this page without any media, CSS or JavaScript. It works just as well.

Data URIs

The way I encode data is by using Data URIs. While using URIs on a standard page is very silly as it doesn’t take advantage of the latest HTTP technologies, in this case, it fits perfectly simply because my website could no longer exist and you would still have a perfect snapshot of it years later. It also impresses my peers.

Odt

Another part that is very worth mentioning is that I generate my pages from the odt format. This format allows me to write this very document in LibreOffice, where I have spell check and other important tools to help me write. This is important because as the technologies will evolve and the tools will evolve, it’s important to use something solid to base your website on. In my case, I’ve decided that it would be the best to base it on an open standard that even Microsoft Office supports. Given this stability, I really don’t see this format dying any time soon. I can be certain that it will last a long time. And if it doesn’t, I could always find a better format.

Sudoku Solver

Intro

I have made a Sudoku solver. It is available on GitHub and you can see the demo here.

Algorithms

The brute-force Backtracking algorithm is the major solving algorithm in this Sudoku solver with a supporting algorithm that helps remove singles from the graph.

Singles Elimination

Consider this following graph:


An unsolved Sudoku grid

This Sudoku puzzle can be solved completely without the Backtracking algorithm. This is because there are squares where there is only one possible answer. For example, in the top-left grid, the top empty cell has to be 9 because no other possibilities exist. We know this because the possibilities are eliminated by examining the row, column and the square of the cell in any order.


A subsection (square) of the unfinished Sudoku grid

By starting with numbers from 1 to 9 inclusive, we can remove the numbers present in the current square of the cell (1, 2, 3, 6, 8) and are left with numbers 4, 5, 7 and 9.


A subsection (row) of the unfinished Sudoku grid

We can now look at the row of the cell and remove numbers 4 and 5 from our list of numbers. This leaves us wit the numbers 7 and 9.


A subsection (column) of the unfinished Sudoku grid

By looking at the column of the cell, we can remove the 7 from our list of numbers, leaving us with only 9. Since 9 is the only number, we can be certain that only 9 should go into the cell so we write 9 into the cell. We can keep iterating this process until all the squares are filled in:


Solved Sudoku grid

However, this doesn’t guarantee that there will be a solution. This is where you have to use backtracking. The following example cannot be solved using the previous method but can be solved using Backtracking:


Hard, unsolved puzzle gird

A* Algorithm

Intro

I have made a path finding solver. It is available on GitHub and you can see the demo here. This program implements the A* algorithm.

Solver

The solver looks like this:


An example of a path that has been found by my algorithm