The GOV.UK Technology Blog is written by UK Government Digital Service staff on building and running government websites.
HN commenters cite it for its progressive enhancement approach and its petitions scaling writeup, and a GDS hiring post links to it.
More info at https://technology.blog.gov.uk/2016/08/16/scaling-the-petitions-service-following-the-eu-referendum/.
I'm not a db person, but are they sharding. Surely as they're only writing simple tuples with a petition they can easily write to multiple separate dbs (shards I guess) and amalgamate the results at leisure?
That link says they need to update the web content perpetually, but it seems it's only the number of signatories they need to keep live, isn't it. So once it breeches 100k then they can estimate the signatory rate (including acceleration) and update the row count when they think 200k will be breeched - at 1k/min updating the row count each hour is fine, presumably. Surely that's not a massive processing job?
I'd love some input here, because naively it seems like they're not handling that much data? A million rows of 1kB is still only 1GB, and they're only gathering a few simple fields in each tuple??
Even if safari had the greatest date picker ever conceived, don't use date pickers for date of births. They will never be better or faster than typing your DOB. Pickers are best for choosing dates that aren't known ahead of time, or where you need to know how a date relates to week days / week numbers etc.
The proposed solution of using number inputs is also not great, since they have a host of accessibility issues [0] You want a regular text input with inputmode="numeric" and a pattern attr. This will give the correct numeric keyboard on mobile, and work just as well in desktop, without any of the associated issues.
I've built several date pickers, I know how hard they can be to get right. But they shouldn't bbw blindly used for any date value, they should be a deliberate choice
[0] https://technology.blog.gov.uk/2020/02/24/why-the-gov-uk-design-system-team-changed-the-input-type-for-numbers/
The musl remark is funny, because jemalloc's use of pretty fine-grained arenas sometimes leads to better memory utilisation through reduced fragmentation. For instance Aerospike couldn't fit in available memory under (admittedly old) glibc, and jemalloc fixed the issue: http://highscalability.com/blog/2015/3/17/in-memory-computing-at-aerospike-scale-when-to-choose-and-ho.html
And this is not a one-off: https://hackernoon.com/reducing-rails-memory-use-on-amazon-linux-with-jemalloc https://engineering.linkedin.com/blog/2021/taming-memory-fragmentation-in-venice-with-jemalloc
jemalloc also has extensive observability / debugging capabilities, which can provide a useful global view of the system, it's been used to debug memleaks in JNI-bridge code: https://www.evanjones.ca/java-native-leak-bug.html https://technology.blog.gov.uk/2015/12/11/using-jemalloc-to-get-to-the-bottom-of-a-memory-leak/
I'd be very careful recommending this method for loading webfonts. By Base64 encoding your fonts into a CSS file you are adding 1000's of bytes into a browsers critical path (since CSS is render blocking). You are also removing the browser ability to choose the most optimum font it supports (i.e. one with better compression like WOFF2). Requests are cheap, especially when using HTTP/2 (which multiplexes over a single TCP connection).
If you do use this method, I highly recommend testing both the standard loading method vs Base64 method on a low spec device (e.g. Moto G4 via WebPageTest) and seeing which performs best for your website.
This method used to be used on GOV.UK until we removed it 18 months ago. I wrote about the change here if you are interested: https://technology.blog.gov.uk/2018/10/04/making-gov-uk-pages-load-faster-and-use-less-data/
We already had a robust set of tools in our technology stack to help us scale. Our primary tool is a combination of Amazon CloudFormation and Elastic Compute Cloud (EC2) which we use to automatically deploy and scale instances in response to demand. Backing these instances is a PostgreSQL RDS database which acts as our primary data store. One other component in our stack is Amazon ElastiCache, a key-value store configured with the open-source Memcached engine, which caches generated fragments of HTML so we can speed up page build times.
https://technology.blog.gov.uk/2016/08/16/scaling-the-petitions-service-following-the-eu-referendum/
Perhaps, a petition is required to employ a new Cloud Architect, as this is not the first time the Petitions service has had to cope with extra traffic & spew out 502 Bad Gateway error.
Government Digital Service | London, UK | Full-Time | Onsite | Developers
Government Digital Service (GDS) is helping to redefine how a modern government should serve its citizens. Our work is cutting-edge and award-winning. It is improving the lives of millions of people.
We are looking for Developers with strong Ruby knowledge to help GDS build and run world-class public services for the digital age. You will work in small, multidisciplinary agile teams.
Users always come first and everything we do should meet their needs.
Read more - https://technology.blog.gov.uk/
Some of our benefits: flexible working hours + brilliant work life balance, choice of hardward, Civil Service pensions, 25 days annual leave
Apply here: https://app.jobvite.com/j?cj=oweaafwO&s=hackernews
*Must have right to work in UK