Opreto Blog

AI Artists Have No Idea What a Head Is, or How Arms or Hands Work

AI Artists Have No Idea What a Head Is, or How Arms or Hands Work

4 minute read

As marvelous as some of the images generated by the current crop of Stable Diffusion Generative AI models may be, there are subjects that it cannot render well. In this post, I will be visiting some of the nightmare fuel that Stable Diffusion can inadvertently produce. Specifically, I will be examining its inability to comprehend and generate bodies, heads, and hands. These are things that still need authorship by a human artist (at least for now). I’ve been exploring the liminal dreamscape realm of Generative AI models, checking their fit, observing the war. Some of the things I’ve found have been deeply moving, some inspiring, some terrifying or disturbing. This is part of a series about my journey and the best practices (and anti-practices) I find for these new tools. I asked Midjourney for a yellow snake, and it gave me this: In the generative model for Stable Diffusion, the algorithms at play are determining the pixels that live next door in a probabilistic way, having bee...

Stable Diffusion As a Tool: The New Generative Genie

Stable Diffusion As a Tool: The New Generative Genie

4 minute read

ChatGPT, Dall-e2, and Midjourney (and ilk) are having a moment. Their user growth is explosive, news coverage is fawning, mind share is off the charts. Their generated text and images are everywhere. There is no doubt that the Stable Diffusion Generative AI models that underpin these systems are a powerful tool for communication. But this efflorescence of Generative AI models trained on large datasets has also led to at least one interesting orthogonal experience as well. I refer to the special evolution of the hyper-modern and fascinating “generative genie” shared user experience in Midjourney. I’ve been exploring the liminal dreamscape realm of Generative AI models, checking their fit, observing the war. Some of the things I’ve found have been deeply moving, some inspiring, some terrifying or disturbing. This is part of a series about my journey and the best practices (and anti-practices) I find for these new tools. First, a disclosure: I love Midjourney. I am a Midjourney user ...

How to Start New Agile Software Projects: Building Healthy Teams

How to Start New Agile Software Projects: Building Healthy Teams

6 minute read

Building a good new agile team for a software development project requires more than just finding the right skills for a cross-functional team; it also needs governance, security, and an immune response cycle to maintain the wellness of team dynamics over time. What are the vulnerabilities for working teams, and how should you structure agile teams from the outset to promote and persist their healthy operation, and allow them to thrive over time? This post is part of a series. Check out the other posts in How to Start New Agile Software Projects. The Architect role At Opreto, we include an architect position in every team. The architect role has evolved over the past decades, from delivering front-loaded technical design, systems integration and initiative planning to one that also focuses on empowering teams, strengthening communication, and facilitating healthy teamwork. Team dynamics Software Architects lead the way when it comes to establishing communication guidelines and ...

How to Start New Agile Software Projects: Building Good Teams

How to Start New Agile Software Projects: Building Good Teams

5 minute read

The software team; that diverse mix of personalities, knowledge, skills, and experiences, is at the center of every project. It’s the stuff that makes your project tick. It’s more important than a great requirements document, more important than a perfect software architecture, and more important than funding. Well… maybe not that last one, but without an effective team, you probably won’t be able to deliver on the vision that got you the funding in the first place. This post is part of a series. Check out the other posts in How to Start New Agile Software Projects. Today, we’ll explore key topics essential for building a high-performing software team, including starting points for recruiting, and creating a “whole team”. We will discuss team dynamics, and the importance of psychological safety in a post next week. It’s worth noting that building and leading high performance teams is a complex problem space with many factors that have a direct impact on the outcome. There are sev...

Should It Always Be Agile?

Should It Always Be Agile?

4 minute read

Agile methodology was largely organized as a reaction to the perceived disadvantages of the Waterfall model of project management, and the various kinds of impact (personal, professional) it had on software developers. But the landscape at the time was complicated, and the reaction has been an overreaction. Agile software development is really great, and it has become a necessary component for the industry, and we write about it a great deal here on this blog. But there is more to be said about the systems that came before, and the ways they might be blended with agile, the New Kid on the Block, to achieve even greater things. In engineering complex systems, the best designs can usually be achieved by considering and manipulating the properties of the system as a whole, rather than focusing only on smaller components and their interfaces. John Carmack gave a 2017 tech talk at UMKC with some excellent and detailed practical examples. The field studying this level of design is known ...

The Importance of Software Architects in Agile Development

The Importance of Software Architects in Agile Development

6 minute read

The role of the Architect in an agile delivery group is a crucial one that is often misunderstood, with its importance understated. But architecture is critical to the success of any software project, and even more so in an Agile software team, as the Architect has additional key roles there. Armed with technical expertise and the ability to provide direction, Architects ensure that projects are completed with high quality, efficiency, and the right tooling. In addition, architects manage technical risk, foster collaboration, and play a key role in driving innovation within the team and the organization. The combination of technical knowledge, leadership, and strategic thinking makes the Architect an indispensable member of any agile delivery team. In this article, we will examine the role of the Architect in greater detail, highlighting the essential responsibilities and the benefits of having one on your agile delivery team. Providing Technical Direction During an agile softwar...

When Everything is Excellent, Nothing is Excellent

When Everything is Excellent, Nothing is Excellent

5 minute read

The current crop of generative AI (ChatGPT, Dall-e 2, etc) may be a blessing for individuals, but they could prove a pestilence for our civilization in the short term. For every door they open, it seems to me they also threaten to wipe away whole towns of visual artists and copywriters. And as consumers of information, we are doomed to be overwhelmed, our attention span drowned in torrents of content. Our eyes and minds will be overfull. Our time will be drained away by too much being said too well, and sharing platforms that monopolize our attention too well. I am full of sadness for my ten year old daughter, who just discovered cartooning. It’s all she wants to do. Her room is littered with sheaves of paper covered with pirouetting sausage-limbed mannequin sketches, as she explores the dance in drawing; paper mountains of eye sketches (squinting eyes, glaring eyes, cute eyes, dragon eyes); piles of tortuously drawn hands, wrought by tiny hands and an ever growing collection of pe...

To Infinity and Beyond: The Efflorescence of SaaS

To Infinity and Beyond: The Efflorescence of SaaS

7 minute read

There are many software systems that can help your business grow and succeed; many of these have undergone capitalization and become well-known Software as a Service (SaaS) offerings, while some are open source software systems you can freely download, modify and host yourself. It is increasingly rare to commission and run software systems built to your specifications by software artisans. You might be asking yourself whether to pay the subscription costs for a SaaS product, or if you’re better off putting in some development and deployment work to host and support your own in-house systems. Well, there is a secret benefit to using SaaS solutions that makes it more appealing for nearly any use case, with one glaring exception where it makes more sense to run your own servers. All software systems cost money and time. The systems you choose to host yourself incur hosting fees, development and support costs, and often, at the small size of a boot-strapping startup, the time and energ...

Swiss Army Knives Are Agile

Swiss Army Knives Are Agile

4 minute read

Every discipline and every niche has a “Swiss Army knife of X”. Why are they so prevalent, and what makes them so valuable to engineers and software developers? In the summer of 2003, I acquired my first truly useful Swiss Army knife. I had been working my first term as an electrical engineering co-op on the floor of an automotive aluminum foundry. The facility was highly automated, particularly by foundry standards, and one of our suppliers, Güdel, one day brought branded Classic SD pocket knives in as promotional swag. My supervisor tossed one across the office to me, and it became one of a few lasting impacts he had on my life: two decades later, I still carry one with me everywhere I go (though I’m on my fourth or fifth now, thanks to encounters with airport regulations and nightclub bouncers over the years). The Classic SD is a small knife, 58 millimeters long and weighing 21 grams. It has seven tools: a blade, a screwdriver and nail file, scissors, tweezers, a toothpick, and...

How to Start New Agile Software Projects: Selecting An Architecture

How to Start New Agile Software Projects: Selecting An Architecture

3 minute read

In my last post, I described the initial phase of determining the trajectory for a greenfield softtware project. Once you have established your vision and created a roadmap, the next step is to decide how the software system is to be built. This involves finding a suitable architecture for the system and devising a macroscopic design of the different components and interactions involved. This post is part of a series. Check out the other posts in How to Start New Agile Software Projects. Identify Qualities, Constraints & Risks I usually rely on the following documents to accomplish this step: Architecture diagram In order to produce a useful architectural diagram of your solution, you need to spend some time thinking about how much architecture is actually required of the project. After all, every system has an architecture, whether it was planned or not. You could rely on a canned architecture that is tied to the infrastructure or framework you’ve decided to use, or you c...