About me ^

I develop software and hardware, and offer consulting. My creative expertise ranges from simple tools to complete turnkey solutions.

Software development. As far as programming languages go, I am fluent in C, C++, Python, LaTeX, SQL, and the UNIX shell. I am currently learning Go and Rust. Previously, I had also worked in Fortran, Scheme, and various dialects of assembly (MIPS, x86, ARM, 68000, PDP-11). I am familiar with various frameworks and toolkits, including but not limited to: OpenMP, OpenCL, pthreads, LLVM, OpenGL, GLUT, SDL, FLTK, FUSE, Flask, SQLite, … On occasion, I have also written my own programming languages (and domain-specific languages) to improve various projects. I enjoy system programming and optimizing code.

System administration. Over the years, I have also gained experience in administrating various operating systems. My favorite is IRIX (a UNIX variant for Silicon Graphics machines), which I had used extensively as my daily operating system for over 5 years. Nowadays, I use Xubuntu on the desktop, and Debian Linux on my server. I can perform various sysadmin tasks, such as setting-up services (Nginx, HAProxy, Courier MTA, OpenVPN, PostgreSQL, …), automatic tape backups, software RAID, tuning a system for a particular task (this includes recompiling the kernel if necessary), etc. I've also set-up and maintained cloud infrastructure on Amazon Web Services, both manually, as well as using Terraform and Ansible.

Hardware development. On the hardware side, I am mostly self-taught and can produce prototypes to solve specific problems. I am most familiar with designing low-speed (sub-40MHz) digital logic circuits, either with discrete 7400-series integrated circuits or with microcontrollers. I own a small CNC machine, which enables me to produce prototype circuit boards quickly. I've written and maintained a buildroot-like set of shell scripts for building fully-custom Linux distributions from scratch for specific embedded systems. I like writing lower-level software, such as firmware and drivers. I've also put together custom embedded turnkey systems for customers.
Combining my other skills, I can also design and prototype a complete custom-made IoT platform, which involves making a simple hardware prototype, writing the software for it, writing the back-end server for it, and handling the server's deployment on AWS or another cloud provider.

Education. I have a BSc in Computer Science (ISCED level 7) from the University of Ljubljana, Slovenia. My BSc thesis received a faculty award.

Hobbies. In my spare time I enjoy reading books, disassembling hardware to see how it works (as well as repairing hardware at the electronics level), collecting interesting hardware, and gardening.


You can see an overview of my recent personal projects in the section below. More information about each project will be added soon.

Overview of recent personal projects ^

Software

pt

pt

Multi-threaded Monte Carlo path tracer with anti-aliasing (via super- and sub-sampling), tone mapping, environment mapping, emitter sampling, spatial indexing (kd-tree, BIH, BVH), support for loading .OBJ models and generating scenes with custom Scheme scripts.

C++ OpenMP Scheme


bench_pt

bench_pt

Small multi-threaded path tracer intended for benchmarking. It can only render spheres, but supports anti-aliasing and tone mapping.

C++ OpenMP


cl_pt

cl_pt

Port of bench_pt to OpenCL.

C++ OpenCL


mux

mux

Operating system (inspired by UNIX V6) for multi-processor 64-bit x86 computers.

C Assembly


STarfish

STarfish

Emulator for the Atari ST line of computers, based on the Motorola 68000 processor.

C OpenGL


scsimon

Utility that shows temperature and self-test history of SCSI hard drives (for the IRIX operating system). Also works with certain SATA/SAS drives on machines that have a SATA controller.

C IRIX SCSI


ramdisk

User-friendly ramdisk driver for the IRIX operating system.

C IRIX


minq

Minimal background task queue for Python-based web apps, supports time and memory limiting of tasks.

Python Redis


scheme

Tiny embeddable implementation of a strongly-typed case-sensitive Scheme dialect.

C Scheme


minič

Tiny in-memory compiler for a subset of C. Consists of about 1000 lines of code, runs on 32-bit x86 machines and requires no external dependencies.

C x86 machine code


hpglplot

hpglplot

Tiny Python script that can plot a HPGL file over a simple serial port (by doing manual handshaking with the plotter).

Python HPGL RS232


spongy_port

spongy_port

Port of Spongy, a 128-byte demo by TBC, to Mac OS X.

C OpenGL

Hardware

5V voltage reference

Based on the Analog Devices AD586MN chip.


Decorative copper tree

Decorative copper tree

The LEDs on the ends of branches light up only when it's dark and vary their intensity according to how dark it is.


VFD alarm clock

VFD alarm clock

Alarm clock based on the ИЛЦ5-4/7М vacuum fluorescent display and КР1016ВИ1 clock chip.

Not yet assembled.


HP-48SX 128kB RAM card

HP-48SX 128kB RAM card

A static RAM card for the HP-48 series graphing calculators.


WiFi sensors

WiFi sensors

Using the ESP-12F WiFi module (based on the ESP8266 microcontroller) to provide real-time sensor readings (temperature, humidity, pressure, and CO2 concentration). The readings are sent to a central server, which generates graphs.

I have made dozens of these and they have been happily working for the past few years.


68000 single-board computer

68000 single-board computer

Currently in the planning stage.

The final goal is to create a multi-processor system out of these boards.


8086 single-board computer

8086 single-board computer

Currently in the planning stage.

I will be using a clone of the Intel 8086 processor (КР1810ВМ86). Haven't decided yet whether to make it PC-compatible or not.


Processor made from 7400-series logic

Currently in the early planning stage.

Services

Antikvariati.si

Antikvariati.si

Search engine for finding books in antiquarian bookshops in Slovenia, as well as a platform for promoting reading culture.

Includes a cool ISBN barcode scanner in JavaScript for faster book search and entry via the webcam.

Finished, but sadly on hold, as this project is financially unsustainable to operate in the current book market climate in Slovenia.

Python Flask PostgreSQL Redis JavaScript

Articles ^

TitleDescriptionPublishedUpdated
IRIX and Jumbo FramesDescribes how to enable jumbo frames on IRIX and gives a few performance measurements as well.2010-01-032017-04-10
IRIX Easter EggsShows fun easter eggs hidden in IRIX software.2015-12-262020-12-31
IRIX XLV Plexing (RAID1)Describes how to modify the IRIX XLV binaries to ignore licence checks and enable software RAID-1.2015-12-262017-01-21