How to Build an Agent
Building a fully functional, code-editing agent in less than 400 lines.
The Four Fundamental Principles ofHuman-Centered Design and Application – Don Norman's JND.org
Human-centered design has four major principles:
- Understand and Address the Core Problems;
- Be People-Centered;
- Use a Systems Approach;
- Use Rapid Iterations of Prototyping and Testing.
Chandra: Cross-Platform Desktop GUIs in Perl - DEV Community
Building desktop applications has traditionally been a challenge in the Perl ecosystem. While we have... Tagged with perl, c, xs, programming.
Beautiful Perl feature: "heredocs", multi-line strings embedded in source code
A piece of "heredoc" data can appear anywhere in a Perl expression. It starts with an initial operator written either << or <<~. The second variant with an added tilde ~, available since Perl v5.26, introduces an indented heredoc, where initial spaces on the left of each line are automatically removed by the interpreter.
Empty string as delimiter
The delimiter string can also be .. an empty string! In that case the heredoc content ends at the next empty line; this is an elegant way to minimize noise around the data.
Several heredocs can start on the same line, as in this example:
my @blogs = $dbh->selectall_array(<<~END_OF_SQL, {}, split(/\n/, <<~END_OF_BIND_VALUES));
Shell Tricks That Actually Make Life Easier (And Save Your Sanity) | Larvitz Blog
Watch someone backspace 40 characters instead of pressing CTRL+W, and you’ll understand why this list exists.
Hacker News:
https://news.ycombinator.com/item?id=47525243
Unit Tests As Documentation: Why Tests Are Living Docs
Unit tests act as living documentation, showing code behavior, staying up-to-date with changes, and covering edge cases to improve code clarity and reliability.
-
Unit tests explain code behavior
-
Unit tests are always in sync with the code
-
Unit tests cover edge cases
Losing the imitation game
AI cannot develop software for you, but that's not going to stop people from trying to make it happen anyway. And that is going to turn all of the easy software development problems into hard problems.
- A computer can never be held accountable. Therefore, a computer must never make a management decision.
Programming as Theory Building
Non-trivial software changes over time. The requirements evolve, flaws need to be corrected, the world itself changes and violates assumptions we made in the past, or it just takes longer than one working session to finish. And all the while, that software is running in the real world. All of the design choices taken and not taken throughout development; all of the tradeoffs; all of the assumptions; all of the expected and unexpected situations the software encounters form a hugely complex system that includes both the software itself and the people building it. And that system is continuously changing.
To circle back to AI like ChatGPT, recall what it actually does and doesn't do. It doesn't know things. It doesn't learn, or understand, or reason about things. What it does is probabilistically generate text in response to a prompt.
Syntax Across Programming Languages
You know one language and want to find the corresponding operator or function in another language
sprintf-like
sprintf Awk, C, C++, F#, Maple, Matlab, merd, OCaml, Perl, Perl6, PHP, Pike, Ruby
printf Haskell
% Python, RubyWhy Do Developers Care About API-First? | Postman Blog
There’s a lot of talk lately about API-first as an approach to design and development. While there are many paths to API-first, usually the people driving this initiative within their organizations have job titles like API architect, API designer, and API platform leader. It makes sense because they are most invested in the efficiency, interoperability, and quality of the organization’s APIs.
Kent C. Dodds’ .filter() Trick Will Change How You Use JavaScript | by Dr. Derek Austin 🥳 | Coding at Dawn | Jun, 2021 | Medium
Kent C. Dodds’ .filter() Trick Will Change How You Use JavaScript. This one-liner uses the Boolean constructor to magically remove all falsy values from an array ✨.
https://twitter.com/kentcdodds/status/1009918457394225152
const plugins = [
isProd ? optimizePlug : null,
isProd ? prodOnlyPlug : null,
!isProd ? testingPlug : null,
usefulPlug,
].filter( Boolean );