HN user

gengstrand

157 karma

Advising 12 factor cloud native architectures with less complexity and more scalability for improved performance, lower cloud bills, lower maintenance costs, faster time to market, and more secure.

Current interests include AI (both predictive and generative), distributed consensus, and open source.

Currently exploring how LLMs can enhance and augment the developer experience.

You can contact me at media at glennengstrand.info

Posts79
Comments134
View on HN
news.ycombinator.com 6mo ago

Ask HN: Will agentic AI grow to handle technology leadership responsibilities?

gengstrand
4pts1
www.exploravention.com 1y ago

Show HN: Ask the Software Architect

gengstrand
2pts0
www.infoq.com 2y ago

Experimenting with LLMs for Developer Productivity

gengstrand
1pts0
glennengstrand.info 3y ago

Scala vs. Java

gengstrand
1pts0
glennengstrand.info 7y ago

Building Better Microservices with Machine Learning

gengstrand
3pts0
glennengstrand.info 7y ago

EKS vs. GKE

gengstrand
2pts0
www.infoq.com 7y ago

Evaluating Hyperledger Composer

gengstrand
2pts0
glennengstrand.info 8y ago

Revisiting Scala

gengstrand
1pts0
news.ycombinator.com 9y ago

Ask HN: How can I improve the performance of this Node.js app?

gengstrand
1pts2
glennengstrand.info 9y ago

DropWizard vs. Ring

gengstrand
1pts0
glennengstrand.info 10y ago

Micro-Services: Scala vs. Clojure

gengstrand
2pts1
glennengstrand.info 11y ago

Micro-Services: Clojure vs. Scala

gengstrand
2pts4
glennengstrand.info 11y ago

Functional Programming and Big Data

gengstrand
2pts0
news.ycombinator.com 12y ago

Ask HN: Which tech conference would you attend?

gengstrand
3pts5
www.dynamicalsoftware.com 12y ago

Building a Scalable News Feed Web Service in Clojure

gengstrand
1pts1
www.dynamicalsoftware.com 12y ago

Taming the Single Writer Principle: Mule vs Camel

gengstrand
1pts0
www.dynamicalsoftware.com 13y ago

3 Ways to Customize Solr 4

gengstrand
1pts1
it.toolbox.com 13y ago

The Cloud Wars

gengstrand
1pts1
www.dynamicalsoftware.com 13y ago

Tips for Model Driven Software Development

gengstrand
1pts1
ccmbeta.dynamicalsoftware.com 14y ago

Scalable Architecture for Real-Time Communications

gengstrand
1pts1
www.dynamicalsoftware.com 14y ago

A New Approach to Online Collaboration

gengstrand
1pts1
www.dynamicalsoftware.com 15y ago

Conversational Content Management

gengstrand
8pts2
www.dynamicalsoftware.com 15y ago

Analytics Part 3 - Graphing

gengstrand
1pts0
www.dynamicalsoftware.com 15y ago

Analytics Part 2 - Data Selection

gengstrand
2pts0
www.dynamicalsoftware.com 15y ago

Complex Event Processing

gengstrand
4pts1
www.dynamicalsoftware.com 15y ago

Analytics Part 1 – Logging

gengstrand
1pts0
www.dynamicalsoftware.com 15y ago

Scalable Server Side Language Parsing

gengstrand
1pts0
it.toolbox.com 15y ago

The Age of the Activity Stream

gengstrand
1pts0
www.dynamicalsoftware.com 15y ago

Favorite Eclipse Plugins

gengstrand
1pts0
www.dynamicalsoftware.com 15y ago

Tigase vs Openfire

gengstrand
1pts0

I am currently focused on an educational site https://www.higherscoresdfs.com/dfs/spa/welcome/ that helps Daily Fantasy Sports fans improve their DraftKings and FanDuel gameplay. We offer strategy advice, player tips, optimized lineups, and player props. We now support both classic and showdown games and have recently added a section offering game outcome predictions for those who do sports trading on prediction markets. We currently support the NFL, NBA, and MLB leagues.

If only the AI understands your code, then vendor lock-in and exposure to price hikes will be the least of your problems. I don't think that you will be able to add Claude as the Dev-On-Call to your pagerduty schedule. If you are in an industry that requires due diligence and you get sued for bugs that cause material damage and human suffering, then I don't think the "blame it on Claude" defense is going to land well in court. I cover these topics on https://www.exploravention.com/blogs/soft_arch_agentic_ai/ which is a blog I wrote recently.

Thanks for writing this blog. Others are also starting to notice these impacts and writing about them. I believe that it is important for more voices to be heard.

What resonated most for me was the "Finding Your Threshold" section. Your "Developers need the dopamine hit of creation." is memorable. I have also blogged about this phenomenon at https://www.exploravention.com/blogs/soft_arch_agentic_ai/ but I frame it more as how leaders can help the organization arrive at a healthy and sustainable balance between writing and reviewing code.

I am working on an app that uses old-school predictive AI (i.e. pytorch and scikit-learn) to predict professional sports outcomes in a way that is useful for DFS fans. Here is the landing page.

https://www.higherscoresdfs.com/dfs/spa/welcome/

Here is the pitch.

We seek to empower DFS fans through education about predicting professional sports athlete outcomes. We do that through strategy advice, hot player tips, optimized lineups, and pick’em style game-friendly player props. We're not trying to take away your control or do your thinking for you. We are just here to support you in making better decisions. Let the app do the number crunching so you can get back to competitive play that gets results and is also fun.

That's a type of fatigue that is not new but I hear you, context switching fatigue has increased ten fold with the introduction of agentic AI coding tools. Here are some more types of fatigue that have been increased with the adoption of LLMs in writing code.

There are plenty of articles on review fatigue including https://www.exploravention.com/blogs/soft_arch_agentic_ai/ which I published recently. The focus there is less about the impact on the developer and more about the impact on the organization as letting bugs go to production will trigger the returning to high ceremony releases and release anxiety.

The OP article talks about AI fatigue of which review fatigue is a part. I guess that I would sum up the other parts like this. The agentic AI workflow is so focused on optimizing for productivity that it burns the human out.

The remedy is also not new for office work, take frequent breaks. I would also argue that the human developer should still write some code every now and then, not because the AI cannot do it but because it would slow the process down and allow for the human to recover while still feeling invested.

Good question. Several reasons.

1. Since the same AI writes both the code and the unit tests, it stands to reason that both could be influenced by the same hallucinations.

2. Having a dev on call reduces time to restore service because the dev is familiar with the code. If developers stop reviewing code, they won't be familiar with it and won't be as effective. I am currently unaware of any viable agentic AI substitute for a dev on call capability.

3. There may be legal or compliance standards regarding due diligence which won't get met if developers are no longer familiar with the code.

I have blogged about this recently at https://www.exploravention.com/blogs/soft_arch_agentic_ai/

How are these libraries curated? I ask because Clojure Land includes Donkey https://clojure.land/?q=donkey which was abandoned a couple of years ago.

Not sure about your information architecture. What is the difference between the web frameworks and web server abstraction tags?

This next question is more for the Clojure community. From https://clojure.land/?tags=Web%20Frameworks we see 34 web frameworks. That seems like a lot to me. Why is there so much "scratching your own itch" because you don't like ring?

The conversation here seems to be more focused on coding from scratch. What I have noticed when I was looking at this last year was that LLMs were bad at enhancing already existing code (e.g. unit tests) that used annotation (a.k.a. decorators) for dependency injection. Has anyone here attempted that with the more recent models? If so, then what were your findings?

I used a graph database in https://www.exploravention.com/products/askarch/ because software architects typically need to understand the dependencies of a complex software system before they can suitably lead that technology. A dependency graph is a good data structure to use when reasoning about dependencies and a graph database is a natural choice for capturing dependency graphs. See https://www.infoq.com/articles/architecting-rag-pipeline/ for more details on the architecture of this AI product. The graph database works very well for this use case.

If you are considering the use of a graph database for AI based search and you are not already familiar with graph database technology, then you should be advised that graph databases are not relational databases. If you cognitively model nodes = tables and edges = joins, then you will be in for some nasty surprises. You should consider some learning, and some unlearning, to do before proceeding with that choice.

I agree. Permit me to rephrase. From this learning adventure https://www.infoq.com/articles/architecting-rag-pipeline/ I came to understand what many now call context rot. If you want quality answers, you still need relevance reranking and filtering no matter how big your context window becomes. Whether that happens in a search that is upfront in a one shot prompt or iteratively in a long session through an agentic system is merely an implementation detail.

  Location: Bay Area of California
  Remote: yes
  Willing to relocate: no
  Technologies: https://www.exploravention.com/services/
  Résumé/CV: https://www.linkedin.com/in/gengstrand/
  Email: https://www.exploravention.com/subscriptions/subscribe/

I really appreciate the overall gist of this blog and find value in the mech suit vs human replacement analogy. The "near zero time" observation is not consistent with my own findings which I have blogged about at https://glennengstrand.info/software/llm/migration/java/type... and covers a more specific use case of service migration. Using LLMs did cut the heads down coding time by two thirds but certainly not to zero.

I am currently testing the hypothesis that RAG can reduce the likelihood of LLM hallucination when it comes to software architecture (existing or proposed enhancements or tech debt reduction) of complex systems. To that end, I recently launched a web spa https://www.exploravention.com/AskArchitect/ where you can ask the software architect questions about various popular open source projects. I hope that you participate in this experiment.

While I was working on this piece about using LLMs to migrate code https://glennengstrand.info/software/llm/migration/java/type... I experienced a first hand encounter of review fatigue. One of the lines of code in the middle of a LLM generated block was gibberish but not gibberish enough to be caught by the compiler. I study the code before accepting the change but just had a complete blind spot on that line. It was the linter that eventually caught it.

I went with a more clinical approach and used models that were available a half year ago but I also was interested in using LLMs to write unit tests. You can learn the details of that experiment at https://www.infoq.com/articles/llm-productivity-experiment/ but the net of what I found was that LLMs improve developer productivity in the form of unit test creation but only marginally. Perhaps I find myself a bit skeptical on the claims from that Assembled blog on significant improvement.

This piece reminds me of something I did earlier this year https://www.infoq.com/articles/llm-productivity-experiment/ where I conducted an experiment across several LLMs but it was a one-shot prompt about generating unit tests. Though there were significant differences in the results, the conclusions seem to me to be similar.

When an LLM is prompted, it generates a response by predicting the most probable continuation or completion of the input. It considers the context provided by the input and generates a response that is coherent, relevant, and contextually appropriate but not necessarily correct.

I like the crowdsourcing metaphor. Back when crowdsourcing was the next big think in application development, there was always a curatorial process that filters out low quality content then distills the "wisdom of the crowds" into more actionable results. For AI, that would be called supervised learning which definitely increases the costs.

I think that unbiased and authentic experimentation and measurement of hallucinations in generative AI is important and hope that this effort continues. I encourage the folks here to participate in that in order to monitor the real value that LLMs provide and also as an ongoing reminder that human review and supervision will always be a necessity.

Interesting blog. It seems to be a compendium of advice for all kinds of folks ranging from end user to integration partner. For a slightly different take on how to use LLMs to build software, you might be interested in https://www.infoq.com/articles/llm-productivity-experiment/ which documents an experiment where the same prompt was given to various prominent LLMs asking to write two unit tests for an already existing code base. The results were collected, metrics were analyzed, then comparisons were made. No advice on how to write better prompts but some insight on how to work with and what you can expect from LLMs in order to improve developer productivity.

So the publishers behind IEEE Software asked the authors of The Golden Age of Software for any advancements in software architecture that had occurred in the 2.5 years since they published that book. Mostly, they talked about platform thinking, SOA, OOP, and quality metrics. This was fourteen years ago. Since then, I believe that software architecture has advanced a lot in terms of process and methodology. https://martinfowler.com/articles/scaling-architecture-conve... does a good job of covering these advancements.