A historical record of foundational web development blog posts
18 by kosasbest | 2 comments on Hacker News.
Thursday, August 31, 2023
New top story on Hacker News: No Love for Negative Permissions – DAC/ACL Bypass on Linux
No Love for Negative Permissions – DAC/ACL Bypass on Linux
12 by Deeg9rie9usi | 0 comments on Hacker News.
12 by Deeg9rie9usi | 0 comments on Hacker News.
Wednesday, August 30, 2023
Tuesday, August 29, 2023
Monday, August 28, 2023
Sunday, August 27, 2023
Saturday, August 26, 2023
Friday, August 25, 2023
Thursday, August 24, 2023
New top story on Hacker News: Visual Introduction to Hash-Array Mapped Tries (HAMTs)
Visual Introduction to Hash-Array Mapped Tries (HAMTs)
5 by photon_lines | 0 comments on Hacker News.
5 by photon_lines | 0 comments on Hacker News.
Wednesday, August 23, 2023
Tuesday, August 22, 2023
Monday, August 21, 2023
Sunday, August 20, 2023
Saturday, August 19, 2023
Friday, August 18, 2023
Thursday, August 17, 2023
New top story on Hacker News: Show HN: Run globally distributed full-stack apps on high-performance MicroVMs
Show HN: Run globally distributed full-stack apps on high-performance MicroVMs
6 by edouardb | 1 comments on Hacker News.
Hi HN! We’re Yann, Edouard, and Bastien from Koyeb ( https://www.koyeb.com/ ). We’re building a platform to let you deploy full-stack apps on high-performance hardware around the world, with zero configuration. We provide a “global serverless feeling”, without the hassle of re-writing all your apps or managing k8s complexity [1]. We built Scaleway, a cloud service provider where we designed ARM servers and provided them as cloud servers. During our time there, we saw customers struggle with the same issues while trying to deploy full-stack applications and APIs resiliently. As it turns out, deploying applications and managing networking across a multi-data center fleet of machines (virtual or physical) requires an overwhelming amount of orchestration and configuration. At the time, that complexity meant that multi-region deployments were simply out-of-reach for most businesses. When thinking about how we wanted to solve those problems, we tried several solutions. We briefly explored offering a FaaS experience [2], but from our first steps, user feedback made us reconsider whether it was the correct abstraction. In most cases, it seemed that functions simply added complexity and required learning how to engineer using provider-specific primitives. In many ways, developing with functions felt like abandoning all of the benefits of frameworks. Another popular option these days is to go with Kubernetes. From an engineering perspective, Kubernetes is extremely powerful, but it also involves massive amounts of overhead. Building software, managing networking, and deploying across regions involves integrating many different components and maintaining them over time. It can be tough to justify the level of effort and investment it takes to keep it all running rather than work on building out your product. We believe you should be able to write your apps and run them without modification with simple scaling, global distribution transparently managed by the provider, and no infrastructure or orchestration management. Koyeb is a cloud platform where you come with a git repository or a Docker image, we build the code into a container (when needed), run the container inside of Firecracker microVMs, and deploy it to multiple regions on top of bare metal servers. There is an edge network in front to accelerate delivery and a global networking layer for inter-service communication (service mesh/discovery) [3]. We took a few steps to get the Koyeb platform to where it is today: we built our own serverless engine [4]. We use Nomad and Firecracker for orchestration, and Kuma for the networking layer. In the last year, we spawned six regions in Washington, DC, San Francisco, Singapore, Paris, Frankfurt and Tokyo, added support for native workers, gRPC, HTTP/2 [5], WebSockets, and custom health checks. We are working next on autoscaling, databases, and preview environments. We’re super excited to show you Koyeb today and we’d love to hear your thoughts on the platform and what we are building in the comments. To make getting started easy, we provide $5.50 in free credits every month so you can run up to two services for free. P.S. A payment method is required to access the platform to prevent abuse (we had hard months last year dealing with that). If you’d like to try the platform without adding a card, reach out at support@koyeb.com or @gokoyeb on Twitter. [1] https://ift.tt/pkT6dBn... [2] https://ift.tt/TtSX5Lq... [3] https://ift.tt/nm8vRXG... [4] https://ift.tt/1janbTd... [5] https://ift.tt/v9uSRbD...
6 by edouardb | 1 comments on Hacker News.
Hi HN! We’re Yann, Edouard, and Bastien from Koyeb ( https://www.koyeb.com/ ). We’re building a platform to let you deploy full-stack apps on high-performance hardware around the world, with zero configuration. We provide a “global serverless feeling”, without the hassle of re-writing all your apps or managing k8s complexity [1]. We built Scaleway, a cloud service provider where we designed ARM servers and provided them as cloud servers. During our time there, we saw customers struggle with the same issues while trying to deploy full-stack applications and APIs resiliently. As it turns out, deploying applications and managing networking across a multi-data center fleet of machines (virtual or physical) requires an overwhelming amount of orchestration and configuration. At the time, that complexity meant that multi-region deployments were simply out-of-reach for most businesses. When thinking about how we wanted to solve those problems, we tried several solutions. We briefly explored offering a FaaS experience [2], but from our first steps, user feedback made us reconsider whether it was the correct abstraction. In most cases, it seemed that functions simply added complexity and required learning how to engineer using provider-specific primitives. In many ways, developing with functions felt like abandoning all of the benefits of frameworks. Another popular option these days is to go with Kubernetes. From an engineering perspective, Kubernetes is extremely powerful, but it also involves massive amounts of overhead. Building software, managing networking, and deploying across regions involves integrating many different components and maintaining them over time. It can be tough to justify the level of effort and investment it takes to keep it all running rather than work on building out your product. We believe you should be able to write your apps and run them without modification with simple scaling, global distribution transparently managed by the provider, and no infrastructure or orchestration management. Koyeb is a cloud platform where you come with a git repository or a Docker image, we build the code into a container (when needed), run the container inside of Firecracker microVMs, and deploy it to multiple regions on top of bare metal servers. There is an edge network in front to accelerate delivery and a global networking layer for inter-service communication (service mesh/discovery) [3]. We took a few steps to get the Koyeb platform to where it is today: we built our own serverless engine [4]. We use Nomad and Firecracker for orchestration, and Kuma for the networking layer. In the last year, we spawned six regions in Washington, DC, San Francisco, Singapore, Paris, Frankfurt and Tokyo, added support for native workers, gRPC, HTTP/2 [5], WebSockets, and custom health checks. We are working next on autoscaling, databases, and preview environments. We’re super excited to show you Koyeb today and we’d love to hear your thoughts on the platform and what we are building in the comments. To make getting started easy, we provide $5.50 in free credits every month so you can run up to two services for free. P.S. A payment method is required to access the platform to prevent abuse (we had hard months last year dealing with that). If you’d like to try the platform without adding a card, reach out at support@koyeb.com or @gokoyeb on Twitter. [1] https://ift.tt/pkT6dBn... [2] https://ift.tt/TtSX5Lq... [3] https://ift.tt/nm8vRXG... [4] https://ift.tt/1janbTd... [5] https://ift.tt/v9uSRbD...
New top story on Hacker News: What I learned after managing a small team for 2 years
What I learned after managing a small team for 2 years
10 by nonameriot | 8 comments on Hacker News.
10 by nonameriot | 8 comments on Hacker News.
Wednesday, August 16, 2023
Tuesday, August 15, 2023
Monday, August 14, 2023
Sunday, August 13, 2023
Saturday, August 12, 2023
Friday, August 11, 2023
Thursday, August 10, 2023
Wednesday, August 9, 2023
Tuesday, August 8, 2023
Monday, August 7, 2023
Sunday, August 6, 2023
Saturday, August 5, 2023
Friday, August 4, 2023
Thursday, August 3, 2023
Wednesday, August 2, 2023
New top story on Hacker News: Show HN: Learn a language quickly by practising speaking with AI
Show HN: Learn a language quickly by practising speaking with AI
14 by cwbuilds | 12 comments on Hacker News.
Hi guys, Hope everyone is well. This app was borne out of my own frustration. I thought that I was terrible at learning languages at school, since I didn't become conversational in French after 5 years of study. However, I later traveled with some French friends and, in just under 3 weeks, I was able to hold a reasonable conversation. I realized that there's no substitute for speaking to native speakers. I tried to adopt this approach for other languages, but it's much harder to find people to practise with when you aren't travelling. I started using iTalki to meet people from different countries and chat to them. It quickly became very expensive and time-consuming to schedule the calls, so I gave up. I made PrettyPolly so that anyone can easily practice speaking 26 languages orally. The app uses ChatGPT (amongst other tools) to allow you to practice speaking whenever you want. It also generates a fluency score for each conversation so that you have an objective way of tracking progress. It's free to use (up to 15 conversations per month). I've found that using it once or twice per day is plenty, and you'll be amazed at how much you will pick up in a week. I've added some FAQs here in case useful - https://ift.tt/UHnF2Vf Would really appreciate any feedback. Let me know if you have any questions, issues or suggestions. Thanks, Chris
14 by cwbuilds | 12 comments on Hacker News.
Hi guys, Hope everyone is well. This app was borne out of my own frustration. I thought that I was terrible at learning languages at school, since I didn't become conversational in French after 5 years of study. However, I later traveled with some French friends and, in just under 3 weeks, I was able to hold a reasonable conversation. I realized that there's no substitute for speaking to native speakers. I tried to adopt this approach for other languages, but it's much harder to find people to practise with when you aren't travelling. I started using iTalki to meet people from different countries and chat to them. It quickly became very expensive and time-consuming to schedule the calls, so I gave up. I made PrettyPolly so that anyone can easily practice speaking 26 languages orally. The app uses ChatGPT (amongst other tools) to allow you to practice speaking whenever you want. It also generates a fluency score for each conversation so that you have an objective way of tracking progress. It's free to use (up to 15 conversations per month). I've found that using it once or twice per day is plenty, and you'll be amazed at how much you will pick up in a week. I've added some FAQs here in case useful - https://ift.tt/UHnF2Vf Would really appreciate any feedback. Let me know if you have any questions, issues or suggestions. Thanks, Chris
New top story on Hacker News: Show HN: We built swup+fragment-plugin to visually enhance classic websites
Show HN: We built swup+fragment-plugin to visually enhance classic websites
9 by rasso | 0 comments on Hacker News.
## TL;DR - Progressively enhance your classic website / MPA to a single page app. - Support for fragment visits, comparable to nested routes in React or Vue. - Keep your site crawlable and indexable without any of the overhead of SSR. - No tight coupling of back- and frontend. Use the CMS / Framework / SSG of your choice. - Strong focus on interoperability with DOM-altering JS tools (think Alpine.js, jQuery, ...). - Strong focus on accessibility, even for fragment visits. ## Long Version: Best of three worlds Hi, I'm Rasso Hilber. I have been a web designer and developer since around 2004. From the beginning of my career, I always had to make tradeoffs between 3 goals when building websites: 1. The websites I build should be visually impressive, original, and snappy. 2. The websites I build should be crawlable, accessible and standards compliant. 3. The websites I build should have low technical complexity and be easy to maintain in the long run. In the beginning, I was able to achieve goals 1 (impressive!) and 3 (easy to maintain!) by using Macromedia/Adobe Flash, but due to the nature of the technology horribly failed to deliver crawlable and accessible websites. Later, I found a way to run two sites in parallel for each website I built, one using CMS-generated XHTML for crawlability, one in Flash for the visitors, fetching the data from its XHTML twin. Now I had solved goals 1 and 2, but my setup was awfully complex and brittle. Around 2010, I was relieved to see Flash finally coming to its end. I switched to building websites using PHP, HTML, and jQuery. I could now tick goals 2 (accessibility) and 3 (low complexity), but the websites I was able to build using these technologies weren't as impressive anymore. Hard page loads between every link click being one of the biggest regressions in UX from the days of Flash IMO. Around 2014/15, I first heard about the new frameworks: Angular, React, Vue. These frameworks were not intended to be used for classic websites. They were made for single-page-apps! But it felt to me like no one cared. Even when building classic websites, many developers sacrificed SEO and accessibility for a snappy experience, serving an empty ` ` to the browser. I couldn't blame them; I had done the same in my early days as a Flash developer. They ticked goal 1 (impressive) and goal 3 (low complexity). But the lack of accessibility kept me from joining the movement. I was still building classic websites, after all. After some time, many started realizing that serving an empty div had downsides – SSR, hydration, and whatnot were born, now ticking goal 1 (impressive) and goal 2 (accessibility), with the trade-off of awful complexity. It reminded me a lot of my little Frankenstein's monster "Flash+XHTML," and I still didn't want to join the hype. Still, because the noise was so loud, I felt like I might be becoming obsolete, an "old man yelling at the clouds". New very interesting tools like HTMX or Unpoly popped up that looked promising at first, but at closer inspection weren't optimized for my use case either. These were primarily built for real interfaces/single-page-apps (html snippets instead of full pages, UI state independent of URLs, altered DOM saved in history snapshots, ...). I wanted to find a tiny tool, optimized for building presentational , content-driven websites with a strong focus on accessibility . Instead, after a few years of rolling my own home-grown solutions, I started using swup[0], a "Versatile and extensible page transition library for server-rendered websites". Swup consists of a tiny core and a rich ecosystem of official plugins[1] for additional functionality. It was hitting the sweet spot between simplicity and complexity, and felt like it was perfect for my use cases. Shortly after I had started using it, I became a core contributor and maintainer of swup. The only thing I was still missing to be a happy developer was the ability to create really complex navigation paths where selected fragments are updated as you navigate a site, much like nested routes allow in React or Vue. The last two months I teamed up with @daun [2] to finally solve this hard problem. The result is two things: 1. A new major release of swup (v4) that allows customizing the complete page transition process by providing a powerful hook system and a mutable visit object 2. The newly released fragment-plugin [3] that provides a declarative API for dynamically replacing containers based on rules Use cases for the fragment-plugin are: - a filter UI that live-updates its list of results on every interaction - a detail overlay that shows on top of the currently open content - a tab group that updates only itself when selecting one of the tabs - a form that updates only itself upon submission I can now finally build websites that tick all three boxes: 1. Visually impressive, fun, and snappy by using swup's first-class support for animations[4], cache[5], and preload capacities[6], enhanced with fragment visits as seen on the demo site. 2. Accessible by being able to serve server-rendered semantic markup that will fully work even with JavaScript disabled (try it out on the demo site!). On top of that, swup's a11y plugin[7] will automatically announce page visits to assistive technologies and will focus the new `` element after each visit. 3. Because now all I need for my fancy frontend is a bit of progressive JavaScript, I can choose whatever tool I like on the server, keeping complexity low and maintainability high. I can use SSGs like eleventy or Astro (the demo site is built using Astro!), I can use any CMS like WordPress or ProcessWire, or a framework like Laravel. And I don't have to maintain an additional node server for SSG! The plugin is still in it's early stages, but I have a good feeling that this finally is the right path for me as a web developer. All it took was 20 years! ;) [0] https://ift.tt/Jp9dIk0 [1] https://ift.tt/ac7dkpS [2] https://github.com/daun [3] https://ift.tt/hCu3adD [4] https://ift.tt/QHawGej [5] https://ift.tt/EQUq495 [6] https://ift.tt/ZXr7dRy [7] https://ift.tt/i1f4OPs
9 by rasso | 0 comments on Hacker News.
## TL;DR - Progressively enhance your classic website / MPA to a single page app. - Support for fragment visits, comparable to nested routes in React or Vue. - Keep your site crawlable and indexable without any of the overhead of SSR. - No tight coupling of back- and frontend. Use the CMS / Framework / SSG of your choice. - Strong focus on interoperability with DOM-altering JS tools (think Alpine.js, jQuery, ...). - Strong focus on accessibility, even for fragment visits. ## Long Version: Best of three worlds Hi, I'm Rasso Hilber. I have been a web designer and developer since around 2004. From the beginning of my career, I always had to make tradeoffs between 3 goals when building websites: 1. The websites I build should be visually impressive, original, and snappy. 2. The websites I build should be crawlable, accessible and standards compliant. 3. The websites I build should have low technical complexity and be easy to maintain in the long run. In the beginning, I was able to achieve goals 1 (impressive!) and 3 (easy to maintain!) by using Macromedia/Adobe Flash, but due to the nature of the technology horribly failed to deliver crawlable and accessible websites. Later, I found a way to run two sites in parallel for each website I built, one using CMS-generated XHTML for crawlability, one in Flash for the visitors, fetching the data from its XHTML twin. Now I had solved goals 1 and 2, but my setup was awfully complex and brittle. Around 2010, I was relieved to see Flash finally coming to its end. I switched to building websites using PHP, HTML, and jQuery. I could now tick goals 2 (accessibility) and 3 (low complexity), but the websites I was able to build using these technologies weren't as impressive anymore. Hard page loads between every link click being one of the biggest regressions in UX from the days of Flash IMO. Around 2014/15, I first heard about the new frameworks: Angular, React, Vue. These frameworks were not intended to be used for classic websites. They were made for single-page-apps! But it felt to me like no one cared. Even when building classic websites, many developers sacrificed SEO and accessibility for a snappy experience, serving an empty ` ` to the browser. I couldn't blame them; I had done the same in my early days as a Flash developer. They ticked goal 1 (impressive) and goal 3 (low complexity). But the lack of accessibility kept me from joining the movement. I was still building classic websites, after all. After some time, many started realizing that serving an empty div had downsides – SSR, hydration, and whatnot were born, now ticking goal 1 (impressive) and goal 2 (accessibility), with the trade-off of awful complexity. It reminded me a lot of my little Frankenstein's monster "Flash+XHTML," and I still didn't want to join the hype. Still, because the noise was so loud, I felt like I might be becoming obsolete, an "old man yelling at the clouds". New very interesting tools like HTMX or Unpoly popped up that looked promising at first, but at closer inspection weren't optimized for my use case either. These were primarily built for real interfaces/single-page-apps (html snippets instead of full pages, UI state independent of URLs, altered DOM saved in history snapshots, ...). I wanted to find a tiny tool, optimized for building presentational , content-driven websites with a strong focus on accessibility . Instead, after a few years of rolling my own home-grown solutions, I started using swup[0], a "Versatile and extensible page transition library for server-rendered websites". Swup consists of a tiny core and a rich ecosystem of official plugins[1] for additional functionality. It was hitting the sweet spot between simplicity and complexity, and felt like it was perfect for my use cases. Shortly after I had started using it, I became a core contributor and maintainer of swup. The only thing I was still missing to be a happy developer was the ability to create really complex navigation paths where selected fragments are updated as you navigate a site, much like nested routes allow in React or Vue. The last two months I teamed up with @daun [2] to finally solve this hard problem. The result is two things: 1. A new major release of swup (v4) that allows customizing the complete page transition process by providing a powerful hook system and a mutable visit object 2. The newly released fragment-plugin [3] that provides a declarative API for dynamically replacing containers based on rules Use cases for the fragment-plugin are: - a filter UI that live-updates its list of results on every interaction - a detail overlay that shows on top of the currently open content - a tab group that updates only itself when selecting one of the tabs - a form that updates only itself upon submission I can now finally build websites that tick all three boxes: 1. Visually impressive, fun, and snappy by using swup's first-class support for animations[4], cache[5], and preload capacities[6], enhanced with fragment visits as seen on the demo site. 2. Accessible by being able to serve server-rendered semantic markup that will fully work even with JavaScript disabled (try it out on the demo site!). On top of that, swup's a11y plugin[7] will automatically announce page visits to assistive technologies and will focus the new `
Subscribe to:
Posts (Atom)