<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Hello, I'm Igor</title><link>https://ikhotin.com/</link><description>Recent content on Hello, I'm Igor</description><generator>Hugo</generator><language>en</language><managingEditor>khotin@gmx.com (Igor Khotin)</managingEditor><webMaster>khotin@gmx.com (Igor Khotin)</webMaster><copyright>(C) 2025 Igor Khotin. This work is licensed under a Creative Commons Attribution-NonCommercial 4.0 International License.</copyright><lastBuildDate>Mon, 15 Jun 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://ikhotin.com/index.xml" rel="self" type="application/rss+xml"/><item><title>neoBarbarians of the 21st Century</title><link>https://ikhotin.com/posts/2026/06/neobarbarians-of-the-21st-century/</link><pubDate>Mon, 15 Jun 2026 00:00:00 +0000</pubDate><author>khotin@gmx.com (Igor Khotin)</author><guid>https://ikhotin.com/posts/2026/06/neobarbarians-of-the-21st-century/</guid><description>&lt;p>Fireworks are the things of the past, long gone and forgotten.
You really don&amp;rsquo;t need fireworks when drones and missiles explode over your head daily, so they were banned at the start of the war.
But that can&amp;rsquo;t stop certain individuals from launching them anyway.
I remember a couple of years ago we had an incident when someone wanted to have fun and launched fireworks nearby.
Half the neighbourhood almost shit their pants, suddenly hearing sounds resembling anti-aircraft fire and explosions. I just hope the police have found the ones responsible before the angry neighbours did.&lt;/p></description></item><item><title>Kyiv Food Delivery Service</title><link>https://ikhotin.com/posts/2026/05/kyiv-food-delivery-service/</link><pubDate>Sun, 24 May 2026 00:00:00 +0000</pubDate><author>khotin@gmx.com (Igor Khotin)</author><guid>https://ikhotin.com/posts/2026/05/kyiv-food-delivery-service/</guid><description>&lt;p>It was ominous to start another game jam. After all, EVERY SINGLE TIME I&amp;rsquo;d joined a jam in the last two years, my city was under an aerial attack. This one was not an exception.&lt;/p>
&lt;figure>&lt;img src="https://ikhotin.com/img/2026/2026-05-24_aerial-attack.jpg"
 alt="Map of aerial attack on Kyiv on May 24">&lt;figcaption>
 &lt;p>May 24th attack on Kyiv&lt;/p>
 &lt;/figcaption>
&lt;/figure>

&lt;p>So in the timespan of 4 hours after midnight, we could hear hundreds of explosions, distant and close, from a wide range of munitions:&lt;/p></description></item><item><title>The Biggest Attack So Far</title><link>https://ikhotin.com/posts/2026/05/the-biggest-attack-so-far/</link><pubDate>Thu, 14 May 2026 00:00:00 +0000</pubDate><author>khotin@gmx.com (Igor Khotin)</author><guid>https://ikhotin.com/posts/2026/05/the-biggest-attack-so-far/</guid><description>&lt;p>Last night concluded the biggest ruZZian attack so far.
It lasted for more than a day, when hundreds of drones,
wave after wave, entered Ukrainian airspace and rained
down on our cities. The grand finale was multiple salvos
of cruise, ballistic and aero-ballistic missiles on Kyiv.&lt;/p>
&lt;p>The resulting explosions could be heard through the night,
so we didn&amp;rsquo;t get much sleep. Particularly close missile explosions
created shockwaves, shaking windows and slamming doors inside
our apartment.
This time, our neighbourhood was not the lucky one - multiple
buildings were damaged. One Kh-101 cruise missile
hit an apartment block a couple of kilometers away
and caused the collapse of a whole section,
causing the death of 24 people (including 3 kids)
and injury of 48 more.&lt;/p></description></item><item><title>Winter Survival Challenge is Over</title><link>https://ikhotin.com/posts/2026/05/winter-survival-challenge-is-over/</link><pubDate>Mon, 04 May 2026 00:00:00 +0000</pubDate><author>khotin@gmx.com (Igor Khotin)</author><guid>https://ikhotin.com/posts/2026/05/winter-survival-challenge-is-over/</guid><description>&lt;p>This Spring was relatively cold, just like this Winter.
But May, finally, brings warm weather, and that means
the Winter Survival Challenge is officially over.
Even though it was over for quite some time now,
I was waiting for the first really warm days to really claim it.&lt;/p>
&lt;p>And as I predicted in my mid-winter post, the hits on Ukrainian
Energy infrastructure will result in retaliatory strikes
on RuZZias oil facilities and tankers.
As we could see recently in Tuapse, Perm, Primorsk, Ust-Luga and other places.&lt;/p></description></item><item><title>Keep Charging!</title><link>https://ikhotin.com/posts/2026/01/keep-charging/</link><pubDate>Wed, 21 Jan 2026 00:00:00 +0000</pubDate><author>khotin@gmx.com (Igor Khotin)</author><guid>https://ikhotin.com/posts/2026/01/keep-charging/</guid><description>&lt;p>9:30PM&amp;hellip; Finally got the light. Electricity was out for 18 hours straight.
We are down to having only 2-3 hours of electricity a day with no predictable schedule.
So you don&amp;rsquo;t know when you&amp;rsquo;ll get it, and how long it&amp;rsquo;s going to last.
Now it is the usual buzz around the apartment - to charge everything we can -
phones, laptops, power banks, power stations, rechargeable batteries, toothbrushes&amp;hellip;&lt;/p>
&lt;p>And a car battery. I pulled it out of my car and brought it into the apartment just before the arctic air and the following ruzzian attacks.
Not an ideal solution, given the hazardous gases it can emit, but it is a potential backup option during long outages.
I can connect that battery to the solar port of one of my power stations and recuperate some additional energy just in case.&lt;/p></description></item><item><title>Unplesantries - A Drone Strike 100m Away</title><link>https://ikhotin.com/posts/2026/01/unplesantries-a-drone-strike-100m-away/</link><pubDate>Sun, 11 Jan 2026 00:00:00 +0000</pubDate><author>khotin@gmx.com (Igor Khotin)</author><guid>https://ikhotin.com/posts/2026/01/unplesantries-a-drone-strike-100m-away/</guid><description>&lt;p>First, we heard a drone flying.&lt;/p>
&lt;p>Drones have passed right above our apartment block so many times that it was not something unusual.
But this time the drone loitered especially low.
The buzz got louder until it suddenly turned into a heavy explosion.
The air was violently disturbed by the shockwave as I saw a sinister red glow right above my building.
The sound of falling debris followed shortly afterward. I instantly realized that it was a hit - either at our apartment block or somewhere really close.&lt;/p></description></item><item><title>The Arctic Survival Challenge</title><link>https://ikhotin.com/posts/2026/01/the-arctic-survival-challenge/</link><pubDate>Sat, 10 Jan 2026 00:00:00 +0000</pubDate><author>khotin@gmx.com (Igor Khotin)</author><guid>https://ikhotin.com/posts/2026/01/the-arctic-survival-challenge/</guid><description>&lt;p>The jam stream is over!&lt;/p>
&lt;p>I can&amp;rsquo;t say it was unexpected. Ruzzians have been waiting for cold weather since the winter of 2022, and we were lucky to have relatively mild winters for 3 years in a row.
But any luck eventually runs out, and even with a globally warming climate, we got the winter of all winters.
With freezing temperatures we haven&amp;rsquo;t seen in decades.
Something I vaguely remember from my childhood - a lot of ice, piles of snow, and excruciating freezing cold.&lt;/p></description></item><item><title>Time out of Joint</title><link>https://ikhotin.com/posts/2025/12/time-out-of-joint/</link><pubDate>Sat, 27 Dec 2025 00:00:00 +0000</pubDate><author>khotin@gmx.com (Igor Khotin)</author><guid>https://ikhotin.com/posts/2025/12/time-out-of-joint/</guid><description>&lt;p>&amp;ldquo;The war continues to have a strange, somnambulistic quality,&amp;rdquo; wrote Mollie Panter-Downes about London of late 1939.
That was still a &amp;ldquo;phoney war,&amp;rdquo; and many still refused to believe that the old peacetime was over and the world was spiraling fast to the hottest war the world had ever seen.&lt;/p>
&lt;p>But war never changes. It is exactly the same now.&lt;/p>
&lt;p>We also refused to believe that the war is here, even while ruzzian forces were deploying all over Crimea, annexing the peninsula, and well-armed squads of &amp;ldquo;people of Donbas&amp;rdquo;, speaking with a suspiciously ruzzian accent, infiltrated from Crimea to the Donetsk region.&lt;/p></description></item><item><title>Signals from Outer Space</title><link>https://ikhotin.com/posts/2025/11/signals-from-outer-space/</link><pubDate>Fri, 21 Nov 2025 00:00:00 +0000</pubDate><author>khotin@gmx.com (Igor Khotin)</author><guid>https://ikhotin.com/posts/2025/11/signals-from-outer-space/</guid><description>&lt;p>&lt;em>Today, my keyboard started to receive signals from outer space.&lt;/em>&lt;/p>
&lt;p>Well&amp;hellip; At least it felt like it.&lt;/p>
&lt;h2 id="bring-me-bluetooth">Bring Me Bluetooth!&lt;/h2>
&lt;p>It all started with another power outage, which happens frequently these days.&lt;/p>
&lt;p>Everything but the laptop went black - the lights, my second display, and a KVM switch.&lt;/p>
&lt;p>In a moment, the studio lights fell back to the batteries,
illuminating the room in an eerie red-blue glow.
The second screen is something I can manage without, but with the KVM out, I lost my mouse and keyboard.&lt;/p></description></item><item><title>Plywood Instead of Glass</title><link>https://ikhotin.com/posts/2025/10/plywood-instead-of-glass/</link><pubDate>Sun, 26 Oct 2025 00:00:00 +0000</pubDate><author>khotin@gmx.com (Igor Khotin)</author><guid>https://ikhotin.com/posts/2025/10/plywood-instead-of-glass/</guid><description>&lt;p>Long-strike drones are more dangerous than they seem.&lt;/p>
&lt;p>We&amp;rsquo;ve been harassed by ruzzian Shaheds for more than 2 years, and by now these drones are so mundane that we almost pay no attention to them. Sometimes, these attacks occur daily, in multiple waves that start in the evening and continue throughout the night. And when you hear the buzzing of drones and shooting all the time, you almost stop noticing and pay attention only when explosions approach too close for comfort (usually right over the head).&lt;/p></description></item><item><title>Consulting</title><link>https://ikhotin.com/consulting/</link><pubDate>Sat, 25 Oct 2025 00:00:00 +0000</pubDate><author>khotin@gmx.com (Igor Khotin)</author><guid>https://ikhotin.com/consulting/</guid><description>&lt;p>I&amp;rsquo;m a genuine Igor with a diploma, therefore fully qualified to solve creative and technical issues for evil geniuses. If you are a billionaire or, maybe, an evil megacorp looking for exceptional tech talent, I&amp;rsquo;m sure we can find a mutually beneficial arrangement. If you are not any kind of a villain, I still can help. But the price tag will be reduced in that case.&lt;/p>
&lt;p>I&amp;rsquo;ve spent the last 25+ years working in software development on immensely challenging and innovative projects - from Massive Multiplayer Online Games to high-load media platforms and big data warehouses.&lt;/p></description></item><item><title>Projects</title><link>https://ikhotin.com/projects/</link><pubDate>Sat, 25 Oct 2025 00:00:00 +0000</pubDate><author>khotin@gmx.com (Igor Khotin)</author><guid>https://ikhotin.com/projects/</guid><description>&lt;p>I&amp;rsquo;m a genuine Igor with a diploma, therefore fully qualified to solve creative and technical issues for evil geniuses. If you are a billionaire or, maybe, an evil megacorp looking for exceptional tech talent, I&amp;rsquo;m sure we can find a mutually beneficial arrangement. If you are not any sort of a villain, I also can help, but that&amp;rsquo;s gonna be cheaper.&lt;/p>
&lt;p>I&amp;rsquo;ve spent the last 25 years working in software development on immensely challenging and innovative projects - from Massive Multiplayer Online Games to high-load media platforms and big data warehouses. I&amp;rsquo;ve been deploying containers back in mid 2000s, long before anyone knew anything about them and long before the Docker revolution. I&amp;rsquo;ve been using NoSQL databases in production long before the term itself became adopted. I&amp;rsquo;d started with AWS when they had just a few services (and they still had SimpleDB as the main database)&amp;hellip; So I have a pretty good idea how to conceptualize, design, build, deploy and maintain complex and innovative software products on a modern stack in cloud and on prem.&lt;/p></description></item><item><title>Second Ballistic Strike this Week</title><link>https://ikhotin.com/posts/2025/10/second-ballistic-strike-this-week/</link><pubDate>Sat, 25 Oct 2025 00:00:00 +0000</pubDate><author>khotin@gmx.com (Igor Khotin)</author><guid>https://ikhotin.com/posts/2025/10/second-ballistic-strike-this-week/</guid><description>&lt;p>Explosion. Concussion. Rattling doors and windows. Car alarms triggered by powerful tremors.&lt;/p>
&lt;p>Such is another ballistic missile strike on Kyiv. The second one this week.&lt;/p>
&lt;p>The last one happened only 3 days prior and included a whole bunch of ballistic missiles,
cruise missiles, and drones. Explosions illuminated the sky throughout the night
and up to the next morning. Russians were hitting critical infrastructure all over the city,
and by 9 AM, the electricity was gone, and the hot water soon followed.&lt;/p></description></item><item><title>Collider.JAM War Release 2</title><link>https://ikhotin.com/posts/2025/10/collider.jam-war-release-2/</link><pubDate>Tue, 14 Oct 2025 00:00:00 +0000</pubDate><author>khotin@gmx.com (Igor Khotin)</author><guid>https://ikhotin.com/posts/2025/10/collider.jam-war-release-2/</guid><description>&lt;p>War makes me rethink planning.&lt;/p>
&lt;p>They say &lt;em>&amp;ldquo;no battle plan survives contact with the enemy.&amp;rdquo;&lt;/em> But as I know now, no single plan survives &lt;em>the touch of war&lt;/em>.&lt;/p>
&lt;p>As you know, I&amp;rsquo;m developing &lt;a href="http://collider.land">Collider.JAM Game Framework&lt;/a> to bring back the joy of programming in the dependency-intoxicated JavaScript world and demonstrate that web-first game development is not only possible, but viable and might even be superior in game jamming, creative coding and indie development.&lt;/p></description></item><item><title>Just a Kludge in the Wall</title><link>https://ikhotin.com/posts/2025/10/just-a-kludge-in-the-wall/</link><pubDate>Sat, 11 Oct 2025 00:00:00 +0000</pubDate><author>khotin@gmx.com (Igor Khotin)</author><guid>https://ikhotin.com/posts/2025/10/just-a-kludge-in-the-wall/</guid><description>&lt;p>Today I saw &lt;a href="https://news.ycombinator.com/item?id=45547359">a HN discussion&lt;/a> on &lt;a href="https://github.com/BalajeS/WSL-For-FreeBSD">a WSL-like Windows subsystem for FreeBSD&lt;/a> and was stunned by the amount of genuine enthusiasm regarding that monstrosity.&lt;/p>
&lt;p>Sadly, it is just yet &lt;em>another kludge in the ivory tower of software bloat&lt;/em>. It is like all software is gravitating towards a single point of singularity, with all existing platforms collapsing into an incomprehensible black hole, sucking in our entire civilization.&lt;/p>
&lt;p>We might know well by now why &lt;em>the galaxy is silent&lt;/em>. Maybe all other civilizations went extinct after growing their software into a giant planet-consuming spaghetti-code monster nobody knew how to deal with. An unmaintainable blob of bloatware consuming more power than even a Dyson swarm can provide.&lt;/p></description></item><item><title>Another Total Blackout</title><link>https://ikhotin.com/posts/2025/10/another-total-blackout/</link><pubDate>Fri, 10 Oct 2025 00:00:00 +0000</pubDate><author>khotin@gmx.com (Igor Khotin)</author><guid>https://ikhotin.com/posts/2025/10/another-total-blackout/</guid><description>&lt;p>Last night was an emblematic one for Kyiv&amp;rsquo;s Fall. Heavy clouds dangled low, enveloping yellowing hills across the river. It was dizzling all day and into the night.&lt;/p>
&lt;p>Suddenly, a bright flash illuminated the October sky over the city, and interceptor missiles lacerated the heavy clouds. The glistering balls of rocket fire were diving into the low-hanging cloud ceiling, briefly highlighting the overcast skies. The roar of ascending engines followed. Then all hell broke loose.&lt;/p></description></item><item><title>ReBasic Release 0.4</title><link>https://ikhotin.com/posts/2025/10/rebasic-release-0.4/</link><pubDate>Wed, 08 Oct 2025 00:00:00 +0000</pubDate><author>khotin@gmx.com (Igor Khotin)</author><guid>https://ikhotin.com/posts/2025/10/rebasic-release-0.4/</guid><description>&lt;p>In 80 years of its existence, the software industry has become huge. It&amp;rsquo;s mass casts a gravity field on all spheres of human existence, and tremendous tide forces shred everything into a unified technological soup. Everything revolves around standardized platforms and frameworks now, and all-present forces of technological gravity mix features and ideas between them to the point it is hard to distinguish one product from another. Every website looks the same, and every mobile app follows the same &amp;ldquo;flat&amp;rdquo; design guidelines. Any opinionated software or unconventional idea will be pushed out by the antibodies of corporate greed.&lt;/p></description></item><item><title>Missile Summer</title><link>https://ikhotin.com/posts/2025/08/missile-summer/</link><pubDate>Thu, 28 Aug 2025 00:00:00 +0000</pubDate><author>khotin@gmx.com (Igor Khotin)</author><guid>https://ikhotin.com/posts/2025/08/missile-summer/</guid><description>&lt;p>Last night turned out to be one of the loudest of this summer.&lt;/p>
&lt;p>Late evening, hundreds of drones started their attack on Kyiv in multiple waves.
I could hear the annoying buzzing of drone engines accompanied by bursts of anti-aircraft fire and occasional explosions after lucky hits.&lt;/p>
&lt;p>Then, the decibel level suddenly peaked.&lt;/p>
&lt;p>One moment, it was a dark, moonless night, then a bright light from the outside filled the room.&lt;/p></description></item><item><title>Summer of BASIC</title><link>https://ikhotin.com/posts/2025/08/summer-of-basic/</link><pubDate>Fri, 22 Aug 2025 00:00:00 +0000</pubDate><author>khotin@gmx.com (Igor Khotin)</author><guid>https://ikhotin.com/posts/2025/08/summer-of-basic/</guid><description>&lt;p>When JetPakBoy got his break from school this summer
(and a deserved one - he has passed two grades in one year), we decided
to select a summer programming language to play with.&lt;/p>
&lt;p>I was oscillating between good, established options
and one of my language experiments.&lt;/p>
&lt;p>An established option gives a stable platform and a lot of materials to work with.
Platforms like Scratch, Python, Lua, and JavaScript seem to have everything you need -
stable implementation and well-documented APIs, a wealth of materials online,
versatile tooling, and good support.&lt;/p></description></item><item><title>Another Deadly Strike on Kyiv</title><link>https://ikhotin.com/posts/2025/08/another-deadly-strike-on-kyiv/</link><pubDate>Fri, 01 Aug 2025 00:00:00 +0000</pubDate><author>khotin@gmx.com (Igor Khotin)</author><guid>https://ikhotin.com/posts/2025/08/another-deadly-strike-on-kyiv/</guid><description>&lt;p>Last night was terrible.&lt;/p>
&lt;p>Three hundred drones were attacking Kyiv through the night.&lt;/p>
&lt;p>&lt;img src="https://ikhotin.com/img/2025/2025-07-31_drone-and-missile-trails.jpg" alt="drone-and-missile-trails">&lt;/p>
&lt;p>Then, at 4 AM, when the drone attack was mostly repelled,
air raid alert lifted, and most people returned to their homes from bomb shelters,
ruZZians launched ground-based Kalibr-K cruise missiles from Kursk region.
Flying really low over swamps and rivers, the missiles converged on Kyiv from multiple directions
and started to hit targets all over the city.&lt;/p></description></item><item><title>Nearby Shahed Strike</title><link>https://ikhotin.com/posts/2025/07/nearby-shahed-strike/</link><pubDate>Sun, 27 Jul 2025 00:00:00 +0000</pubDate><author>khotin@gmx.com (Igor Khotin)</author><guid>https://ikhotin.com/posts/2025/07/nearby-shahed-strike/</guid><description>&lt;p>Yesterday, a ruzzian Shahed drone damaged a nearby apartment building.&lt;/p>
&lt;p>We had damage nearby before - from falling intercepted cruise missiles and drones.
Just a few months before, the falling debris damaged an apartment building across the highway.&lt;/p>
&lt;p>But this time it was much closer than before.
The falling debris damaged an apartment building on my block, just a few hundred meters away.&lt;/p>
&lt;p>A strange thing is that it was not the largest explosion happened recently in the area.
We had drones intercepted just right overhead, and the resulting explosions were subjectively much louder.
Then I was seeing bright flashes in the skies above and felt the resulting shockwaves
passing through my body.&lt;/p></description></item><item><title>Fragile Base Class Problem</title><link>https://ikhotin.com/posts/2025/07/fragile-base-class-problem/</link><pubDate>Sun, 13 Jul 2025 00:00:00 +0000</pubDate><author>khotin@gmx.com (Igor Khotin)</author><guid>https://ikhotin.com/posts/2025/07/fragile-base-class-problem/</guid><description>&lt;p>Early 90s saw an unprecedented push towards object-oriented systems. General concensus was that everything must be object-oriented, and by object oriented, everyone meant C++.&lt;/p>
&lt;p>There was no other major contender. Smalltalk, which popularized the OO approach in the first place, had never seen general adoption and was confined to niche, self-contained, all-in-one systems. Early Smalltalk implementations by Xerox PARC clearly showed what pervasive object-orientation meant - the world of objects exchanging messages in a persistent environment. No primitive values, no pointers, no operating system&amp;hellip;
It is a different reality, never appreciated by the tech world, that went in the other direction, trying to superimpose object-oriented elements on top of the existing ecosystem. That is how we got C++, Objective-C, Object Pascal, Visual Basic, and other retro-objectified technologies.&lt;/p></description></item><item><title>The Smell of Smoke in the Morning</title><link>https://ikhotin.com/posts/2025/07/the-smell-of-smoke-in-the-morning/</link><pubDate>Fri, 04 Jul 2025 00:00:00 +0000</pubDate><author>khotin@gmx.com (Igor Khotin)</author><guid>https://ikhotin.com/posts/2025/07/the-smell-of-smoke-in-the-morning/</guid><description>&lt;p>This time, it started much earlier than usual.&lt;/p>
&lt;p>Late afternoon, a chorus of air raid sirens was howling above the city. A harbinger of upcoming drones and missiles. A daily reminder that the war is going on, and you will never catch a break.&lt;/p>
&lt;p>The first waves of buzzing drones started to sneak into the city, followed by hundreds of others — 500+ drones in total, not counting a dozen various missiles.&lt;/p></description></item><item><title>Burning Skyline</title><link>https://ikhotin.com/posts/2025/06/burning-skyline/</link><pubDate>Tue, 17 Jun 2025 00:00:00 +0000</pubDate><author>khotin@gmx.com (Igor Khotin)</author><guid>https://ikhotin.com/posts/2025/06/burning-skyline/</guid><description>&lt;p>The night started with a usual air raid alert, nothing out of the ordinary. Enemy drones were approaching the city. But after the initial strike package, more and more drones were coming in. An annoying buzz of two-cycle engines could be heard throughout the night.&lt;/p>
&lt;p>The sky was sliced with tracing bullets, and firework-like puffs of delay-fuzed shells accompanied by occasional anti-aircraft missiles. Once in a while, a lucky shot would deliver a critical hit, resulting in a bright flash followed by a roaring thunder of an exploding 90kg warhead a few seconds later. When close enough, you can also feel the shockwave hitting your body.&lt;/p></description></item><item><title>Pressure Valve Madness Postmortem</title><link>https://ikhotin.com/posts/2025/04/pressure-valve-madness-postmortem/</link><pubDate>Thu, 03 Apr 2025 00:00:00 +0000</pubDate><author>khotin@gmx.com (Igor Khotin)</author><guid>https://ikhotin.com/posts/2025/04/pressure-valve-madness-postmortem/</guid><description>&lt;p>&lt;strong>&lt;a href="https://d2jam.com/">Down2Jam&lt;/a>&lt;/strong> is a new entry in the game jams family and I was thrilled to participate in the very first event.
I&amp;rsquo;m always in search of interesting events besides major game jams to experience new formats and look at things from a different angle.&lt;/p>
&lt;p>The theme was &lt;strong>Train&lt;/strong>. After a two-hour-long midnight brainstorm we with the team decided to create a little game about a steam train with a tricky pressure valve you have to operate to keep your boiler from blowing up.&lt;/p></description></item><item><title>Another Failed Jam</title><link>https://ikhotin.com/posts/2025/02/another-failed-jam/</link><pubDate>Fri, 07 Feb 2025 00:00:00 +0000</pubDate><author>khotin@gmx.com (Igor Khotin)</author><guid>https://ikhotin.com/posts/2025/02/another-failed-jam/</guid><description>&lt;p>Deadline. No delivery. &lt;em>Another failed jam&lt;/em>.&lt;/p>
&lt;p>It was not going well from the beginning. I decided to participate on the same day the jam started. So I hadn&amp;rsquo;t been able to gather a team and ended up participating solo. Sometimes it works, but it didn&amp;rsquo;t this time.&lt;/p>
&lt;p>Moreover, I started the jam while doing major refactoring in the &lt;strong>&lt;a href="http://collider.land">Collider.JAM&lt;/a>&lt;/strong> event management subsystem. That meant I had to spend some time making the framework functional again.
In the end, I spent about 40 hours over the course of a week working on the game prototype—all for a few working subsystems and no core gameloop.&lt;/p></description></item><item><title>Yet Another Ballistic Strike on Kyiv</title><link>https://ikhotin.com/posts/2025/01/yet-another-ballistic-strike-on-kyiv/</link><pubDate>Sat, 18 Jan 2025 00:00:00 +0000</pubDate><author>khotin@gmx.com (Igor Khotin)</author><guid>https://ikhotin.com/posts/2025/01/yet-another-ballistic-strike-on-kyiv/</guid><description>&lt;p>It was a typical night in Ukraine. Long-range drones were launched in waves after midnight. After 4 AM we could hear shooting and explosions somewhere in our neighborhood - these were anti-aircraft fireteams trying to shoot down drones coming into the city from our direction. Nothing special.
At 6 AM, all drones in Kyiv&amp;rsquo;s vicinity were eliminated and the air raid alert was over. Just a few minutes later we heard a series of explosions (too powerful to be drones) and air raid sirens triggered almost simultaneously with the first blast. Russians used ballistic missiles on Kyiv once again.&lt;/p></description></item><item><title>Input Subsystem Redesign</title><link>https://ikhotin.com/posts/2025/01/input-subsystem-redesign/</link><pubDate>Sat, 04 Jan 2025 00:00:00 +0000</pubDate><author>khotin@gmx.com (Igor Khotin)</author><guid>https://ikhotin.com/posts/2025/01/input-subsystem-redesign/</guid><description>&lt;p>&lt;strong>Any game is driven by events.&lt;/strong> And the most foundational ones are related to controls. Player input is super-important since it steers the simulation. That is why the effort put into the input subsystem design pays off handsomely.&lt;/p>
&lt;h2 id="the-origin">The Origin&lt;/h2>
&lt;p>&lt;strong>Collider.JAM&lt;/strong> started with a very basic input system. All input events are captured by functions in &lt;code>/trap&lt;/code>. So &lt;code>/trap/keyUp(e)&lt;/code> captures all key up events, &lt;code>/trap/mouseMove(e)&lt;/code> - all mouse movements. Or maybe you want to capture an R keypress by creating &lt;code>trap/rDown(e)&lt;/code>.
It is simple, straightforward, and, more importantly, follows Collider.JAM opinionated conventions for names and placements.&lt;/p></description></item><item><title>All Kinds of Air Raids</title><link>https://ikhotin.com/posts/2024/07/all-kinds-of-air-raids/</link><pubDate>Wed, 31 Jul 2024 00:00:00 +0000</pubDate><author>khotin@gmx.com (Igor Khotin)</author><guid>https://ikhotin.com/posts/2024/07/all-kinds-of-air-raids/</guid><description>&lt;p>&lt;em>Air raids are different.&lt;/em>&lt;/p>
&lt;p>Ballistic missile attacks are sudden, swift, and brutal. No compromise, no remorse. Ballistic missiles are fast. Usually, you have only a minute or two between the alert and the incoming.&lt;/p>
&lt;p>You don&amp;rsquo;t have time to look for a shelter. If caught outside, just hide inside the nearest building. You are in luck if there is a subsurface facility nearby - an underground pedestrian crossing, an underground parking lot, or a subway. The best of them, of course, is a subway, designed in the Cold War to be a nuclear shelter.&lt;/p></description></item><item><title>Missilophobia</title><link>https://ikhotin.com/posts/2024/07/missilophobia/</link><pubDate>Wed, 17 Jul 2024 00:00:00 +0000</pubDate><author>khotin@gmx.com (Igor Khotin)</author><guid>https://ikhotin.com/posts/2024/07/missilophobia/</guid><description>&lt;p>The inevitable thing in a war is that my son is terrified of thunder now. It sounds somewhat similar to missile strikes, and each time we have a thunderstorm, he runs into a corridor away from windows to seek shelter. But I don&amp;rsquo;t think it is brontophobia - the fear of thunder. Rather, it is a case of missilophobia.&lt;/p>
&lt;p>Today, our side of the city didn&amp;rsquo;t get much rain. It happens sometimes when you live on a big river - one bank could have a different weather from the other.&lt;/p></description></item><item><title>Bloody Monday</title><link>https://ikhotin.com/posts/2024/07/bloody-monday/</link><pubDate>Mon, 08 Jul 2024 00:00:00 +0000</pubDate><author>khotin@gmx.com (Igor Khotin)</author><guid>https://ikhotin.com/posts/2024/07/bloody-monday/</guid><description>&lt;p>Today marks the bloodiest missile strike on Kyiv so far this year.&lt;/p>
&lt;p>You never know when the next attack is coming.&lt;/p>
&lt;p>It was a typical Monday morning. The city was buzzing with activity. There was a limited drone attack during the night, but it was long over.&lt;/p>
&lt;p>Suddenly, all hell breaks loose. 40+ missiles from all directions converged on Kyiv almost simultaneously.&lt;/p>
&lt;p>The combined attack included various types of missiles. Ship and submarine-launched Kalibr cruise missiles, Kh-101 cruise missiles launched by strategic aviation, land-based ballistic Iskanders, air-launched aeroballistic Kinzhals, and even a hypersonic Zircon.&lt;/p></description></item><item><title>Explosive Wake-Up</title><link>https://ikhotin.com/posts/2024/05/explosive-wake-up/</link><pubDate>Fri, 31 May 2024 00:00:00 +0000</pubDate><author>khotin@gmx.com (Igor Khotin)</author><guid>https://ikhotin.com/posts/2024/05/explosive-wake-up/</guid><description>&lt;p>&lt;strong>Boom!&lt;/strong> The explosion was so loud that I heard window frames pressed in with a cracking sound. I jumped out of bed,
my heart pounding fast and my mouth swearing.
A thick wall facing my office offers some protection,
so I moved away from the windows closer to that wall,
expecting more explosions to follow.
But it was all for now. It is 5 am and Ukrainian air defense just intercepted a &lt;em>9M727 Iskander-K cruise missile&lt;/em> low over southern parts of Kyiv.&lt;/p></description></item><item><title>Collider.JAM Development Setup</title><link>https://ikhotin.com/posts/2024/05/collider.jam-development-setup/</link><pubDate>Thu, 30 May 2024 00:00:00 +0000</pubDate><author>khotin@gmx.com (Igor Khotin)</author><guid>https://ikhotin.com/posts/2024/05/collider.jam-development-setup/</guid><description>&lt;p>You can use &lt;a href="http://collider.land">Collider.JAM&lt;/a> by simply installing &lt;code>collider.jam&lt;/code> npm package globally with &lt;code>npm install -g collider.jam&lt;/code>.
This command installs the latest stable Collider.JAM release and gives you
the &lt;code>jam&lt;/code> tool to initialize and launch &lt;strong>Collider.JAM&lt;/strong> mixes.
This is the simplest way to use Collider.JAM and it often covers
all your development needs.&lt;/p>
&lt;p>But in my case, I need something more intricate.
Since I&amp;rsquo;m not only using Collider.JAM, but also &lt;em>developing it&lt;/em>,
I need an installation working right from git repositories deployed locally instead of using pre-packaged remote snapshots.
&lt;em>That way I can introduce changes and test them right away.&lt;/em>&lt;/p></description></item><item><title>Blackouts</title><link>https://ikhotin.com/posts/2024/05/blackouts/</link><pubDate>Wed, 15 May 2024 00:00:00 +0000</pubDate><author>khotin@gmx.com (Igor Khotin)</author><guid>https://ikhotin.com/posts/2024/05/blackouts/</guid><description>&lt;p>It&amp;rsquo;s started again. Early in the morning power went out. We got another blackout — the likes we&amp;rsquo;d never seen since February 2023.&lt;/p>
&lt;p>Recent Russian missile strikes on hydroelectric dams and thermal power plants left 8GWt whole in the Ukrainian power grid and it was just a matter of time before the system became unbalanced. Kyiv was luckier than others for a few weeks, but it looks like that luck ran out.&lt;/p></description></item><item><title>Zircon Strike</title><link>https://ikhotin.com/posts/2024/03/zircon-strike/</link><pubDate>Mon, 25 Mar 2024 00:00:00 +0000</pubDate><author>khotin@gmx.com (Igor Khotin)</author><guid>https://ikhotin.com/posts/2024/03/zircon-strike/</guid><description>&lt;p>Today explosions started before I heard the air raid alert. Powerful shockwaves shook my apartment causing doors and windows to vibrate and bend with cracking sound.&lt;/p>
&lt;p>It looks like Kyiv was attacked with hypersonic 3M22 Zircon missiles from the occupied Crimea. They fly so fast that there is very little time to react.&lt;/p>
&lt;p>We moved to the corridor as fast as possible since there was no time to get to the bomb shelter. Here, in Kyiv, we had cases of people killed by falling debris on the way to a shelter, so sometimes it is just safer to stay inside away from windows.&lt;/p></description></item><item><title>Collider.JAM DR10</title><link>https://ikhotin.com/posts/2021/04/collider.jam-dr10/</link><pubDate>Wed, 07 Apr 2021 00:00:00 +0000</pubDate><author>khotin@gmx.com (Igor Khotin)</author><guid>https://ikhotin.com/posts/2021/04/collider.jam-dr10/</guid><description>&lt;p>I&amp;rsquo;m happy to announce &lt;strong>Collider.JAM Development Release 10&lt;/strong>.&lt;/p>
&lt;p>It is a massive release baked for almost 4 months.
The &lt;a href="https://github.com/invadium/collider.jam/blob/ver0.0.11-dr10/CHANGELOG">changelog&lt;/a>
alone is bigger than any of the previous ones.&lt;/p>
&lt;p>A lot of effort this time went to simplify project bootstrap.
You can now use &lt;code>jam init ls&lt;/code> to list all available samples:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>mkdir next.mix
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>cd next.mix
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>jam init ls
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>The last command will scan installed modules and list all available samples.
By the way, &lt;code>jam init list&lt;/code> or &lt;code>jam init help&lt;/code> would also work just fine.
I&amp;rsquo;m trying to make the &lt;em>cli&lt;/em> as user-friendly and forgiving as possible :)&lt;/p></description></item><item><title>Collider.JAM Spring 2021 Roadmap</title><link>https://ikhotin.com/posts/2021/03/collider.jam-spring-2021-roadmap/</link><pubDate>Sun, 21 Mar 2021 00:00:00 +0000</pubDate><author>khotin@gmx.com (Igor Khotin)</author><guid>https://ikhotin.com/posts/2021/03/collider.jam-spring-2021-roadmap/</guid><description>&lt;p>We are a few steps from &lt;strong>Alpha Release 1&lt;/strong>.&lt;/p>
&lt;p>&lt;strong>Development Release 10&lt;/strong> is going to be shipped soon.
Then, DR 11 and 12 will follow,
and we might finally be ready to ship the first Alpha.&lt;/p>
&lt;p>Spring is traditionally a jam season.
And since it is Collider.JAM,
all major releases are usually shipped around these jams :)&lt;/p>
&lt;p>Themes and limitations are always different,
so each jam provides a unique testing playground
for framework features and development approach.&lt;/p></description></item><item><title>Green Eyes</title><link>https://ikhotin.com/posts/2020/12/green-eyes/</link><pubDate>Sun, 20 Dec 2020 00:00:00 +0000</pubDate><author>khotin@gmx.com (Igor Khotin)</author><guid>https://ikhotin.com/posts/2020/12/green-eyes/</guid><description>&lt;p>Eyes watching a mouse cursor have being a good GUI demo app
since the early versions of X-Window.
It shows how to work with color, draw simple shapes
and handle mouse coordinates.&lt;/p>
&lt;p>Let&amp;rsquo;s see how easy it is to build
a similar app with &lt;a href="http://collider.land">Collider.JAM&lt;/a>
and JavaScript.&lt;/p>
&lt;p>&lt;img src="https://ikhotin.com/img/2020/eyes-1.png" alt="Eyes">&lt;/p>
&lt;p>And let&amp;rsquo;s also extend the original concept by adding
the ability to create additional eyes on the mouse click.
There was no way to do that in the original
X-Window version, but we can do it,
since we have the whole canvas at our disposal.&lt;/p></description></item><item><title>Background in Collider.JAM</title><link>https://ikhotin.com/posts/2020/12/background-in-collider.jam/</link><pubDate>Thu, 03 Dec 2020 00:00:00 +0000</pubDate><author>khotin@gmx.com (Igor Khotin)</author><guid>https://ikhotin.com/posts/2020/12/background-in-collider.jam/</guid><description>&lt;p>Backgrounds are essential for any game.&lt;/p>
&lt;p>Usually, backgrounds are not a part of the action,
nevertheless, they are a crucial element of a game
style and aesthetics.&lt;/p>
&lt;p>Backgrounds also play an important role in the game loop,
since usually they are the first thing we draw each frame.
So the background is supposed to clean up the previous frame.&lt;/p>
&lt;h2 id="before-dr4">Before DR4&lt;/h2>
&lt;p>In early versions of &lt;a href="http://collider.land">Collider.JAM&lt;/a>
we used to draw backgrounds manually.&lt;/p></description></item><item><title>Collider.JAM DR9</title><link>https://ikhotin.com/posts/2020/11/collider.jam-dr9/</link><pubDate>Wed, 25 Nov 2020 00:00:00 +0000</pubDate><author>khotin@gmx.com (Igor Khotin)</author><guid>https://ikhotin.com/posts/2020/11/collider.jam-dr9/</guid><description>&lt;p>Yesterday, I&amp;rsquo;ve signed off and published
&lt;a href="http://collider.land">Collider.JAM Development Release 9&lt;/a>.&lt;/p>
&lt;p>The package is available on &lt;a href="https://www.npmjs.com/package/collider.jam">npm&lt;/a>:&lt;/p>
&lt;pre>&lt;code>npm install -g collider.jam
&lt;/code>&lt;/pre>
&lt;p>It&amp;rsquo;s the 8th Collider.JAM release this year.
The &lt;a href="https://github.com/invadium/collider.jam/blob/master/CHANGELOG">changelog&lt;/a>
is not as big, as in the previous release,
but still, there are significant changes.&lt;/p>
&lt;p>We finally have
&lt;a href="https://github.com/invadium/collider.jam/blob/master/CONTRIBUTING.md">CONTRIBUTING.md&lt;/a>
with tips on how one can help the project.
It&amp;rsquo;s attributed primarily to &lt;a href="https://hacktoberfest.digitalocean.com/">Hacktoberfest&lt;/a>
and the best open-source practices I&amp;rsquo;ve learned along the way.&lt;/p>
&lt;p>But this release is not about features,
it is about user experience.&lt;/p></description></item><item><title>Global Scope in Collider.JAM</title><link>https://ikhotin.com/posts/2020/11/global-scope-in-collider.jam/</link><pubDate>Tue, 17 Nov 2020 00:00:00 +0000</pubDate><author>khotin@gmx.com (Igor Khotin)</author><guid>https://ikhotin.com/posts/2020/11/global-scope-in-collider.jam/</guid><description>&lt;p>Global scope is considered evil.
It especially resonates in the JavaScript world
with a notorious &lt;strong>window&lt;/strong> object.
The most common advice out there is to avoid
globals as much as possible.&lt;/p>
&lt;p>However, a game state is essentially a one big &lt;em>global scope&lt;/em>.&lt;/p>
&lt;p>It defines where the enemies are,
how many hit points they have,
and how much health and ammo you&amp;rsquo;ve got.
And each part of that system potentially can affect any other.&lt;/p></description></item><item><title>Collider.JAM Debug Mode</title><link>https://ikhotin.com/posts/2020/11/collider.jam-debug-mode/</link><pubDate>Thu, 12 Nov 2020 00:00:00 +0000</pubDate><author>khotin@gmx.com (Igor Khotin)</author><guid>https://ikhotin.com/posts/2020/11/collider.jam-debug-mode/</guid><description>&lt;p>It is easy to run a &lt;a href="http://collider.land">Collider.JAM&lt;/a> project.&lt;/p>
&lt;p>Just execute somewhere inside a project folder:&lt;/p>
&lt;pre tabindex="0">&lt;code>jam
&lt;/code>&lt;/pre>&lt;p>And then open &lt;a href="http://localhost:9999">http://localhost:9999&lt;/a>.&lt;/p>
&lt;p>Even better, you can ask Collider.JAM to open the project link automatically:&lt;/p>
&lt;pre tabindex="0">&lt;code>jam play
&lt;/code>&lt;/pre>&lt;p>However, during development we often use a different form:&lt;/p>
&lt;pre tabindex="0">&lt;code>jam -d
&lt;/code>&lt;/pre>&lt;p>The &lt;code>-d&lt;/code> flag turns on the &lt;strong>debug mode&lt;/strong>.
There are a number of debug and development features enabled by this:&lt;/p>
&lt;ul>
&lt;li>&lt;a href="#debug-output-in-the-terminal">debug output&lt;/a>&lt;/li>
&lt;li>&lt;a href="#fast-boot">fast boot&lt;/a>&lt;/li>
&lt;li>&lt;a href="#help-data">help data&lt;/a>&lt;/li>
&lt;li>&lt;a href="#hot-reload">hot reload&lt;/a>&lt;/li>
&lt;li>&lt;a href="#custom-debug-hooks">custom debug hooks&lt;/a>&lt;/li>
&lt;/ul>
&lt;hr>
&lt;h2 id="debug-output-in-the-terminal">Debug output in the terminal&lt;/h2>
&lt;p>The debug output prints a lot of data
besides the usual Collider.JAM version and listening address.&lt;/p></description></item><item><title>Sketch Projects in Collider.JAM</title><link>https://ikhotin.com/posts/2020/11/sketch-projects-in-collider.jam/</link><pubDate>Tue, 10 Nov 2020 00:00:00 +0000</pubDate><author>khotin@gmx.com (Igor Khotin)</author><guid>https://ikhotin.com/posts/2020/11/sketch-projects-in-collider.jam/</guid><description>&lt;p>The development tools today are big. And that directly reflects
on the complexity of projects they produce.&lt;/p>
&lt;p>The level of noise modern tools generate is just unbelievable.
When you click on &amp;ldquo;Create a New Project&amp;rdquo;
in a typical modern IDE, you receive a folder
full of mystery and surprises.&lt;/p>
&lt;p>A hello-world type of project might consist of hundreds of files.&lt;/p>
&lt;p>Do these files essential?
Do they serve any purpose?
Is it possible to hide or eliminate some of them
while preserving the functionality?
Is it really necessary to be that complex?&lt;/p></description></item><item><title>Ton Roosendall and the Story of Blender</title><link>https://ikhotin.com/posts/2020/10/ton-roosendall-and-the-story-of-blender/</link><pubDate>Sat, 31 Oct 2020 00:00:00 +0000</pubDate><author>khotin@gmx.com (Igor Khotin)</author><guid>https://ikhotin.com/posts/2020/10/ton-roosendall-and-the-story-of-blender/</guid><description>&lt;p>The best way to close &lt;strong>Hacktoberfest 2020&lt;/strong> is to share a story.
And what can be better, than a fascinating story of pixels, polygons, and open source?&lt;/p>
&lt;p>In &lt;a href="https://youtu.be/qJEWOTZnFeg">this video&lt;/a>,
Blender Guru talks with Ton Roosendaal about the origins and the future of Blender.&lt;/p>
&lt;p>Blender originated in 3D animation studio NeoGeo
on the Amiga platform in the late 80s.
You can still &lt;a href="https://download.blender.org/source/chest/neogeo/Amiga-software.zip">download and try&lt;/a>
the original software called Traces.&lt;/p>
&lt;p>Later, a company Not A Number was formed to support the development of 3D modeler by that time called Blender.&lt;/p></description></item><item><title>The Essence of Life in Collider.JAM</title><link>https://ikhotin.com/posts/2020/10/the-essence-of-life-in-collider.jam/</link><pubDate>Fri, 30 Oct 2020 00:00:00 +0000</pubDate><author>khotin@gmx.com (Igor Khotin)</author><guid>https://ikhotin.com/posts/2020/10/the-essence-of-life-in-collider.jam/</guid><description>&lt;p>Lifeforms of &lt;a href="http://collider.land">Collider.JAM&lt;/a>
live in the &lt;em>/lab&lt;/em>, as you might know from
my previous &lt;a href="https://ikhotin.com/posts/2020/10/4-essential-folders-in-collider.jam/">post&lt;/a>.&lt;/p>
&lt;p>&lt;strong>The Essence of Life&lt;/strong> is simple
and ruled only by 2 functions - &lt;code>evo(dt)&lt;/code> and &lt;code>draw()&lt;/code>.
The first determines the lifeform&amp;rsquo;s behavior in a short timespan
(usually a single frame).
The second - how the lifeform looks in its current state.&lt;/p>
&lt;p>To have a lifeform on the screen,
you just have to define these two functions
on any object and place it in &lt;em>/lab&lt;/em>.&lt;/p></description></item><item><title>4 Essential Folders in Collider.JAM</title><link>https://ikhotin.com/posts/2020/10/4-essential-folders-in-collider.jam/</link><pubDate>Tue, 27 Oct 2020 00:00:00 +0000</pubDate><author>khotin@gmx.com (Igor Khotin)</author><guid>https://ikhotin.com/posts/2020/10/4-essential-folders-in-collider.jam/</guid><description>&lt;p>There are 4 essential elements in alchemy - earth, water, air, and fire. You need to understand them all to do the magic.&lt;/p>
&lt;p>&lt;a href="http://collider.land">Collider.JAM&lt;/a> framework has its own majik. To master it, you need to know 4 essential folders.&lt;/p>
&lt;p>These folders are:&lt;/p>
&lt;ul>
&lt;li>/res&lt;/li>
&lt;li>/dna&lt;/li>
&lt;li>/lab&lt;/li>
&lt;li>/trap&lt;/li>
&lt;/ul>
&lt;p>You can find them at the root of almost any Collider.JAM project.
Place files into proper folders to leverage the power of Collider.JAM.&lt;/p>
&lt;blockquote>
&lt;p>The names may look cryptic at first.
You have to get used to it.&lt;/p></description></item><item><title>Hacktoberfest 2020</title><link>https://ikhotin.com/posts/2020/10/hacktoberfest-2020/</link><pubDate>Wed, 14 Oct 2020 00:00:00 +0000</pubDate><author>khotin@gmx.com (Igor Khotin)</author><guid>https://ikhotin.com/posts/2020/10/hacktoberfest-2020/</guid><description>&lt;p>I&amp;rsquo;m joining Hacktoberfest 2020.&lt;/p>
&lt;p>What is the best thing after delivering Collider.JAM DR8? Sure thing it is Collider.JAM DR9. And that is what I plan to ship in late October - early November.&lt;/p>
&lt;p>The last release was dedicated to our team&amp;rsquo;s participation in
&lt;a href="https://ldjam.com/events/ludum-dare/47">Ludum Dare 47 Jam&lt;/a>. So it included mostly the features needed in jams - features for rapid development, like &lt;code>jam new&lt;/code> command that simplifies the creation of various entities.&lt;/p></description></item><item><title>Collider.JAM DR8</title><link>https://ikhotin.com/posts/2020/10/collider.jam-dr8/</link><pubDate>Thu, 08 Oct 2020 00:00:00 +0000</pubDate><author>khotin@gmx.com (Igor Khotin)</author><guid>https://ikhotin.com/posts/2020/10/collider.jam-dr8/</guid><description>&lt;p>&lt;a href="http://colliderlabs.com/jam/">Collider.JAM&lt;/a> Development Release 8 is out.&lt;/p>
&lt;p>It is the first release for which I can claim more or less full help coverage. Finally, the big and complex prototypes in &lt;em>/hud&lt;/em> are fully documented. And it feels good. Now I can focus on missing tutorials.&lt;/p>
&lt;p>There are a lot of changes delivering more consistency and convenience.&lt;/p>
&lt;p>Like Frame&amp;rsquo;s &lt;em>select()&lt;/em> and &lt;em>selectOne()&lt;/em> methods now support asterix patterns and JQuery/CSS-like selectors. So you can get all instances of Missile proto in &lt;em>/lab&lt;/em> like &lt;code>lab.select('.Missile')&lt;/code> or maybe select them by id like &lt;code>lab.select('#missile*')&lt;/code> or name like &lt;code>lab.select('&amp;amp;missile*')&lt;/code>. Consistent.&lt;/p></description></item><item><title>The Road to Collider.JAM DR8</title><link>https://ikhotin.com/posts/2020/09/the-road-to-collider.jam-dr8/</link><pubDate>Fri, 25 Sep 2020 00:00:00 +0000</pubDate><author>khotin@gmx.com (Igor Khotin)</author><guid>https://ikhotin.com/posts/2020/09/the-road-to-collider.jam-dr8/</guid><description>&lt;p>I&amp;rsquo;ve shipped 6 releases of &lt;a href="http://colliderlabs.com/jam/">Collider.JAM&lt;/a> this year so far. It&amp;rsquo;s a great improvement from a single release in 2019 :)&lt;/p>
&lt;p>The framework is getting more usable out of the box. DR7 has brought an immense improvement in help quality. But we are still missing introductory materials. Simple tutorials in help and readme are all we have. Also, there is a bunch of demo mods in &lt;a href="https://github.com/invadium/bits.mix">bits.mix&lt;/a> that might be useful for starters. But that is about it.&lt;/p></description></item><item><title>How to Prepare for Your Next Game Jam</title><link>https://ikhotin.com/posts/2020/07/how-to-prepare-for-your-next-game-jam/</link><pubDate>Mon, 27 Jul 2020 00:00:00 +0000</pubDate><author>khotin@gmx.com (Igor Khotin)</author><guid>https://ikhotin.com/posts/2020/07/how-to-prepare-for-your-next-game-jam/</guid><description>&lt;p>Participation in another game jam brings some thoughts on how to prepare properly.&lt;/p>
&lt;p>Since I had my share of defeats as well as successful jams, I want to share my experience and lay down some things you can do to make the upcoming jam as smooth and productive, as possible.&lt;/p>
&lt;p>&lt;img src="https://ikhotin.com/img/2020/negative-laptop-notepad.jpeg" alt="Laptop and Notepad">&lt;/p>
&lt;p>Jams, Sprints, and Hackathons are hyper-intensive events and you want to be ready beforehand.
Skipping preparations and just diving in can result in wasting valuable time, losing the flow, and even failing the jam.&lt;/p></description></item><item><title>Portability doesn't Come for Free</title><link>https://ikhotin.com/posts/2020/07/portability-doesnt-come-for-free/</link><pubDate>Wed, 08 Jul 2020 00:00:00 +0000</pubDate><author>khotin@gmx.com (Igor Khotin)</author><guid>https://ikhotin.com/posts/2020/07/portability-doesnt-come-for-free/</guid><description>&lt;p>Development Release 6 finally delivers stable Windows compatibility.&lt;/p>
&lt;p>&lt;a href="http://colliderlabs.com/jam">Collider.JAM&lt;/a> shell is based on &lt;a href="https://nodejs.org">Node.js&lt;/a> and it&amp;rsquo;s supposed to be portable&amp;hellip; In theory.
In practice, there are ALWAYS some issues.&lt;/p>
&lt;p>Since I haven&amp;rsquo;t been using Windows for the last 13 years or so, I didn&amp;rsquo;t have a machine suitable for proper testing. I guess it was working for some time&amp;hellip; Then I started to do some clever stuff with module scanning and unit discovery. And when you do something fancy with a filesystem, portability might suffer.&lt;/p></description></item><item><title>On Collider.JAM DR4 Testing</title><link>https://ikhotin.com/posts/2020/05/on-collider.jam-dr4-testing/</link><pubDate>Wed, 27 May 2020 00:00:00 +0000</pubDate><author>khotin@gmx.com (Igor Khotin)</author><guid>https://ikhotin.com/posts/2020/05/on-collider.jam-dr4-testing/</guid><description>&lt;p>I&amp;rsquo;m thinking of testing automation for future releases of Collider.JAM. The initial DR4 package I&amp;rsquo;ve pushed to npm had broken dependencies. I&amp;rsquo;ve linked to the wrong tags and realized that only several days after. Since it kind of worked on my machine :)&lt;/p>
&lt;p>To avoid that in the future, more elaborated system is needed to check the release branch before a push. And the testing has to be done on a clean machine or inside a special Docker container.&lt;/p></description></item><item><title>Collider.JAM DR4</title><link>https://ikhotin.com/posts/2020/04/collider.jam-dr4/</link><pubDate>Thu, 30 Apr 2020 00:00:00 +0000</pubDate><author>khotin@gmx.com (Igor Khotin)</author><guid>https://ikhotin.com/posts/2020/04/collider.jam-dr4/</guid><description>&lt;p>&lt;em>&lt;a href="http://colliderlabs.com/jam/">Collider.JAM&lt;/a>
Development Release 4 is out!&lt;/em>&lt;/p>
&lt;p>I&amp;rsquo;ve completed major features for DR4 just before &lt;a href="https://ldjam.com/events/ludum-dare/46">Ludum Dare 46&lt;/a>. Only some minor fixes were included later.&lt;/p>
&lt;p>The jam itself is an adventure, that deserves it&amp;rsquo;s own post or two. I will definitely cover it in the future. Now I&amp;rsquo;m exhausted but quite satisfied with the results - &lt;a href="https://invadium.itch.io/station-keeping">a survival platformer on a space station with local co-op multiplayer&lt;/a>.&lt;/p>
&lt;p>In DR4 announce, I&amp;rsquo;d expected it would be possible to deliver the release somewhere before or after the jam. But a couple of sleepless nights and the following prostration made it impossible.&lt;/p></description></item><item><title>Collider.JAM DR3</title><link>https://ikhotin.com/posts/2020/04/collider.jam-dr3/</link><pubDate>Tue, 07 Apr 2020 00:00:00 +0000</pubDate><author>khotin@gmx.com (Igor Khotin)</author><guid>https://ikhotin.com/posts/2020/04/collider.jam-dr3/</guid><description>&lt;p>&lt;em>&lt;a href="http://colliderlabs.com/jam/">Collider.JAM&lt;/a>
Development Release 3 is out!&lt;/em>&lt;/p>
&lt;p>Main achievements are pretty simple - F1 and F2.&lt;/p>
&lt;p>Readme and man pages have been updated.
By pressing F1, you are getting much better info now.
But tutorials are still missing,
and that is something to fix in future releases.&lt;/p>
&lt;p>Node Inspector is available by pressing F2.
It has also been greatly improved.
Back action works as expected
and there is a proper sync between tabs.&lt;/p></description></item><item><title>Hello Human</title><link>https://ikhotin.com/posts/2020/03/hello-human/</link><pubDate>Fri, 27 Mar 2020 00:00:00 +0000</pubDate><author>khotin@gmx.com (Igor Khotin)</author><guid>https://ikhotin.com/posts/2020/03/hello-human/</guid><description>&lt;h2 id="it-is-time-for-a-new-blog">It is time for a new blog!&lt;/h2>
&lt;p>I&amp;rsquo;ve been using blogger.com for many years.
Though not a productive blogger,
I&amp;rsquo;ve been posting now and then.&lt;/p>
&lt;p>For &lt;a href="http://invasionwave.com">invasionwave.com&lt;/a>
and &lt;a href="http://invaderslounge.com">invaderslounge.com&lt;/a>
I&amp;rsquo;ve decided to go with Wordpress.
A lot of features, but also a lot of hustle to maintain.&lt;/p>
&lt;p>I don&amp;rsquo;t need any fancy plugins for my personal page.
All I need is a simple way to turn markdown
into HTML pages.&lt;/p>
&lt;p>Therefore, this site is running on Hugo - simple and powerful
static site generator written in Go.&lt;/p></description></item><item><title>Score</title><link>https://ikhotin.com/score/</link><pubDate>Thu, 12 Mar 2020 00:00:00 +0000</pubDate><author>khotin@gmx.com (Igor Khotin)</author><guid>https://ikhotin.com/score/</guid><description>&lt;pre tabindex="0">&lt;code>Jams: 25
Itch.io Games: 16
Years of Programming: 30
Years in the Industry: 20
Kids: 1
&lt;/code>&lt;/pre></description></item><item><title>About</title><link>https://ikhotin.com/about/</link><pubDate>Mon, 17 Feb 2020 00:00:00 +0000</pubDate><author>khotin@gmx.com (Igor Khotin)</author><guid>https://ikhotin.com/about/</guid><description>&lt;p>I&amp;rsquo;m Igor Khotin, a creative software designer.&lt;/p>
&lt;p>I turn ideas into fun and playable code. Things like a handcrafted &lt;a href="http://collider.land">Collider.JAM&lt;/a> game framework, or a retro-styled &lt;a href="https://invadium.itch.io/rebasic">ReBasic&lt;/a> programming language that tries to resurrect the 80s feel of programming, among &lt;a href="https://github.com/invadium">other things&lt;/a>.&lt;/p>
&lt;p>Here are some factoids about me:&lt;/p>
&lt;ul>
&lt;li>
&lt;p>I started programming on a ZX Spectrum clone in the early 90s when I was 7 or 8.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>I landed my first full-time developer&amp;rsquo;s job in the year 2000 and have been in the industry ever since.&lt;/p></description></item></channel></rss>