/dev/jcheng
  • About
  • Articles
  • Pages
  • Reviews
  • Tags

Articles

May 16, 2021

Post of the Week 2021-05-13

My thoughts today led me to reading about nuclear wastes. It turns out that what we call “nuclear waste” is a pretty vague term.

A light-water reactor generates different kind of “waste” from a molten salt reactor. A traditional light-water reactor doesn’t consume fuel efficiently. It leaves behing partially consumed fuel that is not economically attractive to refine for further use. These partially spent rods continue to generate heat and are sometimes stored in cooling pools. Wastes from light-water reactors contain plutonium, which can be used to create atomic weapons.

read more
May 4, 2021

Post of the Week 2021-04-06

Grammar visualizer

https://dundalek.com/grammkit/

  1. Which leads to a JS parser generator

https://pegjs.org/online

  1. And also leads to a JS parser generator with a visual debugger

https://ohmlang.github.io/editor/

This also prompts my interest into a graphviz/dot parser

https://github.com/awalterschulze/gographviz

Which uses this Go parser generator

https://github.com/goccmack/gocc

This exploration also led me to this Go parser generator

https://github.com/alecthomas/participle

read more
May 3, 2021

Unit Tests vs Integration Tests

I used to favor automated integration testing. Now, I find myself walking away from it. I no longer find it worth the cost of setting up and maintaining such tests. I now rely mostly on unit testing.

First, I need to define what I meant by those terms. In context of this post, unit tests

In Wikipedia

unit testintegration test
automated, not alwaysnot specified
ranging from entire ‘module’ to an individual functionmodules tested as a group
depends on execution conditions and testing proceduresdepends on unit test/implies modules are already unit tested

From Martin Fowler

read more
April 18, 2021

Posts Of The Week 2021-04-15

Lots of small things today.

History

“Those who cannot remember the past are condemned to repeat it”. I love reading about how software came to be the way they are today.

Before we can talk about where generics are going, we first have to talk about where they are, and how they got there.

https://cr.openjdk.java.net/~briangoetz/erasure.html

Go Errors

Error handling is still jacked in Go 1.16. That is, the formatting change is still not present. Why is this a problem? There are two use cases for errors. Error as values, which can be inspected programatically, and error printing, which is not meant for programmatic consumption.

read more
April 3, 2021

Workflow Orchestration - Part 3 (How do I use this?)

In this part of the series, we’ll write some hands-on Temporal code and run it. Let’s start with our requirements:

You need to transmit a data packet. You can choose from multiple Route Providers to do this. Transmission takes time – you will be notified on a callback URL when the packet is delivered. Delivery may fail – either because the acknowledgement was not sent or arrived late (because Internet). You should try the next provider when one fails.

read more
April 1, 2021

Posts Of The Week 2021-04-01

I spent a couple of hours evaluating 3rd party libraries. What have I learned? For me, there’s one clear winner in a small field of candidates.

Presently, these are the top hits for “golang gauge counter timer”.

  1. https://pkg.go.dev/github.com/go-kit/kit/metrics
  2. https://pkg.go.dev/github.com/facebookgo/metrics
  3. https://github.com/uber-go/tally

The first result is go-kit. Go-kit isn’t a metrics library. Rather, it bills itself as a “framework for building microservices.” Its metrics package is simply a set of interfaces. You then refrence one of the many sub-packages with concrete implementations. As a consequence, it’s go.mod file is pretty huge.

read more
March 24, 2021

Posts Of The Week 2021-03-25

Go does not allow cyclic imports. A solution is to create a “shared” package to hold interfaces that related packages all reference. This, for some reason, reminds of me join tables in SQL.

Here is an example of a typical Go project. Packages toward the bottom, e.g., “common/persistence”, allow different packages to work with each other without introducing cyclic dependencies. For this project, “log” can be referenced by “config”, but cannot use “config” to conifgure itself.

read more
March 8, 2021

Posts Of The Week 2021-03-11

Oldie but goodie. Go concurrency patterns

https://drive.google.com/file/d/1nPdvhB0PutEJzdCq5ms6UI58dp50fcAN/view

read more
March 7, 2021

Workflow Orchestration - Part 2 (Why do I care?)

An increasingly distributed and fragile world

Workflow platforms are important because software engineers are increasingly adopting distributed systems in their architecture. There are two reasons for this change: 1) Users are demanding more frequent releases, feature teams, better peformance, and higher availability; 2) Providers are increasingly moving away from “use our library” (Spring Framework) to “use our APIs” (AWS, Azure, and GCP).

This change is undoubtedly a good thing, however, it also introduces new problems. It is much harder to trace program execution in a distributed system. A business process can span multiple services, created by multiple teams, in a variety of programming languages. There are more ways for things to fail, less consistency in code quality and documentation, and it’s harder to understand what happens when things go wrong.

read more
March 7, 2021

Posts Of The Week 2021-03-04

Two book recommendations

  • https://www.oreilly.com/library/view/designing-data-intensive-applications/9781491903063/
  • https://www.oreilly.com/library/view/making-software/9780596808310/

Designing Data Intensive Applications: Don’t let the name fool you. The knowledge in this book applies to more than just data processing applications but to distributed systems in general. It is a great book for all software architects.

Making Software: What Really Works, and Why We Believe It: A meta-analysis of various theories on software development processes. Is TDD effective? Is Agile just a hype or is it just misused? Which code metrics are actually useful? There are evidence-based answers to many of these questions.

read more
  • ««
  • «
  • 1
  • 2
  • 3
  • 4
  • 5
  • »
  • »»
© /dev/jcheng 2025