<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>B Surmanski</title><link>https://bsurmanski.ca/</link><description>Recent content on B Surmanski</description><generator>Hugo</generator><language>en-us</language><lastBuildDate>Fri, 19 Jun 2026 15:09:44 -0400</lastBuildDate><atom:link href="https://bsurmanski.ca/index.xml" rel="self" type="application/rss+xml"/><item><title>Can You Compress Photo RAW files to Save Space?</title><link>https://bsurmanski.ca/photography/1709_compress_raw/</link><pubDate>Wed, 20 Sep 2017 00:00:00 +0000</pubDate><guid>https://bsurmanski.ca/photography/1709_compress_raw/</guid><description>&lt;h2 id="introduction"&gt;Introduction&lt;/h2&gt;
&lt;p&gt;I only started photography as a hobby about a year ago, and already I have about 50gb in my photo library. I shoot RAW, and evidently RAW photos take up a lot of space. I decided to test whether it was possible to compress these files to save space. Specifically, I wanted to know if I could use a compressed archive, like a ZIP file, to reduce the size on disk of my photo library.&lt;/p&gt;</description></item><item><title>The Myth of Color Film (C41) Color Shift due to Chemical Temperature [Part 2: Results]</title><link>https://bsurmanski.ca/photography/1709_myth_color_film_cast_p2/</link><pubDate>Tue, 05 Sep 2017 00:00:00 +0000</pubDate><guid>https://bsurmanski.ca/photography/1709_myth_color_film_cast_p2/</guid><description>&lt;p&gt;&lt;em&gt;If you would like to know the procedure used to get these results, see &lt;a href="../1709_myth_color_film_cast_p1/index"&gt;part 1 (Procedure)&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;
&lt;h2 id="reintroduction"&gt;Reintroduction&lt;/h2&gt;
&lt;p&gt;I&amp;rsquo;ve heard rumors that developing color film (C41) requires holding the chemical temperature constant ±1℉ for fear the color shift demons will recolor your film in strange and unusual ways. I developed slices of the same shot at different chemical temperatures to test that claim.&lt;/p&gt;
&lt;h2 id="results"&gt;Results&lt;/h2&gt;
&lt;p&gt;All pictures were taken at f/8, 1/1000s, ISO400, including the digital control. ISO was forced by the film speed I had, aperture was selected arbitrarily, and shutter speed was set by using the recommended meter reading of the FE2 film camera.
The digital control histogram is scaled to the image minimum and maximum.
The analog histograms are scaled to the minimum and maximum supported density of the scanner.
This means the analog histograms can be compared with each other fairly but the digital histogram has a different scale.
All analog pictures were scanned with auto-exposure. The scanner auto-mapped each RGB channel film densities to image minimum and maximum.&lt;/p&gt;</description></item><item><title>The Myth of Color Film (C41) Color Shift due to Chemical Temperature [Part 1: Procedure]</title><link>https://bsurmanski.ca/photography/1709_myth_color_film_cast_p1/</link><pubDate>Mon, 04 Sep 2017 00:00:00 +0000</pubDate><guid>https://bsurmanski.ca/photography/1709_myth_color_film_cast_p1/</guid><description>&lt;p&gt;&lt;em&gt;If you aren&amp;rsquo;t interested in the procedure and just want to see the results, skip to &lt;a href="../1709_myth_color_film_cast_p2/index"&gt;part 2 (Results)&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;
&lt;h2 id="introduction"&gt;Introduction&lt;/h2&gt;
&lt;p&gt;It seems to be common consensus that when processing C41 (color negative) film at home, you need to control the temperature of the chemistry very carefully. I&amp;rsquo;ve heard that if your developer is off by 1℉, You&amp;rsquo;re going to get some bad &lt;a href="http://www.largeformatphotography.info/forum/archive/index.php/t-101217.html"&gt;color shifts&lt;/a&gt;. Other &lt;a href="https://www.photrio.com/forum/index.php?threads/c-41-effect-of-changing-temperature.37173/"&gt;posts&lt;/a&gt; claim 5℉ is the threshold. Looking around online, I&amp;rsquo;ve found many claims about color shifts, but no experimental results. One &lt;a href="https://www.photo.net/discuss/threads/time-temperature-chart-for-kodak-c-41-process.257953/"&gt;post&lt;/a&gt; claimed that the color shifts are correctable in a digital workflow, but otherwise if optically printing will be uncorrectable due to highlight and shadow color shift being independent.&lt;/p&gt;</description></item><item><title>Controlling a Quadcopter like a Jedi Using a Leap Motion (TM)</title><link>https://bsurmanski.ca/tech/1408_leapdrone/</link><pubDate>Tue, 26 Aug 2014 00:00:00 +0000</pubDate><guid>https://bsurmanski.ca/tech/1408_leapdrone/</guid><description>&lt;p&gt;Recently I went to an event entitled &amp;lsquo;NodeBots&amp;rsquo;. If you&amp;rsquo;ve ever heard of Node.js, you might already see where this is going. The event describes itself as &amp;ldquo;Robots powered by JavaScript&amp;rdquo;. Anyone even vaguely familiar with JavaScript will know that it is mainly used for websites. More specifically, it is used for client-side scripting of websites. Plainly, this means a web page can run code on your computer to power the fancy transition effects of drop down menus and all the other dynamic actions of the Web 2.0(!). Anyone familiar with JavaScript knows it has a bit of a controversial reputation. As a language, it has very little static checking and will keep on chugging even when an error is encountered. This can make it quite difficult to debug. So it might seem a little strange that the idea of this event is to control robots using JavaScript.The idea is that participants use a popular JavaScript platform called &amp;lsquo;Node.js&amp;rsquo;. Node.js is a platform that allows JavaScript programs to run natively, eschewing the requirement for a web browser. Explaining why anyone would want native JavaScript is a bit complicated and is beyond the scope of this post.
I took the NodeBots opportunity to get familiar with JavaScript, and use it to control a quadcopter. A quadcopter essentially being a miniature helicopter, with 4 rotors instead of the traditional set up of a main rotor and a tail. These four rotors are places at the corners of the &amp;lsquo;drone&amp;rsquo; such that it can tilt in any direction to control pitch and yaw, and causing it to drift in the tilted direction.
Note that when I use &amp;lsquo;drone&amp;rsquo; above, I mean an unmanned aerial vehicle. The military uses much larger and deadlier &amp;lsquo;drones&amp;rsquo; but the one I was playing with was the size of a garbage can lid and completely unarmed. Also note that &amp;lsquo;unmanned&amp;rsquo; does not imply automated, since I was in fact controlling the drone with a &amp;lsquo;Leap Motion&amp;rsquo;.&lt;/p&gt;</description></item><item><title>Nural Networks - Like Custom Virtual Computers</title><link>https://bsurmanski.ca/tech/1407_nuralnets/</link><pubDate>Thu, 10 Jul 2014 00:00:00 +0000</pubDate><guid>https://bsurmanski.ca/tech/1407_nuralnets/</guid><description>&lt;h3 id="trained-for-a-specific-task-neural-networks-are-like-specialized-virtual-computers"&gt;Trained for a specific task, Neural Networks are like specialized virtual computers&lt;/h3&gt;
&lt;p&gt;I&amp;rsquo;ve been thinking about neural networks quite a bit lately. I recently read an article (&lt;a href="https://www.blogger.com/#"&gt;this one&lt;/a&gt; actually) that did an excellent job at explaining exactly how neural networks work, and went on to give an example of optical character recognition (OCR) using a neural network.&lt;/p&gt;
&lt;p&gt;Neural Networks really aren&amp;rsquo;t as complicated as I previously thought. There are a few different types of digital neurons used in neural networks. The most popular being perceptrons, and sigmoid neurons. The idea behind perceptrons is that the perceptron can have any number of weighted inputs, and has a single output which acts like a step function dependant on the weighted sum of the inputs.&lt;/p&gt;</description></item><item><title>Computer Engineering vs Software Engineering vs Computer Science vs Electrical Engineering</title><link>https://bsurmanski.ca/tech/1404_difference_between_computer_fields/</link><pubDate>Mon, 14 Apr 2014 00:00:00 +0000</pubDate><guid>https://bsurmanski.ca/tech/1404_difference_between_computer_fields/</guid><description>&lt;h2 id="ceg-vs-seg-vs-cs-vs-elg"&gt;CEG vs SEG vs CS vs ELG&lt;/h2&gt;
&lt;p&gt;Computer Engineering, Software Engineering, Computer Science, Electrical Engineering. As a Computer Engineering student at the University of Ottawa, I&amp;rsquo;ve been asked more than once what the difference is. Hopefully I will be able to clarify.&lt;/p&gt;
&lt;h2 id="software-engineering-seg"&gt;Software Engineering (SEG)&lt;/h2&gt;
&lt;p&gt;Lets start with Software Engineering. Software Engineering is focused on the high level architecture of software. Software engineering does not worry too much about actual code or data, and instead work with levels of abstraction and the organization of code and data. While this may be true, there is still plenty of technical stuff to focus on. Software engineering students will still have programming courses. They will learn about object oriented design patterns, data structures and algorithms, databases, and software construction.&lt;/p&gt;</description></item><item><title>Bomberman At the Shopify Lounge</title><link>https://bsurmanski.ca/tech/1404_bomberman_and_unicorns/</link><pubDate>Sat, 05 Apr 2014 00:00:00 +0000</pubDate><guid>https://bsurmanski.ca/tech/1404_bomberman_and_unicorns/</guid><description>&lt;h2 id="unicorns-and-things"&gt;Unicorns and things&lt;/h2&gt;
&lt;p&gt;Last Sunday, I attended another AI competition, this one was hosted at the Shopify lounge in Ottawa.&lt;/p&gt;
&lt;p&gt;Firstly, wow, the Shopify lounge is big. It even has a slide between floors!&lt;/p&gt;
&lt;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th&gt;&lt;a href="https://bsurmanski.ca/tech/1404_bomberman_and_unicorns/A75722A2-C227-469D-9F91-DC03D3E78060.jpeg" 
 data-pswp-width="745" 
 data-pswp-height="559"
 class="pswp-gallery"
 data-gallery="1404_bomberman_and_unicorns"&gt;
 &lt;img src="https://bsurmanski.ca/tech/1404_bomberman_and_unicorns/A75722A2-C227-469D-9F91-DC03D3E78060.jpeg" 
 alt="img" 
 /&gt;
 &lt;/a&gt;&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td&gt;check out that slide on the left! Unpictured, an arcade machine!&lt;/td&gt;
			&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;Among the other impressive features, an arcade machine, full wall mural of a unicorn knight battle, and of course, a free espresso machine. It looked like a delightful place to work on a day to day basis.&lt;/p&gt;</description></item><item><title>CS Games - AI Challenge</title><link>https://bsurmanski.ca/tech/1403_csgames_ai/</link><pubDate>Thu, 27 Mar 2014 00:00:00 +0000</pubDate><guid>https://bsurmanski.ca/tech/1403_csgames_ai/</guid><description>&lt;p&gt;Last weekend I attended the &amp;lsquo;CS Games&amp;rsquo;. The CS Games are a Canadian computer science competition that, this year, was hosted at ETS in Montreal. In this post, I will be looking at one of the challenges I participated in: The AI Challenge.&lt;/p&gt;
&lt;p&gt;Being my first attempt at a CS games event, I had no idea what to expect. There were 3 people from our school team working on this challenge, and upon arrival, we were told that we would be writing an AI for a two team capture-the-flag snowball fight. There will be two teams, each AI controlled by a different university. Each team has seven players and the goal is to steal the flag in the middle of the course, and bring it back to the starting position, or to knock out all of the players on the other team. To prevent a rush for the flag, at least 20% of the players in the game must be knocked out before the flag can be picked up. Teams will fight a succession of games across a tournament bracket to see who is the best.&lt;/p&gt;</description></item><item><title>Hello World!</title><link>https://bsurmanski.ca/tech/1403_hello_world/</link><pubDate>Fri, 14 Mar 2014 00:00:00 +0000</pubDate><guid>https://bsurmanski.ca/tech/1403_hello_world/</guid><description>&lt;p&gt;It seems appropriate that the first entry should be a simple introduction; A summary of where I am right now. As of the time of this writing I, Brandon Surmanski, am a 4th year Computer Engineering (CEG) student at the University of Ottawa, and I am a serial programmer.&lt;/p&gt;
&lt;p&gt;The word serial in the context of computers usually refers to low-level networking stuff, or marshalling objects into a flat representation. I am not that kind of programmer. I am the kind that always has some side project on my mind and can&amp;rsquo;t stop myself from jamming at the keyboard until something runs. Sometimes it is nothing more than a prototype and I get bored and move onto the next project, and sometimes I end up with something cool. Either way, this blog is intended to log the progress of my meandering conscious. From the point of view of this blog, abandoning projects will result in new insight of whatever has caught my attention.&lt;/p&gt;</description></item><item><title/><link>https://bsurmanski.ca/page/about/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://bsurmanski.ca/page/about/</guid><description>&lt;h1 id="about-me"&gt;About Me&lt;/h1&gt;
&lt;p&gt;I&amp;rsquo;m just a guy, you know?&lt;/p&gt;
&lt;p&gt;I like to think I&amp;rsquo;m a decent photographer, and sometimes I make cool things.&lt;/p&gt;
&lt;p&gt;Software Developer for a living,
uOttawa Computer Engineering Alumni&lt;/p&gt;
&lt;h3 id="find-me-on"&gt;Find me on:&lt;/h3&gt;
&lt;p&gt;&lt;a href="https://github.com/bsurmanski" class="btn btn-default" target="_blank" rel="noopener" style="margin: 5px 5px 5px 0;"&gt;
 &lt;i class="fab fa-github"&gt;&lt;/i&gt; 
 GitHub
&lt;/a&gt;
&lt;a href="https://linkedin.com/in/bsurmanski" class="btn btn-default" target="_blank" rel="noopener" style="margin: 5px 5px 5px 0;"&gt;
 &lt;i class="fab fa-linkedin"&gt;&lt;/i&gt; 
 LinkedIn
&lt;/a&gt;
&lt;a href="https://instagram.com/bsurmanski" class="btn btn-default" target="_blank" rel="noopener" style="margin: 5px 5px 5px 0;"&gt;
 &lt;i class="fab fa-instagram"&gt;&lt;/i&gt; 
 Instagram
&lt;/a&gt;
&lt;a href="https://500px.com/bsurmanski" class="btn btn-default" target="_blank" rel="noopener" style="margin: 5px 5px 5px 0;"&gt;
 &lt;i class="fab fa-500px"&gt;&lt;/i&gt; 
 500px
&lt;/a&gt;
&lt;a href="https://bsurmanski.itch.io" class="btn btn-default" target="_blank" rel="noopener" style="margin: 5px 5px 5px 0;"&gt;
 &lt;i class="fab fa-itch-io"&gt;&lt;/i&gt; 
 Itch.io
&lt;/a&gt;&lt;/p&gt;</description></item></channel></rss>