Jan Poonthong

Self-learning software and web development through research & development.

Aug 25, 2021

Pomodo Focus GIF Github icon

What is PPM?

The PPM format is a lowest common denominator color image file format.


It should be noted that this format is egregiously inefficient. It is highly redundant, while containing a lot of information that the human eye can't even discern. Furthermore, the format allows very little information about the image besides basic color, which means you may have to couple a file in this format with other independent information to get any decent use out of it. However, it is very easy to write and analyze programs to process this format, and that is the point.

What I discovered:

  1. Discover the Midpoint circle algorithm.
  2. Discover the checker pattern algorithm.
  3. Discover bytearray.
  4. The most important thing I discovered about BitwiseOperators.

Aug 3, 2021

Pomodo Focus GIF Github icon

What is Pomofocus?

Pomofocus is a customizable pomodoro timer that works on desktop & mobile browser. The aim of this app is to help you focus on any task you are working on, such as study, writing, or coding. This app is inspired by Pomodoro Technique which is a time management method developed by Francesco Cirillo.

What is Pomodoro Technique?

The Pomodoro Technique is created by Francesco Cirillo for a more productive way to work and study. The technique uses a timer to break down work into intervals, traditionally 25 minutes in length, separated by short breaks. Each interval is known as a pomodoro, from the Italian word for 'tomato', after the tomato-shaped kitchen timer that Cirillo used as a university student.

What I learned:

  1. Learn about Javascript.
  2. Learn about setInterval.
  3. Learn about document.getElementById.
  4. The most crucial lesson I learnt was how to integrate Javascript with HTML and CSS.

Oct 20, 2021

Sus Editor GIF Github icon

Sus Editor is a text editor with Pixels VGA Font. Written with Simple DirectMedia Layer is a cross-platform development library designed to provide low-level access to audio, keyboard, mouse, joystick, and graphics hardware via OpenGL and Direct3D.

The keys are just the same for every editor F1 is for saving the file.

What I learned:

  1. Learn about SDL2(Simple DirectMedia Layer).
  2. Learn about Hardware-accelerated software.
  3. Learn about Bitmap Font.
  4. Learn the basics of ASCII.
  5. The most important thing I learned is how a library can help you create cross-platform software.

Oct 10, 2021

Github icon

This CLI software is for notifying you when your favorite streamer goes live on Twitch.

To run the software ./main.py <twitch_streamer_username>

What I learned:

  1. Learn about requests module of Python.
  2. Learn about Twitch API.
  3. Learn about mpg123 in Linux for running sound.
  4. Learn to keep user credentials inside a .env file
  5. The most important thing I learned is with programming you could know when you favorite streamer is streaming and don't miss a change to talk with them.

May 2, 2021

Chip-8 Emulator GIF Github icon

Chip-8 is a simple, interpreted, programming language that was first used on some do-it-yourself computer systems.

The keys depend on the game, in the chip-8 emulator there are only 16 keys available, so it would be 1234, qwer, asdf, and zxcv.

What I learned:

  1. Learn about Bitwise Operations.
  2. Learn about Hexadecimal.
  3. Learn about computing opcode to Chip-8 Emulator interpreter.
  4. Learn the basics of executing instruction set on an old system.
  5. The most important thing I learned is how a computer works in the old days and how it got develop into the modern day. Also learned about Registers, RAM, CPU, Bytes, Bits, etc.

November 9, 2020

New Space Invaders GIF Github icon

Space Invaders is a two-dimensional fixed shooter game in which the player controls a ship with lasers by moving the y-axis across the bottom of the screen. The ship will have unlimited lasers to fire at descending aliens.

The basic keys are arrows and spaces, the arrows key are for moving, and the spaces key for firing. Users can see the score on the top left corner and their live status on the top right corner.

What I learned:

  1. I learned how important good code and the meaning of good software design.
  2. I learned Object-Oriented Programming.
  3. I learned the importance of a 2-dimensional list in Python.
  4. While building Space Invaders, I learned S.O.L.I.D Principles.
  5. The most important thing I learned while building Space Invaders is, how to use the Single Responsibility Principle on the game, class should have only one job. So if a class has more than one responsibility, it becomes coupled.

October 16, 2020

Hangman GIF Github icon

Hangman is a guessing letters game, the player can only guess one letter at a time to solve the word puzzle.

Hacks to win:

What I learned:

  1. I learned how to see patterns and not to use duplicate code.
  2. I learned if __name__ == "__main__".
  3. I learned the importance of algorithm, for example; WIDTH / 2 - text.get_width() / 2, HEIGHT / 2 - text.get_height() / 2 = Center of screen.
  4. While building Hangman, I understand making use of capitalizing variables for constant.
  5. The most important thing I learned while building Hangman is, how to have a good design for the game and the importance of laying out the step by step process of building.

October 4, 2020

Pong GIF Github icon

Pong is a table-tennis-themed arcade video game. The main intention of creating Pong was to play with friends and families. The two paddles return the ball back and forth. The score is kept by the number at the top of the screen.

Users can play Pong with just "WS" and "UP / DOWN ARROWS". The wide paddle makes users feel less frustrated. As mentioned, the reason I created Pong was to play with friends and families and have a fun time rather than competing.

What I learned:

  1. I learned how to use the turtle module
  2. I learned turtle.ontimer(tick, 10). So that speed of the ball doesn't depend on the CPU GHz
  3. I learned how to keep track of the score
  4. While building Pong, I deeply understand functions, while, and global variables
  5. The most important thing I learned while building Pong is, even a basic module like turtle could build one complete game.

September 30, 2020

Tic Tac Toe GIF Github icon

I wrote the graphic interface Tic Tac Toe (AI) in Python with Pygame library, and Pygame comes very handly when building games because it has many methods and functions built in.

Users can play Tic Tac Toe without any human next to them to play, but instead, they can play with the AI and see if the AI is clever enough to beat the user.

What I learned:

  1. I learned how to design grid boxes, and made the boxes visually easy to select for the user to play.
  2. I learned about Frame Per Second in games and the process for refreshing every second rather than using CPU to run the game.
  3. I learned about os.path.join so that I didn't need to hardcode the path of picture for X and O.
  4. I learned about MOUSEDOWN, collision, and track the state of the game.
  5. The most important thing I learned while building Tic Tac Toe is thinking logically and reasoning up from fundamental truths.