Skip to main content


Showing posts from September, 2019

Flutter lang versus the world

The flutter language and ecosystem is interesting and is actually built on many generation of giants. However from my position it seems more like lazy rather than pragmatic. "We" are in a very different world right now and flutter is not really going to fix it.

For years managers have been wanting a unified programming language so that [a] client interface programmers and [b] server and service programmers; could be interchangeable. Sure there were some minor successes when nodejs was released and made it mainstream. In fact there are still a number of meaningful applications but that's another story.

Where we are is management has nothing but contempt for the rockstar programmer and the wanna-be rockstar programmers. Management sees us as simple labor. Of course management is not alone as there are many other pressures. Take a look at any org chart and the rank and file programmer is typically at the bottom. From time to time a company has a technical track however thes…

enterprise database at scale

I just finished writing a post about Star Trek LCARS and the user interface. Then some google headline presented an article about enterprise databases at scale. And that just pissed me off. I look at some of my customers and I get stressed when they want to customize everything. Those damn reports can represent anything as the business team makes wholesale slaughter of the other side of the business... the reports start to lose meaning.

Data scientists seem to get lost in the idea of data normalization when the real issue is standardization. For example, if you want to build a successful business and then take that success to a second business then you probably need your tools to come along. But if the systems that feed those tools are faulty or represent something different then you've failed.
One of my clients has revamped their systems multiple times over the years and the problem is that there are no measurements to see if the changes had their desired effect. And that measure…

next generation reporting

The title of this article is a double entendre. If you have watched Star Trek the next generation then you know that LCARS is the Enterprise computer's visual interface.

What is amazing about this interface is that it presents compact and actionable information. What you never see is pages and pages of endless scrolling rows and columns of data that the operator would need to scan thru to find the thing they needed. Also, when you think about the operators and in many cases the engineers like Wesley Crusher they used many of the same screens to "program" the computer.

Many years ago I was trying to get my company's executive to accept the fact that Linux and BSD were good operating systems and in many cases better alternatives to Microsoft Windows. (at the time Oracle purchased or was about to purchase Sun Microsystems which had been on the decline for years and while Windows was increasing market share it was not ready for the enterprise or the internet. Remember th…

all in one cluster tech or the other

A recent blog post suggested that kubernetes was the winner when docker signaled that it was going to support it. The author went on to say that swarm might become a shim layer to kubernetes. In a way that might be a good idea. Here's why.

I have a docker swarm with traefik for ingress. This is working out really well but I see that I have to commit to the one cluster tech - docker swarm. This is because traefik binds itself to the swarm but does not span multiple swarms. Of course there are some advantages to paying for and having the EE version as it supports a few other features that might include spanning networks.

One thing for sure is that having a k8s and a separate swarm each with their own traefik installation means that the system has to be partitioned accordingly. Migrating projects from one cluster to another along with name resolution... all bad. Keep in mind that many businesses start off committed to one tech and then migrate over time. It's a bag of marbles.


how to pick a docker stack name?

I'm working on a very small project that is meant to demonstrate a small web application (not a service) so I can get all the moving parts together and at some point I might be able to script project scaffolding creation. But one thing I have been facing is that the target URLs lose meaning/context; there is still plenty of manual cleanup; while I liked the k8s mode of using the uuid or branch name to deploy a dev instance there is a bunch of leftover topic.

This is a docker swarm installation. There are analogs with k8s but the swarm is easier to deploy regardless of the fact that k8s is integrated. That's simply for another day. So now there are a bunch of things that need names:

A quick search to review the docker docs did not turn up anything interesting. My definition of a docker stack is analogous to docker-compose because they use similar config files. The purpose of a docker compose is to link and name a set of services. For example an applicati…

to upgrade or not

From the new lessons learned bucket the question is how much time and money should you spend keeping your projects up to date?

I've been managing a project for about 10 years or so and treating it like an appliance. As in toaster. Plug it in, put in the bread, flip the switch and wait for the ding. The problem is that even the most mundane devices wear out. In this case I moved one component to a server behind an SSL wall and some haproxy bits that require some sort of SNI capability from the client. Unfortunately the existing wget and curl do not support SNI and so I need to upgrade. However the base OS has been EOL for years and so the various repos have been shut down.

Now that's EOL.

So I tried to build the projects from source. hahaha. Either the source was also behind an SNI firewall or I was missing other elements that simply would not install. At this point upgrading the systems could be a major undertaking... But before you go crazy about service contracts and the lik…

forking code repos

This is a short opinion piece. Stop forking projects unless you know you need long term support or you are concerned that there may be some sneaky code injections... The reality is that after 35 years of programming there is nothing worth keeping except for the code that is keeping the lights on. And whether you are a business owner or  CTO of a fortune 1 company the cost of maintaining old code is too high... better to hire a librarian and catalog the code. Forget the rest. If you are a SOHO then just delete it. You'll either get paid to write it again, probably better or smaller, or just include a library where someone has done a better job than you.

go or gb

"turtles on top of turtles". The challenge for a programming language has always been it's documentation and tools. Back in the day updates were so infrequent that producers actually copied disks and printed documentation. We also got used to the idea that we have to make it work and sometimes we'd have to buy or build tools to round out the project.

In modern times publishers just throw crap over the fence to see what sort of market share they can capture and many time rely on 3rd parties to fill in the gaps. (see android development kit). One of the weaknesses that became very opinionated in the golang world was the implementation of vendoring. It's a sticky bit but ultimately important because golang depends on 3rd party libraries to smooth out the bottom rung of the ladder.

Enter Dave Cheney and gb. It's opinionated, buggy, needs a steward, ...

but frankly I can live without it.

One thing I like about building a DSL is that I can detatch the project from …

functional programming

Just a few minutes ago an acquaintance and former co-worker messaged me asking for a book recommendation on functional programming. I hope he does not mind that I'm referencing that conversation but I thought the question was interesting enough to write about it.

It bears repeating that with 35-plus years as a programmer I learn languages as they are presented. Recently it's been dart and flutter; sure the lines between language, API, environment and framework get blinded all the time... but functional programming is a beast of a different variety.

The scientists and language experts in the audience will know that functional programming has some interesting out of the box capabilities. See any erlang overview. And so there are some good reasons for the complexity. But then there is the ugly side of functional programming. You have to be a good or great journeyman programmer. button monkeys need not apply. The cost of functional programmer is higher than a regular programmer. T…

docker for IoT

WTF is really going on here? Docker is interesting and some fun. Orchestration like swarm is interesting and fun. K3s is a pain in the ass because k8s is bloated and fat orchestration... but it's fun because of it's promise to strip it all down to the essentials.

The problem is that the tool-chain has baseline requirements and by the time you work out production level design the baseline just grows.

My sample universe is made of four Intel NUC devices with 32GB ram and it's just not enough to build a real cluster. It's a toy cluster and has little to no monitoring. While I like VMware parceling one host into docker nodes does not really do the hardware justice.

Let's not exaggerate on the one hand it's nice to have VMware as the admin/control in order to install one large worker... or if you have more than just 32GB ram it's possible to partition them differently. One other thing is storage. As containers move around they need access to shared or network st…

How do you REALLY use your computer?

How do you REALLY use your computer? Most people surf the web, type emails, word processing or other office functions, watch movies and unless a smartphone is close by listen to music, do your taxes. Some even write software, draft schematics, mix multi-track music and so on... but what does the average person use it for?

It's my belief that MOST people need only a browser and a cloud account for email and other office functions. On occasion I'll print and sometimes I'll even scan. But the thing of it is I'm a professional programmer. I need speed, memory, and screens. Gotta have lots of screens.

In the past I have had PCs running windows. I upgraded to various linux installations running on fanless/silent PCs. When the first iPods hit the market I was all about the Mac. I've had 4-6 variations of the macmini and macbook. My employers have provided me with Macs and Dells running windows and linux.

However, I'm in love with my ChromeOS machines. My kids have an ASU…

Keto Crackers

The Recipe: Keto Sesame and Flax Seed Crackers Yield: 6-7 servings of 8 crackers Total Time: 30 minutes Active: 10 minutes, Passive: 50 minutes Ingredients: • 1 cup almond flour • 1.5 TBS whole flax seeds • 3 TBS sesame seeds (use roasted for a more intense flavor) • ¼ tsp salt • Freshly ground pepper to taste (I like 10-12 grinds from a pepper mill) • ¼ tsp baking soda • 1 large egg, beaten • Cooking spray The Tools: • Mixing bowl • Spatula • Rolling pin • Pizza cutter or knife • Cookie sheet • Silicone baking mat (link to purchase below) • Cooling rack The Prep: 1. Preheat your oven to 350F. 2. In a medium mixing bowl, thoroughly combine all of the dry ingredients. Add the egg and mix with a spatula until the dough forms a solid mass and nothing clings to the side of the bowl. 3. Place the dough on a silicone baking mat, cover with parchment, and roll out into a rectangle approximately 10”x14”. Gently peel back the parchment paper and use your finger to tidy up the edges. U…