OPRETO BLOG

The Dilemma of Third-Party Apps in a World of Closed Systems

The Dilemma of Third-Party Apps in a World of Closed Systems

2 minute read

You use all sorts of online services. I know, because you’re using one right now to read this post. You also very likely use third-party applications of some kind to enhance your experience of those services: a browser extension, an alternative to the official mobile app, an AI news bot you follow. To come to life, these applications need some means of interacting with their target service in particular ways. For those of us accustomed to the open source world, there would appear to be two possibilities: either the service has an external API for that, or nobody has created one yet. (And, in the second case, as developers, we have the option to go ahead and implement it ourselves.) Sadly, because most big online services with majority market share are commercial and under centralized control, three closely-related alternate possibilities are all too common: you can’t do what you are tying to do, either because the provider has decided not to provide an external API for it, or beca...

Why I Love Lightweight Architectural Decision Records

Why I Love Lightweight Architectural Decision Records

3 minute read

Legacy projects are where development teams go to die. Ok, I’m being a bit dramatic, but keeping teams motivated to work on legacy codebases is challenging for a host of reasons: Complexity: Old code can be big and confusing. Obsolete Tech: Old systems often use outdated technologies, making work challenging and learning new things difficult. This not only makes work challenging but also keeps developers from learning new, marketable skills, which can make them less competitive in the job market. Known Antipatterns: Teams often have to work with known coding practices that are best to avoid. These bad practices can make maintaining the codebase frustrating. Technical debt: Shortcuts in code over time can create a tangle that’s hard to change or fix. Limited Creativity: Working on old systems usually means fixing problems, not creating new things. Slower Work: Old systems might not work well with modern tools like CI/CD, slowing development down. No Guides: Many old ...

Beyond the Monster: Embracing the Friendly Giant of Feature Flags

Beyond the Monster: Embracing the Friendly Giant of Feature Flags

2 minute read

Feature flags: your worst nightmare or a secret weapon? It’s funny how clients react when we first pitch them on feature flags. It’s like they’ve seen a monster, but soon, they’ll realize it’s just a friendly giant. Let’s unpack this. Change can be daunting, especially when it comes to familiar systems with known reliability standards. We’re constantly walking the tightrope between innovation and reliability in the tech world. So, when we pitch the idea of feature flags to clients, you can see the uncertainty in their eyes. The uncertainty stems from perceiving feature flags as a risk—a leap into uncharted territories. The concern revolves around the potential for increased complexity and the dreaded possibility of bugs slipping into the live system. These are valid fears. But, fear not. I think it’s time we unmask this friendly giant. Feature flags, fundamentally, are powerful controls within your software. They function as on/off switches for different facets of your program, e...

Why You Need A Federated Software System

Why You Need A Federated Software System

7 minute read

To date, most enterprise systems targeted at specific industries have been designed as centralized systems, rather than those with open protocols and a federated model. Adopting a federated model for a systems architecture is typically deemed to have too much complexity and risk. This has, since the advent of computing, funneled organizations into buying proprietary software from controlled silos which do not afford flexibility and portability for their critical data, and which inherently ultimately undermines their autonomy. If an industry is particularly fertile ground for IT system innovation, they may see multiple competing vendors carving out kingdoms of clients; this is the current scenario of least harm, and usually the only options in front of a procurement officer tasked with buying software for their enterprise. How can you retain your autonomy as a business, and still exchange and interact with others in your industry network? The answer is: Federation. For smaller, less...

The Triumph of Open Source: Mixxx

The Triumph of Open Source: Mixxx

1 minute read

I first tried the open source DJ software Mixxx in the early 2000s. At a time when most DJs were still spinning vinyl and the CDJ-1000 was the new hotness, I was an accidental PC pioneer. For a tech-savvy seventeen year old working a summer job for seven dollars an hour, the choice between records, expensive and at their nadir, and Napster, free and at peak popularity, was a no-brainer. MP3s of 0-day hits were the fuel for the party, my brand-new cable broadband was the pipeline, and a relatively obscure Australian product called OtsJuke DJ was the engine. Back then, I was a die-hard FreeBSD and Linux fanboy, but OtsJuke DJ only ran on Windows. When news of an open source, cross-platform DJ software project hit my ears, I downloaded and compiled it straight away. Unfortunately, these were the days of finnicky and unreliable Linux audio, and Mixxx itself was in its infancy. I kept a Windows computer around for my serious DJ work. In the years after my final paid gig, I played arou...

The Need for Threat Modeling

The Need for Threat Modeling

5 minute read

Threat modeling, a proven process for identifying potential system vulnerabilities, often needs to receive more attention in strategic cybersecurity conversations. Given the rising cyber threats such as ransomware, the need for threat modeling is more pronounced than ever. By anticipating such threats, threat modeling paves the way to enhanced resilience. The Backbone of Threat Modeling: Zero-Trust Architecture and Principle of Least Privilege At the heart of threat modeling is the ‘Zero-Trust Architecture,’ a paradigm that proposes no one within or outside the network is inherently trustworthy. When we marry this with the ‘Principle of Least Privilege,’ we establish a robust defensive framework, which provides only essential access for each workload. However, its application demands meticulousness. An overzealous implementation may lead to excess restrictions, creating bottlenecks and hindering operations. On the other hand, a lax approach can result in inadequate security measu...

The Art of Camera Use in Remote Meetings

The Art of Camera Use in Remote Meetings

2 minute read

In the era of remote work, the camera has become our best friend and worst enemy. At Opreto, we’ve discovered how to tap into its power without succumbing to energy drain. It’s not about being “on” all the time, but rather being “on” when it truly matters. Take, for example, our interactions with clients during standard agile ceremonies or other meetings. In these instances, our commitment to camera time is unwavering – a total 100% engagement. Our promise is to provide a professional, fully present service. However, things take a different turn internally. A full day with the camera rolling can be like running a marathon, eventually leading to “Zoom fatigue.” Being perpetually “on” can damper our energy levels and productivity. Here, we kick back a bit. Camera use isn’t merely an on-off switch. It’s more of a dial, adjusting with the intensity of the meeting at hand. Think of a casual discussion around new features or bugs. Seeing our team’s reactions can be valuable. Facial exp...

The Coming Age of AI: Eight Billion Idiosophies

The Coming Age of AI: Eight Billion Idiosophies

7 minute read

What the Internet has begun, Generative AI will complete. There are some people these days that beat the drum of fear about Artificial General Intelligence, and the chaos that it will supposedly wreak - perhaps (some say) to the extent of wiping our species from the face of the earth. But we do not have AGI, and the type of AI we have now is nothing like it. Even so, Generative AI poses its own existential threat to the human species - above and beyond the jobs it might take. We might not last until the advent of Artificial General Intelligence, which can think and act like a human being - if such a thing is actually even possible. We may be wiped out by the kind of Artificial Intelligence we already have, and our own hands will be the ones wielding the knives. And it will all be because we have blinded ourselves with the output we asked it to craft on our behalf. I’ve been exploring the liminal dreamscape realm of Generative AI models, checking their fit, observing the war. So...

Bricks and the Unix Philosophy

Bricks and the Unix Philosophy

3 minute read

My first experience with Unix was my father’s Silicon Graphics Indy workstation, whose sleek new Indigo Magic Desktop hid all the complexity behind what was arguably, at the time, the world’s most beautiful desktop GUI. Much like the first time I found myself firing up the C shell command line for the first time on that system, I had my first go at masonry work out of necessity. My home is ancient by Western Ontario standards. It was built in 1866, on a fieldstone foundation that might be a century older, following a fire that completely destroyed the previous structure. The 1861 census lists that earlier iteration as a frame house. Understandably, the owners opted to replace it with three-wythe brick construction. Over 150 years and some significant interior renovation later, I inherited a number of masonry projects: repointing the original lime mortar, replacing spalled bricks, bricking in old windows, rebuilding the basement stairs and door frame, repairing the bench footing ar...

Harnessing ChatGPT for Career Growth

Harnessing ChatGPT for Career Growth

3 minute read

Career development is a topic that frequently comes up during 1-1 meetings. It’s essential to consider our future, the opportunities we can unlock, and the skills we need to learn. Yet, many organizations and managers make career transitions difficult, either by design or by lack of process. Recently, I’ve started using ChatGPT to help create curricula, and this has been valuable. At Opreto, we believe that nurturing personal growth is crucial to fostering a culture of growth. We take pride in helping our employees thrive, and we have discovered that ChatGPT can contribute real value, and do so in a way that is a natural fit with our processes. The Traditional Way: A Tedious Process In the past, when designing a learning path for myself or others, my process was: Research appropriate positions, job descriptions, posts, and Wikipedia entries. Identify key skills, experiences, credentials, and processes. Identify intermediary positions using various org-charts. Use resour...