We’ve had our Miele dishwasher for 5 years. Running on average 1.5 times a day. It’s flawless.
Here in the UK the customer service has been amazing. The company we bought from (AO.com) installed it incorrectly (the water pipe plug wasn’t removed) they told us to get stuffed. We called Miele. They sent someone to us the next day and fixed it free of charge
Back in the early 2000s lots of websites had an unauthenticated "guestbook" feature where visitors could leave a message. As soon as Google and page rank became a thing bots would drive by and leave links to the website they were promoting. The idea was to increase the number of backlinks and thus improve your Google rank.
The fix to this was shockingly simple. Add an input box with a standard name like "title" and then hide it with CSS. The bots would always provide a value for every input. If you saw a value for your hidden input you returned 200 but never added the post to your website.
I’ve had to deal with this a few times now. After asking around the greybeards I really respect this is my current run book.
First: Talk to them about it. This is the hardest part. The aim of this conversation is to let them know you’ve noticed a change in performance and you want to know what you can do to help. It’s an open conversation but there are two possible outcomes.
1. They’re bored of their work. This is more common than you think. Give them a big problem. Maybe a bug no one can figure out. Maybe move them to a different project for a while. Check in with them every day/2 days. They don’t have to solve/finish it instantly but they do have to demonstrate engagement.
2. They’re burnt out. This is coming for all of us one day so be kind. The solution to burnout is give them micro tasks. If there are no micro tasks take an existing task and break it down into micro tasks. Something that would take you an hour to do. You want to get them into the habit of moving tickets across the board again. There’s no time pressure here but you do want to start tracking their productivity.
If you suspect they are slacking off/have problems at home/have a full time second job solution 2 also applies.
Think of this period as like hiring an intern/junior developer. Your job is to support them & build them up. If they were once productive you’re trying to get that guy back. This takes time and don’t rush it.
Keep a close eye on their velocity. Expect them to be slowly building up. If you use ticket points track their points.
If after the first 2 weeks you get the feeling they are not engaging now is the time to notify your manager/ HR (depending on your country firing someone may be a long process)
The aim is to get them back to being productive again. Whatever caused this issue. don’t expect to get them back for 2-3 months. This is okay remember how much it costs in time and money to get in a replacement.
What we want to see over that time is a gradual improvement in velocity. Slowly start giving larger tasks. Check in with them at standup every day and have a half hour call with them once/twice a week.
Over these 2/3 months if you see no improvement bring in HR and initiate a formal PIP or whatever process you have for firing someone. If they’re taking the piss they’ve been found out. If they’re burnt out and are not engaging with this process maybe their time as a software developer has come to an end. At the very least their time at your company has.
Every single person is different. One person I took though the process fully embraced it and has since been promoted. Turns out he just needed more responsibility.
How does Docalysis.com work? I'm presuming you take the user input then search the documents for matching words to get snippets then add the snippets to a prompt (along with the original query) you send to an LLM.
What does the cost look like? Are you running your own llama.cpp or just using the ChatGPT API?
It may have something to do with this mind blowing exchange between Casey Muratori (a highly experienced game engine developer) and the Microsoft Terminal team.
It really highlighted how crappy software gets written in large corporations. They told him rendering monospaced fonts on the GPU would involve a multi year PHD research project.
Apparently they then went on to infiltrate his discord server so they could ask questions. Then write up a blog post calling the change "trivial".
Harvard was created to educate the elite not to create it. This is the fundamental issue here.
These institutions see their purpose as preserving western civilisation and hopefully shaping its future direction. Part of this joke was about turning Harvard into a trade school for asian doctors. From their point of view this would be the same as becoming a factory churning out plumbers or electricians.
The "secret sauce" of the admissions process is simply "If this candidate doesn't attend Harvard are they highly likely to become a member of the elite anyway?". This opens up things about our society we don't want to face. George Bush is related to the late Queen of England. Many of the elite are the same families who have ruled over us for the last thousand years.
Even at the local level your chance at becoming an important person in your city is closely related to who your parents are.
By accounting for the structure of society and distribution of power at the time of application the admissions process becomes at best conservative and at worst racist.
My fundamental problem with email is all the robots.
I need a tool that sorts all my email into two boxes. "Robots" and "Humans".
Further I want repeated notifications about a message if:
- It comes from a human
- It was sent only to me
- I have previously emailed this person
In [current year] my email account is like my post box on my home. I need it because I get important documents sent to me by robots (bills) but it just piles up until I know there is something in there that I need.
If a human were to send me a letter it would easily get lost.
Every email productivity tool targets the market of people who use email a lot. For most of us direct messaging has replaced email. However when an actual human does email us it tends to be very important. Something we don't want to miss. There is no tool I know of to solve this.
However if the threshold for not including a package is that it's 8 lines of code that would rule out using most of the functions in Lodash and Underscore.
If the threshold is not importing code a child could write that would rule out using Babel which was in fact literally written by a child.
yeah it's called Tree Shaking. It's been a massive area of improvement over the last few years. However JavaScript being dynamic can be very difficult to effectively statically analyse.
A good example: There is a library called Moment for handling dates. Due to the way the interface was built it basically can't be tree shaken. It's an excellent library but it's on the heavy side. For a while now people have been moving to libraries like Date-Fns which are collections of individual functions. This library can be tree shaken as it's obvious which functions you are using and which you are not
It seems to be really common to sling mud at the JavaScript/NPM ecosystem from developers who work in other domains.
One of the big constraints we have in front end development is that every added feature adds to the bundle size of code we have to send down the wire to the end user.
When I worked in mobile app development third party libraries tended to be very large with many many features. Only a tiny fraction of that library ends up matching your use case. However when you build you end up bundling up the whole thing into your app.
JavaScript has more of a culture of many many small hyper focused packages. The logical conclusion being single function packages like left pad.
This has two benefits. One - you have less dead code in your final build. Two - if one of your dependencies is already using leftpad you essentially get to use it "for free".
If everyone did what you are suggesting you would find multiple instances of leftpad. One version you wrote. One version your dependency wrote. One version your dependency's dependency wrote etc.
I would presume the ideal super weapon would be a lethal airborne virus that only you had the vaccination for. It would decimate your enemy but leave all their infrastructure intact.
It wouldn't be too expensive to achieve. You would just need to find an existing virus and conduct gain of function research to make it more transmissible and more lethal.
The physical network itself evolved away from peer -> peer back to client -> server. With IPv6 I'd hoped we would today be living in a world where I could send my friend the url fe80::1ff:fe23:4567:890a/cat.mov and they could download a video directly from my phone. No matter where my phone happens to be in the world. People could host "micro services" on their personal devices and the whole world could access them. If someone wants to know if I'm free on a date they could connect to my phone's calendar app directly and ask. There are so may possibilities of truly peer to peer applications.
But the network itself prevents this. Bittorrent has to jump though multiple NAT busting hoops to allow two internet users to talk to each other directly. limited IPv4 addresses mean home internet connections have dynamic IP addresses which means no one can realistically host at home. Because no one hosts at home they consume far more than they upload. Because of this the physical network was built with a much higher download bandwidth than upload. It's a vicious cycle that wasn't intentional it just sort of evolved that way.
Bit late to the party but I really enjoyed this comment and the subsequent conversation. I was given some advice when I was junior and I've been repeating it for years.
Code it read 100 times more than it is written/edited. Writing in a high level language is writing for a human first and a computer second.
As a general rule of thumb a variable name should be as big as the scope of that variable.
* If it's scope is one line it's okay to use a single letter.
deletedDocuments = documents.find(d => d.deleted)
* If it's within a block normally one or two words will be fine.
* If it's one file, 3 or 4 words.
* If it's global it should read like the opening paragraph to war and peace.
The last two are generally indications that something has gone wrong with how you are encapsulating your code and you should consider a refactor. However you will often have no other option in which case always lean towards more descriptive not less.
I can't overstate how revolutionary Sketch was when it came out.
We were a small webdev shop and were pretty early adopters. Back then it was standard practice for designers to work in Photoshop and hand over full website designs in flat .png format. Us devs would then struggle to convert those designs into HTML and CSS templates pretty much by eye.
Sketch changed all this.
1. The price. We got early licences for something crazy like £35. This meant it was possible for all of the devs to have a licence even if we were only using it to consume files created by the designers. There is no way we could afford this with Adobe.
2. Because the developers were viewing the designs in app we could inspect and get exact values for things like spacings, colors and fonts. I can't describe how hard it is to get exact font, font size & font weight by eye if you don't come from a design background.
3. At some point they added the ability to just right click something and export the style as CSS. This was never good enough to just paste into your stylesheet but by using it as a base sped up development massively.
4. It was built for the web and mobile. All the designers I worked with came from a print background so it made sense their tool suite of choice was Adobe. I can't get my head around how they designed websites in Photoshop for so many years.
5. The interface was incredibly simple and intuitive. If you remember it, contrast how simple the 3D software SketchUp was compared to say Blender. As a developer I've never invested time to learn Photoshop but Sketch you know after 10 minutes of playing with. I still use it today for my hobby projects.
Partly because of 5 I get a little irritated when they add new features. I've seen this happen with so much software. You earn some money and hire some developers and so it follows you have to add features to keep them busy. I'd be over the moon if they just said "we're going to have a feature freeze for two or three years while we work on developing the simplest most intuitive interface possible for doing complex SVG manipulations"
I think you’re making the mistake of looking at this from a developer’s point of view and ignoring the business pressures involved. Of course it’s easier to build native on one platform.
Here in the UK, for a startup app trying to bootstrap from nothing, you are looking at paying between £10-£50 per new user install. That’s just marketing. A very small number of those users will continue using the app and a smaller number still will generate any revenue.
In theory you can limit your marketing funnel to just target one platform but in reality you need to maximise the ability of your app to thrive on word of mouth and social shares if you want to not just break even but continue to grow after your initial funding dries up.
If you’re building a companion app for an existing company with an existing client base, again you absolutely can’t launch on just one platform. Even if you do manage to swing that what I’ve often seen is the iOS app comes first (as that’s what all the developers and company executives have) but the majority of the customers are on android.
If you aim for simultaneous launches of two native apps you’ll find the minimum you need is two developers (one for each platform) as it’s rare to find developers that are highly efficient writing for both platforms. People often are mainly android/iOS and a little experience in the other. That’s fine but we need to get this app out this year.
This can work in larger companies but what you find there is not two developers but two whole scrum teams with two apps, two APIs (for political reasons) and two feature backlogs. Over time the apps diverge with new features taking ages to hit the second platform. Resulting in angry customers “My friend’s version of Monzo does xyz why doesn’t mine?”
I don’t have any experience with Ionic but I have worked with React Native from very early after it was released. Yes, we found ourselves writing native modules for both platforms all the time but that’s still less work than writing the whole app twice. However I think the platform has matured nicely now and if you’re building a simple CRUD mobile app I would absolutely put my money on React Native even if you’re a large company and can afford to put two whole scrum teams on the project.
Here in the UK the customer service has been amazing. The company we bought from (AO.com) installed it incorrectly (the water pipe plug wasn’t removed) they told us to get stuffed. We called Miele. They sent someone to us the next day and fixed it free of charge