HNHacker News
TopNewBestAskShowJobs

AndrewSChapman

264 karma · joined August 15, 2017

submissionscomments
AndrewSChapman··on Tech Stack for “Failing Fast”
This is really interesting - thanks!
AndrewSChapman··on Mnm – an open source project to replace email and SMTP
Agree with everything you've said. Additionally, consistent rendering. If you've ever tried to send an email campaign and had to support all the old (and sometimes surprisingly new) Outlook clients and Lotus notes, you'll know just how painful that is.

Email must be: * Secure and encrypted; * Have proven identity; * Have easy to fabricate and predictable rendering;

I feel like the ability to have forms and charts is very nice, but adds a lot of complexity, especially from a security point of view. I'd be looking at this kind of "application level" functionally being a layer added optionally on top, not being in the core protocol.

AndrewSChapman··on Mnm – an open source project to replace email and SMTP
Completely agree.
AndrewSChapman··on Scaleway Stardust Instances
Just to add a counter point of view, I've been a Scaleway customer for about two years now. No problems with my VPS or customer service what so ever.
AndrewSChapman··on Astonishing Performance of .NET 5
I'm not even a C# coder and I can't understand the complaints about this. If you want to code fast and fancy free, use Python or PHP. If you want to use enterprise patterns that will make your code clean, testable and nicely modular, then go for something like C# or Java. Why even use C# if you can't be bothered with DI because... too many lines? mindblown
AndrewSChapman··on CQRS: Command Query Responsibility Segregation (2011)
Agree 100%. There are probably better alternatives if you're needing to improve scalability.
AndrewSChapman··on Studies Point to Big Drop in Covid-19 Death Rates
I'm not so sure this is true.

Here in the UK the deaths are climbing back up again as the second wave comes in. Yesterday we had 241 Covid-19 fatalities, a number not seen since the start of June.

Additionally, the way the UK is counting deaths changed a few months ago. Originally we were counting everyone that had been diagnosed with Covid, now if the death doesn't occur within 28 days of infection the death isn't counted as a Covid-19 death.

And finally, we're testing a hell of a lot more now so the alleged case numbers back in April (~5000 a day) don't marry up at all with case numbers now (~20,000 a day). I'm guessing back in April it was closer to 80,000 cases a day in reality, which would make the disease just as deadly now as it was back then.

AndrewSChapman··on The Developer Experience Gap
Indeed. And let's not forget the Palm Treo https://en.wikipedia.org/wiki/Palm_Treo

Was out well before the iPhone, sold Internationally, had installable 3rd party apps (proper apps, not just "web" apps that the 1st gen iPhone had).

Apple fanatics always seem to think Apple create the first smartphone as we know it.

AndrewSChapman··on Facebook News
This looks great - nice work!
AndrewSChapman··on Relativty – An open-source VR headset
Ever since Facebook bought Oculus I've really hoped something like this would spring up.

I really really want it to succeed and would be happy to back it on Kickstarter or similar.

How do we ensure that these projects don't end up being bought out by Facebook or Google?

AndrewSChapman··on Mozilla Is Dead
What kills me is that I was unaware of just how badly Mozilla was struggling. As an avid Firefox user, I would have paid a monthly subscription to help keep the Mozilla dream and values alive. A world with just Google/Chrome is too depressing.
AndrewSChapman··on Mint: A programming language for writing single page applications
I'm curious. A question for the author: What is it that you're aiming to improve over Vue + Typescript? Vue is opinionated and comes with single file components, a router, a store etc.
AndrewSChapman··on Ask HN: For a startup, when should I begin writing tests?
If you don't unit test from day 1 then there's a strong probability that you wont be writing your code in a way that you can unit test later. e.g. mockable dependencies. I'm included to say go with TDD right from the start.
AndrewSChapman··on The ups and downs of porting 50k lines of C++ to Go (2015)
If you haven't tried Kotlin, you really should. It's a highly expressive, null safe language with all the goodies you'd want without the bloat of Java. For web services, Kotlin + Vert.x + Postgres is a beautiful and highly performant thing.
AndrewSChapman··on What Happens When Facebook Goes the Way of Myspace?
Meh, using shouldn't wouldn't have the same rhetorical impact. It's similar to the phrase "Can't complain.". Sure you could say "Shouldn't complain".. but it doesn't work.
AndrewSChapman··on What Happens When Facebook Goes the Way of Myspace?
If they changed it would be suicide. Their whole raison d'être is around privacy and no censorship.
AndrewSChapman··on What Happens When Facebook Goes the Way of Myspace?
Honestly, I hope they do! Simply put, the company is ethically bankrupt and deserve to be made an example of how not to run a social network.

You can't go selling peoples private messages to Netflix (the sheer audacity of that just blows my mind!). You can't allow peoples private data to be sold to data analytics firms that are trying to sway elections.

Facebook is built on the belief that people don't need privacy and I think that's fundamentally wrong.

As an aside, I hope people continue migrating to https://MeWe.com which has a clear privacy bill of rights at its core and zero ads. It makes money in a far more traditional approach by charging for "pages" and extended emotions etc.

AndrewSChapman··on Is there an actual Facebook crisis, or media narrative about Facebook crisis?
This seems legit: https://www.businessinsider.com/facebook-employee-morale-dro...

I think if the WSJ posted factually incorrect information, Facebook would have reacted and asked for a redaction and probably an apology.

AndrewSChapman··on Is there an actual Facebook crisis, or media narrative about Facebook crisis?
I deleted my Facebook, Instagram and WhatsApp accounts just this weekend. It's not that I don't like the service Facebook provides (I liked Insta in particular), but I don't want to be a part of the data harvesting, privacy destroying, democracy usurping empire any more. I don't believe Facebook has your best interests at heart. I don't think Facebook is good for society.

Also I read recently that they have a crisis internally amongst their staff with employees considering jumping ship. Additionally, new graduates no longer consider Facebook as the premium place to work. This may start to hurt them in the coming years.

AndrewSChapman··on Cadbury ‘pushing orangutans towards extinction by wrecking habitat for palm oil’
In Australia Cadbury decided to remove palm oil from their plain dairy milk blocks in reaction to outrage caused by talk-back radio. Sadly the outrage wasn't about environmental devestation, but palm oil related health concerns.
AndrewSChapman··on Cadbury ‘pushing orangutans towards extinction by wrecking habitat for palm oil’
It is absolutely feasible. I do it. My wife does it. There are alternatives for almost everything, you just have to look and spend a bit of time researching. Sometimes you have to order products on the Internet instead of getting them in your local supermarket.

Also, if a product just mentions "vegetable fat" it's more than likely palm.

AndrewSChapman··on Ask HN: How should a programming language accommodate disabled programmers?
I've seen some programmers code using voice. This is really handy for people without functiong hands or fingers. They tend to use voice recognition software like Dragon and various plugins.

I'd say from a programming language point of view, having keywords that are short (single word would be ideal) and phonetically distinct is really important.

One python programmer I watched on Youtube made his own vocabulary of strange sounds that he trained his software to recognise and translate to real keywords.

AndrewSChapman··on Stop using JWT for sessions (2016)
How about instead of "the whole point of JWT is to completely avoid server-side state management" we think of it as "the whole point of JWT is to reduce the overheads of server-side state management".

In my answer above, I was pretty clear about how the load on the database can be significantly reduced with a blacklist and optionally Redis out front, thus allowing JWT to significantly reduce the burden on the database.

AndrewSChapman··on Stop using JWT for sessions (2016)
I'm not 100% sold. I think JWT's are fine in some situations as long as you know the limitations.

Regarding session invalidation, I would handle this in two ways.

1. Support a "Log everyone out" function by storing a simple version number in the JWT. If the version constant in your app is different to the number in the JWT, it is invalid.

2. Support a "I need to logout user X function" by storing a blacklist of tokens in your RDBMS. If your RDBMS goes down, you have much bigger problems. A blacklist will be very short, and often completely empty, so lookups will be significantly faster than checking a session table. You could also use Redis or an application cache for storing the blacklist, with an RDBMS fallback.

Regarding storage, there's nothing stopping you putting your JWT into a cookie with the HTTPonly flag set. So long as you're not storing too much in token, they will be less than 4k and so will fit.

AndrewSChapman··on Manyverse – A social network off the grid
It sounds a lot like a blockchain: "Your log is immutable and message order is preserved - every message+previous_hash is signed" which means no deletions, ever.
AndrewSChapman··on Why JWTs Suck as Session Tokens (2017)
I've read several articles along these lines now I tend to think the arguments are pretty weak.

In this media rich age, the data size argument is a bit silly.

The "you're going to hit the database anyway" argument whilst probably accurate in most cases, doesn't invalidate that JWT allows for one or more fewer database hits on every request.

Having built-in integrity checking is definitely a feature. Just because you can do it without JWT doesn't mean that it's not useful that JWT does it.

IMHO the biggest argument against the use of JWT is that you can't easily invalidate JWT sessions. Should you need to dump a users session or if the information contained in that session token has become invalid then you might be in trouble. For my use cases so far however this hasn't been a problem.

JWT is a fine solution for quite a lot of use cases. As with everything tech, just be aware of the limitations and choose wisely.

AndrewSChapman··on All software sucks (2011)
Listing FreeBSD, D, Java, C++, and SQL databases as "harmful stuff", and suggesting "hierarchical file systems" and "textual interfaces" as not harmful. What the actual hell?
AndrewSChapman··on Anti-If: The missing patterns (2016)
Pattern 1: Reasonable

Pattern 2: Yes absolutely

Pattern 3: Seems a bit inefficient, allocating memory when a simple if statement would avoid calling the method at all.

Pattern 4: Would prefer

if (foo && bar) { return true; }

return baz;

Than the proposed solution which is harder to read.

Pattern 5: Just no! The repository getRecord method should have no care about coping strategies, which may change depending on the calling context. It should instead throw an RecordNotFoundException. You could also use success and error callbacks in the method signature.

AndrewSChapman··on How an Engineering Company Chose to Migrate to D
I'm not so sure about that. For the basics that's definitely true, and no doubt if you're a C++ programmer then it will be an easier transition, but if you're coming from a higher level language like Java, C#, PHP etc then there's a lot to get your head around. That said, it's absolutely worth it :-)
AndrewSChapman··on How an Engineering Company Chose to Migrate to D
I work in a small team building APIs with PHP for the real estate industry. In my last job I did manage to use D for a "sequence mining" algorithm that looked for problematic behavioural patterns in web user behaviour. PHP would have been waaay too slow for the quantity of data that needed to be evaluated. That was honestly one of the most enjoyable things I've ever coded.

My hobby project languages or choice are currently D and Kotlin. I prefer the semantics and flexibility of D, but Kotlin has the backings of the tried and tested Java ecosystem, which is hard to beat when you just want to get down to it. Also web servers in Java are vastly superior at the moment. Vert.x is so very fast.

← PreviousPage 2 of 3Next →