Some fun Raspberry Pi projects

I’ve got a spare Raspberry Pi Zero W sitting on my desk doing nothing, so today I decided to go looking for fun, easy Pi projects. Here’s a few I found which are a little different from the usual media player / arcade emulator / door opener projects you see all over the place.

Desk Projects

If you have a spare pi in your drawer but don’t want to leave the cubicle, these little projects are perfect.

Pi-Hole
Turn your Pi into a router proxy to block ads and other unwanted internet slime at the router level. In theory this would mean no more taboola links or ads on your devices without needing to install any kind of ad-blockers on the devices themselves.

Wireless Printer
If you’re anything like me you hoard old technology like it’s going to come back into fashion someday. I’ve gotten better lately, and thankfully I don’t have a shed full of old printers anymore, but if you did have an old non-wireless one, you could easily bring it kicking and screaming into the 2010s with this clever hack.

File Server
This makes an external harddrive accessible over the network, basically turning it into a fully functional NAS.

Audio Projects

There are a lot of audio projects out there, here are a few of my favourites

Audiobook Reader
I love minimalist controls, and you can’t get more minimalist than this single-button audiobook player. Press to play/pause, and hold down to skip to a previous track. Genius.

Turn an old amp into a wireless speaker
There are all kinds of airplay / google music / pandora radio rpi projects out there, but I like the style of this one.

Outdoor Projects

TimeLapse Dolly
RPi Timelapse camera setups are ten a penny, but this one has a dolly, so your timelapse shots will have that David Attenborough narrated BBC documentary feel to them.

Solar weather station

Driving

Touch screen car computer
Carputer
Lots of folks out there are putting pi into their dashboards. I’d love to do this. I could fit my entire music collection on a single 128GB micro SD card, but my current car stereo can’t handle anything bigger than 8GB. I want to build one of these:

Extra Credit Projects

For the over-achievers of the world, here are some not so easy, but totally amazing projects.

CNC Wood Burner

Freely-arranged screens

Smart Mirror

Despite all these amazing links I’m full sure I’ll still be staring at an unused raspberry pi in a months time!

Vivaldi, and browser options

I installed Vivaldi the other day to give it a whirl. I was a little sceptical of their claims that it was a browser “for developers”

Then I went into the options. My jaw literally dropped. Literally.

2017-01-20-10_31_17-vivaldi-settings_-startup

Look at all those options!

Vivaldi has options that other browsers don’t provide by default. You can change the theme at a specific time of day, set up mouse gestures, move tabs to the sides or bottom, set a time-limit on your browsing history, change your default fonts (as in, when a web page says “sans serif” you get to pick what that means)

Firefox, Chrome, and Opera (my favourite, up to now at least) have plugins to cater for all of these things, but vivaldi does them out of the box. I thought that would make the whole thing feel bloated, but it’s buttery smooth. It seems to load pages faster than any other browser, though I suspect that’s down to the progress bar, which shows how many bytes have loaded (mesmerising).

I’m going to set Vivaldi as my default from today on, with Opera to fall back on if needed

Voice Recognition in Windows Phone 10 Beta is abysmal

Voice recognition on Windows Phone 10 Preview is terrible. To demonstrate, I’ve attempted to write the next sentence of this blog using it. Here’s every attempt:

  1. It off and start
  2. it’s nothing stops halfway through a sentence.
  3. It off and stop
  4. Often stops halfway through president
  5. It often star
  6. It often starts at waitara send an
  7. It often starts at waitrose in
  8. It after
  9. Aften stop sao
  10. It often stops halfway through the
  11. It often
  12. It often stop sasha
  13. It often stops halfway through a sentence?

Thirteen attempts just to get one sentence. This is bad. This is comically bad. Voice recognition on Windows 8.1 was near perfect. Although it was only available for text messages, it worked almost flawlessly. WP10 seems to have done an about turn, because now it can’t figure out what I’m saying no matter what way I force myself to speak.

What happened Microsoft?

jbranchaud/til: Today I Learned

Josh Branchaud wrote a small file detailing some bit of programming knowledge he learned every day for 328 days. I really like this idea and I think I might just do it. I certainly won’t be posting as often as he is – I don’t learn quickly enough – but it’d be nice to be able to look back on everything I’ve learned in one year.

So what did I learn today? 

Electron has two processes – a main and a renderer. Both have access to node.js but almost all of your code should sit in the renderer. This is not what I expected. I assumed my code would go in main.js, but apparently this is really only for very low level stuff like manipulating the window and menu. Even database / file access code belongs in the renderer!

Differences Between Main Process and Renderer Process

The main process creates web pages by creating BrowserWindow instances. Each BrowserWindow instance runs the web page in its own renderer process. When a BrowserWindow instance is destroyed, the corresponding renderer process is also terminated.

The main process manages all web pages and their corresponding renderer processes. Each renderer process is isolated and only cares about the web page running in it.

In web pages, calling native GUI related APIs is not allowed because managing native GUI resources in web pages is very dangerous and it is easy to leak resources. If you want to perform GUI operations in a web page, the renderer process of the web page must communicate with the main process to request that the main process perform those operations.

In Electron, we have provided the ipc module for communication between the main process and renderer process. There is also a remote module for RPC style communication.

Note: If I do start a series of TIL’s I’ll probably follow Josh’s example and stick it on github or somewhere. I’ll keep it out of the blog.