Previous Next Table of Contents
Well, if you've been following this blog from the start, then you know that I've had a lot of hurdles to overcome!
My background in programming, while extensive (beginning in 1977) and including many programming languages, did not have any real front-end presentation layer activities. So, with no front end stuff, then no HTML, no Javascript, no Nodejs, no Express, no Jade.....just a lot of "no's!".
Since I had a lot of Java background, that was my first approach. But it was just too heavy for my target hardware - a Beaglebone Black. Also, I was tired of programming in it! Since I was now retired, I decided I wanted something more efficient than Java, both from a programming standpoint, as well as a system load standpoint (Beaglebone remember!).
My search led me to Python. I considered Scalia and Ruby, but Python looked good to me, and was something I could easily use on future code for around the house. So, I started planning on Python. But I ran into a problem on the front end presentation layer - not much better than what I was used to in Java! But I kept going...see my posts on Kivy on this blog.
Life intervened, and I had to stop the project for a while. But I kept occasionally researching, and somewhere came across nodejs. This really peaked my interest.
I dug into nodejs (note: this is the new, correct spelling for this product; after their recent merger, then changed the name from node to nodejs). I really liked what I saw. That, along with the ability to push data to a HTML5 browser (I refused to do polling) meant I could move off of Kivy etc. bandwagon, and move to a browser, which would simplify a lot of things, particularly with respect to system monitoring while away from home via the internet.
So, I started leaning Nodejs, which begat getting a firmer knowledge in Javascript. Then backtracking to HTML, then CSS - none of which I needed in my professional life before; well, OK, I did some stuff, but barely anything. Then came Jade, and document databases, and Nedb. Then somewhere Express. I stayed away from CSS, Express, Jade for a while, because I was concerned about the Beaglebone being able to host all of this, but it turned out not to be a problem.
So, if you were like me, experienced programmer, but needing web based knowledge, then I was suggest the following learning path, in this order:
- HTML
- CSS
- Javascript
- Nodejs
- Express
- Jade
So, my redesign!
- Uses the Beaglebone Black. I'm going to also develop on the Raspberry PI 2; will update with that info.
- Hosts a web server via Nodejs
- Uses the Google Chrome browser. Others may work, but I'm not testing or programming to those other platforms.
- Provides dynamic web page security updates.
- Displays current weather information while no security work or events taking place.
Since the base display is weather displays, and I needed somewhere to start, I first programmed the weather display system. The design for this is:
- Runs on Beaglebone
- Hosts a web server via Nodejs
- Uses the Google Chrome browser.
- Provides dynamic web page weather updates.
- Obtains live data from wunderground.com for my local, every 5 minutes.
- Obtains static radar jpg images from weather.gov and wunderground.
- Displays a digital clock, data from the Beaglebone pushed to web page. If the network drops, the Beaglebone freezes, the server freezes, the browser freezes - then the seconds no longer update. In the future, the time will also change color, and maybe an alarm is generated.
- Will switch to security mode on work or event.
The weather system is functional. I'm currently refactoring the code and adding a few new features.
When those updates are complete, I will publish.
Banjo