View Posts for Software Engineering
Typescript 4.7 Supports SubPath Exports and Imports
Updated at August 13, 2022 at the 05th hour
Categories
You ever wonder how other libraries exposed their library's internal paths with shorthands: @namespace/pkg/subpath? I did when this I had to expose ESM CJS modules so I could use SvelteKit and use ...
-
I've been an in memory database fan for a long time. They are easy to work with. Hell, SQLlite is used in browsers and mobile apps because relational DBMS are powerful. RocksDB is a powerful key/va...
MessagePack JS doesn't Fully Support Int64
Updated at April 01, 2022 at the 13th hour
Categories
The MessagePack Protocol supports 64bit Integers, but for whatever reason msgpack for js still decided not to fully support 64 bit ints. Javascript supports 64 bit integers through arbitrary bit pr...
Learning about Paxos and CASPaxos
Updated at December 14, 2021 at the 17th hour
Categories
Paxos is regarded as a complicated consensus algorithm much like how Kubernetes is seen as a complicated system. That doesn't mean you should not be curious and take some learnings and insight fro...
Why Flutter is Designed the Way it is
Updated at May 21, 2021 at the 13th hour
Categories
Dart's import_of_legacy_library_into_null_safe is annoying and how to disable it
Updated at December 27, 2020 at the 00th hour
Categories
Flutter/Dart, whatever you want to associate null-safety with. Why is this lint error a thing? The official solution is to migrate the imported library. Lol, I don't believe it is my problem that t...
Best Way to Represent Boolean in MySQL
Updated at December 11, 2020 at the 19th hour
Categories
This is an elegant solution that I quite appreciate because it uses zero data bytes:
some_flag CHAR(0) DEFAULT NULL
To set it to true, set
some_flag = ''
and to set it to false, setsome_flag = NUL...
Today I Learned about Server Sent Events
Updated at November 09, 2020 at the 23th hour
Categories
Started making a "real time" API for my productivity software. I wanted to figure out what is a good way to notify a user's browser that something happened or new popped up so that it would update ...
Today I Learned about Typescript Decorators
Updated at November 07, 2020 at the 23th hour
Categories
Beginning of back to normalcy I think. Back to writing more about Software Engineering and less about the dark road of fascist-like politics and conspiracies.
Technically the idea of decorators for ...
Fixing Gradle Javadoc task failure when using Java Modules
Updated at October 20, 2020 at the 08th hour
Categories
You may be familiar with this shitty error probably using Gradle 6.7:
Caused by: java.lang.ClassCastException: class java.lang.String cannot be cast to class java.util.List (java.lang.String and jav...
One of the Reasons I Love Rust Macros
Updated at October 09, 2020 at the 00th hour
Categories
You just can't beat this feature.
use ::phf::{Map, phf_map}; static MAP: Map<char, &'static str> = phf_map! { 'a' => "apple", 'b' => "bear", 'c' => "cat", };
Makes it so easy to create a...
One Way How Javascript Bundling is Stupidly Complex
Updated at October 08, 2020 at the 11th hour
Categories
Anyone heard of any other language where there are "module" specs? You know specs for how your library will be bundled up in order to expose your library for consumption.
AMD, CJS, UMD, ESM, SystemJ...
-
It has been a while since the last time I looked into CRDTs or Conflict-free Replicated Data types. The name is pretty descriptive in that you want data types that replicate in a conflict free mann...
When to use NPM's Peer Dependencies
Updated at September 21, 2020 at the 10th hour
Categories
I'll keep it short. First tech related post in a while too.
I never used peer dependencies because I did not understand the point. It never installed the library I wanted! So it made no sense to me.
-
Every year I try to see what I can do for my blog. This year, I decided not to change the layout. I think the layout is simple enough.
Instead, I updated the font to use Inter and updated infrastruc...
"Why do Go articles so often have no syntax highlighting?"
Updated at May 26, 2020 at the 10th hour
Categories
https://news.ycombinator.com/item?id=23308644
"Rob Pike, one of the 3 original Go architects, has stated in the past he doesn’t like syntax highlighting"
https://groups.google.com/forum/#!msg/golang-...
-
MySQL's Binary Log is nice to have, but not easiest to use. Change data capture (CDC) is the primary reason why I have to do it. When a user performs and action that causes an INSERT/UPDATE/DELETE,...
My Learnings about DAWGs or Directed Word Acylic Graphs
Updated at April 15, 2020 at the 12th hour
Categories
When I begun with the goal of looking for a better way to compress a string in real time in memory while gaining fast query capabilities, I had a Rust Generalized Suffix Tree built naively on top o...
Obessed with Making a GST Memory Efficient: End of the Road
Updated at April 11, 2020 at the 09th hour
Categories
Update: Found several bugs in my Typescript and Rust implementation that looks to invalidate the results here. Either I stumbled into a way to construct a minimized graph that can find what I want ...
Obessed with Making a Generalized Suffix Index/Tree Memory Efficient Part 3
Updated at March 28, 2020 at the 13th hour
Categories
Part 2: https://www.normansoven.com/post/obessed-with-making-a-generalized-suffix-indextree-memory-efficient-part-2
I am so obessed that I threw away the Suffix Index and pursued its successor, the ...
Obessed with Making a Generalized Suffix Index/Tree Memory Efficient Part 2
Updated at March 28, 2020 at the 12th hour
Categories
Obessed with Making a Generalized Suffix Index/Tree Memory Efficient
Updated at March 28, 2020 at the 13th hour
Categories
I created a Generalized Suffix Index based on a Radix Trie (libART, Adaptive Radix...
-
or the fewest places possible. Cache invalidation is hard, so why make your problems harder by multiplying it?
I've been thinking about a comment made here about "cacheless architecture": https://ww...
Config Triad: Config Provisioning, Management/Distribution and Provider
Updated at March 06, 2020 at the 17th hour
Categories
Couple of months ago I wanted to talk about the Configuration Triad: Configuration Provisioning, Distribution and Provider.
If have not seen my Open Source Config Provider, C5Store, well you can fin...
Git Subrepo is nice alternative to Git Submodule
Updated at February 28, 2020 at the 07th hour
Categories
Link: https://github.com/ingydotnet/git-subrepo
I was thinking about how to distribute configuration (including secrets) in my applications recently so naturally the idea of using git as a way to fa...
How to Cheaply Self Host your Maven/Gradle artifacts without Nexus or Artifactory
Updated at February 24, 2020 at the 05th hour
Categories
Disclaimer: This is more proof of concept than anything else.
I was setting up Sonatype's Nexus yesterday and was very annoyed at the setup ceremony associated with it. I got it working with SystemD...
`npm link` does a bad job of linking package dependencies.
Updated at February 12, 2020 at the 06th hour
Categories
I wonder who thought the way that `npm link` should work figured that no one would ever try to use local modules on their computer. I'm really incensed by the idea that modules that are the same ve...
C5Store: The Best Runtime Configuration Store for Applications
Updated at February 22, 2020 at the 07th hour
Categories
Yes, another application configuration library, but I assure you this is way better than any one of them out there. This is the Provider section of the Config Triad (Provision, Management, Provider...
Facebook Engineering Talks and Papers
Updated at August 12, 2021 at the 00th hour
Categories
Figured I start keeping track of talks and papers that Facebook developers produce that I found interesting. I'll keep the list updated.
Talks
2008, Zuckerberg on Memcache at Facebook (https://www.yo...
At-Least Once Concurrent Cancelable Priority Ordered Repeatable Resumable Asynchronous Job Execution
Updated at February 15, 2020 at the 06th hour
Categories
I remember getting a simpler form of a priority ordered job processing system for a take home interview question. I declined to do it. Just wasn't interested in creating usable compilable code for ...
Better Backend Workflow Management
Updated at January 31, 2020 at the 11th hour
Categories
I could say I've seen this some times when applications would contact a ticketing system to create a ticket and then see where a ticket is before performing an action. Typically, a human would inte...
Recorderable lists a.k.a. Scoring items for Sorting is Pretty Hard
Updated at January 30, 2020 at the 14th hour
Categories
Let's say you have a list of items that you want to sort, but you want it such that a user can change items in the list.
Naively you would give every item a score in an integer range. Typically star...
Trust in Software Engineering Interviews tend to be misplaced.
Updated at January 26, 2020 at the 17th hour
Categories
https://medium.com/@iwaninzurich/why-software-engineers-dont-get-jobs-three-horror-stories-77fd1ae3b875 - This post was written by a recruiter who knows his shit. This is the kind of recruiter to h...
Some Critque of Svelte/Sapper
Updated at February 03, 2020 at the 10th hour
Categories
I've been building an application in Svelte/Sapper that I will release in the near future. Given my previous postings of Svelte/Sapper and use of Svelte for the blog and other applications, I think...
Web UX: Double Click to Edit
Updated at January 22, 2020 at the 11th hour
Categories
I've been working on tthe UI part of the application I've been creating for myself for now that will eventually be released for public consumption. I've used many applications on desktop and they a...
Primary Thing I like about Svelte
Updated at January 18, 2020 at the 23th hour
Categories
I find this primary thing very important. It is compatibility with existing Javascript libraries without having to rewrite them into a svelte-* library. This is the biggest reason why I do not find...
-
Just a few comments since I've been looking into these things as part of my Software Project Management tools research.
Todos: TODOs are very useful. Not just for future thought, but for thought pro...
Software Project Management
Updated at December 30, 2019 at the 03th hour
Categories
No not the project todo sorta thing. The engineering kind where a person creates a project and brings in all sorts of tooling to help them manage their project. Really important to know the tools o...
Social AntiPattern: The Need to Feel Right
Updated at December 23, 2019 at the 06th hour
Categories
I was gonna reply to some hackernews comment before it was deleted. The context is someone asseting storing any binary data in an RDBMS is an anti pattern after I said I store unindexed data as bin...
How I am running Services in a Container like style with SystemD
Updated at December 17, 2019 at the 12th hour
Categories
If you are like me, you just want to run your application in SystemD with no Docker or Kubernetes involved. I made a build/deployment application for my own applications, private closed source, tha...
On the idea of "Just Restart the Application"
Updated at December 10, 2019 at the 22th hour
Categories
The Microsoft Windows days where programs would memory leak and perform illegal operations causing your OS to freak out and slow down and at some point you'd give up and restart the compute and now...
Thought Provoking #1: What is Systems Programming, Really?
Updated at December 08, 2019 at the 16th hour
Categories
A thought provoking read is What is Systems Programming, Really? (http://willcrichton.net/notes/systems-programming/).
I've dabbled on the idea of low level vs high level programming languages befor...
Authz Libraries Are Not Fast especially for a Microservices world.
Updated at December 06, 2019 at the 16th hour
Categories
What makes me want to write this post? Ah, I've been working on my own product and scouring around for a good answer to authorization. Particularly, authorization libraries in NodeJs. Some are real...
Shoutout to Mozilla for Nunjucks
Updated at November 30, 2019 at the 17th hour
Categories
Mozilla maintains Nunjucks (https://mozilla.github.io/nunjucks/), a templating library written in Javascript. Apparently drew its inspiration from Jinja, which is a really good templating lib in Py...
Switching Software Libraries every once in a while
Updated at November 29, 2019 at the 23th hour
Categories
A topic that people tend to discuss about. Stability. Who doesn't want stability? The knowledge you gain by sticking to one thing. It makes you feel safe that you can rely on this thing... say a se...
Few Words about Service Mesh
Updated at November 24, 2019 at the 23th hour
Categories
Terrible Idea. Fuck Complexity.
Proxy for every service? I would fire you for this. Oh, you made managing the proxies manageable? Oh, you can load balance properly? Canary routing? Metrics? OMG, se...
Encrypted Configuration
Updated at November 14, 2019 at the 13th hour
Categories
A.K.A. Secrets. Secrets are not terribly interesting topic outside of servers and databases being compromised by exposed details where we raise pitchforks at those for not keeping their servers beh...
Next Project: Task Management
Updated at November 22, 2019 at the 16th hour
Categories
I've been working for myself for almost two weeks now just trying to lay down some bases and modify some of the logos I got back from freelancers to make it look pleasant. Design and infrastructure...
Terrible Ideas #3: Mangling Technical Patterns
Updated at November 11, 2019 at the 18th hour
Categories
Oh boy, I remember when I started getting familiar with Software Engineering patterns and y'know these patterns have names assigned to them and try to desperately to memorize them because some day...
Terrible Ideas #2: Single Repo or Monorepo on Git
Updated at November 02, 2019 at the 16th hour
Categories
TL;DR Only small MonoRepos on git a.k.a. Multi Repo. Use a MetaRepo if you want one big repo with "partial" checkouts.
I used to work at a company that did single repo (not monorepo) on TFS (This Fu...
For the Next Few Months...
Updated at February 22, 2020 at the 08th hour
Categories
Yeah, so I left my job today so I could finally focus on some of the ideas I've had full time. I've always thought that I would have come up with a consumer business on the side while I was working...
Why I Do Not Store UUID as CHAR or VARCHAR
Updated at September 14, 2019 at the 16th hour
Categories
Misunderstandings
UUIDs.... Such a widely badly stored and used form of identification. Would you believe that people store UUIDs are in MySQL as not only primary key, but CHAR and VARCHAR?! Poor My...
Terrible Ideas #1: Database Model as a Service
Updated at November 22, 2019 at the 15th hour
Categories
Had a go thinking about abstracting database access into a service and the question I have is why? Why bother abstracting this access? What benefit does one get when abstracting the database away f...
Svelte/Sapper is F*cking Amazing
Updated at June 24, 2019 at the 03th hour
Categories
Alright alright, so I dumped React as my frontend framework for this website and that's primarily because Googlebot was being all weird in rendering my pages for search results (this was after I fi...
Building a ZeroMQ based Service Discovery application
Updated at May 24, 2019 at the 18th hour
Categories
Introduction
Service Discovery, the phonebook of applications, is a foundation for services oriented architecture. It answers the question of how does one service dynamically discover the endpoints...
Been Working on a High Performance Async Low Latency RPC Library
Updated at March 03, 2019 at the 19th hour
Categories
Lately I've taken an interest in facilitating Remote Procedure Calls (RPC). Spawned from service management (mgmt) application I've been building in Rust. Along with that service management system,...
Building Java 9 and 10 Modules with Gradle
Updated at October 20, 2020 at the 08th hour
Categories
Introduction
Java 9 introduced the Java Platform Module System a.k.a. JMS, JPMS and Project Jigsaw. With JMS, classloading and visibility are much different than before with modules being the way t...
Storing Creation and Updated Times Metadata in MySQL
Updated at March 17, 2018 at the 15th hour
Categories
A common use case: Let's assume you have an accounts table and you want to know when an account was created or last edited. or you want a log table that stores created time.
First thing I would thi...
I Deployed Today and Recommend react-draft-wysiwyg as a text editor
Updated at March 11, 2018 at the 18th hour
Categories
Alright, so I deployed a new version of the blog to support canonical URLs, new text editor for the backend, and fixed how lists get shown in a post.
Fixed list numbered elements going out of bound...
Why I Think Flutter Looks Amazing!
Updated at March 03, 2018 at the 17th hour
Categories
It has been a while for me to get excited about a language. PHP was the first language I learned, but I wasn't excited about it. It wasn't until I discovered PHP 5 and OOP that I felt an epiphany! ...
Generate SQL queries to update collations for all tables in a DB
Updated at March 03, 2018 at the 15th hour
Categories
Found this gem on another website:
SELECT CONCAT('ALTER TABLE ', tbl.TABLE_SCHEMA, '.', tbl.TABLE_NAME, ' CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;') FROM information_schema.TABLE...
Data Collection, Monitoring and Visualization
Updated at February 17, 2018 at the 04th hour
Categories
For the past two years, I've been focused on the problem of moving data from sensors on networked equipment to data sinks for aggregation, monitoring and visualization purposes. The process is what...I'm surprised at the lack of Media Asset Management software
Updated at February 17, 2018 at the 04th hour
Categories
Few resources on the topic
- http://www.dpci.com/blog/making-case-digital-asset-management
Performant and Lock-free do not mean what you think
Updated at February 17, 2018 at the 04th hour
Categories
I think of words that have a lack of definition like performant as an indicator of whether an author knows what they are talking about. "Performant" ain't a word and even if it was what does it mea...Efficient LRU Cache in Java
Updated at February 17, 2018 at the 04th hour
Categories
Fun fun stuff to do in lintcode. I mean we can always incur a linear traversal using a LinkedList if one wanted a simple way to do LRU, but why not challenge myself.public class LRUCache {
p...