Blog Pages

Benchmarks!!! Serialization in Go!!!
By Ugorji Nwoke   16 Dec 2014 (updated 02 Jul 2019)   /blog   technology go-codec
Let’s have some fun with some numbers.

In the serialization in go article , we discussed a number of types of encoding formats and their libraries in go.
How go-codec achieves its stellar performance
By Ugorji Nwoke   17 Dec 2014 (updated 01 Jul 2019)   /blog   technology go-codec
They say premature optimization is the root of all evil. I say some layers of the stack MUST be optimal. The layer that does marshalling of data MUST be optimal.

go-codec library supports code generation OR runtime reflection for its encoding and decoding. We will mostly discuss the runtime reflection in this article. It is easiest to compare this to other libraries.
Code Generation using go-codec - for 2-20X performance improvement
By Ugorji Nwoke   18 Dec 2014 (updated 01 Jul 2019)   /blog   technology go-codec
go-codec supports compile-time generation of encoders and decoders for named types, which does not incur the overhead of reflection in the typical case, giving 40% to 100% performance improvement over the idiomatic runtime introspection mode.

Idiomatic encoding and decoding types within go typically relies on the reflection capabilities of the go runtime. This affords flexible performance without the need for a pre-compilation step; the go types contain all the information needed and the runtime exposes the full types via reflection. However, introspecting the runtime to get this information has a noticeable overhead, which can be eliminated by a pre-compilation/code-generation step.
Yet Another JSON Library? But Why?
By Ugorji Nwoke   16 Dec 2014 (updated 01 Jul 2019)   /blog   technology go-codec
And let me answer …

The encoding/json library bundled with the standard library is a GREAT piece of software.
go-codec: Primer and How To Guide
By Ugorji Nwoke   21 Dec 2014 (updated 01 Jul 2019)   /blog   technology go-codec
go-codec is a high performance and feature rich library that provides idiomatic encoding and decoding support for msgpack, binc, cbor, json and simple formats. It supports both runtime introspection (reflection) and code generation. Below, we will walk you through using it for your serialization needs.

Supported formats:
go-codec supports cbor? What is a CBOR?
By Ugorji Nwoke   15 Dec 2014   /blog   technology go-codec
Glad you asked. cbor stands for: Concise Binary Object Representation .

cbor is a relatively new binary format which builds upon the simplicity of messagepack and json. It is currently being targeted agressively in the internet-of-things space. It is a kick-ass format.
Re-Introducing Go Codec Library: msgpack, binc, cbor, json and more formats
By Ugorji Nwoke   15 Dec 2014   /blog   technology go-codec
The go-codec library is a High Performance , Feature-Rich and Idiomatic Go encoding/decoding library for binc , msgpack , cbor , json , with runtime reflection or compile-time code generation support. View Source at .

Sometime in 2013, we announced go-codec as a library for msgpack. The go-codec library has come a long way since then.
Serialization In Go
By Ugorji Nwoke   14 Dec 2014   /blog   technology go-codec
For data transfer between systems to occur, the sending side must encode the data structures into a stream of bytes, and the receiving side must efficiently decode the stream of bytes into a representative data structure.

There is efficient and extensive support for this when using go as your language runtime. The standard library provides support for the following general-purpose encodings:
Update on Binc data interchange format
By Ugorji Nwoke   05 Jun 2013   /blog   geek technology
We describe enhancements to the Binc data interchange format since its public release.

Also, the Binc spec is now stored on github ( ). This allows us track revisions and affords better collaboration.
Announcing Go codec library for msgpack and binc
By Ugorji Nwoke   30 May 2013   /blog   golang technology
Go codec is a High Performance and Feature-Rich Idiomatic Go Library providing encode/decode support for different serialization formats, including msgpack and binc . Get it while it’s hot at
Announcing Binc data interchange format
By Ugorji Nwoke   30 May 2013   /blog   technology
Binc is a lightweight, compact, limitless, schema-free, precise, binary, high-performance, feature-rich, language-independent, multi-domain, extensible, data interchange format for structured data.

See the format documented at
Announcing go-msgpack
By Ugorji Nwoke   11 Apr 2012   /blog   golang technology
Announcing go-msgpack, a rich msgpack codec for Go. Supports encoding/decoding to msgpack binary format, and use for net/rpc communication.
Streamlining Go App Engine Runtime
By Ugorji Nwoke   16 Mar 2012   /blog   appengine geek golang technology
With App Engine, the Go Runtime is a mashup of Python Runtime, Go SDK and glue code (Go and Python). This poses some challenges during development, which this proposal addresses with solutions.
Trayvon Martin: Unarmed black kid shot for walking in wrong neighbourhood
By Ugorji Nwoke   14 Mar 2012   /blog   social
Trayvon Martin: Unarmed black kid shot for walking in wrong neighbourhood. His killer must be prosecuted.

UPDATE: Mar 19, 2011
Dev Tool for GO AppEngine
By Ugorji Nwoke   03 Dec 2011   /blog   appengine geek golang technology
Development Tool for go app engine development, that presents an easier to use wrapper for App Engine development with GO Runtime, bypassing some pitfalls caused by integration with the Python SDK.

The source is available online, and the motivation for building this is described below. What irks one person may not irk the other, so your utility of this tool may differ from mine. For me, the utility is really high:
GO App Engine datastore operations design
By Ugorji Nwoke   16 Nov 2011   /blog   appengine
GO App Engine datastore.Load/Save uses goroutines and channels to iterate over datastore entity properties, causing overhead.

Background With GAE 1.6.0, Support for Indexed Properties, Hooks, etc was introduced with a nice, elegant design using a PropertyLoadSaver interface that uses channels (as an iterator).
Testing Go App Engine Applications natively
By Ugorji Nwoke   14 Nov 2011   /blog   appengine geek golang technology
With changes to allow concurrent requests in Go App Engine, Testing support follows naturally and natively.

Following support for concurrent requests described previously, Testing support is as easy as ensuring the following is called one time before your test is run. I have tested it and it works flawlessly.
Enable Concurrent Requests in Go App Engine SDK
By Ugorji Nwoke   14 Nov 2011   /blog   appengine geek golang technology
This details how to enable concurrent requests in the Go App Engine SDK.
Datastore Enhancement for GO Language Runtime in Google App Engine
By Ugorji Nwoke   27 Sep 2011   /blog   appengine geek golang technology
This attempts to make a case for datastore enhancements in the GO Language Runtime of App Engine.

Quoting from
Objective Gripes with New Google App Engine Pricing
By Ugorji Nwoke   08 Sep 2011   /blog   appengine geek technology
This attempts to objectively address areas where the new App Engine pricing may not not fair, and what Google may do to alleviate these concerns.

Disclaimer I am an unabashed fan of Google App Engine, and have been for over three years. I don’t think there’s anything else on the market that comes close. I think it is a fine platform for any applications, from simpler small ones to large complex ones.
Google App Engine New Pricing Sucks
By Ugorji Nwoke   01 Sep 2011   /blog   appengine geek technology
Google has done a major disservice to its cult of developers by changing the pricing terms of App Engine ridiculously while giving developers short notice to react. In doing so, Google may have done severe damage to their brand and the trust that developers put in them.

Google released app engine in 2008 on a set of premises:
Android Conversation Backup
By Ugorji Nwoke   23 Mar 2011   /blog   android geek
This is a post for all my android users out there.

With Android, Google guarantees us that if we ever lose our android phones, we can just grab a new one. Once we sign in with our google account, it automatically syncs our emails, contacts, and applications (including the settings we have for those applications which support this).
The meaning of my name
By Ugorji Nwoke   03 Mar 2011   /blog   musings
A while back, I was having an email discussing with one of the men I respect most in this world. All my emails are signed as:
Trying to describe my job at Oracle
By Ugorji Nwoke   03 Mar 2011   /blog   rant
I’ve always had a hard time describing what I did at a software company to folks outside software (lawyers, doctors, basketball players, club hoppers, etc). Part of the reason is that I am pretty private and ridiculously modest and overly calculated. However, I was having one of my frustrating days with technology, and someone asked me again to explain, and I just let … said it. Reading the thread later, I am pretty impressed with the description. So I figured I would share.


Subscribe: Technology
© Ugorji Nwoke