Skip to main content

Posts

Showing posts from May, 2015

Which distro is the right one?

I would guess that a major part of the friction between the Linux distributions is (a) uncertainty (b) complete understanding. I'm just not sure which one seems to win the day. Back in the day I was a huge believer in FreeBSD and Slackware. The reasons were on the trivial side. FreeBSD was the baseline OS that CyberGuard and later Secure Computing selected. The people who made the decision made it because they thoroughly understood all of the moving parts. I remember later conversations when they were trying to decide whether or not to upgrade to the latest kernel design the meaningless arguments about this feature or that and the FUD the might follow. But it was a solid OS, supported a wide variety of hardware, it was reliable, the filesystem was safe, and installer was trivial.
Slackware was my go-to Linux because the installer was solid, the distro was safe, Patrick did not take any risks and always hand selected the kernel versions and patches, the libraries and 3rd party pack…

Bluetooth pairing and switching in a modern world

I've been having trouble switching from device to device. I sent Jawbone an email and while it might be correct it's also a bunch of canned answers that I cannot accept as best practices. It's entirely possible that Bluetooth is fundamentally flawed.

This article spoke to me.

I'm sitting at my desk in my office. I have 5 Bluetooth capable computers and one phone that are paired with my Jambox and there is no way I am going to turn everything off in order to select the current active device. I suppose I could disable Bluetooth on all of the devices and then power the one device up... but that too, is annoying and not why or how I wanted to use this.

Until Bluetooth or Jawbone improves this process it appears I'm stuck.

CORRECTION - my android phone can take over from a connected Chromebook but not vice versa and not from another paired and active computer.

UPDATE: this might explain why the SmartLock only works some time and not all the local devices at the same tim…

my CoreOS .profile

One of the things that I like about CoreOS is that it has a "toolbox"
toolbox is a small script that launches a container to let you bring in your favorite debugging or admin tools. --CoreOS And as point in fact I am currently using it as my development environment even though I should probably be creating a devbox instead. ("we" already know that this is bad Dockerfile design)

My .profile currently looks like:
$cat .profile
#!/bin/sh
echo "Configuring the environment"
export GOPATH=$HOME/_vendor:$HOME:$HOME/src/bitbucket.org/netcentrix/gwtcmp/_vendor
export PATH=$PATH:$HOME/bin:$HOME/_vendor/bin
export PS1="\[\033[01;32m\]\u@\h\[\033[01;34m\] \w \$\[\033[00m\]"
if [ ! -e $HOME/.gitconfig ]; then
git config --global alias.co checkout
git config --global alias.br branch
git config --global alias.ci commit
git config --global alias.st status
git config --global alias.unstage 'reset HEAD --'
git config --global alias.last 'log -1 HEAD'
fi
export …

Container host marketplace is gearing up

I don't know when Joyent entered into the market but it only hit my radar in the last few months; maybe 6. At the time I was watching a demo on SmartOS and their containers. I do not fully grock what they are offering but it appears to be something based on OpenSolaris and some sort of Linux container/VM tech. Since they are in the VPS business this layer is critical to their success.

CoreOS, is about to hit their 2 year anniversary. They have a free product that is as bare metal as you can get. There are some moving parts that make clustering, scheduled updates and configuration easier. They have also created a commercial version of Kubernetes which is the orchestration layer above the bare metal (without the multi-tenant features). They are also active in the APPC and container definition projects as thet believe that Docker is not secure enough.

ProjectAtomic and it's related projects are still active.
Snappy and Docker from Ubuntu.
Rancher, RancherOS, RancherVM are also ma…

pay per view is up

I recognize that most people see pay per view as a brand name, however, I'm referring to the not so free versions of Netflix, HBO Go, Amazon Prime, Rokku and so on. In each of these examples you have to pay to view and you definitely pay per view.

So the question, for me, is what is the cause of this sudden decline? Is it:

letters from Comcast and other ISPs who operate on the bounty program with the property owners? They certainly do not do it out of altruism.What about individual DMCA letters? I think the press has squashed that one by embarassing the property owners.How about the deep discounts of products like Netflix, Amazon, Comcast on demand, etc... for $8/mo it's all you can eat.And maybe the numbers are off a bit. The advent of TOR, darknet, and private sharing clubs these numbers are off the grid. It's probably a combination of things and not limited to the above. The Pirate Bay has been in and out of trouble over the last few years. Wrapping themselves in the clo…

Don't answer the phone

Every couple of months I get a phone call from outside the country. I always tend to hesitate answering the phone because I know that it will end up in just a waste of time. This latest call was from India or possibly Pakistan the caller identifies herself as working for network operations. She continued to tell me that my computer which was either a Dell or an Apple or Microsoft Windows required updating and that she was going to help me through this process.Before I continue let me be very clear this is a scam. Neither Dell Microsoft or Apple will call you to tell you that you need to do something to update your computer. This is a social engineering play by which they are attempting to get your credit card number to charge you on reasonable amounts of money for an individual workflow or possibly even some sort of ridiculous subscription. In the worst case they're stealing your credit card number for some nefarious activities take place in the future.If you happen to use your de…

rkt and actool

I'm in the beginning of using rkt (rocket) and actool. It's obvious to me that the docs are insufficient. While I would like to help the team out with dedicated documentation I have to get some real work done.  My latest project will likely be deployed on a CoreOS cluster. I'm looking at the Beta and Alpha branches because I will be depending on etcd 2.x and the latest rkt tools.

The best part is that both rkt and actool have been installed in the CoreOS image. I'm not sure exactly when that started but for the time being the latest Alpha (695.0.0) is good enough.
$ rkt version
rkt version 0.5.4
appc version 0.5.1+git and
$ actool version
actool version 0.5.1 But the challenge for me is that I'm using CoreOS for development too. So while I have a fairly involved setup script I also need to install rkt and actool.
wget https://github.com/coreos/rkt/releases/download/v0.5.6/rkt-v0.5.6.tar.gz
tar xzvf rkt-v0.5.6.tar.gz
cd rkt-v0.5.6
./rkt help  and
env GOPATH=/root/_v…

timing is everything

Sitting in a car dealership waiting for my car to be repaired gives a person time to think about the big picture. And so I found myself asking questions like:

why is the shop open early and close early?why is the showroom open later and close later? Just like a semi-tractor trailer that is not making money unless it's moving, a car dealership is also not making money unless people are working. An idle work bay is not making money. (just watch the staffing levels).
I'd like to say it's a conspiracy but it's not. It's practical planning. They are going for the sweet spot. The dealers want to show movement on both sides of the house without exposing new car buyers to repairs (warranty or otherwise). And they certainly do not want disgruntled customers near the new ones. They also want to the building to host both customers so that there's no wasted space.
I suppose it's not a terrible plan and it might actually be something that could be extended to manufacturi…

Chromebook Powerwash - killer app

I was having trouble with my mini-Jambox this morning. It's a small Bluetooth speaker from Jawbone. Sadly Jawbone continues to have it's troubles. (remember UP) I'm not sure if it's the company it it's products. It's not uncommon for businesses to be marketing entities for manufacturers who provide their IP in different packaging. (it's a common question on Shark Tank).

After trying different strategies to connect, reconnect, pair, repair, forget, nothing worked. One person suggested Powerwashing my Chromebook. Let's be realistic, Jawbone has no real support for my CB or android phone. Their firmware update tool only works on Windows or OSX. So this problem was just frustrating.

But here is the thing.  The Powerwash took less than 3 minutes and my Chromebook was back in it's factory state. The last time I had to re-install OSX or Windows it took days to get my environment back to the way I wanted. At the very minimum I had all my tools installed and…

Facebook for Android is scarey

I was just looking at my android phone's battery consumption and the number of background apps. I found that the facebook app was running in the background. It's likely that this was because it was setup for push notifications, however, even after I disabled notifications the background process was still running. But then I scrolled down to find the section on "permissions". And that's when the sugar hit the fan. If you knew how much information you were giving facebook access to you would never have installed it. Now the question... how much information have they actually gathered?

metrics and monitoring

Metrics and monitoring are related but not the same. Coda Hale has defined much of this field in a very generic way. Crowley ported hist ideas to go. As I construct services on bare metal, VPS, and containers I have varying needs for my OPS role. In the past I have used rddtool and graphite. Both projects are rock solid but they are starting to show their age. Not to mention there have been some projects that modernize the market.

Go-metrics is a good project because it upgrade the glossary of terms so that it's usage and context is clear where it's predecessors was not as clear, however, it does not offer any sort of visualization.
OpenTSDB - Open Time Series Data Base The prometheus project is an open source project from the prometheus team. it's offered under the Apache 2.0 so it's favorable, however, other than Google images I don't see any application examples. (I thought prometheus was from soundcloud but it seems I'm mistaken).

Bosun is offered under the …

Entitlement, Go Pro, and Poop

I admit I'm still pretty angry and so I'm venting. This morning I decided to get some fresh bagels for my family and as I was exiting my gated community I stopped at a red light which turned green as I approached. Before I could get my car across the crosswalk there was an onslaught of 50-75 riders blew through their red light denying me the right of way.
Since riders are known to cover 25-100 miles in a ride I cannot say whether or not they reside in Weston... however, many Weston residents have a sense of entitlement which I now extend to these riders. As I fumbled for my phone in order to capture the moment for the city council I was reminded of some YouTube videos I saw a few years ago where Russian drivers used dashcams as a sort of insurance policy as there had been a rash of people stepping in front of cars in order to collect some financial payoff. I was thinking that I could have used a camera at exactly that moment as I could see my right of way was clear and the ri…

The 10x programmer or the Super-polyglot

I was just looking at swagger.io for a project I'm working on. I have a number of concerns about integrating with non-critical 3rd party systems; the least of which is privacy and security. What concerns me most is that most new programmers are not polyglots and actually have an opinionated view of the ultimate development stack and so the two compete for mindshare as we try to decide what to build, integrate or buy.
I continue to proselytize the virtues of knowing your stack in order to avoid careless integration. Going back to swagger; it's written in java and while that's not a very big deal there are the mixed signals from Oracle depending on who you follow and the news you read (FUD). But then there is also the embedded crud-ware that Oracle includes in the installers. You cannot just install Java and go. Of course there are 3rd party JDKs but then you have to validate which JVMs are supported/tested on which app; and so version creep begins. And that can be offset wi…

iMessage vs Hangout vs Slack vs other

The only opinion I have on the matter is that I want everyone to use what I'm using. The reason is quite simple; while I'm not an expert I have the necessary pragmatic sensibility between usefulness and security. Regardless of what messaging/communication system you use there is an overarching concern about security. Whether it's personal or corporate security it's irrelevant. If it's a private app then we feel that there is a better chance that our secrets stay within our group.

Security/privacy is a fleeting expectation. Cloud services and open source have put demands on our privacy and security that are (a) under valued (b) over exposed.

most email interchange between server is router directed but in the clearmost VOIP is not encrypted at all and uses UDP for media transmissionDNS services tell the providers what you're reading, watching or listening toSearch providers know what you're looking forTOR may or may not be secure but someone could unwind your …

processing the Hexidecimal prefix in Go

This is not considered expert level code or insight but I happened upon this today and wanted to document it for myself.

The strconv.Atoi() is essentially a macro to the ParseInt() method where the base is assigned 10. Therefore if you try to Atoi() a string with the hex prefix it will throw an error. The hex prefix is only a hint for the parser and only applies when the parser does not know the base. Hence when the base is ZERO.
package main
import ( 
    "fmt" 
    "strconv"
)
func main() {
    x, _ := strconv.Atoi("0x12") 
    fmt.Println("returns 0 because the base is implied to be 10:", x) 
    y, _ := strconv.ParseInt("0x12", 0, 0) 
    fmt.Println("returns the proper value:", y)
} UPDATE: I should have read this link before posting. While there is nothing wrong with this code there is a level of improvement in my project.  I should use "\x12" in my project.  That will meet my needs without any other distractions or conv…

JSON has no comments

JSON is widely studied and understood so I will no repeat this Wikipedia article. However, I'd prefer to focus on this one fragment from the same article.
...originally derived from the JavaScript scripting language...  What makes this fascinating is that the JSON schema is absent of any comment structure. Even XML has a comment pattern:
<!-- something here --> The thing about XML comments is that there are not part of the userspace grammar. They are simply notational for the user but it is expected that the XMPL tools are going to drop the comments.

Conversely, JSON does not offer anything similar. There is no comment mechanism in the schema or in the userspace definition, however, the user can decide to define attributes that would represent comments.
{ "description": {"something here"}} What makes this superior is that the comments are now embedded into the data set and can therefore be include in reports, documentation, or tools.

continuous integration

I've been in devops for almost 30 years. This clearly predates the origin of the word. Back in those days we did not care about what we called ourselves it was just about the work. In the last few years that has changed as freshman programmers have entered the field and wish to distinguish themselves in order to catch the wave that others have already rode.

I have used or familiar with a number of CI systems. Drone, Travis, Jenkins/Hudson, TeamCity, Go(aka continuum), IBM had a huge build system for it's OS/2 build. One could make a distant argument that some IDEs and Makefiles are also CI systems, however, it would be wrong.

So while I have been working on my IDE project I decided that I would start with tmux (still not there) and a change triggered makefile. This is not exactly a CI system but it is the foundation. The "autobuilder" takes some lessons from the CI systems...
when the user saves a file then start the buildignore some filesdo not get confused by meta a…

ChromeBook add-on idea

Crouton is ok... just ok. Without actually having been able to install Crouton I have a number of concerns. Firat of all... What is it and what can I run in or on it? Since it's name is an acronym for chroot I'm concern that it's not much more than a container and if so why didn't the Googlers responsible for ChromeOS implement Docker as the preferred container? (One thing for certain is that I do not like the "devmode" warning message) Let's not forget the devmode warnings.

Another option is dual boot and even at 9 seconds to boot ChromeOS it's still slower than I want for this purpose.

Now that Intel is selling a computer on a stick and Google the ChromeBit it's just a matter of time before we see what I'm looking for.  A computer on a USB stick. Now that would be the cat's meow. Specially if it connected to a Chromebook with auto networking etc.

non-trivial encoding with golang

Copying struct data from one golang structure to another is pretty simple depending on the variety of structs.
create your function similar to Copy(s, d, interface{})at the top of the function check that the parameters are pointersdepending on your strategy you might use tags or common field names as the constraintiterate over the structfields and copy the datayou might have to validate the types while copying I've implemented this a few times myself. Custom for each occasion but I would really like a more general solution. Meaning that while the above is mechanical sometimes the data needs to be transformed and there is no simple mechanism for that. 
Ideally it would look something like a sed replace formula. In my latest implementation I used embedded tcl that I had previously incorporated in goose. This time I added a tag called macro and provided the tcl name to execute. This initial implementation is weak because tcl returns strings only; which creates a number of challenges f…

a billion messages a day

A year ago today I wrote this post [recently and I thought I'd wait] and now I'm unleashing it on my readers.

The question of aggregated logging rages on. The stark reality that there is no real or correct answer only time and money relative to the current state of the economics in the system. Google only shuttles actionable events to it's MQ and operations; meaning that if you need to debug a problem you have to log into the system that generated the error. On the other hand there is an option that all of the messages are being forwarded to the aggregate server for immediate evaluation.

And so the proof was presented to me this way:

at my previous company we had 600 servers producing 1B messages a day which we processed on just 15 servers with varying functions.

At first this seemed like a rational description but I was still skeptical; and it only took some simple math.
1B messages divided among 600 machines leaves 1.6M messagesgiven an average concentration of a 10hr day …

Things I like to hear from Technical Leads

I'm not going to define the role of a tech lead but one would think that a tech lead is part leader of people with technical and subject matter knowledge. There are things a tech lead should not say or better tech leads who say these things might not be qualified.
I forgot my database classesI think the language supports that featureI did a little reading last night I don't mind that you've forgotten something or you might not know or remember all of the details; however; do not offer an opinion until you are refreshed.
Doing a "little" reading is useless. That's going to give you enough information to be a meme and not a leader or innovator. You should be reading regularly and a lot.

I'm not sure what to do when a programmer says:
I cannot code without an IDEI need a debugger You're still a beginner if you cannot write, compile, and test your code from the command line. Furthermore, you are the debugger.

Basic tmux

I have been and and out of trouble with tmux. (if there is a preferred home website for the project I don't know it and google is not sharing.) This video was the one that was the tipping point for me. It's part of a series but it was the one that let me accept the fact that I was going to use bash to construct my console rather than the given conf file.
I ended up with a variation of his file:
#!/bin/bash
SESSION=`basename $PWD`
tmux -2 new-session -d -s $SESSION
tmux rename-window -t $SESSION:1 dev
tmux split-window -h  #"echo try:  ssh builder@10.69.0.102"tmux resize-pane -R 30tmux split-window -v "builder ~/src/bitbucket.org/netcentrix/gwtcmp/autobuilder.json"tmux split-window -v "openvpn ~/src/certs/client.ovpn"tmux split-window -v "echo minifs; cd ~/src/gwtwo; go run ~/minifs.go"
tmux select-window -t $SESSION:1tmux select-pane -t 0tmux -2 attach -t $SESSION

Chromebook Crouton

Spoiler alert. I tried to install crouton but it failed.Put Chromebook in developer modeDownload crouton (link)Execute crouton (sudo sh ~/Downloads/crouton -t xfce) from the shell (Ctl+Alt+t) Step 1 it tough. There are multiple ways to put your Chromebook into Dev Mode and the dev mode should not be confused with the ChromeOS dev channel on the about page in the settings. It seems that each manufacturer has a different way. On many ARM processor devices it's a keyboard shortcut and on my ASUS Chromebox it seems to be a recessed paperclip button.
Step 2 is a snap and with any luck the short URL is legit.
Step 3 failed to complete the first time. I have no idea what went wrong but it failed to download a package that subsequently failed to install and so the process stopped.  I was able to restart the installer but had to add the -u option. This option should have been used to update an existing installation but in this case I was hoping it was going to resume my current install.
Du…

It's 11:45p Should you be switching to Developer Mode

I want my ASUS Chromebox to do a few more things than I can get accomplished in normal mode, however, making that change in a time when we have containers like Docker and Rkt is a shame and a pity. The ChromeOS developers came up with this idea of Recovery Mode, however, from what I can tell it's just a simple chroot jail. But I think I've already made my point.
Getting my Asus Chromebox into recovery mode was as simple as inserting a pin into the recovery hole just above the Kensington lock hole. I should be able to recover at any time and restore my system to it's original luster if things go terribly  bad. While I have been thinking about this for a while I had not executed. And now that things are progressing I'm having my concerns.

many of the screens and popups that are described are incomplete. There are plenty of warnings in the negative but very few in the affirmative.Now that the machine has rebooted twice (automatically) the machine has clearly been power was…

Loving those Music Bubbles

Music Bubbles is an awesome controller for Google Music.

the controller is hidden if the player is is not runingthe icon is simple and at the right alpha channel so that it does not overtake any webpage that it's displayed inthere is an animated progress bar which is also subtlethe controls are reasonableyou can "blacklist" a particular address so that the control does not interfere with the page My only complaint would be that on a ChromeOS installation it would be nicer if it were a desktop icon instead of a browser control. Of course this is only a minor complaint.

Bluetooth Speakers

A few weeks ago I borrowed my brother's bluetooth speaker for my daughter's birthday party. It was awesome except that with all that bluetooth radiation in the room it seemed to interfere with the audio quality. Since then I have played with a few of my friends devices and one is much better than the next. The big jawbone device is looking very nice to me although the mini looks much more practical. Frankly I'd like to have both. One feature that makes the mini compelling is the built-in micriphone and multi-play.

Chromebook missing killer feature

About 10 years ago I discovered an early version of a program that would allow me to host my keyboard and mouse on a single computer but that I could virtually stitch multiple systems together; much the way a KVM worked without sharing the displays.  What made synergy a great project is that it supported multiple operating systems.
Now that Chromebase and Chromebox installations are on the rise it would be great to have a similar functionality. It's important to note that while synergy uses a client/server model with a virtual clipboard a chrome version of the same feature would be killer.

Google Hangouts vs Skype vs iMessage

iMessage and iPhone, iPad, or OSX device are the gold standard for getting all of your devices to ring when there is an incoming call or text message. The actually implementation is a bit harder to realize but it goes something like this.

If both parties are an iMessage user then the message is sent through the internet proper to the Apple servers and then directed at the configured devices. (blue send buttons and bubbles)If one party is not iMessage capable then the messages are sent through the traditional SMS network. (green button and bubbles) But if the receiver is an iDevice then the message is redirected back into the Apple message network and is redisplayed on all the subscribed iDevices.
Of course regular phone calls land on the phone and then are simultaneously networked to local subscribed iDevices. This seems to be a variation on the tethering theme only in reverse.

Recently Google Hangouts and Google Voice started to merge.  Hangouts has become my defacto analog phone and …

By any other name it's still a chromebook

I'm looking at the list of devices that my Nexus 6 is paired with and I cannot make heads nor tails of which Chromebook is which. And by any other name my Chromebox is also named Chromebook. Argh!

The good news is that hostnames are not that important. If I need to xfer files from here to there then there are reasonable services like your favorite SAN or NAS. And if that's not realistic then there is always any of the popular cloud services. The basic idea that the Chrome-device is a client and not a server... and it should never act as a server. So hostnames are simply not necessary.

Except when pairing Bluetooth devices.

UPDATE: I can rename my connection names on the Nexus 6 but it takes discipline.

mosh for chromebook

I've never been a fan of the mosh project. I believe that their claims about being more secure than ssh are simply false since ssh is a common core component; even if it's only used to initiate the connection. I'll use the recent ssl vulnerabilities as evidence.

However...

I'm moving into a 100% remote strategy. Meaning, I'm giving up my Windows, OSX and Linux computers in favor of a ChromeOS solution. Each of my kids have their own Asus Chromebox, I have a similar Chromebox as a stationary desktop and two Chromebooks for mobile ad experimentation. And... with the Google Pixel I even have a 3 year 1TB data plan.

I'm adapting to the remote/wireless lifestyle well. It's actually working out very well. Between tethering with my cell phone, free wifi at my favorite stores, and the library... I have never been with the ability to work. It's actually better than it was when I had my 11in MBA.

And there is one downside.

I'm putting together my server farm …

Chromebook Recovery Tool

This article looks interesting although it's more of a how to. It appears that regardless of where you are you can download the recovery tool.  The tool, in turn, downloads an image from Google which is then written to the USB or SD card of your choice. I'm pretty certain this becomes some sort of bootable media with the bootloader on the ChromeOS devices will then use to reimage your chrome device.

Presumably the device will now be in factory condition.

Chromebook Pixel Type-C USB

I really like my Chromebook Pixel with 16GB RAM, 64GB SSD, i7, and 128GB SD card. However I have a few complaints.
On the left side of the based of the laptop is the Type-C USB port.  It's used for peripherals as well as the power cord.  One of the things that makes the Type-C desirable is that the plugs are not directional. There is no right-side up any more.

What you should also notice is that the width of the base is slim and the receiver is midway; meaning that in order to remove the connector you actually have to tip the laptop in order to wrap your fingers around the plug to remove it. And since there is a similar connector on the other side of the keyboard tilting the laptop could put unreasonable stress on the other connector. Furthermore there is no obvious way to lift the laptop in a smooth motion except to grab it by the screen bezel and since it's a touch screen that might not be a good thing either. One could always argue that closing the lid and then pulling the …

ChromeBook the missing link

Sadly I am coming to the conclusion that the missing link is, in fact, missing. I might actually repurpose my ChromeBook Pixel as an Ubuntu laptop instead of the Special purpose device that it is. It is simply not capable of doing the sandboxed development that I was hoping for; even though nacl was looking promising.

On the default Chromebook

there is no command shell so there is no working git commandsthere are a few editors that support git, however, there is a bug with bitbucket's git versionthis is certainly not going to compile After installing nacl nacl has some tools installed by defaultgolang is NOT one of the toolsinstalling go from source requires 'tar' which is not installedinstalling dev_tools in order to get nacl_ports installed is easybut getting the dev_tools to work without bash in the expected place or being able to fork (backticks) makes dev_tools useless dev mode I only have the one Pixel and I'm not going to hack too hard without having some confidenc…

Pico Services in Go

Peter Bourgon (@peterbourgon) spoke at FOSDEM 2015(video) on the subject of "Go in the modern enterprise". Much of what he described as the weakness of Go he called as examples of structured services. As Peter dives deeper into the description he makes the point but misses the implications.

Peter's definition of structured services fits into what I call dimensional systems or Mandelbrot dimension. It's where the implementation details of the service scale as the dimensional power is applied. And, the actual realization of this exact system of services is found in two places. (a) flow based programming (b) go's generator.

In the case of go's generator, Quinn Slack of SourceGraph, presented at Google I/O 2014 (video). He made a strong case for a number of useful Go patterns. The strongest was the AST and go generate. In particular he talked about wrapping all of the "service" APIs with authentication APIs.

I was introduced to flow based programming af…

Waiting for a connection

I have been waiting for a remote system to hit my server... this watch command makes that easy.
gnuwatch "date; netstat -vant|grep 4081" Future versions will make a connection to the remote system.

bootstrapping go web projects

At first I thought that this was going to be a good idea. Some sort of opinionated framework was going to bootstrap whatever project I might be working on... and voila. But that was before I started looking at the details and now I have a different opinion.

It's a bad idea to base my next project on this sort of framework.

Part of my opinion is intuition and the other part is experience. While the authors have made some excellent choices and they will work in most cases they are not going to work in all cases and without a more general plug-in strategy you're better off knowing and understanding the ideas and the glue. Implementing your own strategy.

The authors have clearly just glued a bunch of 3rd party packages together. It's not a bad thing but you need to understand the code before you blindly incorporate it. The Go Authors are very clear on this point as the stdlib is fairly feature complete.

here is their list and my objections:

PostgreSQL is chosen for the database…

Reality check - the real cost of cloud computing

This Chromebook is being advertised for $259. It's an intel i3 with 4GB RAM and 16GB SSD (according to the post they can be upgraded).
What makes this interesting... a single core 3.75GB RAM with zero disk from Google's Compute Engine costs $33/mo or $396/yr. While it's not the same classification as a datacenter hardware it might still make a better compute node at your desk or a luggable mobile server rather than putting everything in the cloud.

The ROI is clearly less than a year if you compare prices, even with a memory and storage upgrade. The keyboard and mouse are just a bonus.

Browser IDEs for general purpose programming

There are quite a few of them now:

cloud9 - sftp did not function properly. That was not a showstopper but it is frustrating. I have a private repo and 'go get' is not pulling from the private repo. This could be a common problem without baking in my ssh creds. (does not support 'go get' since it defaults the workspace to the current folder and does away with the src folder; and the IDE keeps losing my server in it's known_hosts) [latest go on c9: link1, link2; I should note that I was not able to compile go1.4.2]nitrous - this one needs another try, however, it's cost is probably the highest in the group. And then came the truth.  They are charging by the minute.  It's a good thing I discovered this because it's not actually very good. They tried to create a complete container but then I could not clone a private bitbucket repo. My transaction amount is for $0.21 but they will not let me close out my account until they've posted an invoice; and pres…

Frustrated Fedora21 trying to Go

Go once had a number of vim files that I could just copy into my .vim folder. Recently someone on the go team decided to extract those files which has now been propagated through all of the various curated distributions(read RPM etc).

As I try to reconstruct my toolbox I'm struggling not to import every since 3rd party library under the sun. I also want my toolbox to be as mobile/agile as possible. By mobile I do not mean laptop or smartphone nor do I refer to the agile manifesto. I'm referring to the fact that I manage many hundreds of systems and they are all in different levels of operation and I need my tools to come with me wherever I go and so they need to be mobile.

vim-go is neither agile nor mobile.

Missing features from web based IDEs

I'm trying my best to evaluate the various ChromeOS IDEs and there is one overwhelming feature that is missing. One cannot cut and paste branches from one project-repo with another.
What I mean is that I have two projects that need to be merged and then all of the folders refactored. As hard as I've tried I've needed a proper LZ for my files. I need a place where I can clone the files and then move them around. While there are a few IDEs that provide bare bones services it still takes as much effort to create the environment, cut, copy, paste the files etc.

Not impossible just taxing.

Chromebook Powersaver - search for a screensaver

I mentioned that I have not been able to locate a screensaver. I guess that does not really matter anymore because I found something else.  I was searching my Pixel's settings when I found a BATTERY button.  When I clicked it ChromeOS was kind enough to tell me how much power each application was consuming. And not not my surprise... mail.google.com and play.google.com, combined, were consuming about 70% or my energy needs. 
I cannot do much about that other than to plan better by using my phablet when it counts.
** This seems to be an opportunity for Google to optimize gmail's power consumption for both smartphone and laptops.

Native iPhone Sync with Google is not sufficient

I'm well into my first 30 days of Nexus 6 goodness. Sadly I am realizing just how many contacts the iPhone apps(phone and contacts) failed to merge between the iCloud, iPhone, and Google accounts. One cannot expect Apple or Google to go out of their way to merge/sync but it would be helpful if they would at least import from the other.

Now I have to hope that of my missing phone numbers are actually sync'd to my MacBook Pro or iPad; however, I'm not holding my breath.

ChromeOS Screensavers

I don't have an answer yet. The one screensaver I installed (a) only blanked out the ChromeOS browser window and not the displays (b) did not actually power off the screen (c) did not do anything to the second display. Maybe what I'm really looking for is a power saver mode.
Screensavers no longer serve the function they once designed for. Back in the day of phosphorous and cathode ray tubes and even early model plasma and LCD displays it was necessary to prevent pixel burn-in. Today's displays are much more durable, however, most modern screensavers require that the machine run at full speed to render exotic images. Furthermore while LCD light sources are lasting longer than ever before we still tend to burn them out and discard them. All but the most expensive monitors are not repairable.
** When I worked for IBM they did not want us to power off our computers at night but management insisted that we power off the monitors. Presumably the electricity costs for the monito…

FSA and HSA are a waste of time and money

I was there in the beginning when these programs were making their ways through the prepaid systems developers. As a developer I was grateful to have the work as prepaid transaction volume was on the rise but not at a sustainable pace. Back in those days investors were a lot less transparent about their investment goals and ROI.

Now HSA and FSA have become a money machine. They take money from all sides. And just like every other processor if you fail to do some required task by some date then repayment becomes absolute. And let's not forget that there is very limited carryover.

But it's your money!!

It's yet another broken and corrupt system.  Don't do it!

consensus says wtf?

Just how many consensus based replicated key/value storage systems do we need? Clearly this has become the latest hello world or todo application that everyone implements on their way to whatever is next... but is it really necessary considering that all of these implementations are already open source and most, if not all projects, will accept pull requests.

Here's my list:

etcdconsullogcabinchubbyzookeeperblockstore (???) And that's just what I can remember.  Follow this link for a list of about 50 implementations. I'll admit that there is something to be said for choosing different programming languages and some features but still... at some reasonable point we need to elect just a few masters so that we can all go back to the task at hand. (Embedding this tool deeper into the stack)
I suppose that since raft and paxos are relatively new the next generation of PHd's need something to tinker with. But seriously, at some point we need to take it to the next level.
PS:  …

codenvy browser based IDE

I'm converting my development environment from the standard desktop OS (Windows, OSX, Linux) to my ChromeOS and then browser based at that. Having an i7 Google Pixel makes this fun an educational.

Ideally I want to do the development on my local machine but until Google adds features like containers to their current platform I won't really be able to compare apples to apples. In the meantime I plan to test some of the available IDEs.

The most recent candidate is Codenvy.

To begin the process I had to sign up for a free account and then import/create a project instance based on my bitbucket project. This would have been a normal and simple thing except that bitbucket is not supported as a first class repo. In order to work around the problem I had to (a) generate ssh keys (b)  create a small/empty project and then "import" my project creating a second project. It took a while to figure that out.

In the meantime I had a few problems. (1) the git tools had some problems…

Need a new phone

I think they call my Nexus 6 a phablet. It's too big to be a phone and too small to be a tablet. Granted U should not be calling or texting while I'm in the car and we already have Bluetooth headsets for those handsfree moments... but there is nothing like the visceral experience of holding a phone in your hand. And unless you're a 20-something you remember pure cellphone envy when the Startac phones were first released on the public.

Given the complexity of phones today I doubt that the actual Startac could compete. And this idea of an embedded phone is silly.
But there is something to be said for a Bluetooth device that is synced with my phablet in my backpack. Something that might respond to a few basic commands and then act as a high quality phone. The best part is that the phone was so small and light it was easy to put in my pocket. It never generated heat when in standby mode. The battery lasted a nice long while, had a high capacity option and was replaceable.

Blue…

converting an .ovpn file to an .onc file

I'm not sure whether this is practical or even possible. While the onc file is well documented I'm not sure what to make of the ovpn file. The OpenVPN project is well documented and so I hope it follows. In the meantime I have a shell of the source meant to implement the structures etc... for a simple transcoder. (another link; debugging)

Innovention Studio

I gave a golang talk at the Hive in Miami a few months ago.  Since then I have been captivated with the idea of having one of these spaces for myself only closer to home. The layout over there was a little more whimsical than I would have liked. It looks like they acquired more space over time and now have the entire building... but it's right off the highway in the middle of downtown Miami.

Now I'm having dreams of building a similar space in Weston.

I bet I could get some investment if I knew what the potential market is. Here are some of the amenities I'd like to offer:

receptionistmailroomconference/training roomdemo spacePBXlimited secure rackspacediverse highspeed networkbathroom and break roomfirst come first serve cubiclesreserved officeslockers I wouldn't have to do all of this but it is the starting point. (Is there a template for this sort of business?)

The perils of shutting down a complex system

I suppose I could be talking about any complex system, however, in this instance I am referring to computers; both server and desktop. And there are so many adjacent questions:

when do you begin the shutdown process?triggered by the usertriggered by a clock eventtriggered by an external APItriggered by a lack of power or sufficient power to "save" the environmenttriggered by meltdown avoidanceHow long do you wait for all of the child processes and their dependencies to terminate before signalling the hardware to power off? In some of these cases it's obvious that the process should receive a signal and then save some state and terminate.  But what if saving state is not practical? In particular modern CAP-type databases are not ACID and may or may not be responsive or reliable after a shutdown.

This is a complex topic and get expensive when you consider the costs of rebooting a mainframe or a cluster of computers. Companies like Stratus solve part of the problem by implem…