MongoDB and geodata part 2 – getting spatial

After importing geodata from the GIS to MongoDB and creating a spatial index (part 1), the exciting (spatial) adventure starts. With „normal“ (relational) databases and their spatial extensions (Oracle spatial, PostgreSQL/PostGIS, SQLite/Spatialite,…) a lot of spatial queries and geoprocessing are possible. So let’s try to find out which adresses have to be evacuated 250m around some „event“…

How to perform a spatial query like this with MongoDB ?


MongoDB and geodata part 1 – from Shapefile to MongoDB 3.2

MongoDB (3.2) is a kind of database-hipster at the moment – with improving support for spatial data. So it was time for me to discover some of it’s features concerning spatial data. As a GIS-user my first intention was to get some bigger simple (point) geodata into MongoDB. Part 1 covers this topic, part 2 will cover some spatial operations within MongoDB. I also want to do some performance checks between PostgreSQL/PostGIS and MongoDB related to geodata.

Geodata in QGIS and MongoDB


Build Yourself a Raspberry Pi Zero Availability Checker powered by a Raspberry Pi

The Raspberry Pi Zero is still very hard to get – it seems to be constantly out of stock.
So I made Raspberry Pi powered* Raspberry Pi Zero Checker: It scans Adafruit, Pimoroni and The Pi Hut for strings indicating stock and warns you with an annoying ‚alarm‘ sound. I also have a PHP version for my web server that also works very well.

*Note: any computer will do – but a Pi can be left on all the time without annoying fan noise or high power bill.

This is a very simple project both soft- and hardwarewise: Get your Pi online, automatically start the script on boot (rc.local or systemd) and plug in some speakers.
If you do not want to get woken up in the middle of the night, you might want to add some code to not trigger the alarm after 22.00h for example.

Composite USB Gadgets on the Raspberry Pi Zero

original by jsmith7342, cc by-sa, others cc0/PD

Hi, Hackaday! 😀

Want your Pi Zero to emulate a keyboard, ethernet adapter, serial device, mass storage, and many more at the same time? This tutorial is for you!

The Pi Zero is all the rage – and I too am working on a Zero-based project.
[LadyAda] and [gbaman] both have written tutorials on the old series of drivers, g_{hid,ether,serial,*}. Those are not flexible at all, only allow for one loaded at each time and in case of the hid-gadget even require you to modify and recompile the kernel module.

LibComposite solves those problems by putting the configuration into userland (ConfigFS).

YouTube Audio Player


For one year I have tried to create my own YouTube Audio Player. I wanted something that can play my playlists and favorite music from YouTube, but I only wanted the sound – no video. In that case I usually used a separate browser-window or -tab and that was sometimes very annoying.

Download all OS

So this player is build on top of NodeJS and Electron and uses the Google API for all YouTube requests. The code and the structure is available on GitHub.

Angular 2, Electron, NodeJS

Currently I’m working on a private project with Angular 2 (v.2.0.0-beta.0 | TypeScript), Electron (Atom Shell) and NodeJS.

I had some issues with Angular 2 and webpack modular bundler.
In my system I have to transcode all the TypeScript code with all the nice features to normal JavaScript-code (ES5).

first issue
  • It took me many hours to get the InterProcess Comunication from the Electron to the NodeJS running. The Problem is that the IPC-module is a native Electron-module and webpack is trying to find it in the node_modules folder.
    StackOverflow issue

Solution: webpack-target-electron-renderer
You have to change/update your webpack config. After that webpack will ignore or find the native Electron-modules.

second issue
  • In Angular 2 you can write components, services, …. and more. I wanted to use a service to get data from one component to another but I never got the data exchanged between them.

Solution: In my case I used the Componenttag „providers“ to create an instance of the declared service but every time you write „providers“ with a service in it, you are creating a new instance of the service and you will never get data from one component to another. You start your app with that

bootstrap(App, ['services']);

since then you have an instance of the provided services. To use them, you only have to import the service and to write in the somponent-constructor

constructor( %varname% : %servicename% )



The combination of Angular 2 (TypeScript), Electron (Atom Shell) and NodeJS is very nice. With that components you are able to build a client application rapidly. My next „nice to have“ is to integrate a CSS-preprocessor (SASS, LASS, …) in my projects to write CSS-code in the ways of a programmer.