Skip to main content

Posts

Showing posts from 2014

doxie go goes from awesome to meh

I purchased a Doxie Go with Eye-fi Connect X2 SD card in November of 2012. The Doxie Go is a small, usb rechargeable document scanner with an SD card slot in the back. As the scanner saves files to the SD card, t he Eye-fi SD card  pushes the files to web services like Evernote, Flickr and others via wifi. The Eye-fi card enables a user to add wifi-support to existing devices, like the Doxie, cameras, and other devices that use an SD card. Imagine being able to scan documents and have them go directly to a cloud service, without having to receive them through your computer and then push them out to the cloud. We've been able to scan probably close to a thousand documents with Doxie in the last couple of years. Our workflow was pretty simple. We kept the Doxie on the counter in the kitchen. - Open mail - Power on Doxie - Feed the document through - Put the document into the recycling bin We had the Eye-fi configured to push directly to Evern...

From iPhone to Samsung's Galaxy S5

Samsung Galaxy S5 Impressions and experiences I've been a long time iPhone user, from the iPhone 2G , to the 3GS, 4 and then the 5, I've been almost exclusively using iPhones for the past several years. For nearly all of this time an iPhone has been my only Apple product. It's difficult to think back to a time before the iPhone. Smart phones had resistive touch screens, you had to push hard and use a stylus to get reasonable touch precision. PDAs typically didn't have Internet connectivity and data plans from cell carriers were expensive. Voicemail was something you dialed in to check. Apple's iPhone changed the definition of what it meant to be a smartphone. This was so disruptive that it basically drove Blackberry, Nokia, Ericsson and Sony out of the smart phone business. I've been quite happy with the iPhone. It's simple, reliable and relatively extendable via apps. Apple does restrict what you can do to the iPhone. You won't have full co...

Drupal 7 multi-site installation

Background This is a guide for setting up a multi-site Drupal configuration that I put together when re-installing a hosted server. I'm using Fedora 20 on the server so there are F20 specific individual instructions and commands. You may have to adjust these steps slightly for your specific distribution. This multi site installation is a bit of a different approach from the official Drupal 7 (the version currently released) INSTALL.txt . Drupal does have a bunch of documentation around multi-site installations that you might want to look at. The approach of this multi-site drupal configuration is to set up a series of per-site directories, databases and configurations. Some other approaches use a single database but this approach was chosen to make it easier to move or migrate a site from one server to another as well as to simplify upgrading Drupal with new releases. For the purposes of this guide I’ve used {site1} and {site2} for the two sites. You can have as many s...

Memory efficient queuing of variable length elements

In embedded environments memory can be a critical driver of the design of data structures and containers. Computing resources have been expanding steadily each year but there are still a wide range of systems with far less than a megabyte of memory. On systems with tens of kilobytes of memory, structures are often designed to be compact to maximize data density. Rather than splurging on memory aligned elements that would be faster for the processor to access, a developer will typically use types with minimal sizes based on the known range of values that the element is intending to hold. Fixed sized buffers At my day job a fixed size pool of messages was implemented to hold message data. While this achieved one design goal of using statically allocated buffers, avoiding dynamic allocations that might fail at runtime, it isn't efficient if there is a wide range of message sizes. It isn't efficient because each message uses a message buffer. With small message sizes the buff...

Yocto recipe SRC_URI for a BitBucket / GitHub ssh git repository

This is a particularly geeky post but because Google searches didn't turn up any information I thought it would be helpful to document the issue and solution for others. I was writing  Yocto recipes that pulled from BitBucket git repositories in ssh form and ran into several issues getting a SRC_URI that worked. GitHub uses the same syntax for their ssh repositories. A BitBucket / GitHub git url, in ssh form, looks like: < username >@bitbucket.org:< account name >/< repository name >.git a more concrete example for a git repository in one of my BitBucket accounts looks like: git@bitbucket.org:cmorgan/somerepository.git Yocto recipes can pull from git repositories by setting the SRC_URI variable appropriately. Unfortunately you can't just do: SRC_URI = "git@bitbucket.org:cmorgan/somerepository.git You'll get errors because the Yocto won't know what kind of url this is. You need to specify the protocol for Yocto to k...

SharpPcap's 10 year anniversary

I was updating the CodeProject SharpPcap tutorial  and noticed that it's been 10 years since the project was originally started. If you've ever been interested in trying out packet capture and network analysis, SharpPcap provides a pretty easy way to get started. The source download package comes with several examples that are easy to build under Visual Studio or MonoDevelop . Check out the CodeProject tutorial. If you have any questions you can post on the forums there or on the SourceForge project page . Some work on network packet analysis got me looking for libraries that could help. I wanted to develop the analysis application in C#/.NET to reduce the overall development time vs. C/C++. Rather than reinventing the wheel it seemed useful to build on the SharpPcap library, created in 2004. The original author, Tamir Gal, passed the maintenance of the project over to me in 2008. Since then the codebase has been rewritten and cleaned up, unit tests added, and the packet p...

Move phone (device) contacts to google

We, my wife and I, recently upgraded to the Samsung Galaxy S5. She was upgrading from the S4 and noticed that after configuring the device and adding her Google account that nearly all of her contacts had missing phone numbers when we had both expected the Google account sync to have transferred nearly everything over in a transparent manner. It turns out that almost all of the phone numbers on the S4 were being saved locally to the device and not to her associated Google account. You might be able to see this on your phone if you go to a contact and hit the edit icon. Some information will be in the 'Google' tab but the phone number may be in the 'Device' tab. The Google part of the contact on an S4 (Verizon) showing the email address The device part of the contact on an S4 (Verizon) showing the phone numbers This is a real pain because you might have hundreds of contacts with their phone numbers only on your device and you'd like these to automat...

A star field WebGL demo application with three.js

WebGL with three.js As an avid gamer I've always been interested in what it might take to create a simple game. I started looking into frameworks and ways to develop and publish games across multiple platforms using things like  Steam , Python, or Javascript. I've been interested trying to span both desktop and mobile devices with the same codebase. I stumbled across  three.js , a javascript library, and it looks like a great framework to get started with WebGL development. I thought it might be neat to put together a star field simulation demo to start to learn more about WebGL and refresh some of that college computer graphics material. With some guides and examples of three.js I put together the demo application in the window below. If you see the star field simulation above then you've got WebGL support in your browser. If not you'll want to search on the web about how to enable WebGL in your browser, or get a browser like Chrome that has WebGL support. I...

The questionable future of NFC in the wake of Apple's iBeacon

For those that haven't heard the news yet, it looks like Near Field Communication (NFC) is going to have a bad 2014. The introduction of Apple's iBeacon  may be the beginning of the end of NFC . For those unfamiliar with iBeacon or NFC there are some significant technical differences between the two technologies. iBeacon is both a standard set of Application Programming Interfaces, or API, introduced by Apple in iOS7 and a data format for  Bluetooth Low Energy(BLE)  devices. Because iBeacon is built on BLE it means that nearly all Smartphones with BLE radios can support iBeacon. NFC communicates through magnetic induction between two antennas placed close together. The primary differences between the two technologies are that NFC can communicate between a powered device and an unpowered device such as a credit card, while BLE requires two powered devices. NFC devices must be close, >10cm, BLE devices can communicate across dozens or more feet. While several popul...

An online course, "An Introduction to Interactive Programming in Python", on Coursera

coursera.org main page As a programmer by profession I've wanted to start learning Python. I signed up for An introduction to Interactive Programming in Python  on Coursera in September. It was a free course from Rice University. Now that the course is complete I wanted to share where I thought it did well and where it could have benefited by stepping away from the ideas of traditional courses. The material in the course was presented through lecture videos and online programming examples. Each week of the course consisted of lectures, followed by quizzes and mini-projects that required knowledge of that week's material in order to complete. Because the course was supported by professors and teaching assistants at Rice University there was support for students via online forums and chats, although I never used any of these resources. Capture of a video of Joe Warren, one of the professors at Rice University The presentation of the material was clear and the produ...