Skip to main content

Posts

Introducing prviklin.si: Stop guessing when and where to climb

You know the drill. Over the season you’ve collected a short list of routes. The weekend comes, you pick one, and check the guidebook. But when you mention your plan to an experienced alpinist, they instantly say: " Oh, you don't want to go there now. Right now is the perfect season for RuÅ¡ica ," or " Wait a few weeks. " It’s as if they carry an internal calendar with an entry for every week of the year. I wanted that calendar. I wanted to know what is actually climbed, and in good conditions, in any given month. Driving home from RuÅ¡ica one day, I realized the problem: reports on Slovenian alpine club websites are barely indexed by search engines. Researching means digging through obscure sites one by one. So, I built a tool to fix this. Meet prviklin.si . It aggregates 97,000 climbing records (12,000 full reports and 85,000 short log entries where clubs note who climbed what and when) to answer one question: what should I climb right now? Here is what the sit...
Recent posts

Vibe coding a climb recommendation tool: 10.000 routes from 100.000 climb reports in 4 days

I woke up at 10 a.m. on a Saturday with a huge headache. I was dehydrated, my eyes were half-blind from the screen, and I felt like I had slept for maybe four hours. I had gone to bed at 2 a.m. because I couldn't pull myself away from a prompt. The night before, I had thrown a rough, three-sentence instruction at my AI coding agent to build a dynamic weather widget for a climbing map I was developing. I was too exhausted to even check if it understood what I wanted before passing out. Waking up, I dragged myself to the computer, refreshed the local environment, deployed the pending commits, and there it was: a fully functioning weather slider. I could scrub through the day and watch the weather change across a geographic grid. I was as excited as a kid. I haven't felt this drugged by the pure progress of building software since I first discovered computer animations as a teenager. It all started on a whim on Tuesday. I recalled a moment I had while driving home from a climb, in...

How to differentiate between a Zeelander 44, 55 and 72?

One day, your life might depend on being able to tell the difference between a Zeelander 44, a 55 and the 72. At first glace, these boat models are quite similar to each other. You could easily think that a Z44 is a Z55 closer to you. Three different models. Which is which? To figure this out, you can spend 5 hours manually reviewing and annotating a thousands photos, deleting bad training data, and staring at tiny thumbnails photos of these boats until your eyes start bleeding. Then, put this data into a ResNet34, and see that after all of that effort you are able to tell each model from the others 60% of the time. In other words, it guesses correctly less than every two out of three attempts. A ResNet34 can tell these models from each other 60% of the time. That's crap. A waste of time and money. Here is how you differentiate these models like a human. The Z44 has windows in sets of two, the Z55 has windows in sets of three, the Z72 has an uneven window layou...

Project planning in a text file

Whenever you work on a project it is important to be able to plan it ahead of time. This holds true for small and big project, from planning a trip to the spa to building a spaceship. The small project plans can be maintained in you thoughts while bigger ones require tools to help you see the big-picture of the project and manage task at a lower level. There are projects which start with a fully prepared plan and projects which pivot overnight, thus invalidating any original plan. For the latter flexibility is very important, and tools like Trello offer a great solution because they can be adjusted to fit your project. However, it may happen sometimes that the project starts adjusting to the tool or that you still want to maintain a bigger picture of the main points of the project. You may also need to produce a rough development schedule to serve as a long term road-map. I have prototyped a tool (and defined a workflow) which allows you to plan such projects. To better understa...

Selenium testing in Jenkins with an in-memory X server

This articles explains how to setup integration testing of web applications (that require a browser instance) on a Jenkins server. The article assumes you are able to understand the title. If you need a reminder follow the links below. Automated browser testing (source: Jeremy Keith ) What is Selenium? Read here. What is Jenkins? Read here. What is an X server? Read here. If you are still puzzled, this article is not for you. Integration testing of web application is more complicated than unit testing, because they require a browser instance to be running. In order to run a browser (such as Firefox) you need and X server. The testing server usually doesn't have one. One solution to this is to run the browser instance on another machine through VNC. This has the advantage of not using the same resources as the testing server. However it requires setting up a new machine, and configuring the integration tests to run a browser in it. Another solution is to use Xvfb, a...

Basic cell counting and segmentation in Matlab

Counting cells manually is a tedious error prone process for humans. Given a large data set of microscopy images this task can be achieved much faster by means of basic computer vision techniques. In this tutorial we will segment cells from an image following a method similar to the one presented by Yongming Chen in 1999. The method uses basic morphological operations  and the watershed algorithm to segment the cells. Nowadays better methods for cell segmentation exist. This method was chosen for its simplicity and ease of implementation. We start with an image of cell-like structures by Anna-Katerina Hadjantonakis and Virginia E Papaioannou . A = imread('cells.jpg'); We convert the image to grayscale: I = rgb2gray(A); To be able to extract the dimmer cells, it is necessary to perform some local contrast adjustments I = adapthisteq(I); Objects on the borders can be caused by noise and other artifacts. We can eliminate objects on the borders...

A more confusing Internet with .brand TLDs

A few months ago, I wrote a post proposing to remove top level domains from the internet, as many people don't understand why we need TLDs. At the time I didn't know either. Removing TLDs would simplify browsing an possibly increase security by reducing phishing sites that make use of URL similarity to gain visits to potentially dangerous websites, or sites filled with ads. The ICANN, the body that manages Internet names, has for years been preparing something different but that produces a slightly similar effect than removing TLDs: allowing brands to register their own TLDs . The proposal may soon be approved has been approved . Brands would therefore be able to register their own TLDs. Google could register .google a potentially powerful TLD for their services, like Google Maps: maps.google instead of maps.google.com. Brand TLD don't improve short urls like google.com, but seem to be effective for use in subdomains. Registering a .<brand-name> TLD will cost...