Dovid Kopel - Technologist

Technology Consigliere & Innovator, Open Source Evangelist, Geek, Lefty

Musing about computers, technology, and science

May 01, 2025

Dynamic Programming Modules

I’m a big fan of object-oriented programming and also like functional programming. Take a look at this article on NodeJS in the enterprise. I am strong advocate of polyglot systems and that you want to design a system for the various roles and you need to consider technologies often associated with those roles.

May 01, 2025

Chess

The challenge to designing any architecture is to strike the balance between long term and short term goals. I’m not interested in discussing agile and the project management related matters. The general rule of thumb is to keep things simple and don’t do more than you need to. Generally, I’m not involved in a project unless it needs my unique viewpoint and very careful eye. I always say that the closer to real life your system is, the better. The more structurally accurate the modularity and isolation the fewer concerns you will have. A very decoupled architecture will have a great deal more moving pieces. For those who are unfamiliar with that type of system, it can be overwhelming and quite simply wrong. The interfaces for those isolated perspectives are important, not attempting to implement every possible contingency and scenario.

May 01, 2025

Bottom Line

What is OCR? Object Character Recognition. It is the spooky magical technology that lets computers read our documents and images. I’m not going to discuss the details of OCR, rather where OCR ends

December 01, 2023

The Frugal Architect Explained

After combing through the words of the brilliant Werner Vogels regarding cost-based architecture, I felt I wanted to elaborate on his concise and precise words. Here the word product is interchangeable for product, service, component, module, application, system, etc.

November 05, 2023

pg_cron

If you have any large relational databases there is a good chance that you are using materialized views. One way that you can refresh your materialized views is via trigger on insert or on uppdate to a table. This can often be too often and cause issues. Until recently when using Spring I would use the @Scheduled annotation and run a refresh materialized view directly from the application. This is fine but you may end up with a large number of @Scheduled methods and that can cause collisions and other unfortunate circumstances. I had always wondered what if I could just schedule a query to be executed on the database itself. It turns out that this exists and is very easy to setup and utilize.

March 12, 2023

Amplify

If you are looking for an end-to-end solution for a data centric application, Amplify might be for you. Amplify is aimed to be a complete solution from frontend design to authentication and even data. The service is heavily based on the GraphQL and AppSync concept. Let me dig in a bit what this means. With GraphQL you define a model or schema. That schema drives everything else. Amplify will create necessary data storage to support the schema defined, this is in the form of DynamoDB tables. Then their CLI tool will create client-side bindings in JavaScript that give you direct access to CRUD operations on your schema. It is that simple. Until it’s not.