Workaround Google Maps review link not working in Firefox Android using Nginx

My family owns a small business, and I wanted to distribute some review links for their Google Maps profile. I’m a devoted Firefox User, so I quickly found out that apparently, Google makes the page not work on Firefox Android. But I found a server-side workaround.

This is no new issue, people have reported odd behaviour on Firefox for a long time, and this bug specifically has been mentioned multiple times:

Continue reading "Workaround Google Maps review link not working in Firefox Android using Nginx"

Rewriting git history: Dealing with big directory moves

I explain for I performed a git history rewrite in a not so trivial scenario

Today at work I ran into an interesting problem. We have a git repository that was formerly a SVN one. This previous repository was home to multiple big binary files, and since it is now git, all these files are making the.git directory be a painfull 2GB in size.

Continue reading "Rewriting git history: Dealing with big directory moves"

GIMP: How to remove alpha channel without changing RGB channels

Very simple trick, not much in accordance with the general theme of the blog, but I get frustrated enough when I run into this problem in GIMP that I wanted to register it here, so I can never forget

Right click the layer, add layer mask, transfer layer's alpha channel to mask, select layer mask, select everything there, fill with white, optionally apply the layer mask.

sparsediff: diff tool for linux sparse files(great for simulating embedded hardware!)

I shortly describe a testing mechanism I use to simulate memory mapped IO, and then talk about a cool tool I made

Working close to hardware is cool and all, but frequently, it is necessary to simulate/test some code intended for hardware while offline/without hardware/etc. A common way to do this is to rig the code with multiple interfaces/abstractions/mocks etc, that can substitute the hardware at the last possible step. But of course, no matter how low you insert your new test classes, there is always the chance that a problem happens in hardware and not during testing.

Continue reading "sparsediff: diff tool for linux sparse files(great for simulating embedded hardware!)"

Getting started with FPGAs the hard way

Decided to include FPGAs in my hobbies, but doing it in the absolute hardest way possible to get started. For the future, I have an idea for a simple project driving WS2812 led strips.

FPGAs were always part my interests, ever since I discovered them in university, I never failed to be amazed at "prototyping silicon chips". Doing work interfacing with them daily at my job also helped me remember how cool they are. So it was just a matter o time before I actually bought one and started playing with it at home.

However, I wanted to do it the hard way. Ever since I had to power on, program, and prototype with a Kinetis MK06 at the Phoenix Robotics Team, it downed on me that development boards are just convenience. I can save a buck by doing the hard work they do and still learn in the process. So I decided I would try to buy chips directly from digikey, solder them on an LQFP adapter to through hole pins, use jumpers to provide necessary signals and supplies, and find out about programming protocols.

Continue reading "Getting started with FPGAs the hard way"

Gyroscope add-on for joysticks: When v1 works better than v2

I wanted to play Zelda: Breath of the Wild again on CEMU. My controllers don’t have a gyroscope so I decided to try to make a PCB that attaches to the controller and feeds CEMU gyroscope data. Didn’t work out, but I learned a lot, and will try again.

So, Zelda Breath of the Wild. If my count is correct, I had already done 3 playthroughs on my friends' consoles, but it wasn't enough, I wanted to try it again on Cemu. But I'm not settling for anything but the best gaming experience, and I wanted the gyroscope features too, which of course was not available with my cheap-ass controllers...Worry not, I have a plan.

Continue reading "Gyroscope add-on for joysticks: When v1 works better than v2"

3D-print, alginate and plaster for a single part I need

I wanted to make a heat resistant part to hold my soldering iron tips, even right after use. 3D printing obviously wouldn’t cut it, so I had to get creative.

Ever since I was gifted a TS-100 soldering iron, I never had to look anywhere else for soldering irons, except when I was soldering wires for the TS-100 supply voltage. My uncle was also kind enough to gift me a bunch of tips for it, and I only learned the beauty of some of them later on(drag soldering with the bevel tip is just... beautiful). But sometimes, I want to change the tip, and being impatient as I am, I always have to find some janky spot to leave the hot tip at, right after using pliers to remove it.

After getting my 3D printer, I thought I could find a way to make a piece that would hold all my tips, but to get that sweet resistance, I would need to get creative. But let's not get ahead of ourselves... I designed the piece I had in my mind:(I did it with freecad, at the end of this post I will provided the .FCStd that I got all these steps from)

Continue reading "3D-print, alginate and plaster for a single part I need"

Laser cutting shaped bokeh filters

Classical examples of using my hobbies to support my other hobbies, I use my CP-01 to cut some cardboard into various shapes and use them to create a cool photography effect.

Before taking up photography as a hobby, I had people in my life that loved talking about it, and I was always intrigued about how things worked, and remembering how optics kind of makes sense years after learning it. There was one technique they talked about in particular that I always thought was really cool and simple, it is called shaped bokeh.

Continue reading "Laser cutting shaped bokeh filters"

How a Telegram Bot did accounting at my house

At the last house I lived in, we had to figure out a way to share expenses in a decentralized way, and finding the best way to settle debts. I made an inefficient, but working algorithm for it, and made a telegram bot to interface with the users.

I've been waiting to do a write up of this forever, it is probably the side project that was most useful for the longest, even though the actual algorithm makes me embarrassed, but anyone that talked with me for more than a couple hours probably already had to endure me talking about it.

Continue reading "How a Telegram Bot did accounting at my house"

Finally bought a 3D printer(with benefits)

I’ve been thinking of buying/building a 3D printer since forever, and now I bought one that also includes laser engraving and CNC functions, the CP-01, but had some trouble getting everything to work.

So, I've wanted to build/buy a 3D printer for a long time, but never had the courage or disposition. My initial plan was to build one, because I already have some spare parts, but a good friend, much more experienced than myself convinced me to buy my first one ready to avoid many problems, and not having a 3d printer to fix them. And so I did, but instead of picking his recommendation, I tried to fulfill 3 hobbies at once and bought a CP-01, which has interchangeable heads for 3D printing, CNC milling and laser engraving(planning to mill PCB boards, laser cut/engrave camera filters for shapped bokeh, and lots of other stuff).

Continue reading "Finally bought a 3D printer(with benefits)"