Enums, C#, and Protocol Buffers

So, in the brave new world of microservice development, there’s this fancy technology called GRPC which allows you to define RPC-based microservices using Protocol Buffers as an IDL syntax and uses HTTP/2 as a transport underneath.

Now, Protocol Buffers’ IDL syntax supports enums. However, it doesn’t allow multiple enum values in different enums in the same namespace to have the same enum value, such as:

enum MyEnum {
FOO = 1;
BAR = 2;
}

enum OtherEnum {
FOO = 1;
BAR = 2;
}

What to do, what to do? The Protobuf compiler will complain, because FOO and BAR are the same name because that isn’t compatible with C++

The suggested alternative is to prefix your enum values with the name of the enum in ALL CAPS

enum MyEnum {
MYENUM_FOO = 1;
MYENUM_BAR = 2;
}

enum OtherEnum {
OTHERENUM_FOO = 1;
OTHERENUM_BAR = 2;
}

The cool thing is that the official C# compiler for Protobuf will convert this to idiomatic C# enums:

enum MyEnum {
Foo = 1;
Bar = 2;
}

enum OtherEnum {
Foo = 1;
Bar = 2;
}

Git: Require Work Item # (Or Similar) In Commit Messages

So here at Videa, we require that Git commits have the TFS Work Item # in the Commit message for linking the work to the Work Item.

In order so that I don’t forget ever again, I wrote a commit-msg hook in Git to keep me honest.

Save the following as “.git/hooks/commit-msg” in your Git Repo. This works on Windows and *nix with any tool that uses the git command line (SourceTree does, however other tools are YMMV)

#!/bin/bash

grep -EHnq "^((Fixes|Resolves|PBI|Bug|Task|Work Item|WI): (\#([0-9])+|None)|Merge branch '(.*)' into)+" "$1"; RET=$?
if [ $RET -eq 0 ]; then
    exit 0
fi

echo "ERROR: Work Item # missing in commit message" 1>&2
exit 1

 

 

Comcast X1 Gigabit vs AT&T Fiber (Gigapower)

I live in unincorporated Paulding County, Georgia in a “Planned Residential Development” subdivision (Ballentine Pointe). It’s one of the few subdivisions in a relatively rural area (Paulding is basically the rural-suburban fringe) that has both AT&T Fiber (thanks to them upgrading BellSouth FTTC infrastructure) and X1 Gigabit (being part of the Atlanta market).

Looking at JUST Internet, here are how the 2 companies compare:

AT&T:

  • Delivery Method: Fiber
  • Speed: 1 Gbps down, 1 Gbps up
  • Included Data Usage: Unlimited
  • Price: $70/mo

Comcast Xfinity:

  • Delivery Method: DOCSIS 3.1 over coax
  • Speed: 1 Gbps down, 35 Mbps up
  • Included Data Usage: 1 TB
  • Price: $139.95/mo

What is Comcast thinking? They are delivering a slower lower quality product with less included data for quite literally twice the cost.

TWICE THE COST.

Then we start looking at bundling TV with the deal….

AT&T offers your choice of U-Verse 450 or DirecTV Premier, with 4 TVs and whole home DVR (and 4K with DirecTV) for less than $200/mo for 2 years (and $250/mo after that)

I’m currently on the X1 HD Complete bundle, which currently costs $200/mo, with a normal price of $250 after 2 years, basically the same deal AT&T offers.

Except that it only includes 105/20 Mbps internet and it has a 1 TB data usage limit.

I could quite literally get Gigabit internet over Fiber, extend my promotional pricing for another 2 years, stop worrying about data usage (we watch a lot of Netflix, Amazon Video, Hulu, etc..) get Disney Junior and Nick Jr. in HD (Xfinity only has them in SD for some reason, they did use to have them in HD, but not anymore… I have a 1 year old after all), just by switching to AT&T.

However, I’ve been a Comcast customer for quite literally half my life at this point. I really don’t want to switch, since its annoying. I just wish a human being at Comcast is willing to realize that they are losing a very valuable high ARPU customer because their pricing is stupid and non-competitive.

However, Comcast… has been disappointing so far. I’m going to try and keep pushing them to actually compete. They have until April for various reasons to do so.

New Job, Yet Again

I ran into a problem many have in the startup world: funding runs dry. As such, I’ve embarked in a change in my career path.

I’m now a Principal Software Engineer at Videa, part of Cox Media Group, a Cox Enterprises business.

 

 

Aura 1.3.0 released

Aura 1.3.0 has been released (and available on NuGet), with the following improvements:

  • We now depend on updated MongoDB Drivers
  • Preliminary support for Full Text Search

If you’ve enabled Full Text Search on your MongoDB server, you can do the following:

  • Call EnsureTextIndex on in your record manager’s Initialize override with the fields you want searched
  • Get a result by calling TextSearch from within your record manager subclass with the query you want passed to the full text search engine

We do not currently support weights, or any other full text search features. We will be working on it however!

Updated Press+ Blocker

Works on Marietta Daily Journal and Star News Online. Other sites will be added later.

Download PressPlusBlocker

  1. Download the zip from here
  2. Open up Google Chrome. If you don’t use it, you should. It’s free!
  3. Click on the settings button (3 lines button on the top right hand corner)
  4. Open the Tools menu, and choose Extensions from that menu
  5. Unzip the zip you downloaded earlier
  6. Drag mdjonline.user.js to the extensions window
  7. Reload any article on mdjonline.com (or another supported site), and it should be popup free!

Aura 1.2.1 released

Aura 1.2.1 fixes an issue with Aura 1.2.0 where having an index with null options (IndexOptions.Null) would cause an exception during the creation of DatabaseManager.