450 karma · joined June 20, 2023
Senior Software Engineer
Java (Spring-boot), MySQL/PostgreSQL, Kafka, Redis, Terraform, AWS/GCP/Azure
meet.hn/city/53.4424618,-2.2324547/Manchester
It might just be the liberal bubble of London, but the sentiment I saw with some colleagues was.
- "Why would I want to serve, I am not a robot"
- "You have to have a screw loose to be able to kill someone"
This was in more eCommerce and design industry stuff in London, the defence sector could be more supportive of exmilitary, but I don't know.
Would you recommend this for hacking around or not?
We aren't enslaved or at any risk just yet with this form of "thinking machine", but we do need to culutrally and emotionally come to terms with them.
Let's not have any other "jihad" just yet, there's plenty of other jihads going on right now.
<joke> I just hope he doesn't start mailing packages to people in the tech industry in the next few years.</joke>
I was meaning more removing your reliance on Google in your life for search, photos, entertainment.
You can start small with Duckduckgo etc.
Just root your Android phone and put a custom ROM like LineageOS etc
If you want a stretch goal try and de-Google yourself, I have tried but failed twice now.
How many times have you written a boring CRUD endpoint that returns a list of results?
Half the stuff I lose time on is the boring boilerplate code (despite using frameworks). Now I can focus on the fun stuff like determining an optimal algorithm or even getting the LLM to walk me through using kubectl on the terminal
Now I know some kubectl commands off by heart, which I didn't before.
- kubectl get namespaces | grep "foo"
- Its a throw thing at the wall and see what sticks situation
- LLMs will improve*
- Using LLMs in an agentic way will improve (git worktrees, sliced PRs, spec driven steps)
So what happened here is a mess, but you gotta break a few eggs to make a souffle.
It's a learning step and I am glad it happened, there will be so many things to debrief from this.
I don't use Bun or Rust but fair play to them having a punt.
<Shameless plug> I have been working with Claude code to spec out and bring back to life a Spring Boot starter library for Apache Solr search
https://github.com/tomaytotomato/spring-data-solr-lazarus
There were a few points I had to steer it but the result has been a good implementation.
Mythos is dangerous but it's not going to Skynet us.
Just the same as the military drone using some sort of OpenCV library and target prioritisation loop isn't going to turn evil on us.
The UK it seems has dropped the ball on the whole training and building models part, although we are punching up in other areas now.
We really need to get our own equivalent to Mistral, and fast!
If you want to learn how Spring framework and Spring boot works, the best thing to do is build your own library and then learn to add it to a new spring boot service.
https://www.baeldung.com/spring-boot-custom-starter
Depending on which AI tool you are using, you can also get it to debrief what it is doing and what layer of the Spring architecture it is using (lifecycle, bean scope, is it using auth/messaging/data middleware etc)
Also here is a service I have built with Claude code along with a sample Spring boot service
https://github.com/tomaytotomato/spring-data-solr-lazarus
It is a demo to show that I could get Apache Solr working in the latest version of Spring Framework 7 and Spring Boot 4. There is a sample application in there for a bookstore you can play around with.
The repo is only 8 months old, which could be seen as good or bad.
Today I learned about a more elegant helper method in Apache Commons' StringUtils library for Java.
The function was `trimToNull()`
Normally I would have just done
if (StringUtils.isBlank(foo)) {
responseDTO.setFoo(null);
}
Now I can just do responseDTO.setFoo(trimToNull(foo));I had written the original code, Claude suggested the improvement.
I enjoy shipping code and reviewing what Claude writes.
To add to that, what I find most helpful is the boring stuff, the JIRA cleanup, trawling Wikis and other sources to find out what the historical context of something was.
Normally that would take me all day to do, with a 30 minute code change.
Now I can do that in about 15 minutes and think about building or shipping some tool which I never had time to do.
You could do it on `SessionStart` to give a horoscope.
I am looking at making a skill to test random programming knowledge, so I don't forget that an Integer is 32bits (at least in Java)
Github actions is running like treacle now. Even when our company pays lots of money for cloud and private Github runners.
I know its the go-to punchbag but I think enabling Copilot reviews globally for a large proportion of Github was a bit hasty.
The security problems aside, if it continues this way, people won't be able to ship and deploy code from Github actions.
We might dare I say it, have to go back to self hosted Jenkins or Travis CI.
Claude code can be run against any model you want, you just simply need to update the ENV vars.
Or if you have Ollama running locally you can do something like this:
ollama launch claude --model glm-5:cloud
Or if you feel brave and want to turn your laptop into BBQ
ollama launch claude --model minimax:2.5
I know you are half joking/not joking, but this is definitely a golden signal.
Think I will scrap my PC and sell its parts.
I wonder if there are any niche companies building decent rigs with DDR3 and 5/6th generation Intel CPUs out there, it is cheap and might be a business opportunity?
In a way you can use this list of JVM options to illustrate how successful Java has become, that everyone needs an option to get it to work how they like it.
As a Java dev, I have maybe used about 10-15 of them in my career.
The weirdest/funnest one I used was for an old Sun Microsystems Solaris server which ran iPlanet, for a Java EE service.
Since this shared resources with some other back of office systems, it was prone to run out of memory.
Luckily there was a JVM option to handle this!
-XX:OnOutOfMemoryError="<run command>"
It wasn't too important so we just used to trigger it to restart the whole machine, and it would come back to life. Sometimes we used to mess about and get it to send funny IRC messages like "Immah eaten all your bytez I ded now, please reboot me"
These commands would be well defined and standardised, maybe with a hashed value that could be used to ensure re-usability (think Docker layers).
Then I just have a skill called:
- github-review-slim:latest - github-review-security:8.0.2
MCPs will still be relevant for those tricky monolithic services or weird business processes that aren't logged or recorded on metrics.
This is how I am structuring stuff in Claude Code
- Ansible setup github cli, git, atlassian cli, aws-cli, terraform cli tooling
- Claude hooks for checking these cli tools are authenticated and configured
- Claude skills to use the CLI tooling
Looking back, the whole story gives a different futuristic feel to the usual gloomy polluted dystopian earths, and feels a bit, "near-future".
Seeing hover cars getting drive through McDonalds will forever be a future hope for me (my inner 10 year old self)
Along with Skidrow and Paradox crews