Filter by source
All sources GoCardless 6188 PubNub: 2462 Vercel 1539 Ariya Hidayat 849 Serverless 848 Jake Trent 812 Drew DeVault 783 Nic Raboy 733 Neon 479 Supabase 424 Soundcloud 409 SitePoint 406 Johannes Brodwall 378 Databricks 366 Jeremy Kun 323 PostHog 286 Real Python 286 Graham King 257 Carlos Becker 251 MapTiler 250 Scott Johnson 250 Lea Verou 242 Laravel 232 Matt Aimonetti 231 Andrew Bancroft 214 Stanko Tadić 186 Twilio 181 Atomic Object 176 Cloudflare 170 Nvidia 168 Trivago 158 Freek Van der Herten 155 Stack Overflow 145 The Daily WTF 136 Discord 134 WyeWorks 134 Dan Luu 133 Raymond Chen 133 Una Kravets 132 Swizec Teller 129 GitHub Old 128 Reginald Braithwaite 121 Radek Pazdera 118 Warp 114 Antirez 110 Codrops 110 Jane Street 105 Android 104 Cerner 103 AdRoll 102 Auth0 102 Jake Wharton 101 Changelog 100 Nelson Elhage 98 OCTO Technology 96 Ilija Eftimov 94 Marek Majkowski 94 Thoughtbot 89 AWS 88 dbt Labs 88 Finn.no 86 Nick Desaulniers 86 Hostinger 84 Hayden James 81 Luciano Mammino 79 Martin Fowler 78 Wingify 78 Marcelo Rinesi 77 Monica Dinculescu 77 Matt Warren 76 Docker 75 Drivy 75 Jan Lelis 75 Jessie Frazelle 75 Paweł Chudzik 73 Toptal 73 .NET 69 Nordic APIs 69 Mykhailo Kozik 68 Lerner Consulting 67 T.J. Maher 67 Timescale 66 Axel Rauschmayer 64 Mozilla Release 64 Ebay 62 Kotlin 62 Tania Rascia 60 0xADADA 59 Khan Academy 59 Jake Yesbeck 58 Confluent 57 Evil Martians 54 jOOQ 53 Tailscale 51 Sam Saffron 50 Sentry 49 Monstermuffin 48 RoseHosting 48 Huon Wilson 45 HackerEarth 44 Philip Walton 44 Dennis Felsing 43 SurveyMonkey 43 Fly.io 42 Robin Ward 41 Philipp Oppermann 40 Gleb Bahmutov 39 Facebook AI Research 38 The Pragmatic Engineer 38 Dean Hume 37 Rust 36 Josh Sherman 35 Alex Russell 34 Stripe 33 Joe Nelson 32 Tumblr 32 8th Light 31 Addy Osmani 31 Grab 31 Armin Ronacher 30 Domenico Luciani 30 Lazarus Lazaridis 30 Palantir 30 Pamela Fox 30 Airbnb 29 Brandwatch 29 Evan Miller 29 IPFS 29 Ruslan Spivak 28 Vanilla Java 28 Bartlomiej Filipek 27 Daniel Doubrovkine (dB.) 27 Jonathan Snook 27 Petr Mitrichev 27 Pinterest 27 Red 27 Mozilla Hacks 26 Bad Concurrency 25 CSC - IT Center For Science - Cloud Team 25 Dereuromark 25 Evan Hahn 25 GameChanger 25 Guido van Rossum 25 Jay Fields 25 Jeff Preshing 25 Julia Evans 25 Life Plus Linux 25 Mark Seaborn 25 Okta 25 Oona Räisänen 25 Srinivas Tamada 25 Stephen Colebourne 25 Steve Yegge 25 PagerDuty 24 Squarespace 24 Kogan.com 23 Criteo 22 GitHub 22 Babbel 21 Elegant Code 21 Crystal 20 Dave Cheney 20 David Walsh 20 Eli Bendersky 20 Guardian 20 HomeAway 20 Justin Weiss 20 Michael Herman 20 Miguel Quinones 20 Mike Ash 20 Ole Begemann 20 Paul Irish 20 Robert C. Martin 20 Stefan Parker 20 Target 20 Yahoo 20 Dropbox 19 Gusto 19 Netflix 19 Instacart 18 Nikola Brežnjak 18 The Coded Self 18 Aaron Patterson 17 Jeff Atwood 17 Thumbtack 17 Erlang Solutions 16 Stack Abuse 16 Wealthfront 16 Arkency 15 Bigcommerce 15 Edward Faulkner 15 Filippo Valsorda 15 High Scalability 15 Hypriot 15 Jacopo Tarantino 15 Jerry Gamblin 15 John Wittenauer 15 Lambda the Ultimate 15 Localytics 15 Matthew Green 15 Medium 15 Microsoft Python 15 Postmark 15 RocksDB 15 Slack 15 Spotify 15 Yegor Bugayenko 15 Advanced Web Machinery 14 Helpshift 14 Housing.com 14 HubSpot 14 OLX 14 REA Group 14 Robin Wilson 14 Zach Holman 14 Amit Merchant 13 Blender 13 Chris Wellons 13 Grofers 13 Indeed 13 Nextdoor 13 Rob Allen 13 Scott Hanselman 13 Henrik Warne 12 Jon Skeet 12 Mary Rose Cook 12 Nicolas Liochon 12 Novoda 12 Steve Bellovin 12 Abu Ashraf Masnun 11 Badoo 11 Bazaarvoice 11 Blundell's Android Tutorials 11 Canva 11 Feedzai 11 Haptik 11 Hashrocket 11 JobTeaser 11 Kevin Burke 11 Lyft 11 Marco Pivetta 11 Michael Crump 11 Paypal 11 RisingStack 11 Small Improvements 11 VNGRS 11 Vinted 11 Zendesk 11 Alan Storm 10 Appnexus 10 Artsy 10 BBC 10 Benchling 10 Bill the Lizard 10 Bohops 10 Bootstrap.com 10 Brendan Eich 10 Brendan Gregg 10 Brujo Benavides 10 Clever 10 Curalate 10 Daily JS 10 Daily Tech Video 10 Daniel Schmidt 10 Deliveroo 10 Dot Dev (.dev) 10 Dragan Djuric 10 Eddie Smith 10 Eric Elliot 10 Eric Lippert 10 Erik Runyon 10 Evan Jones 10 Federico Cargnelutti 10 Findmypast 10 Flickr 10 Freeletics 10 GoSquared 10 Groupon 10 Harry's 10 Henrik Lau Eriksson 10 High Scalability 10 Hootsuite 10 Idontgetoutmuch's Weblog 10 Itamar Turner-Trauring 10 Jamis Buck 10 Jesal Gadhia 10 Joel Spolsky 10 Juan Treminio 10 Junior Grossi 10 Kirill Shevchenko 10 Larry Land 10 Matt Cutts 10 Matt Might 10 Mesosphere 10 Miro Cupak 10 Miro 10 NSHipster 10 New York Times 10 Nick Craver 10 Ofer Zelig 10 OpenDNS 10 Panorama Education 10 Pat Shaughnessy 10 Piotr Pasich 10 Pony Foo 10 Postman 10 Ramon Fried 10 ReactJS News 10 Regular Geek 10 Remind 10 RetailMeNot 10 Riot Games 10 Schakko 10 Skyscanner 10 Stitch Fix 10 Strava 10 Teamwork 10 Tikhon Jelvis 10 Tinder 10 Transferwise 10 TrueCar 10 Undocumented Matlab 10 Universe 10 UpGrad 10 VTS 10 Vlad Mihalcea 10 Wilfred Hughes 10 Wojtek Gawroński 10 XING 10 Yammer 10 Yifan Lu 10 Zolmeister 10 eFounders 10 Josh Haberman 9 Nate Berkopec 9 Wemake.services 9 Mike Fogus 8 Ian Hummel 7 Ilya Grigorik 6 K. Harrison 6 Sensible 6 James Long 5 Thomas Young 5 Edgar Aroutiounian 4 Avenue Code 3 Bandcamp 3 James Hague 3 Raymond Hettinger 3 Algolia Anders Aarvik Ariejan de Vroom Asana Atlassian Bjørn Johansen Blake Erickson Bryan Cantrill Capgemini Chen Hui Jing Chien Tran Cloudera Cloudsmith CockroachDB Code with style! CodeName One Codelitt Codeship Commercetools Credit Karma Crowdfire Deezer DoorDash Dragan Gaic Engine Yard Entelo Envato Envoy Eventbrite Federico Tomassetti Figma GIPHY Galois Go GoDaddy Grafana Guilherme Rodrigues Hashnode Heroku Honeybadger Honeycomb IMVU Ievgen Kuzminov Instagram Jobandtalent John Resig Jonathan Dekhtiar Just Eat Kinvolk Kolosek Kyle Kingsbury LINE Linear LiveRamp Liveblocks Made Tech Marc Plano-Lesay Microsoft Edge Moove-it Mozilla Automation Team NPR Apps Nicolai Parlog (CodeFX) Oursky Oxide Computer Paul Lewis Peter Norvig Peter Steinberger Peteris Krumins PicCollage PlanetScale Prezi PullReview Rachel Kroll Radim Řehůřek Ray Wenderlich React Native Render Retool Schibsted Tech Polska Sharethis Shopify Sketch Sky Betting & Gaming Soshace Speedledger Sqreen Square Stackshare Swift Swiggy Takipi Temporal Turso Vena Solutions VersionEye Wayfair William Kennedy Zed Zendesk(old) theScore
40 articles Visit blog →

1. Updates in March 2020 (os.phil-opp.com)

This post gives an overview of the recent updates to the Writing an OS in Rust blog and the corresponding libraries and tools. I focused my time this month on finishing the long-planned post about Async/Await. In addition to that, there were a few updates to the crates behind the scenes, including s...

2. Async/Await (os.phil-opp.com)

In this post, we explore cooperative multitasking and the async/await feature of Rust. We take a detailed look at how async/await works in Rust, including the design of the Future trait, the state machine transformation, and pinning. We then add basic support for async/await to our kernel by creatin...

3. Updates in February 2020 (os.phil-opp.com)

This post gives an overview of the recent updates to the Writing an OS in Rust blog and the corresponding libraries and tools. blog_os The repository of the Writing an OS in Rust blog received the following updates: Mention potential bump allocator extensions Don’t panic on overflow in allocator; re...

4. Updates in January 2020 (os.phil-opp.com)

This post gives an overview of the recent updates to the Writing an OS in Rust blog and the corresponding libraries and tools. blog_os The repository of the Writing an OS in Rust blog received the following updates: Move #[global_allocator] into allocator module Update many_boxes test to scale with ...

5. Allocator Designs (os.phil-opp.com)

This post explains how to implement heap allocators from scratch. It presents and discusses different allocator designs, including bump allocation, linked list allocation, and fixed-size block allocation. For each of the three designs, we will create a basic implementation that can be used for our k...

6. Updates in December 2019 (os.phil-opp.com)

Happy New Year! This post gives an overview of the recent updates to the Writing an OS in Rust blog and the corresponding libraries and tools. blog_os The repository of the Writing an OS in Rust blog received the following updates: Update x86_64 dependency to version 0.8.1. This included the depende...

7. Updates in October and November 2019 (os.phil-opp.com)

This post gives an overview of the recent updates to the Writing an OS in Rust blog and the used libraries and tools. I moved to a new apartment mid-October and had lots of work to do there, so I didn’t have the time for creating the October status update post. Therefore, this post lists the changes...

8. Updates in September 2019 (os.phil-opp.com)

This post gives an overview of the recent updates to the Writing an OS in Rust blog and the used libraries and tools. I finished my master thesis and got my degree this month, so I only had limited time for my open source work. I still managed to perform a few minor updates, including code simplicat...

9. Updates in August 2019 (os.phil-opp.com)

This post gives an overview of the recent updates to the Writing an OS in Rust blog and the used libraries and tools. I was very busy with finishing my master’s thesis, so I didn’t have any to implement any notable changes myself. Thanks to contributions by @vinaychandra and @64, we were still able ...

10. Updates in July 2019 (os.phil-opp.com)

This post gives an overview of the recent updates to the Writing an OS in Rust blog and the used libraries and tools. Since I’m still very busy with my master thesis, I haven’t had the time to work on a new post. But there were quite a few maintenance updates this month and also a few new features s...

11. Updates in June 2019 (os.phil-opp.com)

This post gives an overview of the recent updates to the Writing an OS in Rust blog and the used libraries and tools. My focus this month was to finish the Heap Allocation post, on which I had been working since March. I originally wanted to include a section about different allocator designs (bump,...

12. Heap Allocation (os.phil-opp.com)

This post adds support for heap allocation to our kernel. First, it gives an introduction to dynamic memory and shows how the borrow checker prevents common allocation errors. It then implements the basic allocation interface of Rust, creates a heap memory region, and sets up an allocator crate. At ...

13. Updates in May 2019 (os.phil-opp.com)

This post gives an overview of the recent updates to the Writing an OS in Rust blog and to the used tools. I was quite busy with my master thesis this month, so I didn’t have the time to create new content or major new features. However, there were quite a few minor updates. x86_64 Use cast crate in...

14. Updates in April 2019 (os.phil-opp.com)

Lot’s of things changed in the Writing an OS in Rust series in the past month, both on the blog itself and in the tools behind the scenes. This post gives an overview of the most important updates. This post is an experiment inspired by This Week in Rust and similar series. The goal is to provide a ...

15. Testing (os.phil-opp.com)

This post explores unit and integration testing in no_std executables. We will use Rust’s support for custom test frameworks to execute test functions inside our kernel. To report the results out of QEMU, we will use different features of QEMU and the bootimage tool. This blog is openly developed on...

16. Paging Implementation (os.phil-opp.com)

This post shows how to implement paging support in our kernel. It first explores different techniques to make the physical page table frames accessible to the kernel and discusses their respective advantages and drawbacks. It then implements an address translation function and a function to create a...

17. Advanced Paging (os.phil-opp.com)

This post explains techniques to make the physical page table frames accessible to our kernel. It then uses such a technique to implement a function that translates virtual to physical addresses. It also explains how to create new mappings in the page tables. This blog is openly developed on GitHub....

18. Introduction to Paging (os.phil-opp.com)

This post introduces paging, a very common memory management scheme that we will also use for our operating system. It explains why memory isolation is needed, how segmentation works, what virtual memory is, and how paging solves memory fragmentation issues. It also explores the layout of multilevel...

19. Hardware Interrupts (os.phil-opp.com)

In this post, we set up the programmable interrupt controller to correctly forward hardware interrupts to the CPU. To handle these interrupts, we add new entries to our interrupt descriptor table, just like we did for our exception handlers. We will learn how to get periodic timer interrupts and how...

20. Double Faults (os.phil-opp.com)

This post explores the double fault exception in detail, which occurs when the CPU fails to invoke an exception handler. By handling this exception, we avoid fatal triple faults that cause a system reset. To prevent triple faults in all cases, we also set up an Interrupt Stack Table to catch double ...

21. CPU Exceptions (os.phil-opp.com)

CPU exceptions occur in various erroneous situations, for example, when accessing an invalid memory address or when dividing by zero. To react to them, we have to set up an interrupt descriptor table that provides handler functions. At the end of this post, our kernel will be able to catch breakpoin...

22. Integration Tests (os.phil-opp.com)

To complete the testing picture we implement a basic integration test framework, which allows us to run tests on the target system. The idea is to run tests inside QEMU and report the results back to the host through the serial port. This blog is openly developed on GitHub. If you have any problems ...

23. Unit Testing (os.phil-opp.com)

This post explores unit testing in no_std executables using Rust’s built-in test framework. We will adjust our code so that cargo test works and add some basic unit tests to our VGA buffer module. This blog is openly developed on GitHub. If you have any problems or questions, please open an issue th...

24. Writing an OS in pure Rust (os.phil-opp.com)

Over the past six months we’ve been working on a second edition of this blog. Our goals for this new version are numerous and we are still not done yet, but today we reached a major milestone: It is now possible to build the OS natively on Windows, macOS, and Linux without any non-Rust dependendenci...

25. VGA Text Mode (os.phil-opp.com)

The VGA text mode is a simple way to print text to the screen. In this post, we create an interface that makes its usage safe and simple by encapsulating all unsafety in a separate module. We also implement support for Rust’s formatting macros. This blog is openly developed on GitHub. If you have an...

26. A Freestanding Rust Binary (os.phil-opp.com)

The first step in creating our own operating system kernel is to create a Rust executable that does not link the standard library. This makes it possible to run Rust code on the bare metal without an underlying operating system. This blog is openly developed on GitHub. If you have any problems or qu...

27. A Minimal Rust Kernel (os.phil-opp.com)

In this post, we create a minimal 64-bit Rust kernel for the x86 architecture. We build upon the freestanding Rust binary from the previous post to create a bootable disk image that prints something to the screen. This blog is openly developed on GitHub. If you have any problems or questions, please...

28. Handling Exceptions (os.phil-opp.com)

In this post, we start exploring CPU exceptions. Exceptions occur in various erroneous situations, for example when accessing an invalid memory address or when dividing by zero. To catch them, we have to set up an interrupt descriptor table that provides handler functions. At the end of this post, o...

29. Double Faults (os.phil-opp.com)

In this post we explore double faults in detail. We also set up an Interrupt Stack Table to catch double faults on a separate kernel stack. This way, we can completely prevent triple faults, even on kernel stack overflow. As always, the complete source code is available on GitHub. Please file issues...

30. Returning from Exceptions (os.phil-opp.com)

In this post, we learn how to return from exceptions correctly. In the course of this, we will explore the iretq instruction, the C calling convention, multimedia registers, and the red zone. As always, the complete source code is on GitHub. Please file issues for any problems, questions, or improve...
Type to search HN and engineering blog articles
Press Escape to close  |  to navigate  |  Enter to open