389 karma · joined July 10, 2019
Or at least not in a worthwhile sense (+5c and up).
Not only would you be missing out on readability, none of your linters will catch errors within that string any more and if you use something like prettier, well, god help you. You’re almost guaranteed to introduce more wasted time than you’ll save with this doing it manually.
But if your goal is to compile a little closer to v8 then you’d have to set v8 as your compilation target, making that only really worthwhile on the server (since you’d be missing out on all other browser runtimes). I could see such a thing being pretty useful for something CloudFlare workers where startup time is vital, and your execution environment is guaranteed to be v8. Unless of course they’ve managed to always keep them hot.
Laziness (and liability, to a certain extent) is that I’m responsible for keeping accurate records and invoices for all my business expenses for 6 years and if I’m not in the right mood to take that on sometimes it just doesn’t quite hit the value threshold for me to process
But I appreciate your points and it might factor into my mentality.
But as a customer I can say that you have a really good reliable service, and one that I’ve shopped around for. You’re effectively my only point of failure for personal artefacts and one of only a couple for anything work related. I do implicitly have an immense amount of trust in your product and let’s be honest, you aren’t charging all that much for it.
This is to say if you were to take the more direct and blunt approach next time I absolutely wouldn’t hold it against you - in fact I’d say you don’t need to devote so much sweat into something that is just another fact of life. Costs go up, I’ll get over it, so don’t worry more than you need to.
I can tell your heart is in the right place though which gives me confidence and thanks for your response too!
I do actually trust them enough to not screw me over, their price increase history alone showed me that.
Sometimes the quick and forgettable slap to the face is more pleasant than the long drawn out apology - although as you mentioned from your experience, maybe I’m in the minority.
I understand you’d be worried about a price increase but the email, promotion, two years of lead up time, and now the blog post comes across and a little too apologetic, perhaps. Just stick the prices up by a dollar and give me a quick “sorry guys, we’ve not raised them in a decade - we need to stay competitive” and I wouldn’t have even remembered it.
But as I said, it depends on your history and what you work quickly with.
In the article the author says they chose Ansible because docker felt too heavyweight and unnecessary. It’s true that docker has a lot of stuff you don’t need in there, but trust me when I say Ansible is no picnic. In fact I find it easier to take what I need with Docker and Kubernetes and get running way quicker than I would ‘naked’ Ubuntu machines that I need to semi-manual previsioning with shell scripts or Ruby scripts. I got up and running with Kubernetes on DigitalOcean in less than a day, and Dockerfiles using familiar technologies I’ve used before take less than an hour to iron out.
You’ll get people who say that Docker is overkill and unnecessary and far too complicated for a solo project, but then you’ll get others who believe it’s a small file with 20 lines of declarations, sat alongside a 30 line yaml file that can provision all of your infrastructure instantly across any cloud provider you choose.
I’ve got a project using this setup, but it’s fairly common one l- e.g. Express with node clustering, Puma on Rails etc. On Kubernetes you obviously just forgo the clustering ability and let k8s handle the concurrency and routing for you.
So in this instance, I’m struggling to see why I wouldn’t request a value of 1vCPU for each process. My thinking is that my program is already single threaded, and asking the kubernetes CPU scheduler to spread resource between multiple single threaded processes is pure overhead. At that point I should allow each process to run to its full capacity. Is that correct?
This I feel gets a lot more complex now that my chosen language, DB drivers, and web framework is just starting to support multithreading. That’s a can of worms I can’t begin to figure out how to allocate for - 2vCPU’s each? Does anyone know?
The worst documentation I had to parse recently was react-beautiful-dnd, and I’m saying this somewhat conservatively as it’s evident a lot of effort has went into producing something comprehensive. But I was paralysed by the volume of it, reams and reams of methodology and design decisions, how to contribute, and the history of the project. In the end I had to use one of the community codepen examples to get where I needed. Without meaning to stereotype too heavily I see this mostly in junior friendly React projects where you have more people contributing emojis to markdown than you have architecting your APIs. In case anyone from react-beautiful-dnd/Atlassian reads this, you have all the documentation you need, but make it less like a textbook and more like a two page CV.
The best documentation I’ve seen is spider-gazelle (crystal). It’s the prefect balance of plain-English explanation and example code. It probably helps that is was architected and written by the same person, and they were able to really hone down on exactly the right information to transfer.
Edit; I’ve just realised that your specific example is for an internal enterprise project, rather than a public facing library so the variables you optimise change slightly. I’d be maintaining and developing this software as a contributor, and the documentation is specifically for on-boarding me. I’d want to see more of the architecture rationale, point-in-time thought process, and explanations of business constraints that led to certain decisions being made (e.g. what prevented optimal architecture first time around)
But as a simple example I accept that API calls to third party services is low hanging fruit so in terms of finding drivers for lower level protocols I've not had an issue that I'd class as a blocker. There are times where I've had to extend libraries or write a parser for this-and-that (e.g. PostGIS and Paseto, both of which were unused this time round) but I find I need to do this less and less as time goes on.
You do need to reach into the forums or gitter on rare occasions but I can count on one hand the number of times I've needed to, and it's typically because I was trying to do something unusual and quite low-level on the HTTP stack - as in something I've never had to do in a non-Crystal project, such as sending a specific packet. I've always found help there too and people are happy to engage.
It’s been so successful at everything I’ve needed it for, I wouldn’t consider going back to either Ruby or similar interpreted languages, regardless whether it’s a little CLI helper or a larger monolith server app. I’ve found my ability to allow the compiler to catch bugs incredibly reliable without feeling bogged down with types. I hadn’t worked much with typed languages previously and as a Ruby developer it allowed me to ‘learn’ types without even feeling like I was doing any learning.
It’s still somewhat of an obscure language so I thought it would be helpful to describe my experiences with it.
They also work on the server. You’d be hard pushed to find anyone who says installing an Electron app on the server is a good idea.
As-in, is there really a full design team that are saying yes to Jony’s demands of an aluminium phone that is painful to hold to the point of requiring only the CEO to step in? Or does criticism from anyone below you not count any more?