Huh?! What?! You may be asking. Yup! I'm building a new computer on breadboards. So far it's been a pretty educational project and this post goes into what the project is and many of the things I've learned so far!
Continuing with running Rust on the PX-HER0. In this post I start reading
button inputs as well as starting an abstraction layer to make working with
buttons and LEDs easier.
The PX-HER0 is an STM32-based board designed for learning embedded development. Since I've been
so interested in this area for a long time I decided to pick one up and get Rust running on it!
This entry was originally one I posted on my work blog in response to someone posting a blog
post titled "Let's Talk About Mental Health..." to their own work blog. It talked about their
struggle with depression and I was really moved by seeing someone being open about their own
mental health issues. I think it's important to be open about the topic, so I started writing a
comment on their post about my own experiences. As I was writing it, though, I realized it was
getting long and I should just post it to my own blog because I didn't want to distract from
theirs.
Wow... So it's... Uh... Been a LONG TIME! For a long time I've felt like I don't have anything
worth posting here but recently I've had a few ideas for some blog posts and I feel like I'm
finally in a place where I have the motivation to actually write them. A lot of it came from
depression and how that wrecks people, but now I'm taking steps to make that better (more on
that to come).
Today was the real test of whether a Soylent/Schmoylent-based diet would work for me. I made it through yesterday just fine, but today was the first day I went to the gym after having Schmoylent throughout the day.
My Schmoylent arrived a little earlier than I expected! I was relentlessly refreshing the
tracking page for the package and mid-day Saturday (today is Monday if you're from the future)
it updated that it had been delivered. On my way to my guitar lesson I stopped by the
management office where the package had been dropped off, excited to get home and see what was
inside.
"Buh...? Wha...?" you may be thinking. No I'm not talking about the people version. I'm
talking about the one that was successfully crowd-funded in June of 2013.
This Soylent. If you're not familiar with it, it's basically an
engineered food. Unlike other "meal replacement" shakes from "health food" companies, this one
is designed to give you 100% of your daily nutrients so not only can you replace a meal here
and there but you can also replace ALL your meals!
There are a number of web frameworks that are quite popular these days
Rails for Ruby, Django for Python, Yii or a number of others for PHP) but I have to say
that even after working with all of those, ASP.NET MVC is probably my
favorite. I've been writing C# for a number of years and have worked with ASP in everything
from classic ASP in vbscript, to WebForms in C# and VB.Net and now to .Net MVC in C#. I've also
been using Linux as a server platform for many years and I'm of the (possibly controversial)
opinion that unless it's *NIX, it doesn't belong on a server. I've maintained Windows servers
and I know how to do it, I just think there's too much that the GUI and Registry try to hide
from you in Windows. Give me /etc/ any day!
"The Chromium Embedded Framework (CEF) is an open source project founded by Marshall Greenblatt
in 2008 to develop a Web browser control based on the Google Chromium project." (stolen from
project's web site) Over the last few weeks
I've spent a number of hours reading up on how to integrate CEF into an application. The
project's forum provides a nice support area where people
can ask for help and the source distribution comes with an example application called
"cefclient" that uses CEF to show how to build an application with it. The problem that I had,
though, is that while "cefclient" is a nice resource if you're looking for an advanced
implementation on how to integrate CEF as a whole, but if you're looking to start out with a
complete bare-bones implementation that just barely works it's overkill. You're not quite sure
where to start and the example in the
General Usage page of the wiki
is currently either out of date or referencing a different version of CEF than I'm working
with. Once I was able to get the most basic implementation running, I decided it would be good
to document how to do it as the resources I was able to find were either out of date or
unavailable.
After hours and hours of work, I finally have something tangible to show for it! I've had to
change my target device, though. I was spending way too much time trying to get the
Chromium Embedded Framework (CEF3 in my case) to
compile for the Pi (mainly for the ARM, not the Pi specifically) so I decided to change it up
and just use an x86 machine for now. My goal is still to have a cross-platform dashboard but I
thought this way it would be faster to get something working so I don't have a blank screen
sitting here unused.
In typical Erik fashion, I've found yet another project I want to do. For Christmas my parents
gave me a 26" LCD TV that I'd wanted to use to watch TV in my office since I'd been using my
3rd LCD for that and I wanted to be able to actually use that LCD. For awhile I've been looking
for a way to raise the new TV off my desk high enough to reach over my current LCDs, but all of
the arms I'd found wouldn't raise the TV high enough. I finally decided that I'd have to go
with a wall mount (I was avoiding it because I didn't want to put holes in the wall, bother
finding studs, etc), so I went to Best Buy the day after Christmas to get one. They had some
wall mount brackets on sale that supported 15-37" TV's, so I picked up one of those. While I
was thinking about it, I thought I might as well get two and set up a second wall mount screen
since I had to get it all set up for one anyway.
Soooo... I've already found another project I'd like to work on. Some time ago I saw a video of
someone using various old computer parts to play music. I think they had a printer, a scanner,
an oscilloscope and various floppy drives. More recently I saw some videos of people using an
Arduino to play music using 3.5" floppy drives. It was pretty
intriguing and I decided it was time for me to make one (using my Raspberry Pi)!
The first thing many people do these days when they begin messing with electronics is create a
circuit that does nothing but light an LED. I'm no exception. :)
I've learned to solder! OK, maybe I already had an idea of how to solder and have done a (very) small amount if it in
the past but I'm learning to do it correctly. I picked up a nice iron
(Weller WES51) with adjustable temperatures, swappable tips and a holder and it definitely makes a huge
difference from the el cheapo I had before.
I've decided to try and change up the tech I'm using for my OS. Originally I thought I wanted
to use C (possibly C++) and clang to write the OS, but I think I'd
rather try to write it in Go instead. I ported my StarCraft II replay
library Zamara to Go (go.Zamara) and had a bunch of fun doing it. I
don't think I've had as much fun working with a language since C# originally grew on me (I
hated it at first).
Sooooooooooo... For a long time now I've wanted to write an operating system. I started a
couple times but the furthest I've gotten was just booting into an infinite loop that displayed
some text at a static location on the screen. No processes, no entry, no nothing.