Sometimes I feel like I live on another planet. Wouldn't you at least get Claude to write the bash script, confirm it works how you like, then run that? Why get an LLM to guess how to do it each and every time?
At least they are still manually approving, which the title made sound like something they'd move on from.
It's like the "we made over our product in order to use technology X because it's cool and modern" that we've seen multiple times with node, go, rust, k8s, blockchain, <enter technology here>.
Counterpoint: temperature = 0 /s
On a more serious note: I personally only found LLMs really interesting to double check my code if there might be something I overlooked in the general implementation (a different approach or so), never really for it to write code directly for me. I feel like this is just becoming less and less common nowadays and it kinda makes me worry for the quality of code that was already questionable at times...
And really expensive, which is why AI companies want you to do that.
> Just ask the AI to help you write a proper workflow with code.
This.
We must acknowledge, understand and work around a technology's limitations.
I’m not endorsing this release practice in particular, it scares me. But I have been involved in a lot of automation projects where perfection was the initial goal, and then abandoned because it was obvious that non-automated work was so imperfect. Human error is a fact of life.
I don't condemn using LLM, but at least they could have use it in order to write better Github Actions instead.
Not sure why IA could create something you couldn't however. And at least understanding what happens if part of the bundle.
We don't use AI, just have a well tested codebase and basic bash script automation mixed in with GitHub actions.
Not bashing AI tools in particular, but just learning some basic decades old tooling and processes gets you pretty much all of the way there.
Why do your releases involve non negligible manual work?
> We release 1-3 times per week.
If I were a customer, I would be concerned by this statement. Having an amateurish deployment strategy is one thing, but your release cadence implies low confidence and quality issues.
curious why would it imply that.
I am going to open a Montessori school in India with my wife.
Almost as if the author does not know how to write a bash script, and reverted to using an AI prompt in stead?
I've just been testing it out having it create a whole application by itself so I can understand how well it works and what its limiations are with Sonnet 4. So far it is pretty impressive but also limited in context retention/retrieval.
i guess no such thing as bad publicity
I used Claude Code in "do whatever you need to to modernize this code" mode for a bit and then went about correcting the things it got wrong. Many changes made were mechanical and useful and a few incorrect. It botched up some core code big time with changes that didn't make any sense, and I had to revert and micromanage changes to that. In all, it was a win for a day's work during the weekend.
Approx $30 well spent, but I give my thanks to the OSS community whose code made Claude Code possible and wish I could've split that with them.
The fact that software systems are architected with tons of mini languages means LLMs can be of use to select from the space of possibilities without me having to learn incidental details I don't want to spend time or my neurons on.
No one has ever said ”please” to me in release instructions. Not that I miss it, I would find it weird.
By all means use whatever AI agent you have to help set that up.
Asking because development processes are a hot market themselves think of XP, Scrum, agile etc so wondering if there's something documented about release processes.
Willing to put down a little bit of my money that this is going to blow up in their faces in the near future.
I'm not super technical at all, but I don't understand why a team that does 1-3 deploys a week is not fully automating with "proper" CI.
They don't either apparently
> 1. Check if there exists a release PR already. When you check, do not grep, just list ALL PRs.
Why would you make AI do this when you can just do it with an api call or git.
Does the author not know that there is a chance that it won't actuall list ALL PRs just because he put that in all caps?
we have lost our collective minds that this person is proudly publishing this stupidity to the world. i hate this so much.
can we pls ban these coders from the industry :(
This is the main problem with AI, we can no longer distinguish bad coders/managers because they use AI heavily and which can say knowledgeable things at times while having no idea on what they are doing.
I now say things that will not make sense to a good coders (like saying the steps out of order), to find out such people.
It just takes time at times.
This has been a thing forever, before AI. Lots of "programmers" at BigCorp have hacked the system and they know how to say the right words relevant to BigCorp's tech stack. Knowing how to actually program is entirely optional. (You can just copy-paste boilerplate from BigCorp's monorepo, writing boilerplate will be your day job anyways.)
No, as these coders are what will ensure the rest of us will have a nice gravy train in 5 years.
https://en.wikipedia.org/wiki/Job_Control_Language
>"the worst computer programming language ever devised by anybody, anywhere" -Fred Brooks
(Obviously when he said that, Fred hadn't been exposed to bash yet!)
"Please write a JCL script to orchestrate the release of my AI startup company's AI powered shop assistant from github. Did I mention that we use AI?"
//*********************************************************************
//* M O L I N A I R E L E A S E P I P E L I N E *
//* *
//* Product : AVATAR-SHOP-ASSISTANT *
//* Company : Aluxian / Molin AI *
//* Purpose : Tag, publish and attach artefacts to GitHub *
//*********************************************************************
//AVTREL JOB (AC),'MOLIN AI',CLASS=A,MSGCLASS=X,JOBPARM=TIME=1440,TYPRUN=HOLD
// REGION=0M
//SET PRJ=MOLINAI,APP=AVATAR,TAG=v3.1.0,TOK=ghp_FAKE,REPO=aluxian/avatar
//SET WS=/opt/molin/ws
//MUSE PROC GIT=/usr/lpp/git4z/bin/git4z,CURL=/usr/lpp/bear/bin/curlbear,SHA=
//ENV SET PATH=/usr/lpp/git4z/bin:/bin HOME=/home/molin
//SHA EXEC PGM=BPXBATCH,PARM='PGM &GIT rev-parse HEAD'
//STDOUT DD DSN=&&S,UNIT=SYSDA,SPACE=(CYL,1),DISP=(,PASS)
//IFTAG IF (&SHA ¬= ' ') THEN
//TAG EXEC PGM=BPXBATCH,PARM='PGM &GIT tag -a &TAG &SHA -m &TAG'
// ELSE
//TAG EXEC PGM=BPXBATCH,PARM='PGM &GIT tag -a &TAG -m &TAG'
// ENDIF
//PUSH EXEC PGM=BPXBATCH,PARM='PGM &GIT push origin &TAG',COND=(4,LT)
//JSON EXEC PGM=IEBGENER
//SYSUT1 DD *
{"tag_name":"&TAG","name":"Avatar &TAG","generate_release_notes":true}
/*
//SYSUT2 DD DISP=(NEW,CATLG),DSN=&&PAY(0),UNIT=SYSDA,SPACE=(TRK,1)
//SYSIN DD DUMMY
//ESDS EXEC PGM=IDCAMS
//SYSPRINT DD SYSOUT=*
//SYSIN DD *
DEFINE CLUSTER(NAME(&&E) RECORDSIZE(255 255) KEYS(1 0) REUSE SPEED) -
DATA(NAME(&&E.DATA))
REPRO INFILE(P) OUTDATASET(&&E.DATA)
IF MAXCC>4 THEN SET MAXCC=0
/*
//P DD DISP=SHR,DSN=&&PAY(0)
//POST EXEC PGM=BPXBATCH,
// PARM='PGM &CURL -sS -X POST https://api.github.com/repos/&REPO./releases
// -H Authorization:\ Bearer\ &TOK -H Accept:\ application/vnd.github+json
// --data-binary\ @DD:EJSON'
//EJSON DD DISP=SHR,DSN=&&E.DATA
//STDOUT DD DSN=&&R,UNIT=SYSDA,SPACE=(TRK,1),DISP=(,PASS)
//RID EXEC PGM=IKJEFT01
//SYSTSPRT DD DSN=&&ID,UNIT=SYSDA,SPACE=(TRK,1),DISP=(,PASS)
//SYSTSIN DD *
alloc fi(r) da('&&R') shr
execio * diskr r (stem x. finis
do i=1 to x.0
if pos('"id"',x.i)>0 then parse var x.i '"id":' id ',' .
if id¬='' then say strip(id); leave
end
/*
//* BLDL fix — after the ‘Q3-FY24 LLA purge’ when an ill-advised UPDATE to
//* SYS1.LINKLIB nuked the BLDLRES chain, froze LLA, and threw half the
//* plex into S047s until Ops spent nine hours baby-sitting a cold-start IPL.
//COPY EXEC PGM=IEBCOPY
//SYSUT1 DD DISP=SHR,DSN=&&R
//SYSUT2 DD DSN=&PRJ..G.&APP..R(&TAG),DISP=(NEW,CATLG),
// SPACE=(CYL,(1,1,1)),DSORG=PO
//UPL EXEC PGM=BPXBATCH,
// PARM='PGM &CURL -sS -X POST
// https://uploads.github.com/repos/&REPO./releases/$(cat &&ID)/assets?name=shop.jar
// -H Authorization:\ Bearer\ &TOK -H Content-Type:\ application/java-archive
// --data-binary\ @&WS/&APP/dist/shop.jar'
//STDENV DD DUMMY
//PEND
//GO EXEC MUSEThis is basic automation and a pretty weird deployment process that could literally be a proper ci/cd pipeline.