Posts

Trust No One Architectures

A Trust No One   Architecture is one where each organizational unit minimizes accidental risk by owning as much of their processes as possible.  Companies end up with a  Trust No One  architecture where each sub-organization is most likely to meet its' goals if it controls as much of its development, technical and operational processes as possible. Each division / operational unit acts as an independent entity with loose coupling at the edges and just enough cooperation to meet the company goals.  I recently attended a talk of a Departmental Information Officer for a large bank who said their software process accelerated and their business deliverables came in earlier when they pulled architecture, operations and infrastructure back from the corporate level to the department level. The bank traded costs, standards and duplicate work for time to market  and agility. This was in strong opposition to the previous attempt at minimizing risk by centralizing...

Protect RabbitMQ data by encrypting the Mnesia database on Windows Server

Image
RabbitMQ is one of the many caching and messaging tools that uses local disk persistent storage or as a backing store for in memory data.  These systems normally put data to disk in some format that is optimized for speed and not for security. Ex: RabbitMQ, ActiveMQ, Coherence, Gemfire, MongoDB. This can cause issues when trying to comply with policies around protecting Personally Identifiable Information  , making systems Payment Card Industry Data Security Standard (PCI DSS) compliant or when implementing S/Ox controls. RabbitMQ Installation We assume that you are running RabbitMQ under the local system account.  Users who run RabbitMQ under different accounts or in different locations must change certain commands or settings.  The RabbitMQ team has a good set of documentation on their web site. Windows installation instructions:  https://www.rabbitmq.com/install-windows.html Windows quirks:  https://www.rabbitmq.com/windows-quirks.ht...

Curse of the Project's Gold

Image
I've worked for a few different companies, worked in pre-sales calling on lots of vendors and taught classes and did training with from teams from many different organizations.  This is my current list "curses" based on those experiences.  You can find lots of project warnings using a little google foo. Here are mine: I worked a team where everyone got a box of gold treasure. Knowing when it is better to leave the gold in the chest... No one is sure who the business owner is. The original "primary business problem" is not addressed by the project. The company believes it is immune to the three legged stool of "Cost", "Quality" and "Time". More bodies are added in order to make the project go faster in the current sprint. An egregious version of  Brook's Law The project expands to justify the cost.  See  Escalation of Commitment The CIO says that "they have never had a project come in late". Upper man...

IPad, Chromebook, Windows 8 Tablet long term family test

Image
We've been conducting a long term "family" test on our coffee table for the past year or so. Our test subjects include an IPad (2), an HP Chromebook 14' and a Windows 8 (Winbook) 10" tablet. The devices are primarily used for web surfing, news reading, basic word games, social media and research when people need to prove they are right as part of a discussion. Our previous coffee table device was a Macbook Air that has been appropriated for other uses. Chromebook #1 Coffee Table We've been surprised how much we like this device. A Chromebook takes some getting used to at first because you don't install any software on it and you don't have to do any patches.  Software hacks like me are initially completely lost when getting a new Chromebook.  You don't have to install software because you can't install software.  It is the closest thing to an appliance.  This Wi-Fi and T-Mobile enabled Chromebook has become the house go-to devic...

C# IOIO and I2C devices

Image
The IOIO C# library on GitHub now has basic I2C support.  Protocol support and resource management is lifted from the Java library.  The upper API is message based rather than object based. TWI/I2C/SPI is managed via outbound messages. Data from I2C devices and message acknowledgements from the IOIO come back asynchronously via inbound Messages. Hardware This was tested with an IOIO V1, Bluetooth module, a  JeeLabs Expander Plug  and an old Computer power LED.   I2C device The Expander Plug is based on the  MicroChip MCP23008  port expander.  Programming examples are available on the Jee Labs web site. The Microchip web site has the chip programming guide. The LED assembly already had a current limiting resistor. I just plugged it in across the "+" pin on the expansion port and the port pin next to the power pin. The port expander default address is 0x20.  It has 10 registers that control behavior and transfer data. ...

Sometimes your first impressions are correct

Sometimes you run across interesting outfits when interviewing or working with other organizations.

Controlling a Servo attached to an IOIO from Windows WPF application

Image
The IOIO C# library on GitHub now includes a very basic Windows WPF application that lets you control a Servo with your mouse. The program assumes your IOIO is attached to your PC via Bluetooth and that you have a servo on Pin 3. Run the program from inside Visual Studio. Step through the disconnect exception if you run this with debugging enabled.

Backup the drivers when installing Windows 10 on a Winbook TW100

Yes, you can install Windows 10 on a Winbook TW100 or other BayTrail tablet.  There are postings on the Microcenter support web site where folks describe how to to this on other WinBook tablets like the tw700. I have only a couple minor things to add. The tablet has a 64 bit processor and a 32 bit BIOS/EFI.  Use the 32 bit Windows 10 ISO available from Microsoft. Windows 10 32 bit ISOs became available in January 2015. It only has 2GB of memory so a 32 bit OS is fine. I installed the enterprise version.  The standard version didn't work for me but it was probably pilot error Build a restore medea or backup the TW100 driver directory using one of the available tools. It would be best to build a restore media instead of backing up the drivers. This would let you go back to Windows 8.  I was unable to do this with any of my flash drives. I instead used a tool off of sourceforge to back up the drivers. I now Windows 10+ forever. Make a copy of TouchSettings.gt in C:...

Message Routing using Double Dispatch with C#

Image
This post describes message routing inside an application. It does not describe message routing across message brokers or across systems. Message driven, or push based notification, systems stream Messages from message sources to interested parties ( Observers) .  There are often multiple message types  routed to multiple observers.  Message types are represented in code as Message interfaces/classes. Message Observers are often interested in some subset of the messages and implement some type of interface or registration scheme that tells the message routing module which message types they are interested in. Scenarios One use case for this is a User Interface that streams UI events (M essages ) from various components to event handlers (O bservers ).  The message sources create messages specific to that event type. The event handlers may receive and process messages of one or more types. Another use case might be some type of IoT device like an IOIO that c...

Extremely Rough Cut at C# based IOIO Library

Image
I've pushed a very rough C# port of the Java IOIO library to GitHub github.com/freemansoft/IOIODotNet/   It communicates with the IOIO as a COM device over Bluetooth. IOIODotNet is a plain old Windows Library. I tried making it a Portable library but .Net portable libraries to don't support Serial devices. The library is a mess of pieces-parts right now with some unit tests that show how it works. There is also a WPF app. Tests and the WPF app poll serial ports to find a Bluetooth attached IOIO. This is a message based API Inbound traffic packed into messages and  routed to inbound handlers. You can add your own or you can poll the ones that exist. Outbound traffic can be sent directly via the API or through a message based API.  I intend that the Message API is the future of the library once resource management has been added. Look at the Integration tests to play with it. They expect at least one IOIO V5xx on a COM port with pins 31 and 32 tied togethe...