My name’s Norman Ovenseri and I think that outlandish ideas are the best.

I don't publicize my social media, so if you want to get into contact by email then WHOIS query the domain.

Recent Posts

  • How to Fix Brave Browser GPG check failed on Fedora

    Updated at February 16, 2020 at the 07th hour

    Oddly kept getting a public key failure on Fedora whenever I wanted to upgrade or reinstall brave browser. Took a while, longer than I would have liked, of searching before I was able to resolve it.

    Public key for brave-browser-1.3.115-1.x86_64.rpm is not installed
    Public key for brave-keyring-1.7-1.noarch.rpm is not installed
    The downloaded packages were saved in cache until the next successful transaction.
    You can remove cached packages by executing 'dnf clean packages'.
    Error: GPG check FAILED

    I think one can reasonably say that Brave screwed up somewhere with their GPG key maintenance.

    I tried the REIMPORT key solution and that did not work.

    The solution was to DELETE the old key and then import the new one.

    Inspect the old key with:

    rpm -q gpg-pubkey --qf '%{NAME}-%{VERSION}-%{RELEASE}\t%{SUMMARY}\n'

    You should need the old key: gpg-pubkey-c2d4e821-5d13a788    Brave Software <support@brave.com> public key

    Delete it with:

    sudo rpm -e gpg-pubkey-c2d4e821-5d13a788

    Rerun the inspection command to check if it is still there.

    sudo rpm --import https://brave-browser-rpm-release.s3.brave.com/brave-core.asc

    Install the new one with:

    The new key is:

    gpg-pubkey-c2d4e821-5e22514c    Brave Software <support@brave.com> public key

    Then reinstall

    sudo dnf install brave-browser
  • Bad Management: DoorDash Forced Arbitration Clause

    Updated at February 13, 2020 at the 15th hour


    "DoorDash contractors have turned a forced arbitration clause in their contract against their employer, as a federal judge has ordered DoorDash to arbitrate 5,010 labor disputes, potentially costing the company millions in arbitration fees"

    Another case of "Ooops, we didn't see that coming" when management tries to shift costs to customers and employees to dissuade lawsuits. Any competent lawyer would have told these companies that arbitration doesn't scale. Short sighted crap that comes out of management coupled with the "if it works don't change it" culture.

    I relish in the fact that time after time that the "if it works don't change it" culture leads to shitty overall quality. Seen this over and over with software, with laws, with belief systems. Any human made is subject to change and it is unnatural not to. Who still uses taxis in cities where UBER is? Who still uses Internet Explorer? Taxis still work, IE6 still works, but the times change and what works doesn't mean it shouldn't change.

    DoorDash's service is likable, but their management stumbles in PR. The dynamic tips trash fire was easily avoidable (inform your customers), but no let's do some shady shit until customers complain with their ...

  • `npm link` does a bad job of linking package dependencies.

    Updated at February 12, 2020 at the 06th hour

    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 version across multiple local dependencies are considered separate.


    App A -> Lib A -> Lib B

               -> Lib B

    One would reasonably believe that if all of these modules are linked together via npm or yarn link that there would be one instance of each module. No.

    App A has its own instance of Lib B, so if you were relying on a cache in Lib B it would not be shared, so there would be inconsistency.

    Ridiculous. Wtf?

    In my case, I am using class transformer which caches a decorator. My application cannot see what a linked library's cache looks like, so the transformation is incomplete and causes an error! One of the single dumbest design decisions ever.

    I've run into this issue with log4js library when it tries to do what log4j does with having global instance. I really had no understanding why it was occurring, but I knew it was due to `npm link` through trial and error, so ...

  • C5Store: The Best Runtime Configuration Store for Applications

    Updated at February 09, 2020 at the 12th hour

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

    C5Store is a comprehensive answer to the "what config library should I use for dynamic runtime configuration" question. Library is available here: https://github.com/normano/c5store


    I've scoured around for configuration libraries in multiple languages and find them to be lacking in how they are defined, integration and flexbility with existing configuration sources, and then how to pass them around in an application.

    I always found myself asking what configuration library should I use? Always have to cobble something together if I am not using a framework in a specific language.

    Traditionally, one could use environment variables to pass runtime settings into an application. Shortcoming is that you need to restart if a setting changes. Environment variables are useful in the case of constant settings.

    Dynamic runtime configuration landscape is chaos. No agreement on how to get settings from a file or network (db and otherwise) in to your application across multiple languages. Spring and ASP.net Core has done really well with configuration, but outside of that you are ...

  • Tim Ferriss' Reasons to Not Become Famous

    Updated at February 09, 2020 at the 09th hour


    Very real and intense article by a guy I've never heard of

    Maybe it is the energy he and other celebs put out that attracts the fans and intense fans (crazies and stalkers). Freedom can be a boon for mental people in getting to their targets. Imagine that, some guy reading your posts from across the nation thinking you were saying he had to move in with you and actually going to do it. Fuckin' A, I know I would go get a gun license quickly right after that. The paranoia after that episode would be enough that you'd shoot to kill.

    Steve Jobs was able to walk around without the intense shit like this, but his crowd was more people who like a product rather than the people/personality, so I guess his exposure was much more limited.

  • Facebook Engineering Talks and Papers

    Updated at February 13, 2020 at the 03th hour

    Figured I start keeping track of talks and papers that Facebook developers produce that I found interesting. I'll keep the list updated.


    2008, Zuckerberg on Memcache at Facebook (https://www.youtube.com/watch?v=UH7wkvcf0ys)

    2013, Large-Scale Low-Latency Storage for the Social Network - Data@Scale (https://www.youtube.com/watch?v=5RfFhMwRAic)

    2013, Scaling Memcache at Facebook (https://www.usenix.org/conference/nsdi13/technical-sessions/presentation/nishtala)

    2014, Release Engineering at Facebook (https://www.youtube.com/watch?v=Nffzkkdq7GM)

    2015, MySQL Automation at Facebook Scale - SRECon2015(https://www.youtube.com/watch?v=_DebqFNWJ-k)

    2017, Building Real Time Infrastructure at Facebook - Facebook - SRECon2017 (https://www.youtube.com/watch?v=ODkEWsO5I30)

    2018, State of Systemd @ Facebook (https://www.youtube.com/watch?v=orbyn7cyQqQ)

    2018, Using systemd to high level languages (https://www.youtube.com/watch?v=lBQgMGPxqNo)

    2019, Systemd at Facebook (https://www.youtube.com/watch?v=sPpIeIIU-UU)

    2019, Faster IO through io_uring (https://kernel-recipes.org/en/2019/talks/faster-io-through-io_uring/)

    2019, Systems @Scale 2019 - Scaling Cluster Management at Facebook with Tupperware (https://www.youtube.com/watch?v=UI7XX7vtKZo)

    2019, SREcon19 Asia/Pacific - Building a Scalable Network Event Executor Using GO (https://www.youtube.com/watch?v=qaSJpsdGGAk)


    Gorilla: A Fast, Scalable, In-Memory Time Series Database (https://www.vldb.org/pvldb/vol8/p1816-teller.pdf)

    Scuba: Diving into Data at Facebook (https://research.fb.com/wp-content/uploads/2016/11/scuba-diving-into-data-at-facebook.pdf)

    TAO: Facebook’s Distributed Data Store for the Social Graph (https://www.usenix.org/system/files/conference/atc13/atc13-bronson.pdf)


    Monitoring cache with Claspin, a high density heat map viewer (https://www.facebook.com/notes/facebook-engineering/monitoring-cache-with-claspin/10151076705703920/)

    Third Party Papers

    Facebook Infrastructure Stack (http://malteschwarzkopf.de/research/assets/facebook-stack.pdf)

    Official Channels

    Facebook Developers on YouTube (https://www.youtube.com/channel/UCP_lo1MFyx5IXDeD9s_6nUw)

  • Piece on the Archaic Misbelief around Giving Feedback to Interview Candidates

    Updated at February 06, 2020 at the 21th hour


    ^ What he said

    Maybe the best recruiters are the ones who have been Software Engineers before. Maybe it is a bias on my part. The blog posts around their experiences are gold.

    Companies need to do better at giving feedback or they really should not expect candidates to give any feedback when asked.

    P.S. I am not interviewing anywhere currently. Busy creating my own product.

  • A Hilarious Piece on Trump

    Updated at February 06, 2020 at the 07th hour


    ^ Guy has a point. Shit is beyond Democrats. Should not tolerate the constant barrage of BS from any president.

  • Better Backend Workflow Management

    Updated at January 31, 2020 at the 11th hour

    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 interact with the ticket and some time later the state of the application changes and it performs the action.

    I haven't seen this done via something like Trello or Jira though. You almost always have to interact with the backend system in some way to progress the task. Not very automated is it.

    Since I've been creating a Task Management application, I've have lots of ideas and lots are being or already implemented. I think the best idea though may be for applications to have their own area in the task management system where it could assign a task to a user and set the privacy level only to that user and the user is notified there about updates and waiting for updates from user. All fields are locked down until the application says input is needed. The application could create different kinds of tasks with different sets of properties too.

    Say, you wanted to do a self service DB migration, but the DBA could be ...