HN user

michaelfeathers

2,516 karma
Posts39
Comments657
View on HN
www.globant.com 3y ago

Patterns of Systems Renewal – making systems workable over time

michaelfeathers
4pts1
michaelfeathers.silvrback.com 3y ago

Generate from Constraints: Using Prompt-Hoisting for GPT-Based Code Generation

michaelfeathers
2pts0
michaelfeathers.silvrback.com 3y ago

(Possible) AI Impacts on Development Practice

michaelfeathers
1pts0
stayrelevant.globant.com 3y ago

ChatGPT: Using the Right Tool for the Right Job

michaelfeathers
14pts5
stayrelevant.globant.com 3y ago

Managing technical debt for competitive advantage

michaelfeathers
40pts9
stayrelevant.globant.com 3y ago

Active Knowledge in Software Development

michaelfeathers
40pts7
michaelfeathers.silvrback.com 4y ago

Gateway Teams – First experiences of your organization matter

michaelfeathers
6pts0
michaelfeathers.silvrback.com 6y ago

Scaling and the Friction of Dimension

michaelfeathers
12pts0
michaelfeathers.silvrback.com 6y ago

The Simulation Argument and the Simulation Barrier

michaelfeathers
80pts116
michaelfeathers.silvrback.com 7y ago

Does Software Understand Complexity?

michaelfeathers
86pts25
arxiv.org 8y ago

Population polarization dynamics and next-generation social media algorithms

michaelfeathers
2pts0
www.miamiherald.com 8y ago

When it comes to news, America is in a state of pure polarization physicist says

michaelfeathers
1pts0
deque.blog 9y ago

Hexagonal Architecture and Free Monad: Two Related Design Patterns? (2017)

michaelfeathers
3pts0
michaelfeathers.silvrback.com 9y ago

Twitter, Reddit and Conway's Law

michaelfeathers
2pts0
michaelfeathers.silvrback.com 9y ago

Toward a Galvanizing Definition of Technical Debt

michaelfeathers
2pts0
michaelfeathers.silvrback.com 9y ago

Characterization Testing

michaelfeathers
1pts0
vimeo.com 10y ago

Why Team Happiness Can Be the Wrong Thing to Aim for [video]

michaelfeathers
91pts44
michaelfeathers.silvrback.com 11y ago

Moving Quickly with Compositional Chains

michaelfeathers
1pts0
michaelfeathers.silvrback.com 11y ago

Detecting Refactoring Diligence

michaelfeathers
33pts4
michaelfeathers.silvrback.com 12y ago

Literate Chains for Functional Programming

michaelfeathers
1pts0
www.drdobbs.com 12y ago

The Relationship Between Testability and Good Design

michaelfeathers
3pts0
michaelfeathers.silvrback.com 12y ago

Code Change Complexity

michaelfeathers
3pts0
michaelfeathers.silvrback.com 12y ago

Ripeness for Refactoring

michaelfeathers
3pts1
www.developerdotstar.com 12y ago

Code as Design: Three Essays by Jack W. Reeves

michaelfeathers
2pts0
gehrcke.de 12y ago

GnuTLS vulnerability: is unit testing a matter of language culture?

michaelfeathers
2pts6
michaelfeathers.silvrback.com 12y ago

When A Method Can Do Nothing

michaelfeathers
1pts0
michaelfeathers.typepad.com 12y ago

Unconditional Programming

michaelfeathers
7pts0
github.com 12y ago

Show HN: Jop - J language commands for Ruby

michaelfeathers
1pts0
michaelfeathers.typepad.com 13y ago

Flipping Assumptions with 'Programmer Anarchy'

michaelfeathers
26pts3
michaelfeathers.typepad.com 13y ago

Guiding Software Development with Design Challenges

michaelfeathers
2pts0
Programming Deflation 10 months ago

There's something with the same shape as Jevon's paradox - the Peltzman effect. The safer you make something the more risks people will take.

Applied to AI I think it would be something like - ease of development increases the complexity attempted.

Thanks. After I wrote it a friend said "I think you just gave people permission to do things that they would've felt bad about otherwise." I think he was right, in a way. On the other hand, not everything is obvious to everyone, and it's been 20 years. Regardless of whether people have read the book, the knowledge of these things as grown since then.

That doesn't sound like the sort of problem you'd use it for. I think it would be used for the ~10% of code you have in some applications that are part of the critical core. UI, not so much.

I think we are going to end up with common design/code specification language that we use for prompting and testing. There's always going to be a need to convey the exact semantics of what we want. If not, for AI then for the humans who have to grapple with what is made.

The trajectory of AI is: emulating humans. We've never been able to align humans completely, so it would be surprising if we could align AI.

Chat in English? Sure. But there is a better way. Make it a game to see how little you can specify to get what you want.

I used this single line to generate a 5 line Java unit test a while back.

test: grip o -> assert state.grip o

LLMs have wide "understanding" of various syntaxes and associated semantics. Most LLMs have instruct tuning that helps. Simplifications that are close to code work.

Re precision, yes, we need precision but if you work in small steps, the precision comes in the review.

Make your own private pidgin language in conversation.

This is a good talk about the problem: https://youtu.be/hGXhFa3gzBs?si=15IJsTQLsyDvBFnr

Key takeaway, LLMs are abysmal at planning and reasoning. You can give them the rules of planning task and ask them for a result but, in large part, the correctness of their logic (when it occurs) depends upon additional semantic information rather then just the abstract rules. They showed this by mapping nouns to a completely different domain in rule and input description for a task. After those simple substitutions, performance fell apart. Current LLMs are mostly pattern matchers with bounded generalization ability.

I always have trouble with takes like this because they are context-free. There are a wide variety of project types and development scenarios.

My nuanced take is that typing is an economic choice. If the cost of failure (MTTR and criticality) are low enough it is fine to use dynamic typing. In fact, keeping the cost of failure low (if you can) gives you much more benefit than typing provides.

Erlang, a dynamic language used to create outrageously resilient systems, is a great example of that for the domains where it can be used.

I'm not a dynamic typing zealot (I like static typing a lot) but I do think that dynamic typing is unfairly maligned.

The cost argument brings the decision down to earth.

I think it goes deeper.

When people become very skilled at programming they have the urge to scratch their own itch, either writing tools to solve software development problems or creating something with a technology that they want to use. They are uninterested in mundane, boring, vertical applications, but that's often where the money is.

The guy in the article did some development tools but some other things too. At the end of the day, imagining a market is no substitute for finding one.

Toward Condensers 3 years ago

I'm wondering whether there is any reason why condensers can't be used for all program optimization. It seems like the definition would allow that:

The primary means for shifting computation is the condenser. A condenser is a component that transforms a program, yielding a program that is semantically equivalent under a stated set of constraints (e.g., “class X will not be redefined”), but may be smaller, faster, or better suited to a particular execution environment.

Actually I'd go further and say that this idea creates a lot of problems. For example, if I goof password storage and expose our users' personal information, what were you supposed to do to prevent this?

Hire better. Pithy response, but that's how responsibility aggregates.

That's fair. I was just using trees as an example. Tree-like might be a better characterization. Point is: there's a reason why fully connected structures aren't very common, and why systems tend to form hubs.

It's important to realize as well that humans didn't invent hierarchy. It's a structure that occurs naturally when the costs of direct connection are too high in a system with many parts. This is why networks are federated and why vascular systems in biology are tree-like. The same dynamics are at play in human social systems, but they are not particular to them.

In a good analogy, both sides should have significant shared structure. The more that’s shared, and the deeper the structure, the better.

The alternative to analogies is to name the shared structures.

Such a great band. I saw them in Los Angeles last month. Exquisite and energetic musicianship despite several of them being in their 70s now.