My thoughts on blogging after a month (a long read)

Today is the last day of March, a month since I started blogging. I wrote a few articles, some of them are tutorials, some are project updates.

I wanted to share a few observations I gathered as a starting tech blogger. I tried really hard to give them some chronology in the sense of writing the post (plan, write, publish, get feedback, analyze, etc.), but many areas intersect. Continue reading

How do I make a WordPress plugin?

I post progress summary for Konstruisto on Fridays, but not everybody knows what this project is. Every week I have to paste the same formula at the top. It shows in the RSS feed, it generates pingbacks to my articles and is unhandy in many other ways.

I thought I would make a WordPress plugin to solve these problems. It was a great opportunity to refresh my knowledge about the system – I hadn’t used WordPress for three years! Continue reading

Konstruisto: Week #3 – Fighting road textures

Honestly, this week was quite unproductive, speaking of new features. I managed to resolve most of the problems with textures (but it’s still WIP, there are some minor artifacts). I wrote needed geometry checks for the roads; standard intersections render correctly. The rest of the time went for some refactoring and code cleanup necessary to paint on ground tiles. Pushed 16 commits, total 107 (over 100, yay!).

Just like Manhattan, where’s Central Park? ­čÖé

Continue reading

How to draw in browser with Selenium

Selenium is a testing tool used in web development. It emulates user behavior inside a web browser, right in front of you. It can interact with links, move the mouse and so on. As an example, we will make a script that draws a simple shape in Sketchpad. Selenium has many integrations; I will use Python and Google Chrome driver. And everything under 60 lines of code!

Continue reading

Konstruisto: Week #2 – Main menu and settings framework

Previous week I mentioned road implementation. I started with rendering and got stuck a bit while handling texture atlases (search for GL_TEXTURE_2D_ARRAY if you’re interested, I even may write an article about it). Roads are half-done then. I moved to easier stuff and made menu state and settings (in code so far). UI renders textures now; it took me quite a lot of time since I missed there is a function for loading images and wrote everything by hand at first ­čÖé Use G to turn off the grid. This week I pushed 21 commits (total 91).

Previous week

Roads learn alphabet

Continue reading

Quick Tip: Google Charts for your website

Recently I found out about great charting library┬áand I’m astonished to see how easy it was to integrate it into a project. Google Charts is a free, pure-JS library. You embed the script, write about ten lines of code and it works.

Hello charts!

Include link to library hosted by Google:

<script type="text/javascript" src="https://www.gstatic.com/charts/loader.js"></script>

We just add the data and it works:

Continue reading

Introduction to geometry shaders

In this article, I will show basics of geometry shader – useful and easy to use an element of the rendering pipeline.

Geometry shaders in rendering pipeline

Here’s a simple diagram. I marked with orange the parts which we can modify using shaders (click to enlarge).

OpenGL rendering pipeline with marked shaders

Our geometry shader goes into action after vertex and tesselation shaders, and inside we can use data passed from these previous stages. Inside our program we will set out variables and emit vertices – all this data will be passed to the vertex shader as if geometry shader was not existent. Let’s see it in action. Continue reading

Konstruisto: Week #1 – World geometry

This week was a bit slower than previous (I pushed 24┬ácommits, total 70) since I needed to introduce some graphical user interface. I went with┬áNanoVG library, which lets me draw basic shapes and text. There’s a new top bar with essential information about the city. You can place buildings now. I worked a bit with geometry to make a foundation for zoning (you assign a zone, e.g. residential, and people build if you provide media, low taxes, etc.).

Previous week

We were placed by hand!

Continue reading