Hibernate+JPA Multi-version concurrency control with Postgres

If you are working with Postgres and using JPA via Hibernate, here’s a short cut to get MVCC without having to add an extra column to your database tables:

@Column(name = "xmin", columnDefinition = "xid")
private int version;

Postgres automatically creates and maintains the “xmin” column, and JPA already supports the concept of @Version columns. Hibernate adds on support for database-generated Version columns. Now, xmin is really a “xid” type, but it happily accepts casting to and from Java’s int type.

Does Fat Fit: 2018 Chevrolet Equinox LT

For people who don’t know me, I’m a rather large guy in 3 dimensions. I’m tall (just about 6’0) and round (north of 400 lbs).

My truck (2010 Ford F-150) recently had its warranty expire, and it was beginning to show problems resulting from both its age (8 years) and the accidents its been in (1 major, 2 minor). It also had HORRIBLE gas mileage on my daily commute (from Hiram, GA to Buckhead in Atlanta, GA — it averaged between 8 mpg and 14 mpg). So.. I convinced the wife to let me trade it in for something more economical.

And so we got the 2018 Chevy Equinox. It’s a compact SUV, same class as your Toyota Rav4 or Honda CR-V.

My fat fits perfectly. It’s a little snug on the sides, but not horribly so. The steering wheel doesn’t touch my gut or my knees. The seat belt actually fits! (It didn’t even in my F-150). I can reach the pedals just fine.

I highly recommend it for other large people looking for a compact SUV.

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)


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

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:


  • 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.


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!