<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
	<channel>
		<title>Posts on Valmik Jangla</title>
		<link>https://valmik.in/posts/</link>
		<description>Recent content in Posts on Valmik Jangla</description>
		<generator>Hugo -- gohugo.io</generator>
		<language>en-us</language>
		<lastBuildDate>Tue, 21 Jan 2020 16:27:29 +0530</lastBuildDate>
		<atom:link href="https://valmik.in/posts/index.xml" rel="self" type="application/rss+xml" />
		
		<item>
			<title>Responsive bias lighting (Ambilight) with WLED</title>
			<link>https://valmik.in/posts/bias-lighting-wled/</link>
			<pubDate>Tue, 21 Jan 2020 16:27:29 +0530</pubDate>
			
			<guid>https://valmik.in/posts/bias-lighting-wled/</guid>
			<description>Building a what now?
  Convinced? Great.
Note - This is not for complete beginners, I do not explain basic concepts here. However, there is nothing here that you can&amp;rsquo;t learn with google-fu and reading
Overview This setup is slightly different than the usual tutorials you might find out there. I wanted to achieve two things from my setup. A bias lighting setup, obviously, but also an integration with Home Assistant, so I can control it just like another &amp;ldquo;light&amp;rdquo;.</description>
			<content type="html"><![CDATA[<p>Building a what now?</p>

<div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;">
  <iframe src="https://www.youtube.com/embed/N5P_1TaypYo" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" allowfullscreen title="YouTube Video"></iframe>
</div>

<p>Convinced? Great.</p>
<p><em>Note - This is not for complete beginners, I do not explain basic concepts here. However, there is nothing here that you can&rsquo;t learn with google-fu and reading</em></p>
<h2 id="overview">Overview</h2>
<p>This setup is slightly different than the usual tutorials you might find out there. I wanted to achieve two things from my setup. A bias lighting setup, obviously, but also an integration with <a href="https://www.home-assistant.io/">Home Assistant</a>, so I can control it just like another &ldquo;light&rdquo;. It&rsquo;s quite cheap to set this up, it&rsquo;s cost me ~₹2000 or $28 for the whole setup.</p>
<h2 id="limitations">Limitations</h2>
<p>This particular tutorial is not for television sets, it will only work with a computer. I&rsquo;m using Windows, but this should technically work on MacOS / Linux.</p>
<h2 id="what-you-need">What you need</h2>
<p><em>These aren&rsquo;t affiliate links nor am I in cahoots with the manufacturers, you can find alternatives to the parts mentioned below.</em></p>
<ul>
<li><strong>A ESP8266 Board</strong> (<a href="https://www.amazon.in/gp/product/B07262H53W">What I got</a>)</li>
<li><strong>A WS2812B RGB LED strip</strong> (<a href="https://www.amazon.in/gp/product/B07V9RN95V">What I got</a>)
<ul>
<li><em>I got a 1m / 60 LED strip for my 24-inch monitor. You can get a longer one / with more LEDs, however, your power usage will increase accordingly</em></li>
</ul>
</li>
<li><strong>Jumper Wires</strong> (<a href="https://www.amazon.in/Electrobot-Jumper-Wires-120-Pieces/dp/B071VQLQQQ">What I got</a>)
<ul>
<li><em>You probably don&rsquo;t need so many, just grab a set of assorted jumper wires from Amazon <a href="https://www.amazon.in/ApTechDeals-Jumper-Female-breadboard-jumper/dp/B074J9CPV3/">like these</a>.</em></li>
</ul>
</li>
<li><strong>USB Power Supply + Micro USB Cable</strong>
<ul>
<li><em>I use my monitor&rsquo;s integrated USB port to power the LED Strip. While this works in my case, it might not work for you. You might want to buy a dedicated power source <a href="https://www.amazon.in/gp/product/B07RW8RQC5">like this</a>.</em></li>
</ul>
</li>
</ul>
<h2 id="okay-i-have-no-idea-what-i-just-bought">Okay, I have no idea what I just bought</h2>
<p>Fret not. Things will come to light. Here&rsquo;s a quick overview -</p>
<ul>
<li><strong>Your PC</strong> will gather screen edge data and send it to the Controller</li>
<li><strong>Controller (ESP8266)</strong> will receive this data and send it to the LED Strip</li>
<li><strong>Your LED Strip (WS2812B)</strong> will receive this data and do the actual&hellip; lighting.</li>
<li><strong>Jumper Wires</strong> will be used to connect the controller to the LED Strip</li>
</ul>
<h2 id="setting-up-your-led-strip">Setting up your LED Strip</h2>
<p>I&rsquo;m outsourcing this to a <a href="https://tynick.com/blog/11-03-2019/getting-started-with-wled-on-esp8266/">really well-written blog post</a> that will also explain a lot of the jargon.</p>
<p>Some notes -</p>
<ul>
<li>The cable colours for LED Strip may not be the same as the ones mentioned in the post. Your LED Strip will have come with a manual, refer to that to figure out which colour is what cable.</li>
<li>Once you have the LED Strip lighting up, you might not have all the LEDs lighting up. It&rsquo;s okay, you can fix this by logging into WLED&rsquo;s web UI by accessing it&rsquo;s IP Address (find this in your router admin), go to Settings &gt; LED Settings and change &ldquo;LED Count&rdquo; to the number of LEDs your strip has.</li>
<li>I&rsquo;d recommend reserving an IP Address for your LED Strip on your router.</li>
</ul>
<p>If you follow through the entire tutorial, you should end up with a functioning LED Strip! You can use WLED&rsquo;s Web UI / App to control your strip manually. You can also connect it to Home Assistant.</p>
<p><em>Don&rsquo;t stick the strip to the back of your monitor yet, it will get more difficult to troubleshoot.</em></p>
<h2 id="setting-up-the-pc-side-of-things">Setting up the PC side of things</h2>
<p>We need <em>two</em> things here.</p>
<h3 id="prismatik---download-from-herehttpsgithubcompsieglightpackreleases">Prismatik - <a href="https://github.com/psieg/Lightpack/releases">Download from here</a></h3>
<ul>
<li>This is what does the screen capturing, but this can&rsquo;t directly communicate with our WLED Strip</li>
<li>Download, install and run the latest release. You&rsquo;ll be asked to go through the configuration wizard.</li>
<li>Select &ldquo;Setup another device&rdquo; and then pick &ldquo;Virtual LED Device&rdquo;</li>
<li>You&rsquo;ll get to the &ldquo;Zone placement section&rdquo; make sure to set 60 LEDs and then select one of Andromedia, Cassiopeia, Pegasus</li>
<li>Rest of the wizard steps are self-explanatory, so I won&rsquo;t go through them</li>
<li>You can re-run the configuration wizard from the &ldquo;Devices&rdquo; section</li>
</ul>
<h3 id="prismaik-wled-wifi---download-from-herehttpsgithubcomlord-fearprismatik-wled-wifi">Prismaik-WLED-WiFi - <a href="https://github.com/Lord-FEAR/Prismatik-WLED-WiFi">Download from here</a></h3>
<ul>
<li>This is a script someone wrote to be able to communicate between WLED and the Prismatik software</li>
<li>Follow the instructions in the README to set it up.</li>
<li>In the .ini file change the IP Address for the WLED device, the UDP port will be default</li>
</ul>
<p>This is how data moves in this setup -</p>
<blockquote>
<p>Prismatik &gt; Prismatik-WLED Script &gt; Controller &gt; LED Strip</p>
</blockquote>
<p>The Prismatik-WLED readme mentions that it should be dropped into the &ldquo;Plugins&rdquo; folder of Prismatik. I had some trouble with that, so I just ran the script manually from a different folder (just make sure the .ini file is in the same directory), it worked just fine. You need this script running if you want Prismatik to be able to communicate with your LED Strip. Just get it to automatically run at startup and you&rsquo;re gold.</p>
<p>If you&rsquo;ve set up everything correctly, your LED Strips should now change colours according to your monitor! Hard to tell if you haven&rsquo;t taped it on the back of your monitor, so I&rsquo;d recommend testing it by playing a video <a href="https://www.youtube.com/watch?v=8u4UzzJZAUg">like this</a></p>
<h2 id="configuration-tips--tricks">Configuration Tips &amp; Tricks</h2>
<ul>
<li>Set the &ldquo;Grab Frequency&rdquo; in Prismatik to the FPS that matches your screen&rsquo;s refresh rate
<ul>
<li><em>This might be a bit much, but I&rsquo;m not seeing a significant performance hit even when playing video games</em></li>
</ul>
</li>
<li>Update the FPS in the Prismatik-WLED configuration accordingly</li>
<li>Try out the Mood Lamp and Sound Visualization mode in Prismatik, they&rsquo;re pretty cool</li>
<li>For the Sound Viz mode to work properly, make sure to select the correct sound device&rsquo;s &ldquo;loopback&rdquo; option
<ul>
<li>Also, I prefer the &ldquo;Twin Peaks&rdquo; preset for Sound Viz as compared to the default one</li>
</ul>
</li>
<li>Prismatik will override whatever WLED configuration you may have set, so make sure to kill the Prismatik-WLED script when you only want the WLED effects / colours.</li>
</ul>
<h2 id="wrapping-up">Wrapping Up</h2>
<p>Because I wanted both WLED and Prismatik, I had to go with a more roundabout approach, but I&rsquo;m quite happy with it as I get the best of both worlds.</p>
<p>It works with games too!

<div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;">
  <iframe src="https://www.youtube.com/embed/Eglks2tT_64" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" allowfullscreen title="YouTube Video"></iframe>
</div>
</p>
]]></content>
		</item>
		
		<item>
			<title>Lemons</title>
			<link>https://valmik.in/posts/lemons/</link>
			<pubDate>Sat, 12 Mar 2016 07:38:33 +0530</pubDate>
			
			<guid>https://valmik.in/posts/lemons/</guid>
			<description>Last year, I visited the Comic Con in Mumbai. For the uninitiated, Comic Con is a place where geeks meet up to share their geekiness. It’s the place where your unnecessarily deep knowledge about the lore of a video game makes you somewhat of a genius. People also cosplay, which is basically dressing up as your favourite character from a comic, or a video game, or an anime.
I was fumbling my way through the masses of people, and I came across this girl holding a carrying tray with a neck-strap snugly held around her neck.</description>
			<content type="html"><![CDATA[<p>Last year, I visited the Comic Con in Mumbai. For the uninitiated, Comic Con is a place where geeks meet up to share their geekiness. It’s the place where your unnecessarily deep knowledge about the lore of a video game makes you somewhat of a genius. People also <em>cosplay,</em> which is basically dressing up as your favourite character from a comic, or a video game, or an anime.</p>
<p>I was fumbling my way through the masses of people, and I came across this girl holding a carrying tray with a neck-strap snugly held around her neck. She was about 5’ 3” and wearing something akin to the traditional Dutch attire.</p>
<p>I looked at the tray with curiosity and found…lemons? About two dozen lemons, of different sizes and shapes. She noticed me staring and promptly offered me one. I was flummoxed. I was trying to get a grasp of what was going on.</p>
<blockquote>
<p>“You’re going around, giving people lemons?”</p>
<p>“Yep!”</p>
<p>“I don’t get it”</p>
<p>“Do you want a lemon?”</p>
</blockquote>
<p>I hesitantly took the lemon that she had offered, for it is rude to decline an offering of a lemon. As I accepted this lemon, the girl started moving elsewhere to do her lemon business.</p>
<p>As she walked away, I asked her, “Hey wait, who’re you supposed to be?”</p>
<p>She looked back, with a smile and said, “I’m life”</p>
]]></content>
		</item>
		
		<item>
			<title>A Workshop from Scratch</title>
			<link>https://valmik.in/posts/a-workshop-from-scratch/</link>
			<pubDate>Sun, 06 Mar 2016 07:38:33 +0530</pubDate>
			
			<guid>https://valmik.in/posts/a-workshop-from-scratch/</guid>
			<description>I had always wanted to do something related to teaching. In October of 2015, I was lucky enough to have gotten an opportunity of conducting a workshop. The workshop was for 8th Grade children in RN Podar School, Mumbai, and it was a part of a yearly event called “Makerthon”. I grabbed my work colleague Satej, to do the workshop alongside me.
Planning We started jotting down several things we could teach, varying from Logo, to creating music with code, to collaboratively building something in Minecraft.</description>
			<content type="html"><![CDATA[<p>I had always wanted to do something related to teaching. In October of 2015, I was lucky enough to have gotten an opportunity of conducting a workshop. The workshop was for 8th Grade children in RN Podar School, Mumbai, and it was a part of a yearly event called “Makerthon”. I grabbed my work colleague Satej, to do the workshop alongside me.</p>
<h2 id="planning">Planning</h2>
<p>We started jotting down several things we could teach, varying from <a href="https://en.wikipedia.org/wiki/Logo_%28programming_language%29">Logo</a>, to <a href="http://sonic-pi.net/">creating music with code</a>, to collaboratively building something in <a href="https://minecraft.net/">Minecraft</a>.</p>
<p>We ended up picking <a href="https://scratch.mit.edu/">Scratch</a>. Scratch seemed like the best tool to introduce programming concepts to children without boring them to sleep (I’m looking at you, Java). In Scratch, you use blocks (similar to Lego), and combine them to make complex programs. Looking back, I think it was a great choice.</p>
<p><img src="https://cdn-images-1.medium.com/max/1200/1*QdclvwwATaknAy1AYTll2Q.png" alt="https://cdn-images-1.medium.com/max/1200/1*QdclvwwATaknAy1AYTll2Q.png"></p>
<p>Scratch Interface</p>
<p>We wanted the kids to make a game, so we <em>borrowed</em> from a <a href="https://en.wikipedia.org/wiki/Flappy_Bird">Flappy Bird</a> clone from the Scratch website and modified it. We also extracted the sprites (the art for the bird, background, ground, etc) from the game for the students to use. We also printed some handouts which were reference guides the students could use once they go home.</p>
<p>I had never done a workshop before in my life, Satej had experience with workshops, but that was restricted to technical topics for college students, and we were about to do a workshop for 220 students from the 8th Grade. We were excited and terrified.</p>
<p><img src="https://cdn-images-1.medium.com/max/1200/1*96NqMoQpYpXn59fqx5ITRw.jpeg" alt="https://cdn-images-1.medium.com/max/1200/1*96NqMoQpYpXn59fqx5ITRw.jpeg"></p>
<p>Students made these posters for the workshop</p>
<h2 id="day-1">Day 1</h2>
<p>The workshop was split across two days, with two sessions, each of three hours. Satej and I groggily reached the school at 7 AM. Being programmers, we’re nocturnal beings, and we were out of our natural habitat. We quickly found the computer lab with the help of some of the faculty in the school (who were fantastic), and started setting up the computers there.</p>
<p>Soon enough, it was time to begin. We watched as the students scurried through the door into the lab, there were about sixty of them. We waited for them to settle down, patiently, until everyone was curious enough to be silent.</p>
<h3 id="session-1">Session 1</h3>
<p>First thing we had to do, was be accepted by the students as the <em>cool</em> teachers. Once you’re a <em>cool</em> teacher, you’re on their side, and you’re not scary. So we started off by asking questions about programming, and we got textbook definitions from the students. It was just another subject, it wasn’t fun. We asked them what language they were learning, to which we received a lukewarm response of “<a href="https://en.wikipedia.org/wiki/C_%28programming_language%29">C</a>”.</p>
<p>C is a poor choice for anyone who wants to start programming. We followed up by asking them if they liked it, or they had fun with it. We were met with blank faces, and no one said a word. We knew exactly why, and we had to say what every student was thinking, “It’s really boring, isn’t it?”, the whole class went in an uproar of approval and we knew we were now the <em>cool</em> teachers.</p>
<p><img src="https://cdn-images-1.medium.com/max/1200/1*HZWIc5OppsDjxxgcwqThzw.png" alt="https://cdn-images-1.medium.com/max/1200/1*HZWIc5OppsDjxxgcwqThzw.png"></p>
<p>A screenshot of the compiler used in almost all schools for teaching C</p>
<p>We wanted to break the notion of programming being boring. We told them we’re going to be teaching them to make a game, in this scenario, Flappy Bird (which everyone was familiar with) and they were excited. We had broken up the game into parts, and were going to teach the kids how to make the game bit by bit.</p>
<p>The first session, to be honest, was a little bumpy, we started late, and we weren’t completely confident of the format. Also, we told the students to exclusively use our sprites, which we realized was a mistake, because kids always want to be creative in their own way, and restricting them to boundaries was never a good idea. It also got difficult as time went on as the students wouldn’t pay attention when we were teaching. Some of the students weren’t in the main lab, and were in an outside adjoining area, and that made it difficult to communicate with them.</p>
<p>But overall, it was good, the students enjoyed the session and at the end of the session we made everyone make an account on the Scratch website and upload their creation so they can share or improve it after the session.</p>
<p>Once the lab was empty, Satej and I had a sit down. We were <em>tired.</em> We realized some of our mistakes and decided to rectify them in the next session. We decided to show the students the inbuilt collection of sprites, and they could use whatever they wanted to, as long as they would use those to make a Flappy Bird-like game. We improved the format, we would first teach a single part, explain the concepts and steps of how to achieve it, and then let the students do it whilst we’d go around and help them. We also decided to make sure that all the students would be in the main lab, and if there was a lack of computers, share with their friends, which was even better because it’s more fun for them.</p>
<p><img src="https://cdn-images-1.medium.com/max/1200/1*O5aYHHsW3_4hcPXMC1P09w.png" alt="https://cdn-images-1.medium.com/max/1200/1*O5aYHHsW3_4hcPXMC1P09w.png"></p>
<p>Some of the sprites in the inbuilt collection</p>
<h3 id="session-2">Session 2</h3>
<p>Letting the students use any sprites they wanted to was an excellent idea, they were more invested in the game they were making. The format was also working well, it gave us time to teach and the students to experiment whilst we helped them out with any of their problems. The second session went swimmingly and we were very satisfied with the end outcome. All the games students made were differently in their own way.</p>
<p>After that session, we had another sit down, and we were <em>exhausted.</em> We decided to make some more improvements. We wanted to give the students even more freedom, so they could make any kind of game they wanted to, as long as they used the concepts we taught them. We made it very clear that the students must pay attention when we’re teaching, but they could make as much noise as they wanted to when they’re working on the game.</p>
<h3 id="day-2">Day 2</h3>
<p>The second day was much smoother, we knew what we were doing, everything was setup, everything happened on time. Both sessions went smoothly, the students had a lot of fun, a lot of them even came to us and thanked us personally for the workshop and told us how much they enjoyed it.</p>
<p>Giving students freedom allowed them to make games of their own. There were different renditions of the Flappy Bird game. A wizard dodging lightning, a fish maneuvering around sharks, a spaceship flying across asteroids, the combinations were all over the place. There were also games that involved more complexity, (which the students figured out themselves) like having multiple players using the same keyboard and a fighting game between two characters.</p>
<p>There were dragons, cats, bats, sharks, divers, flying hippos and all kinds of crazy things. It was amazing.</p>
<p>After the second session, Satej and I collapsed on the chairs of the lab. The lab wasn’t empty yet because the students were told to wait there. However, very quickly the students started getting fidgety and single student asked his school teacher, “Sir, can we do Scratch?”, and very quickly the entire class started chanting variations of the same. It was total chaos. As much as we felt bad for the school teacher, we felt that we had accomplished something.</p>
<p>Once the lab was empty and we had to wrap up, completely exhausted, I asked one of the teachers, “How do you do this every day? It’s amazing.”, to which he chuckled in response.</p>
<h3 id="in-conclusion">In conclusion</h3>
<p>We had a great experience teaching the students, they were fantastic. The faculty of RN Podar stayed with us through the workshops, making sure the students didn’t make too much of a racket. Our organizer had a very hands-off approach to the whole thing, that let us be creative with our workshop. If given the chance, I’d absolutely do it again.</p>
<p>I believe that, if I managed to make even one of the 220 students to take up programming as a hobby, I’ve accomplished something.</p>
]]></content>
		</item>
		
		<item>
			<title>Amber means off</title>
			<link>https://valmik.in/posts/amber-means-off/</link>
			<pubDate>Wed, 02 Mar 2016 07:38:33 +0530</pubDate>
			
			<guid>https://valmik.in/posts/amber-means-off/</guid>
			<description>I used to work in On-site Hardware and IT Services back when I was 18. What that means is, I used to go to places and offices and set up Outlook for people who can’t figure out what the “Email” and “Password” fields are.
One summer day, my boss got a call from a client who urgently needed someone to fix their internet because it was not working. Off I went in the local trains of Mumbai (takes about 30 mins).</description>
			<content type="html"><![CDATA[<p>I used to work in On-site Hardware and IT Services back when I was 18. What that means is, I used to go to places and offices and set up Outlook for people who can’t figure out what the “Email” and “Password” fields are.</p>
<p>One summer day, my boss got a call from a client who <em>urgently</em> needed someone to fix their internet because it <em>was not working</em>. Off I went in the local trains of Mumbai (takes about 30 mins). In scorching heat. Wearing a shirt. That’s right, a <em>full sleeved shirt.</em>.</p>
<p>On reaching Bandra, I got off the station and tried to find a Rickshaw, but to no avail, I could barely find any, and the ones I did find, did not want to go where I wanted to. So, I walked. I walked for 20 minutes trying to find this place, which wasn’t even on Google Maps because it was still under construction, and no one knew where it was.</p>
<p>I finally found it, talked to the person in charge, and she gave me useful pointers regarding the problem like, “The internet is not working!” and “It was working before!”. I assured her that I was an expert at making the internet work.</p>
<p>There was a Desktop PC connected to a WiFi router by LAN, so I booted up the PC first, and the internet worked just fine. <em>H,uh.</em></p>
<p>Actually, she meant that the internet wasn’t working on her <em>laptop.</em> I logged into the router, to see if maybe the WiFi wasn’t turned on. It’s on. <em>Huh.</em></p>
<p>Then I got my <em>smartphone</em> out and tried to connect to the WiFi, and it connected. <em>Huh.</em></p>
<p>I walked to my client and asked her if I can have a look at the laptop. She complied. I was now looking at the laptop. It took me about 2.284 seconds to notice the issue. <em>She hadn’t switched on the WiFi on the laptop.</em> There was a wide glaring button right in the middle of the laptop, right below the screen, glowing <em>amber,</em> with the universal symbol of WiFi on it. I tapped on the button. I fixed the internet.</p>
<p>“Amber means off, Blue means on”, and with these words, I walked away, never to return.</p>
]]></content>
		</item>
		
		<item>
			<title>4mm</title>
			<link>https://valmik.in/posts/4mm/</link>
			<pubDate>Tue, 01 Mar 2016 07:38:33 +0530</pubDate>
			
			<guid>https://valmik.in/posts/4mm/</guid>
			<description>I had a client from New Zealand whose business depended on shipping packages to his customers every week. Packages need a shipping label with a barcode on so they can be scanned and picked up.
For some reason, the courier would take several tries to get each package scanned. My client asked me if I could have a look into why.
It looked like a typical barcode, black and white lines in a straight line, so it should work…right?</description>
			<content type="html"><![CDATA[<p>I had a client from New Zealand whose business depended on shipping packages to his customers every week. Packages need a shipping label with a barcode on so they can be scanned and picked up.</p>
<p>For some reason, the courier would take several tries to get each package scanned. My client asked me if I could have a look into why.</p>
<p>It looked like a typical barcode, black and white lines in a straight line, so it should work…right? The codebase wasn’t my work. I didn’t really know where to start. But I sifted through a bunch of (poorly written) PHP code to find the parts that did the work. But I couldn’t find anything that was obviously off.</p>
<p>We did a video call with someone from the courier company, Michael, who sent me several (8!) PDF documents regarding specific details about labels, barcodes and what not. I went through those documents and checked if our barcode was adhering to the quality standards and format requirements that the courier company was. They were. (Well, at least that&rsquo;s what I thought.)</p>
<p>We did a video call with an experienced PHP developer who was an expert at dealing with all things courier related. He couldn’t find anything wrong with the barcode.</p>
<p>I scanned the barcode with my phone, using a barcode scanning app (installed since the beginning of time but never really used), and it…worked? <em>What</em>. Also, it turned out, some of the newer scanners were able to scan the barcodes perfectly but the old ones were a hit or miss. <em>What</em>. So, we have a somewhat working barcode…But we needed it to work with older scanners.</p>
<p>Over the course of almost two weeks, I made several changes to get the barcode to work, repeatedly going through all the reference documents and kept sending them to Michael. He couldn’t scan them.</p>
<p>We were all at the end of our wits, utterly clueless as to why the damn barcode wouldn’t scan.</p>
<p>On the day before shipping, I scrapped all the changes I had made apart from a single change. Because at least that old barcode worked sometimes, right? After that, I went to sleep.</p>
<p>I woke up the next day to several messages from my client in glorious ALL CAPS stating that somehow all the barcodes are now working instantly with any scanner. I was more confused than happy. What in the world could’ve fixed it?</p>
<p>You see, I had changed the width of the shipping label by 4mm (170mm to 174mm) to match the exact width mentioned in the documents (without any intent to fix the barcode; what&rsquo;s 4mm going to change, right?). One character. That’s all that was needed. That’s what fixed the issue.</p>
<p>Weeks of work to change one character.</p>
<p>One character to fix the issue.</p>
]]></content>
		</item>
		
	</channel>
</rss>
