Thoughts on technology, movies, and everything else
I work in technology sector. And I do round a clock, not only from 9 to 5. It is my bread and butter, it is my hobby, it is the fascination of my life. And with the current rate of change particular in information technology (IT), there is always something new to learn, to try, to talk about. I often post news, thoughts, and reviews. And when I do, this is the category I use.
For quite some time now I wanted to play around with the recently added JSON type in MySQL. Finally, I have a project where MySQL version is high enough to support it, and the requirements are such that this choice makes sense.
The first impression was great – JSON type is basically LONGTEXT type with a bunch of added functionality to manipulate JSON data. It took no time to setup tables and necessary queries to work with it.
The second iteration though raised a few questions. Large tables, with complex JSON structures were rather slow in some of the more complex queries. The first solution to look at was obviously indexes. Turns out, MySQL does not support indexing of the JSON fields. Bummer.
But there is a rather elegant work around. It involves another recently added feature, of which I haven’t heard about until today – GENERATED columns. Think of table views, but on the column level, not table level. And generated columns can be indexed.
In fact, there’s a whole lot that you can do with GENERATED columns in general, and JSON data in particular. This blog post – “MySQL for JSON: Generated Columns and Indexing” – provides a great starting point with examples and explanations, including a scenario with the primary key of the table being a generated column, with the data from the JSON-typed column.
Here’s one of the best YouTube videos I’ve seen in a very long time. In fact, I love is so much, I’ve decided to take in effort beyond just sharing it. Watch it first, and then I’ll share a list of reasons why I love it.
So, here we go with my own personal reasons of why I love it. In no particular order, as always.
It’s not about COVID-19/Coronavirus.
It’s positive, nice and kind.
It’s funny. Not like stupid funny, or stand-up funny. But it still is.
It has substance. It’s not a video for the sake of video. It’s a video about a rather long and complex project, which took a lot of effort.
It bridges the real world and technology, and shows how one helps the other.
It’s very personal, yet very global.
It demonstrates one of my strong believes, that even simply asking for something, even from total strangers, has merit. Not everyone will respond. Not everyone will respond in the way you want them to. But overall you’ll get more than you thought you would.
Cyprus made it high up the recognition list.
Political neutrality. A lot of the countries mentioned in this video, have a long, complex, and often violent relationship with each other. Yet, that doesn’t matter for this particular project.
Free stuff. Who doesn’t like free stuff.
Production of the video. It’s not over the top professional production, yet it’s not an amateur talking head, filmed on the mobile phone in the car.
Maps. I love maps, and especially checking them off on the global map. Bonus points for more than one color for checked out colors.
Flags. Even though I don’t collect or study flags, I love flags and their designs.
It’s work and family friendly. Easily shareable with everyone I know.
Bonus point: it just makes me feel good about the world.
Whether you are an experienced shell user, or just a newbie, have a look at this article for a collection of the great tools and examples of how to process text in the shell. It includes all the usual suspects: cat, head, tail, wc, grep, cut, paste, sort, uniq, awk, tr, fold, and sed. Great examples and real life scenarios for each are also provided, with the logic explained and more complex use cases broken down into steps.
I came across this nice article outlining some of the tips for implementing the software release process.
Software Development process is not complete and mature without a well-defined release process for the software applications. Every software application needs to be delivered or deployed at some point in time and for agile projects, this is happening more often. Therefore, there is a need to maintain software quality across the application releases to avoid deploying untested or malicious code to production environments.
Defining a release process for software applications helps in ensuring that software releases maintain a constant release quality. In addition, software changes and new features are traceable or can be correlated to specific releases easily. As a result, changelogs and release notes are easier for a generation.
I do agree with most of what is being suggested. And if there’s one thing to add to these suggestions, it’d be a clear versioning convention. Personally, I’m a big fan of the Semantic Versioning.