Congratulations!

[Valid RSS] This is a valid RSS feed.

Recommendations

This feed is valid, but interoperability with the widest range of feed readers could be improved by implementing the following recommendations.

Source: http://www.nathandumont.com/rss.xml

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Posts from nathandumont.com</title><link>https://nathandumont.com/</link><description>Latest articles from all categories on nathandumont.com</description><atom:link href="https://nathandumont.com/rss.xml" rel="self"></atom:link><language>en-us</language><lastBuildDate>Mon, 29 Apr 2024 15:12:07 +0000</lastBuildDate><item><title>DIY hand-held games console: Faster GUI</title><link>https://nathandumont.com/blog/diy-hand-held-games-console-faster-gui</link><description>&lt;p&gt;It's been a while since I got anything done on the Noodle Game console, but I found it on my desk and had a few minutes to spare so thought I'd have a crack at upgrading the screen driver code.  It was a little bit of a disappointing exercise but at least I've learned some things.&lt;/p&gt;
  3. &lt;h2&gt;Stuck in 24 bit&lt;/h2&gt;
  4. &lt;p&gt;The screen supposedly supports a bunch of different colour depths including 18 bit (6 bits of each colour) note that this isn't a nice multiple of 8, a 16 bit mode where green has 6 bits but red and blue only 5 and apparently even a 3 bit mode where it has just one bit per colour like a Sinclair Spectrum.  Unfortunately in SPI mode it only supports either the 8 bit or the full 18 bit modes.  In 18 bit mode the colours are padded to a full byte each and so need three bytes per pixel.&lt;/p&gt;
  5. &lt;h2&gt;Slow clock&lt;/h2&gt;
  6. &lt;p&gt;The screen module I've got is hard-wired to SPI mode.  The module can do parallel RGB, host bus or even MIPI-DSI apparently all of which offer faster data transfers and a choice of colo&lt;/p&gt;</description><guid>https://nathandumont.com/blog/diy-hand-held-games-console-faster-gui</guid></item><item><title>Surface Tension</title><link>https://nathandumont.com/blog/surface-tension</link><description>&lt;p&gt;Just less than a year ago I decided it would be interesting to try out a Microsoft Surface as an alternative to an Android tablet and maybe more portable than my venerable ThinkPad T430.  I got a cheap unit from eBay to try it out, it's a Surface Pro 5 so pretty old now.  Of course I didn't want to use Windows on it and I was thrilled with how easy getting a nice Linux install was on this &lt;em&gt;very&lt;/em&gt; Microsoft hardware.  I didn't do anything particularly special to get it running, just followed the instructions on &lt;a href="https://github.com/linux-surface/linux-surface"&gt;GitHub&lt;/a&gt;.&lt;/p&gt;
  7. &lt;p&gt;For the most part my experience with the platform was good.  Performance was pretty good.  The pen and touch screen worked pretty well.  I used it for coding, PCB layout, lots of FreeCAD work and even a bit of gaming via Steam.  I only had 8GB of RAM which would probably have been okay but the ultra high definition display meant that apps were taking a lot more RAM than I'd expected and it very easily ran out of memory.&lt;/p&gt;</description><guid>https://nathandumont.com/blog/surface-tension</guid></item><item><title>Debugging STM32 Inside VSCode</title><link>https://nathandumont.com/blog/debugging-stm32-inside-vscode</link><description>&lt;p&gt;In my current series on building my own handheld games console I've been developing for the STM32 inside VSCode.  It's a reasonably comfortable IDE that works well on Linux and there's the &lt;a href="https://marketplace.visualstudio.com/items?itemName=bmd.stm32-for-vscode"&gt;STM32-for-VSCode&lt;/a&gt; extension.&lt;/p&gt;
  8. &lt;p&gt;That extension aims to automate everything for you but as usual with embedded development not everything is quite that joined up...&lt;/p&gt;</description><guid>https://nathandumont.com/blog/debugging-stm32-inside-vscode</guid></item><item><title>DIY hand-held games console: GUI Framework</title><link>https://nathandumont.com/blog/diy-hand-held-games-console-gui-framework</link><description>&lt;p&gt;Now that the screen lights up and displays something, next on my list was a way to make the screen show useful things dynamically with as little code as possible.  I decided to go with &lt;a href="https://lvgl.io/"&gt;LVGL&lt;/a&gt; which is a framework for creating embedded GUIs on small graphical displays.  It's implemented in C and is impressively flexible whilst leaving the programming interface familiar to anyone who's used Qt, GTK etc.&lt;/p&gt;</description><guid>https://nathandumont.com/blog/diy-hand-held-games-console-gui-framework</guid></item><item><title>DIY hand-held games console: Screen Driver</title><link>https://nathandumont.com/blog/diy-hand-held-games-console-screen-driver</link><description>&lt;p&gt;Now that the toolchain and the basics are working, the next thing to do is to start getting some of the peripherals working.  I like to do this one at a time and it's usually best to start with the outputs first, that way you can use the outputs to test whether the inputs are working.  We've proven the basic UART comms already, so the next big output device is the screen.  The screen I've got came from eBay but appears to match up with &lt;a href="http://www.lcdwiki.com/4.0inch_SPI_Module_ILI9486" title="4.0inch SPI Module ILI9486 - LCD wiki"&gt;this entry&lt;/a&gt; on LCD Wiki.&lt;/p&gt;</description><guid>https://nathandumont.com/blog/diy-hand-held-games-console-screen-driver</guid></item><item><title>DIY hand-held games console: Hello World</title><link>https://nathandumont.com/blog/diy-hand-held-games-console-hello-world</link><description>&lt;p&gt;I've got a collection of parts on hand left over from various projects or bought for projects that never started, so I'm going to try and build a system as a prototype.  The core of the system is the STM32F429 which I have on a "Discovery board".  The one I'm using is the original production run STM32F429I-DISCO board which has long since been replaced by the STM32F429I-DISC1 board.  As far as I can see the only real difference between these is a newer ST-Link which supports virtual serial port as well as SWD/JTAG programming.  While more convenient all I need for the old board is an extra serial to USB adapter which I have anyway.&lt;/p&gt;</description><guid>https://nathandumont.com/blog/diy-hand-held-games-console-hello-world</guid></item><item><title>DIY hand-held games console</title><link>https://nathandumont.com/blog/diy-hand-held-games-console</link><description>&lt;div style="width: 100%"&gt;
  9.  &lt;div class="nd-dark-grey" style="margin: auto; max-width:600px"&gt;
  10.  &lt;a href="http://nathandumont.com/files/images/sketch1.jpg"&gt;
  11.    &lt;img src="http://nathandumont.com/files/images/images/sketch1.preview.jpg" title="First Sketch" alt="First sketch drawing of what I want to create."/&gt;
  12.  &lt;/a&gt;&lt;div class="w3-container"&gt;&lt;p&gt;&lt;strong&gt;First Sketch:&lt;/strong&gt;
  13.  First sketch drawing of what I want to create.&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;
  14. &lt;/div&gt;
  15.  
  16. &lt;p&gt;I've decided to have another crack at a hand-held games console project.  I've had various ideas for doing this over the years.  I built one based around a PIC18F4520 many years ago but didn't get far with trying to write the software for it.  More recently (but still long ago) I had the idea that maybe the &lt;a href="http://oggbox.nathandumont.com/"&gt;OggBox&lt;/a&gt; might make a simple console, if you hold it sideways the 4 buttons under one hand and the top two buttons in the other hand.  Last year I got most of the way through designing one in my summer holiday, but the parts are all now out of stock and it was based on a PIC32 which I've now decided is a very bad idea having had to use them professionally since.&lt;/p&gt;
  17. &lt;p&gt;The chip supply crisis is still in full effect and I have almost no free time so this is going to be an interesting challenge, but I thought I'd document my process from the beginning this time and see where I get.&lt;/p&gt;</description><guid>https://nathandumont.com/blog/diy-hand-held-games-console</guid></item><item><title>Bitmap font editor tool</title><link>https://nathandumont.com/blog/bitmap-font-editor-tool</link><description>&lt;p&gt;In a project I am currently working on I needed a font to embed in the ROM of an ARM Cortex micro-controller that could be used on one of &lt;a href='https://www.sparkfun.com/products/retired/9560'&gt;these&lt;/a&gt; ChLCD modules from SparkFun.  The display in my application is currently mounted in a landscape orientation, but I didn't want to preclude using it the other way around, or changing the font.  I've written a few bitmap font editors over the years for various graphical LCDs, VGA displays and LED matrix displays.  They all have a common interface, a character being edited with oversized pixels and a preview of the entire font.  I decided this time to do a "proper job" of the code and write a Python GUI app that should be cross-platform and allows saving and loading of fonts.&lt;/p&gt;</description><guid>https://nathandumont.com/blog/bitmap-font-editor-tool</guid></item><item><title>Midas Graphic OLED</title><link>https://nathandumont.com/blog/midas-graphic-oled</link><description>&lt;p&gt;I recently included a Midas Graphic OLED 128x32 pixel display in a product I'm developing at work.  The OLED is available from &lt;a href="https://uk.farnell.com/midas/mdob128032ev-ws/oled-graphic-display-cob-128x32pixels/dp/3154940"&gt;Farnell&lt;/a&gt; for a very reasonable £7.61.  It's got a 0.1" pitch header for comms and 4 M2 mounting holes which makes it ideal for DIY/prototype products that don't have custom enclosures to mount a bare LCD glass panel nicely.&lt;/p&gt;
  18. &lt;p&gt;The big problem is the documentation which is worse than non-existent.  It's confusing, misleading and in places just plain wrong.  The datasheet seems to have been assembled by someone copying and pasting bits from the controller datasheet with no understanding of what the product does.&lt;/p&gt;
  19. &lt;p&gt;I eventually figured it out and got it working, so here are my notes.&lt;/p&gt;</description><guid>https://nathandumont.com/blog/midas-graphic-oled</guid></item><item><title>Virtual Show</title><link>https://nathandumont.com/blog/virtual-show</link><description>&lt;p&gt;My Wife has been helping to organise the arts, crafts &amp;amp; cookery section of the local agricultural show for several years.  The show was cancelled for the first time in 19 years due to the COVID-19 lockdown this year and to keep it going in some way she suggested and helped organise a virtual show.  You can see the entries online still at &lt;a href="https://virtual-stithians.show"&gt;https://virtual-stithians.show&lt;/a&gt;.  To manage the content we first looked at off-the-shelf Wordpress gallery solutions but they were not a good fit.  Hosting it on Instagram or Facebook had been suggested but would have excluded a lot of the regular entrants so an email-in solution was picked to be most inclusive.  In the end the show had over 250 entries.&lt;/p&gt;
  20. &lt;p&gt;I volunteered to write a custom site, and since Django is my preferred platform these days I wrote it in that.  It was my first significant Django project in a number of years and the first time working in Python3 but as it promises the framework delivered a robust interface with minimal effort.&lt;/p&gt;</description><guid>https://nathandumont.com/blog/virtual-show</guid></item></channel></rss>

If you would like to create a banner that links to this page (i.e. this validation result), do the following:

  1. Download the "valid RSS" banner.

  2. Upload the image to your own server. (This step is important. Please do not link directly to the image on this server.)

  3. Add this HTML to your page (change the image src attribute if necessary):

If you would like to create a text link instead, here is the URL you can use:

http://www.feedvalidator.org/check.cgi?url=http%3A//www.nathandumont.com/rss.xml

Copyright © 2002-9 Sam Ruby, Mark Pilgrim, Joseph Walton, and Phil Ringnalda