Index ¦ Archives  ¦ Atom  ¦ RSS

Jumping to the bootloader of an embedded device

Fri 08 December 2017

Jumping to the bootloader from application code is highly desirable for many reasons, such as wanting to be able to reprogram devices in the field without any extra hardware (such as a button) to increase complexity, BOM cost, etc.

The code in this post will be tested on the STM32F070xB, but the code should still work for any STM32F0, and the concepts apply to many microcontrollers. Please comment below if you got it working on another microcontroller (or if you're having trouble!)

Continue reading →

KiCad DXF with two lines

Sun 02 July 2017

[UPDATE]: Kicad has released 4.0.7 as of August 2017, where this bug is fixed.

Do you have a problem with KiCad's default DXF output having two lines instead of one?

Well, apparently it's been fixed! However, it was fixed via this bug in April 2017. As of July 2017, KiCad's latest release is 4.0.6, which was in March 2017.

Continue reading →

C++ Templates I

Sun 11 June 2017

As anybody who's looked at Cara's capnp->Python conversion code, they may have noticed that I've taken a liking to C++ metaprogramming via templates. I started my initial foray into C++ back in '06 when modifying an existing codebase for a robotics competition. It didn't use templates, and for the …

Continue reading →

Cara ready to be tried externally!

Wed 29 April 2015

After months of internal use without problems, we're ready to release cara for others to use. We would be very happy if others picked up cara and made it work for them. If you've been looking at the Cap'n Proto project but were hesitant to shoehorn it into your Python …

Continue reading →

AoE II HD - Ludikris map size

Mon 20 April 2015

This past Saturday, two friends and I played AoE II HD (Age of Empires II HD) online. We played a semi-custom scenario one of them had made with the three of us as a team in the middle of the map against 5 Hardest computers, high initial resources and starting …

Continue reading →

New Blog Layout

Mon 13 April 2015

Recently, I was looking at the Wordpress Admin page for this blog and everything was responding slowly. I realized that Wordpress is overkill for this blog. I have under 100 posts spread over 7 years, averaging under a post per month, I don't need a full-blown blog engine.

Continue reading →

Bionic Bird Android app

Mon 05 January 2015

I got my Bionic Bird in the mail recently, and I really wanted to start flying it. However, I only have Android devices, nothing that runs iOS, so the official channels were blocked.

tl:dr; I made a quick app using the Evothings client app. (Click the first link on a mobile phone, or follow instructions in the readme on github)

Continue reading →

Building a binary into your Python package

Mon 15 December 2014

Firstly, let me acknowledge this is a rare problem. So the lack of documentation I ran into is totally acceptable. The problem: I have a Python package that has a C++ component that isn't an extension, it's a binary. I wanted that binary to be on the PATH of users, but it's not a Python entry point, so the usual way failed while attempting to read the file as text.

So I did some hacking, and after a lot of attempts, I whittled the result back down to something that's actually quite reasonable. If I had ever seen a documentation page or blog post mentioning this is how you do it, I would have been able to just follow along and I would have been happy with the result. Sadly, there was none, so I'm writing it:

Continue reading →

Mint Plus (Braava) Hacking Part II

Mon 08 December 2014

Following up from almost a year ago when I first attempted to hack (and broke) my Mint Plus, I've tried again! See?

Wired up Mint Plus

Continue reading →

Why only internal use?

Sat 06 December 2014

Because I have 3 tests covering 67% of the code base and my only docs are blog posts. If you're way more adventurous than I am, the code is available at for your daring consumption.

Edit: I didn't mean it won't be available for others …

Continue reading →

© Fahrzin Hemmati. Built using Pelican. Theme by Giulio Fidente on github.