Skip to main content


Showing posts from July, 2015

deleting folders on AWS-S3

If you read enough of the AWS documentation you'll know less that when you started. I'm not sure if it's me or just the vastness of the APIs and functions available.

I'm in the process of writing an uploader and while I was tinkering I created a number of folders. Some I did manually in the web GUI and others through my software. One thing for certain is that here is not recursive delete function.  There is also some vague limitation to the number of objects returned and how you might page through them. And there is no specific recursive delete function.

** reading the documentation ... there is no actual folder structure. It's a virtual structure.

The bug I ran into was that the folders I created using the GUI could not be deleted. Not with the GUI and not with my app. It turns out that the GUI does not set the object type which the software does (STANDARD). Once I changed the type to STANDARD in the properties I was able to delete the folders.

** Just a note but …

ASUS Flip is not for work

I've had my flip for 2 days now and I've come to the conclusion it's not for work. In fact it's passable for email, video, music and some social media.

My experiment

I had to take my car in for basic maintenance. So I took my ASUS Flip with me in order to get some work done. The dealer offered nice tables and some refreshments. They also offered wifi so I did not need to tether to my phone. (even though my phone is a Nexus-6 tethering is unreliable and the carrier has terrible service in my city)

I have a bug in my current project.  I have a good idea where and why so it should be pretty straight forward.  The workflow is common to work I have performed in the past.

review the logs


As a programmer my development environments vary from project to project. In it's most encumbered mode I use Visual Studio or XCode. This would require some sort of remote desktop software. Regardless of whether I was to use RDP or VNC the outcome is the same.…

OpenTable abuse

A few months ago my wife and I went to a local restaurant by the name of Ireland's for dinner. Ireland is one of them more desirable restaurants in Weston and we were hoping to have a very good time. I finally made the reservation using openTable. It was not the most desirable reservation or was it the reservation that I want it. But it would have to do.When we arrived at the restaurant we were the first people to be seated. Yet to try to get reservations in and around the time that we had selected was not possible. Either the restaurant or open table were intentionally making things difficult. As a way of social engineering the restaurant.Just a few moments ago I tried to make a reservation at another restaurant in Fort Lauderdale. The first reservation that they have available is at 9:15. Since it is a Monday night the likelihood that they are out of reservations is in fact unlikely.What is the point of using open table if it is not used properly?

advanced golang json

This might not actually be advanced but it is something that was bothering me about marshaling json that was really bothering. The alternate article title might have been better.

"how to convert a query string to json?"

A legacy system I'm working with uses query strings to store and communicate data. There are no real complaints about that structure as it served it's purpose as a universal container which is easily parsed. But as I want to unmarshal that data into a golang structure there had to be a better way.

My first thought was to strings.Split(s,"&") and again strings.Split(s[i], "="). While it works for my data it is less than perfect. The first challenge is encoding. The second is all the stupid rules for embedding special chars (probably also encoding)

I fixed that problem by using url.ParseQuery().

Now that I had a map[string][]string I had to iterate over a while loop and store the data into the structs fields. The first attempt wa…

ASUS Flip Chromebook

This is still a work in progress but there are some notes that I have collected:
The keyboard is not anywhere close to full and it's considerably smaller than the 11" MacBook AirThe keyboard travel is niceThe keyboard repeat and delay needs to be tweakedThe trackpad click has too much travelThe trackpad needs to have it's settings tweakedThe screen resolution is limited to 1400x900 although ASUS or Google recommend a slightly smaller resolutionThe resolution of the touch screen seems accurate, however, I did have trouble with YouTube's scroller and the volume sliderThe prongs on the power brick are fixedThe power connector works in either direction although it's customThe bluetooth syncs nicely but has the same issues that I have with my other Chromebooks and Nexus 6The octane score is not close enough to the published valuesGrafana produced some pleasant graphsThe stuttering mouse and audio has stopped (I still think I need to make some tools go away but I'm o…

US Election, democracy, socialism, healthcare and your cell phone service

In the United States we claim to be a pure democracy when that is clearly not the truth giving "Too Big to Fail" as an example of corporate socialism. The IRS and government is not going to help so why should it help business. Maybe corporations and Wall Street should act a little more conservatively and for the long term rather than instant gratification. (there is plenty of research on the subject... even a 60 minutes article with 1st graders)

Any time you go to the doctor sign all this paperwork agreeing to the cost of whatever procedure or service you are there for, however, they cannot tell you how much it's going to cost. But you have to agree. When was the last time you went to McDonalds ordered a burger and are then presented with a bill for the food and then on the way out the door another bill for using a table and then another for discarding your trash. The last time I was in the hospital with my kids everyone who stopped by sent us a bill. It was assumed that…

Apple has gone off the reservation

I was looking for a fitbit for my wife. The model she wanted retails doe $150 and out of curiosity I decided to check the Apple Watch. The cheapest Watch is $350. Out of curiosity I decided to look around and that's when my jaw hit the floor. Apple is selling a watch for $12,000. They are out of their minds but then again maybe not. The people who are crazy are the ones who buy them. There isn't a bank account big enough to make me feel less guilty about buying one of these. I just cannot imagine what the marketing department is thinking. Who is their demographic here? Rockstars? Would-be rockstars? There is nothing fashionable or timeless about an Apple Watch.

Moore's Law and the Chromebook

Moore's Law as summarized:
"Moore's law" is the observation that the number of transistors in a dense integrated circuit has doubled approximately every two years.  ... and projected this rate of growth would continue for at least another decade. (wikipedia)I find it hard to believe that Moore's Law was more of a project or marketing plan than engineering prediction. Not that doubling transistor count is an easy feat but it's more Economics. For all we know Intel might have had the capability to quadruple transistor density, however, the cost would have kept the chips too high effecting the economics. 

I recall using the Dec Alpha in the same form factor as the PC. They were screamers. I presume it was part manufacturing, part density, and mostly it's mainframe/mini heritage. Sadly, the Alpha was acquired and then discarded.

In the meantime we continue to see a number of chip vendors that are working on chips that are "good enough". ARM and Rock. …

Example SFlow

Previously I mentioned a project, execon, which I'm planning to rename SFlow, however, one of the missing pieces for the casual reader is what's it all about?


func DeleteMerchInfoHandlerOld(w http.ResponseWriter, r *http.Request) (int, error) {
        if r.Method != "DELETE" {
                return http.StatusMethodNotAllowed, errInvalidMethod
        payloadValue := r.FormValue("payload")
        if payloadValue == "" {
                return http.StatusBadRequest, errExpectedEmpty

        request := mdata.RemoteRequest{}
        if err := json.Unmarshal([]byte(payloadValue), &request); err != nil {
                return http.StatusBadRequest, err

        merchInfo := mdata.MerchInfo{}
        if err := transcode.Transform(&merchInfo, request); err != nil {
                return http.StatusBadRequest, err

        if found := merchinfo.Dirty(merchInfo); found == false {
                return http.StatusBadR…

Can GB be my friend?

Vendoring with golang's tools sucks.
golang does not support enough D/VCS systemsGOROOT is now computedGOPATH was once expected to be a single path but then someone added multi-path with the first path being the global vendor folderin order to update the 'go get' you need to include the -u flagwhen you use 'go get' the code include whatever submodule info like .git, .svn, .hg etc There, I said it and I backed it up.

There are a few choices for vendoring projects in go. godep, nut, and the latest gb. I do not know anything about nut, however, godep works with the standard go tools. All you have to do is update GOPATH. On the other hand gb is a complete departure. Going the gb route means that you need to break backward compatibility with the standard tools. Since I'm new to gb I just do not know if it's a worthy solution.

The problem is not really obvious until you have multiple projects. And with each project you have to change your GOPATH so that the local …

Let It Crash

I've developed some interesting systems in Erlang. They were fun and interesting projects. I also find it interesting that Joe Armstrong is such an amazing advocate; clearly he has over 26 years dedicated to the project. A good number of people would appear as dear in headlights if one day Joe decided he got it wrong and that BASIC was a better choice.
However, I liked a number of things he had to say and they make perfect sense [paraphrased].
let it crashdo not program abnormalitythe set of extra things is enormousthat set is called defensive programminglet the crash be observable an then make it an issue to be worked So the question is how can this be applied to other languages... golang in particular?

UPDATE - "clean Erlang code" might just be full of shit. I just spent an hour trying to clean some golang code using the same principles as the erlang demo and I find that trying to create one function per line of code just does not feel natural in golang and it feels les…

Failed CoreOS Services

I'm not going to describe how fleetd and systemd work together. That's better researched on the CoreOS site. But I am going to describe a condition that I often find myself in.  My rig is like this.
I have a Chromebook running "terminal"my remote CoreOS servers are typically at Google Compute Engineand I use a blend of tools installed in a dedicated docker container However, from time to time; when I log into my CoreOS instance I get this crazy error message about some "failed unit". After a quick investigation: systemctl statussystemctl list-unitssystemctl --failed I determined that my ssh session had terminated and left some breadcrumbs behind. I'm exactly sure why the session died but it is common. There must be some idle timer on the chrome-terminal application that I have not configured properly because when I have a similar session open on my macbook it remains open longer.
On one occasion I noticed that I had multiple failed units and I was never a…

Docker registry; is it safe?

I make the assertion that Docker's public registry is not safe and I offer "nijtmans" as an example. I was looking to deploy fossil in a docker container but I was too lazy to build my own "scratch" container from scratch. Since I had just installed bosun and grafana from their "trusted" images I felt good about looking for a fossil version. Sorry, FAIL.
A docker registry search for "fossil" yielded some 5 images.The first image was 8 months old and makes the claim that it was forked from nijtmansI noticed that nijtmans is not trusted with the docker regitry (no badge)The former image included it's Dockerfile so I could fork it if I wantedThe later, niftmans, did not offer any good documentation and it was missing the DockerfileI decided to try to track the project down and looked for the author on github; sadly he only had the one projectwhen I looked in his repo I could not locate the Dockerfile and the README was unflattering I do not …

influxdb, telegraf, chronograf

I've nearly completed my FLOW based SQL report generator. I'm pretty certain the last feature I want to implement is going to be monitoring. Since the program is written in Go and is being launched at 430-UTC every day I want to capture the runtimes as part of system monitoring. I also want to monitor the system that it's running on.

While I need to add go-metrics I need a place to persist the data. Influxdb is the new meme-time-series data db engine on the block. It's also written in Go. While grafana is a good dashboard(also Go) the influxdb team has released Chronograf. And finally the influxdb team released Telegraf in order to collect data from the target system... written in Go. (there are a few other's like statd, collectd; and then there is cadvisor, bosun, graphite, rddtool and maybe a few others)

While Go is also the meme language of choice for most systems programmers these days it's not the meme that generated interest as I have been using and follo…

Docker says what?

I'm trying to bring CoreOS, Docker and possibly Rancher into my work environment. I completely understand the risk associated with deploying alpha and beta level code. In this case both CoreOS and Docker appear to be stable. Rancher might be the weak link, however, since it's just being used to access the registry, deploy the images and connect the sidekicks and a few minor services... I'm not concerned.  Everything can be overridden from the Docker command line.
I started to put together some notes in order to deploy a 3-node cluster on my MacBook. I present them here. Note that they are highlevel and sometimes infuriating.
[7/11/15, 4:42:36 PM] Richard Bucker: I hate to say it but for the purpose of the next play date I am installing virtualbox and vagrant.  Just because I have to in order to kick things off. [7/11/15, 4:49:41 PM] Richard Bucker: [1] install virtualbox EASY [7/11/15, 4:49:49 PM] Richard Bucker: [2] install vagrant EASY [7/11/15, 4:50:06 PM] Richard Buck…

USB Type-2 to USB Type-C

I read the line, Power and data in one on Google's page. I have a Pixel-2 with 2 USB-C reciprocals. While the power adapter is not much bigger than the Apple 50 Watt MacBook power adapter it is still a pain to carry. It makes for an uncomfortable bulge in my briefcase. And so the idea of using a much smaller USB power adapter to charge my Pixel was really appealing.

The it was good for data was the icing on the cake.

The accessory arrived today and I plugged it in to the USB port on my MacBook and into one of the USB Type-C ports on my Pixel. No matter what combination of power and USB connectors I used the Pixel always indicated that it was charging. That's good news.

However, while there was no detailed description about how data was going to be transferred between devices I had high hopes that one or the other was going to provide an automatic mount point to the other. Unfortunately nothing worked. I've gone back to the packaging and there were no instructions of any ki…

Cannot watch the World Cup 2015

I was walking the dog about a half hour ago when I stopped at a neighbors to chat. As we were wrapping things up another neighbor stepped into the street and alerted us to the fact that Team USA was up 4-1 at half time. I'm not exactly sure what the score was at the time because several search headlines painted a different picture.

Anyway, I started googling for sites where I could watch the game. Sure, I could have walked 20 feet into the living room and turned on the tube but I wanted to watch from my desk. Kinda selfish but that's the way it's evolving.

Once I managed to filter through 5 websites to one with a link to a viewing site (fox2go) it took quite a long time to load the page. In fact over the next 20 minutes I reloaded fox2go nearly 15 times. Unfortunately after the 5th or 6th time I was redirected to a login page. And I had to click on the "other provider" link... so I could search for my service provider. Once I got to the "advanced cable"…

Signing off of Twitter

I like twitter has a source of casual information. The problem however is that it is becoming more and more commercial. Every dozen or so tweets I receive some sort of sponsored message. Many of these sponsored messages are in line with my interests and from time to time I have click through however they are still a nuisance. Additionally some of the sources that I get my news from include all sorts of nonsensical news. For example this one news station insist on including pictures from one of their sponsored models. It is off topic that it no longer makes sense.
Recently I started informally monitoring my usage. What started off as reading while in the bath room has turned into almost a full time of session. On the one hand both the golang and docker projects are very informative however it's to the point where many of the posts or the percentage of posts that carry useful information is starting to drop. The reality is if I do not start to curate my own newsfeeds I'm going …

A click is not a tap

There are a bunch of Windows user that think that a tap is a click. The tap is a trackpad jesture that converts a momentary tap on the trackpad as a mouse click. I supposed it's not a truly evil function and that for some users it makes certain sense but my challenge is remembering whether it's the default behavior on ChromeOS when I started, my OSX or Windows PCs. All I know is that with my latest upgrade and powerwash of my Chromebook the tap feature was enabled. AND it's annoying.

Do disable the tap do the following:>

Settingssearch : TAPclick on touchpad buttonuncheck "Enable tap-to-click"  and close the window. Your changes will be saved.
Keep in mind that if it does not work as expected, then repeat the steps just to make sure your selections have been recorded. If you cannot get ChromeOS to record your selection or the feature is not working as expected you might want to do a powerwash and try again.

Skype on ChromeOS

This article hints that it's possible to download and install Skype for android for my ChromeOS device. One thing that seems to be missing is whether or not it's going to support the different processors. Frankly I'm not sure what the Android version requirements so it's, admittedly, a little FUD.

This lack of support is all the more reason to do something else. Hangouts is a good replacement, however, many corporate users are skittish. While Hangouts is feature complete it suffers from a number a challenges. (a) it's complicated or at least the casual user is not going to record a session on their first attempt (b) privacy, especially of recordings is not clear where Skype requires a 3rd party (c) not everyone is using the Chrome browser or ChromeOS. It is simply not a ubiquitous solution.

iMessage is also an alternative but it's Mac only and there are too many Windows users in the world and on my teams; and since it's not cross platform it's not a pos…

$200 is the new $100

Ever since I was a kid I've noticed that the "cost of things" seemed to be stratified. Meaning that if you looked at the average cost of things they seemed to float around some ideal price for the thing you or I might purchase. I recall a conversation with someone about why $12.99 was better than $13.00. There is clearly a psychology of pricing and unless you're on the inside tract you or I are never going to understand the who, what, where or why.

Recently there was a post on Google+ which begged the question why the Chromebook manufacturers were not building machines that cost more than $200. While this is an exaggeration (a) $200 seems to be a sweet spot and the new $100. (b) instead of being some big conspiracy it might actually be the fear that there these prices will cut into their profits.

One thing for certain; $200 seems to be the new $100.  I have an ASUS Chromebox that is just not behaving properly. I originally purchased it to be my experimental system so…