Monday, February 29, 2016

New Pi in town

They just keep rolling them out. 

Today Raspberry Pi announced a new model: Pi 3 Model B. It's a 1.2 GHz, 64-bit quad-core that yields a 50% performance increase over Pi 2. They've stuck with their $35 price point even though the new version has built-in WiFi and Bluetooth 4.1.

Another great device for Internet of Things applications that need the added power!

They're available from the usual sources (element14, RS, etc.)

Tuesday, February 16, 2016

Open source tools

One of the things I like about open source applications is that the successful ones all talk to each other. And, the ones that talk together tend to be successful...

This weekend I brought up a new Amazon server on my "free" account. I still haven't made any costly inadvertent purchases, even with all my experimenting. My estimated bill for February is $0.01 (for SES messaging.)

Many web servers use Ruby on Rails, so I've been learning a lot about that environment. One way to make Rails servers more convenient and reliable is to use Passenger - it's a web application server that works with Apache, the server that most of the Web uses. 

It's fast, it has good logging and reduces the attack surface to help improve security. It works well with Apache virtual hosts - allowing us to easily host multiple websites on a single machine. It can detect failures, re-launch sites that may go down and has a bunch of automation features that make operations of complex web servers a bit easier.

So, this weekend I installed Passenger, Rails, etc. and brought up a Rails server with a demo app.

I use a github repository to store my Rails code and thought it would be interesting to try some of the integrations.

I also installed Jenkins -- a continuous integration tool. I connected it up with github so that whenever I publish code to github, Jenkins detects it the change, goes and gets the code and runs a test build. If the build is successful, Jenkins posts that status back to the github repository and logs the success in its database.

Next I'll integrate some testing tools for additional automated testing and then automatically update the Rails app from the repository if the testing is successful. This kind of thing supports continuous integration - the rapid creation, testing and integration of new code from a common repository, several times a day instead of the big-bang approach to enhancements.

If you're interested in learning more about Linux and web apps and services in general -- and AWS in particular, it's easy and free to sign up at

Sunday, February 7, 2016

Amazon S3 - it just works.

Yesterday I spent some time exploring Amazon S3 ("Simple Storage Service".) I'm surprised how many of my IT friends don't know much about Amazon AWS servicees, so I thought I'd write a little about the ones I've played with.

S3 is an object storage service - basically drop-box-for-servers - that hooks up to all their other services. It'll store all kinds of objects: files, images and blobs of all kind as long as they're 5GB or less.

I logged into the AWS console with a demo account I use for this kind of thing. I created an S3 bucket, got the security issues worked out using Amazon's CLI for Mac, and hooked it up to a demo EC2 Amazon Linux server using s3fs - a file system that allows you to mount S3 buckets on a server.

Then I brought up an ftp service that stores documents in the s3fs mounted volume. 

I can also access S3 via the Amazon AWS console, windows desktops and servers and Mac desktops via a variety of SDK's including Java, .NET, Python, PHP, Node.js and Ruby as well as mobile devices (and, of course, any Amazon EC2 server.) You can trigger Lambda events with S3 activity and even connect it to databases (RDS, DynamoDB).

One of the things I love about AWS services is that they all connect to each other and they're all optional; you only use what you need, and you only pay for what you use.

Their "free tier for a year" program lets you try out many of their services for free - just sign up for an Amazon AWS account and try it out. There is a learning curve to get started,  but there is plenty of advice available via Google. Even if you inadvertently buy a for-pay service, they're all pretty cheap for the kinds of experiments you're likely to be doing. And you can check your "bill" any time to avoid any month-end surprises.

Try it: 

Friday, February 5, 2016

Heavy light processing

One of the problems with electronics is energy cost. While battery technology has come a long way in recent years, power consumption of electronics is still a major concern. 

Researchers at the University of Colorado have demonstrated a photonics based approach for communication between components at high speed with a low energy burden.

The bandwidth of photonic circuits is higher because different streams of data can be sent in parallel using different frequencies of light – much higher, in fact, than using electrons on wires. Another advantage of using light is that you can more tightly pack the I/O ports on devices, yielding 10 to 50 times the bandwidth density of current technology.

They've demonstrated a hybrid chip that uses state of the art electronics for processing and photonics for I/O using traditional materials and manufacturing techniques. This should make it possible for current manufacturers to quickly adopt and promote this technology. A couple of startups have been spawned that are working on the technology.

Here's a link with more information:

Thursday, February 4, 2016

Amazon's Lambda service - for geeks only.

Lambda: it's not just the 11th letter of the Greek alphabet – it's an Amazon AWS service that's really pretty cool.lambda.png

Most applications we write require an operating system, a computer, a file system, antivirus and security patches, a way to maintain and upgrade the operating system and software infrastructure as well as systems to maintain the hardware and network infrastructure.

Lambda is different. It's a compute service that just runs code. Amazon takes care of managing and operating everything else. Your Lambda code runs in response to events -- a new file showing up in Amazon's S3 storage facility, or a database event, API calls or even Web requests. Your code runs on a highly available infrastructure where things like capacity planning, logging, monitoring and scaling are taken care of for you.

Companies are using it on everything from real-time image management to ETL functions and triggering analytics as well as automating data collection from Internet of Things  apps.

Currently, you can write applications in Node.js, Java and Python and you're only charged when your code runs (in 100 millisecond increments) – like most AWS services, it's pretty cheap.

There's a quick video that describes Lambda at:

I'll be putting together a demo of this service and will publish my notes here, if you're interested.