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. 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, FUSE, Flask, SQLite, … On occasion, I have also written my own programming languages (and domain-specific languages) to improve various projects. I enjoy 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 Mac OS X 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.

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. Lately, I am interested in learning more about designing analog circuits as well.

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 travelling.

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 ^

Services

Antikvariati.si

Antikvariati.si

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

Not yet launched, but currently in the final stages of development.

Python Flask PostgreSQL Redis

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


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


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


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 REF02 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. Currently, I have sensors for temperature, humidity, barometric pressure, acceleration, smoke, gas, dust, soil humidity, and illuminance (lux meter).

Will be assembling this soon.


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.

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-262017-01-21
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