<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>mkobetic</title>
    <link>https://martin.kobetic.ca/</link>
    <description>Recent content on mkobetic</description>
    <generator>Hugo -- gohugo.io</generator>
    <language>en-us</language>
    <lastBuildDate>Wed, 07 Jan 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://martin.kobetic.ca/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Bootloaders vs Forth (ATmega 2560)</title>
      <link>https://martin.kobetic.ca/post/2601-bootloaders/</link>
      <pubDate>Wed, 07 Jan 2026 00:00:00 +0000</pubDate>
      
      <guid>https://martin.kobetic.ca/post/2601-bootloaders/</guid>
      <description>Bootloaders are probably not the first thing one would recommend an embedded programming beginner to dive into, but if you&amp;rsquo;re dead set on running Forth on your board, you&amp;rsquo;ll have to contend with it whether you want to or not. The details discussed below are from Atmel Atmega MCUs (I was using ATmega 2560).
What is a bootloader Bootloader is a bit of code that is pre-loaded into the MCUs flash memory and is the first thing that runs when the MCU starts up.</description>
    </item>
    
    <item>
      <title>Go Forth!</title>
      <link>https://martin.kobetic.ca/post/2601-go-forth/</link>
      <pubDate>Wed, 07 Jan 2026 00:00:00 +0000</pubDate>
      
      <guid>https://martin.kobetic.ca/post/2601-go-forth/</guid>
      <description>I wanted to dip my toes in embedded programming for a while. Big part of it is nostalgia; the 8-bit MCUs are very much like the 8-bit microcomputers that I started on. It&amp;rsquo;s even better with the plethora of I/O options they provide. The overall complexity is manageable, you can really understand everything that&amp;rsquo;s going on in the device down to the hardware bits. And you don&amp;rsquo;t need layers of software to make some LEDs blink or to read some sensors.</description>
    </item>
    
    <item>
      <title>Chrome&#39;s Performance flame chart</title>
      <link>https://martin.kobetic.ca/post/2508-chrome-performance-flamegraph/</link>
      <pubDate>Thu, 28 Aug 2025 00:00:00 +0000</pubDate>
      
      <guid>https://martin.kobetic.ca/post/2508-chrome-performance-flamegraph/</guid>
      <description>I have spent a fair bit of time in Chrome Dev Tools recently and learned the hard way that you need to be careful with interpreting the flame graph that you get when you record a Performance profile. To illustrate here&amp;rsquo;s a fragment of a flame graph captured from a worker running Typescript&amp;rsquo;s ProjectService used to typecheck source files.
My naive interpretation was: the worker is receiving messages from the main thread over the LSP jsonrpc connection and calling openClientFile() in response.</description>
    </item>
    
    <item>
      <title>Self-contained Interactive Viewers</title>
      <link>https://martin.kobetic.ca/post/2504-self-contained-viewer/</link>
      <pubDate>Sun, 06 Apr 2025 00:00:00 +0000</pubDate>
      
      <guid>https://martin.kobetic.ca/post/2504-self-contained-viewer/</guid>
      <description>Commandline nature of plaintext accounting (PTA) has a lot of benefits, but it makes the ledger inaccessible for someone who&amp;rsquo;s not inclined to type arcane incantations into the terminal prompt. Moreover it is suboptimal even for those who are, if you want to browse around without a very specific question in mind. An interactive graphical (or textual) viewer is more suitable in these cases. There are various options available for the most common PTA tools, however most require installing something or at least running a server to point a web browser at (e.</description>
    </item>
    
    <item>
      <title>Freelancing &amp; Accounting</title>
      <link>https://martin.kobetic.ca/post/2403-freelancing-and-accounting/</link>
      <pubDate>Sun, 03 Mar 2024 00:00:00 +0000</pubDate>
      
      <guid>https://martin.kobetic.ca/post/2403-freelancing-and-accounting/</guid>
      <description>What I really want to write about is how I&amp;rsquo;m using plaintext accounting to track everything about my freelancing business. But I realize that before I describe my little scheme, first I need to say a few things about how I operate, for it to make any sense. I concede that it is possible if not likely that many may find the operations part more interesting than the accounting part. Hopefully at least some freelancers out there may find the second part interesting if not useful.</description>
    </item>
    
    <item>
      <title>Test Ergonomics</title>
      <link>https://martin.kobetic.ca/post/2312-test-ergonomics-li/</link>
      <pubDate>Mon, 11 Dec 2023 00:00:00 +0000</pubDate>
      
      <guid>https://martin.kobetic.ca/post/2312-test-ergonomics-li/</guid>
      <description>I&amp;rsquo;ve had this topic in the back of my mind for a while and recent talk by Russ Cox brought it back to the foreground. As with any of Russ&amp;rsquo; writing it is well worth your while, I highly recommend you check it out. Of course he makes most of the points I wanted to make and then some, so my remarks will be mostly just a reaction to his talk.</description>
    </item>
    
    <item>
      <title>Plaintext Accounting</title>
      <link>https://martin.kobetic.ca/post/2311-plaintext-accounting/</link>
      <pubDate>Sat, 25 Nov 2023 00:00:00 +0000</pubDate>
      
      <guid>https://martin.kobetic.ca/post/2311-plaintext-accounting/</guid>
      <description>I&amp;rsquo;ve been a fan of plaintext accounting (PTA) ever since I stumbled upon it about a decade ago. I was using gnucash back then for some time. While it&amp;rsquo;s a solid and well documented tool, the GUI paradigm just wasn&amp;rsquo;t working well for me. I distinctly remember that cumbersome manual input into the transaction &amp;ldquo;spreadsheet&amp;rdquo;. In comparison, the flexible plain text input with PTA felt like a breath of fresh air.</description>
    </item>
    
    <item>
      <title>Xtreams at Work</title>
      <link>https://martin.kobetic.ca/post/111017-xtreamsatwork/</link>
      <pubDate>Mon, 17 Oct 2011 00:00:00 +0000</pubDate>
      
      <guid>https://martin.kobetic.ca/post/111017-xtreamsatwork/</guid>
      <description>(Republished from Cincom Smalltalk Tech Tips)
Lately I’ve been working on an Xtreams based implementation of SSL/TLS protocol and I think that some specific parts of that could make interesting examples. Examples that are non-trivial, real-life solutions rather than some artificial academic exercises. This is my first attempt to extract an interesting example, hopefully without getting bogged down in too much detail. Although I will try to explain the constructs used in the example, it will require some basic familiarity with Xtreams, the documentation at http://code.</description>
    </item>
    
    <item>
      <title>Xtreams-SSH2</title>
      <link>https://martin.kobetic.ca/post/110120-xtreams-ssh2/</link>
      <pubDate>Thu, 20 Jan 2011 00:00:00 +0000</pubDate>
      
      <guid>https://martin.kobetic.ca/post/110120-xtreams-ssh2/</guid>
      <description>(Republished from Cincom Smalltalk Tech Tips)
We are receiving some very encouraging feedback on Xtreams . There’s a fairly complete port to Squeak/Pharo, people are blogging about it, and discussing it on various forums. All that is very welcome and certainly helps reassuring Willow and myself that we might be onto something that’s worthwhile and keeps us motivated to continue.
At this stage of the game we feel that the core library is reasonably complete, we’re reasonably happy with the API and we’re venturing into experiments where we’d like to prove that the concepts and implementation are good and that the performance goals are achievable as well.</description>
    </item>
    
    <item>
      <title>ResourcefulTestCaseToo</title>
      <link>https://martin.kobetic.ca/post/100329-resourcefultestcasetoo/</link>
      <pubDate>Mon, 29 Mar 2010 00:00:00 +0000</pubDate>
      
      <guid>https://martin.kobetic.ca/post/100329-resourcefultestcasetoo/</guid>
      <description>(Republished from Cincom Smalltalk Tech Tips)
Good while ago I posted ResourcefulTestCase talking about a simplified pattern for test resources in the context of SUnit. Basic idea was that if you tend to group your test cases around their required resource you often end up with a package where many TestCase classes are mirrored with TestResource classes one-to-one. In this situation it is more convenient to simply use the class side of the TestCase class as its resource and cut the amount of classes by half.</description>
    </item>
    
    <item>
      <title>Concatenating Streams</title>
      <link>https://martin.kobetic.ca/post/100225-xtreams-concatenation/</link>
      <pubDate>Thu, 25 Feb 2010 00:00:00 +0000</pubDate>
      
      <guid>https://martin.kobetic.ca/post/100225-xtreams-concatenation/</guid>
      <description>(Republished from Cincom Smalltalk Tech Tips)
Did you ever run into a situation where you had a stream and some previously written chunk of code that could process the stream almost as is, if only the stream included few additional bytes in the beginning? Usually, I ended up just biting my lip and fetching the full content of the stream, prepending the missing bits and then setting up an internal stream on top of the collection.</description>
    </item>
    
    <item>
      <title>F-Spot, Glorp and VisualWorks</title>
      <link>https://martin.kobetic.ca/post/091204-f-spot/</link>
      <pubDate>Fri, 04 Dec 2009 00:00:00 +0000</pubDate>
      
      <guid>https://martin.kobetic.ca/post/091204-f-spot/</guid>
      <description>(Republished from Cincom Smalltalk Tech Tips)
I&amp;rsquo;ve been using Linux as my primary desktop platform for some years now. I generally try to keep up with the releases and stick with the default choices as much as possible. Recently I tried to use F-Spot because it&amp;rsquo;s the default photo manager for GNOME now. It&amp;rsquo;s got some nice features and is generally OK, although not very flexible, very much within the spirit of today&amp;rsquo;s UI design dogmas (&amp;ldquo;You can&amp;rsquo;t handle flexibility, you &amp;hellip; user &amp;hellip; you!</description>
    </item>
    
    <item>
      <title>WebSupport updates</title>
      <link>https://martin.kobetic.ca/post/071128-websupportupdates/</link>
      <pubDate>Wed, 28 Nov 2007 00:00:00 +0000</pubDate>
      
      <guid>https://martin.kobetic.ca/post/071128-websupportupdates/</guid>
      <description>(Republished from Cincom Smalltalk Tech Tips)
Our Seaside effort yields some useful byproducts including improvements to the, so far rather Spartan, WebSupport package. This package now provides HttpClient and HttpRequest extensions simplifying submission of HTML form data through HTTP POST method.
In general, form data can be submitted in a “url encoded” format in a simple, single-part HTTP request (content-type: application/x-www-form-urlencoded), or each data entry can be submitted as an individual part in a multipart HTTP request (content-type: multipart/form-data).</description>
    </item>
    
    <item>
      <title>ResourcefulTestCase</title>
      <link>https://martin.kobetic.ca/post/070508-resourcefultestcase/</link>
      <pubDate>Tue, 08 May 2007 00:00:00 +0000</pubDate>
      
      <guid>https://martin.kobetic.ca/post/070508-resourcefultestcase/</guid>
      <description>(Republished from Cincom Smalltalk Tech Tips)
The core SUnit package provides support for shared test resources via the TestResource class. A TestCase that wants to use TestResources is expected to list all its resource classes in its class side #resources method. Individual test case methods then access the resources via the resource classes, usually as default, singleton instances. That provides potentially interesting levels of flexibility, however the access to the resources themselves is not exactly convenient.</description>
    </item>
    
    <item>
      <title>No End of Line End Confusion</title>
      <link>https://martin.kobetic.ca/post/070215-lineends/</link>
      <pubDate>Thu, 15 Feb 2007 00:00:00 +0000</pubDate>
      
      <guid>https://martin.kobetic.ca/post/070215-lineends/</guid>
      <description>(Republished from Cincom Smalltalk Tech Tips)
It&amp;rsquo;s quite interesting that even though it&amp;rsquo;s now decades old we&amp;rsquo;re still running into this fundamentally rather trivial problem. It is especially pronounced in heavilly cross-platform environments like VisualWorks. As soon as you have multiple environments, e.g. Windows and Linux and you move text files between the two, you&amp;rsquo;re pretty much guaranteed to run into files with doubled or trippled line-ends in them sooner or later.</description>
    </item>
    
    <item>
      <title>Skipping in non-positionable streams</title>
      <link>https://martin.kobetic.ca/post/060522-skippinginstreams/</link>
      <pubDate>Mon, 22 May 2006 00:00:00 +0000</pubDate>
      
      <guid>https://martin.kobetic.ca/post/060522-skippinginstreams/</guid>
      <description>(Republished from Cincom Smalltalk Tech Tips)
The latest version of the ComputingStreams in the public repository adds two new stream classes, CachedReadStream and CachedWriteStream. I&amp;rsquo;m not proud of the well worn, &amp;ldquo;cached&amp;rdquo;, name and welcome any suggestions, but that&amp;rsquo;s what it is for now. These streams are the first step in my (hopefully) final battle with stream positioning. If you&amp;rsquo;ve ever used streams in anger, you&amp;rsquo;ll probably agree that many problems require yanking the stream position back and forth frantically.</description>
    </item>
    
    <item>
      <title>VW 7.4 Spoilers - ASN.1</title>
      <link>https://martin.kobetic.ca/post/05q4-vw7.4-3-asn1/</link>
      <pubDate>Fri, 23 Dec 2005 00:00:00 +0000</pubDate>
      
      <guid>https://martin.kobetic.ca/post/05q4-vw7.4-3-asn1/</guid>
      <description>(Republished from Cincom Smalltalk Tech Tips)
I&amp;rsquo;ve mentioned previously that we have spent a lot of time on ASN.1 in this release cycle, so I better say something about it. However this article won&amp;rsquo;t be an introduction to ASN.1, I want to focus on the improvements in our implementation, but there are some easy introductions available and even free books for the gory details.
I figured that the best way to demonstrate the framework is to show how it&amp;rsquo;s used in an application, and our most interesting application so far is the X.</description>
    </item>
    
    <item>
      <title>VW 7.4 Spoilers - X.509</title>
      <link>https://martin.kobetic.ca/post/05q4-vw7.4-2-x509/</link>
      <pubDate>Thu, 22 Dec 2005 00:00:00 +0000</pubDate>
      
      <guid>https://martin.kobetic.ca/post/05q4-vw7.4-2-x509/</guid>
      <description>(Republished from Cincom Smalltalk Tech Tips)
Considerable amount of time in this release cycle was spent on improving our ASN.1 support. I don&amp;rsquo;t want to get into details of this rather technical topic (maybe next time), but I&amp;rsquo;d like to show how much we&amp;rsquo;ve gained from it. As it happens ASN.1 is one of the principal building blocks of many security related standards, for example the PKCS suite of standards, CMS and S/MIME and obviously the ITU-T&amp;rsquo;s X-series of recommendations where ASN.</description>
    </item>
    
    <item>
      <title>VW 7.4 Spoilers - OpenSSL</title>
      <link>https://martin.kobetic.ca/post/05q4-vw7.4-1-openssl/</link>
      <pubDate>Wed, 21 Dec 2005 00:00:00 +0000</pubDate>
      
      <guid>https://martin.kobetic.ca/post/05q4-vw7.4-1-openssl/</guid>
      <description>(Republished from Cincom Smalltalk Tech Tips)
VW 7.4 is going through its final stages, so I thought this might be a good time to brag about what&amp;rsquo;s coming. Today I&amp;rsquo;d like to mention one of my pet projects. Well, it&amp;rsquo;s &amp;ldquo;my&amp;rdquo; only in the sense of me being fond of it, but the work is actually done by Dave Wallen. He wrote a DLL/CC wrapper for the crypto library used by OpenSSL.</description>
    </item>
    
  </channel>
</rss>
