Hacker Newsnew | past | comments | ask | show | jobs | submit | agjmills's commentslogin

Whilst I ostensibly agree with the sentiment of the linked page, my personal experience is very different - my suspicion is due to the different technologies at play

I enjoy building little SaaS side hustles that one day (I can dream) might make me a couple of grand, but I don’t enjoy writing 20+ CRUD controllers, with matching validation, and HTML forms. I’m probably a bit neurospicy, and I have a young family, but before LLMs came along I might “finish” one SaaS every couple of years. I’ve been able to complete 3 so far this year. It’s a wild uptick in productivity.

I’m well aware of the dangers that come with it too, but having been in the mines churning out this code for the last couple of decades I feel well versed in what to prompt for, just as I would with a keen yet naive junior engineer. I’d also argue that LLMs are much better at enforcing a particular style on the code base. I feel strongly that with an opinionated framework, in a relatively simple language, solving repetitive simple problems - you’ll have a great time with LLMs and you’ll be more productive than ever.

The problems arise when we delegate jobs like writing READMEs or tests (the boring stuff, right?) without really getting into the weeds.


I think it's fair to say that CRUD apps are in a different category to low level systems programming. The former are never particularly difficult to reason about unless they are written poorly, the latter are rarely easy to understand off the bat unless they are extremely written well.


++1


Whilst I dont want to defend the relatively low compensation for public-sector jobs in the UK, it is more nuanced than just salary.

In this case, it was actually a salary of £50,550 - £57,500, so total compensation of around £75k (circa $95k), as the pension scheme is in the order of 30% of your salary. Then there's the usual US vs UK medical cover and vacation allowances.

It's still a way off, but the gap is smaller than you think when you crunch all of the other benefits into a single number.


as the pension scheme is in the order of 30% of your salary

Honest question, as I have no idea, but don't US employers also offer pension schemes that they pay money into, on top of the listed salary?


Does make me wonder what will happen to a lot of the Gas and Electricity Smart Meters that rely on 3G (will they fall back to 2G?)


From the CTO of the Data Communications Company (the organisation behind smart meter infrastructure in the UK):

> Our second-generation meter solution is primarily based on the 3G network which has commitments through to 2033 based on our current contract, so this service remains mainly unaffected for the next 11 years.

https://www.smartdcc.co.uk/news-events/2g-sunset-looking-int...


I read somewhere that electricity meters are switching to a scheme where they do low speed data transmission over the power cables and the data is collected at each substation. Gas uses plastic pipes now so I guess they are stuck with the phone network.


There are also plans for 2G to be switched off by 2033 referenced in the article.


A very costly replacement?!

The UK smart meter rollout is/was the most expensive among countries that went this route of smart meters.

Or move up North (or Scotland) as "our", ekhm, "smart meters", are using a radio technology.


Looks great, but you can’t scroll the currency select box on iPhone


Php and Laravel


I`ve seen so many posts and comments about Laravel and how it has made PHP a modern choice for webdev.

As someone who has written many small apps in PHP, I might dive into it and finally see what that Laravel thing is all about.


I'm currently using Laravel at work. It's very opinionated, and some folks say it uses anti-patterns with regards to its use of facades. That being said my last job was C#/.Net and I am so much more productive with Laravel. It really allows you to develop quickly and I haven't yet bitten by any of the "anti-patterns". If you give it a shot I'd recommend just using Laravel Sail as, if you already have docker installed, you can have a full dev environment setup in less than 10 minutes.


> It's very opinionated

It is and it isn't. It does opinionated ways of doing things. But IMO what makes it so great is just how easy it is to opt out of the opinions you don't like. Facades are an excellent example of this: don't want to use them? Well, you don't have to (and IMO a really big app that may be a good choice - in a small app it likely won't matter and you might as well use them).


To me, "anti-pattern" has the same bogus meaning as "clean code"


Although at a high level many of things things are subjective, this take is almost entirely wrong in every dimension.

Anti-patterns are things like using a wrong data structure, using the wrong levels of abstractions, tightly coupling components so they are not composable, leaky interfaces, god objects doing too much

The strict definitions of many of these can be subjective at the edges, but they all objectively exist and cause fragility, instability, inflexibility and maintenance problems in the systems built from them.

Clean code is code that’s easy to read, has the right level of abstractions, uses the right data structures and has the minimal possible anti-patterns in them (ideally zero!) above.

Calling these things bogus is unfair, I grant they can be subjective in some places but they are prevalent in poorly designed systems especially by junior engineers.

Wikipedia page on anti-patterns: https://en.m.wikipedia.org/wiki/Category:Anti-patterns

There are project management anti patterns too https://en.m.wikipedia.org/wiki/Anti-pattern

Anti patterns are real. Clean code is real. If you cannot see that, I would suggest reading a lot more codebases from open source projects (pick medium and large codebases, not trivial programs) and after 10 or so you will see obvious structural and quality differences, as well as hundreds of anti patterns and examples of clean code.


I'll agree with everything here except the clean code. Clean code is about optimizing human perception and there can't be a standard for that because humans think in a wide variety of ways and it's further impacted by the level of understanding the human already has on the subject matter the code is dealing with. One person's "clean code" can be another person's nightmare.

I'll back this up with the example of Magento 1. It's a PHP e-commerce platform that has (at first glance) some of the cleanest code you'll ever see in PHP. It looked like the entire development team had come from a Java background. Every component was neatly divided into a PHP object with documented private and public methods. There was a clean MVC separation, with lots of shared behavior abstracted into "Helpers", and a Theme system handling the rendering of the front-end. I have no doubt that the authors of Magento prided themselves on how clean their code was. For them, having spent full-time careers structuring all the many features of their platform into these files, it probably did feel like a clean organization. And when I initially reviewed the code to evaluate using Magento, I also thought it was clean and was part of my choice to use it.

The problem was that when you take something as complex as a full-featured e-commerce system and modularize it so thoroughly, you end up with a literal 7000 classes, and it becomes impossible to figure out the sequence of execution of a single page request through that massive tangle. Is it "clean code" if I have to add debugging print statements to 57 source files to figure out the path of execution that renders a single page?

If I had to choose a circle of hell where I would edit Cyrus IMAP (the worst C code ever) for the rest of eternity, or edit Magento for the rest of eternity, I think I would actually choose Cyrus.


> Anti-patterns are things like using a wrong data structure

What is a "wrong data structure"? Is it wrong to do linear scans when hash access would be sufficient?

> ... using the wrong levels of abstractions

When is the abstraction level wrong? I can name you at least 10 projects that avoid so called anti-patterns by introducing unecessary abstractions. Is something really an anti-pattern if it's "solution" massively reduces your development velocity but now everything is nicely composable?

In my opinion, anti-patterns are either obvious (constantly using different names for the same thing) or totally subjective to the context (when to repeat yourself).

But maybe I'm not able to put myself into the shoes of novices and a lot of things seem obvious to me. Granted.


> What is a "wrong data structure"?

I've seen people use multiple named arrays, search for something in the first array, then use its index to find matching data in the other arrays, instead of a dictionary of string:tuple.

Another example is languages with arrays and vectors, usually one or the other is preferred. In Go you can use arrays but you're supposed to use slices whenever possible, while the opposite would be appropriate in, say, C.


This is a solid argument, thanks for taking the time to write this out!


That's an interesting take! I'm still early in my career and I ask with genuine curiosity, but why do you think "clean code" has a bogus meaning?


Not the OP, but clean code misses the point. Its is very subjective and depends on one person's previous experience and patterns they've been exposed to.

"Reasonably readable" is what I strive for nowadays, and a key aspect is that I no longer think there is an objective measure for it. It depends on the team/company you're in, and its important to keep in mind that the goal is to effectively communicate the program to them.


I suggest you read malux85's comment: https://news.ycombinator.com/item?id=36371733


Also Carbon. It makes working with dates and times (something which is by it's very nature a PITA) actually enjoyable and easily readable.

I also really appreciate FakerPHP for how easy it is to generate realistic fake values.


Really enjoyed reading through kbin as a Symfony fan. https://codeberg.org/Kbin/kbin-core


https://bauns.net A dashboard for SES reporting, giving fine grained metrics rather than just a failure %


Or better, an alert to check the cert is still valid


You don't want an alert to check the cert is still valid, that's how you get outages. It's an alert to check cert has at least 2 weeks or more life left in it! (So it either fires ideally before you leave for that long vacation, or so that you can still take care of it when you get back.)


But also check it’s still valid, because revocations


This is all built in very nicely to https://github.com/prometheus/blackbox_exporter - Though they could use a blazing red link to an example rules file.


Like all US tax law?


A lot of tax law is bad, yes. I certainly wouldn't say all though.


With your ML background I'd probably focus on things like AWS Sagemaker and going from dev to prod in a sensible fashion.


Thanks, I agree that AWS Sagemaker would make sense and I'm already in the process of mastering it.


Imagine if http APIs has similar output to lsof or df -h - nobody would write a script to use them! JSON makes a lot of sense, but a human-parseable format is also needed.


You're conflating two different concerns:

1. human review

2. scripting / automation

In case one, human readable formats are obviously preferable. But the moment you need to script a command, you want it in a machine readable format.

A perfect example of the differences between the two are how badly spaces in file names are handled. Granted POSIX deserve a lot of the blame here too.


Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: