Technologies: Python, Common Lisp, Javascript, technical leadership, systems architecture, several other programming languages, mechanical engineering.
I pay for ChatGPT-4. It's helping me program noticeably better and much faster, even with mid-sized projects involving many files. This is the process that I follow:
- I write a system prompt with a succinct description of what I want to implement: "X is an online app that does Y, with these features: ..." I try to be exhaustive, and I write as I would if I were describing what I want to do to a very proficient programmer who needs to understand the problem and the solution. I save this to a prompts/0-system.txt file that will be part of the project.
- I design an architecture and define the general boundary conditions. I may ask ChatGPT for opinions, but at this stage, it's mostly based on experience. I add it to the system prompt.
- I write a description of the first chunk of functionality that I want to implement, usually a set of functions or a class, at the individual file level. For example, prompts/1-dal.txt.
- I (actually ChatGPT) wrote a very simple recursive cat script (https://github.com/juanre/catprompt) that combines several files into a single prompt (a file can include other files, etc). I add a line to prompt/1-dal.txt pointing to the system prompt, and use catprompt to create a combined prompt that will include the overall description and the specifics of the functionality I am after.
- I give this prompt to ChatGPT, and it produces the code. It's typically perfectly fine. I add it to the project, for example, as dal.py, review, and fix whatever may need fixing.
- I ask ChatGPT to create tests in the same session. This also tends to work fine.
- Then I move to the next piece of functionality, in a new session. I write another description, in another file, including the system prompt and usually the code already created.
The prompts remain: they become a description of the code (and of my intentions) for other programmers, and they can help ChatGPT write documentation as well.
I enjoy programming like this. The effort I make in writing concise descriptions helps me think more clearly. I used to love literate programming back in the 90s, and this feels very much like it. Knuth described it thus:
"Let us change our traditional attitude to the construction of programs: Instead of imagining that our main task is to instruct a computer what to do, let us concentrate rather on explaining to human beings what we want a computer to do."
Replace "human beings" with LLMs, and I think that's where we are now.
I've essentially been using ChatGPT-4 in the same way and can confirm that the code it gives typically works. If not I just decompose pieces of it once and try again. If it fails there I just write it myself.
It certainly saves me time, and I end up with better code and better documentation. I can stay thinking at a higher level, which removes cognitive friction. I usually don't want to be programming: I want the functions I need to be written and working. ChatGPT-4 takes care of that quite well.
It looks great, and thank you for open-sourcing it. Is it mostly a convenient way to follow all entry points to the community from the same place, or are you guys planning/offering something beyond that?
Thanks a lot! The product already goes beyond plain monitoring of several platforms. With existing features you can already:
- Get background information about your community members & the companies they belong to and manage them with tags and automated segmentation
- Analyze your community, create custom metrics, organize them in reports and share them publicly with your community, your investors, or your team
- Use webhooks to automate routine tasks
- Detect relevant conversations and publish them in a community help center to reduce duplicate questions and get your community's content listed on search engines
- Monitor dev-focussed community platforms to find relevant content to engage with, helping you to gain developers’ mindshare and grow your community organically
The simulation of collisions becomes trickier when tangential compliance cannot be ignored. For example, a ping-pong ball (very high tangential stiffness) rotating around an axis perpendicular to the motion falls straight on a table and bounces back up; the rotational velocity decreases, but it does not change sign. Whereas a superball (low tangential stiffness) will change the direction of the rotational velocity. I did my PhD on this, back in 2000, but haven't kept up with the field.
If anyone is interested in a way to take tangential compliance into account my thesis may be of interest:
I do, the star mapping sofware at the core of my company is Common Lisp run by sbcl. I use it because it is fast, reliable, and a pleasure to develop with. Actually, that is true, but the actual reason I use it is that many many years ago I read PG's "On Lisp", and was blown away by it. So I had to find a project to try Lisp out. It ended up being my livelihood.
He is talking about doing great work, not about becoming rich or successful. You do need luck for your great work to take you places, but your own agency counts for much of your ability to do great work. Plenty of great work will not reap great rewards; it is done because someone feels that it has to be done.
I use it to write the star-mapping software behind https://greaterskies.com many years ago. I did it as a fun project after reading PG's essays, but now it is supporting my family and two employees. In the few occasions I need to touch something or add a new feature I feel like coming back home.
I have never written it down, but it's very simple. I don't use any external libraries. I converted the input databases to lisp and compiled them in, and the output is simple postscript. When I want to deploy I dump a core with the compiled functionality, then run sbcl with that core. At some point I was using hunchentoot[1] to provide an http point of entry (great library, as all the ones written by Edi Weitz) but I am not bothering anymore, as most of the processing time is consumed by ghostscript and convert in the post-processing of the images.
I am going through pretty much an identical situation, except that a doctor prescribed antibiotics over the phone (assuming that the chest pressure and shortness of breath are due to the bacterial secondary infection) and I seem to be getting better.
The uncertainty has been eased by a little gizmo to measure the oxygen saturation in blood, which I got on amazon for £75 as soon as it was obvious that I could not breath well. I am probably fine as long as the saturation is > 92% or so.
Of course I have doubts about the reliability of a medical device off amazon, but it seems well done and, interestingly, it gives my mind a piece of seemingly objective truth to latch on.
[Edit - saturation level that will make me go to the hospital]
Blood oxygen saturation measurement techniques are pretty simple and well understood. Even the cheaper devices are usually accurate within a few percent. But if my level was getting to 85% I would head straight to the ER.
Yeah, I heard a lot higher number myself. Here's a study I found online about it:
"Conclusion: Among outpatients with pneumonia, oxygen saturations <90% were associated with increased morbidity and mortality. Our results indicate a hospital admission threshold of <92% would be safer and clinically better justified."