⁂ Article
Falling down a rabbit hole of nostalgia, episode 1 - SunOS 4
(or: running SunOS 4 on an emulated SPARCstation in 2025 with QEMU 10.1.) [...]
#Tag
⁂ Article
Falling down a rabbit hole of nostalgia, episode 1 - SunOS 4
(or: running SunOS 4 on an emulated SPARCstation in 2025 with QEMU 10.1.) [...]
⁂ Article
Falling down a rabbit hole of nostalgia, episode 1 - SunOS 4
(or: running SunOS 4 on an emulated SPARCstation in 2025 with QEMU 10.1.) [...]
It's that time of year again! The Fall semester is about to start, and I'm teaching "Advanced Programming in the UNIX Environment". The syllabus and all course materials including all code examples is available here:
https://stevens.netmeister.org/631/
All video lectures are public and available for free on YouTube:
https://www.youtube.com/@cs631apue/videos
If you want to follow along, I'll be posting lecture videos and related links in this thread throughout the semester.
Advanced Programming in the Unix Environment
Tool Tip: ed(1) is the standard text editor
As part of our discussion of unix development tools, we take a short detour to provide a quick walkthrough of ed(1), the standard text editor. This is not done merely to up your geek creds, but understanding ed(1) will also helps us better understand other tools like vi(1), sed(1), and ultimately even things like diff(1) and patch(1) better.
Advanced Programming in the Unix Environment
Tool Tip: ed(1) is the standard text editor
As part of our discussion of unix development tools, we take a short detour to provide a quick walkthrough of ed(1), the standard text editor. This is not done merely to up your geek creds, but understanding ed(1) will also helps us better understand other tools like vi(1), sed(1), and ultimately even things like diff(1) and patch(1) better.
Advanced Programming in the Unix Environment
Week 6: Memory Layout of a Process
Let's talk about the details of a process. We start with a visual representation of a process in memory and create a program that prints out the addresses of different elements of a program and observe the alignment of the text, data, and bss segments as well as the placement of the heap and stack. We also illustrate what a stack overflow looks like.
Advanced Programming in the Unix Environment
Tool Tip: ed(1) is the standard text editor
As part of our discussion of unix development tools, we take a short detour to provide a quick walkthrough of ed(1), the standard text editor. This is not done merely to up your geek creds, but understanding ed(1) will also helps us better understand other tools like vi(1), sed(1), and ultimately even things like diff(1) and patch(1) better.
Advanced Programming in the Unix Environment
Week 5: Using gdb(1), part IV
In our last segment on gdb(1), we use the debugger to examine memory locations in a running program and illustrate how pointers and arrays work in the C programming language.
Advanced Programming in the Unix Environment
Week 5: Using gdb(1), part III
In this video lecture, we'll use our newly learned debugging skills to analyze and fix yet another flawed program. In the process, we learn to debug code from multiple source files and find out how to change the value of variables while the program is running.
Advanced Programming in the Unix Environment
Week 5: Using gdb(1), part II
In this video lecture, we continue to explore the capabilities of the debugger. We show how you can set a breakpoint to pause the program and how to step through the program while watching our code.
Advanced Programming in the Unix Environment
Week 5: Using gdb(1)
Alright, let's look at gdb(1)! We begin by using it to troubleshoot our failing programs and immediately identify the location of our program where it segfaults. We also see how to inspect variables and call functions from within the debugger.
Advanced Programming in the Unix Environment
Week 5: Debugging your code
Next in our discussion of the Unix _development_ environment, we start a short series on the use of a debugger by example of gdb(1). First, we illustrate just why exactly we might want to use a separate tool instead of sprinkling "printf" statements all over our code...
Advanced Programming the UNIX Environment
Our reference platform for this class is NetBSD. Some ways to get set up are:
Use an AWS image:
https://stevens.netmeister.org/615/netbsd-amis.html
Create your own AWS image:
https://www.netmeister.org/blog/creating-netbsd-ec2-amis.html
https://www.netmeister.org/blog/netbsd-amd64-ami.html
Install NetBSD on a Linode:
https://www.netmeister.org/blog/netbsd-on-linode.html
Use UTM / qemu:
https://stevens.netmeister.org/631/utm/
Advanced Programming the UNIX Environment
Some additional hints to set up your NetBSD environment for this class:
https://stevens.netmeister.org/631/vm-setup.html
With all sources extracted, familiarize yourself with ctags(1) et al to make browsing code a breeze:
Advanced Programming the UNIX Environment
Week 1: UNIX History
We cover the early days at Bell Labs, USL vs BSDi, the birth of the BSDs and Linux, and how we got from Ken Thompson playing "Space Travel" on a PDP-7 to Unix running on your phone, fridge, and TV.
Scroll along through it all here: https://www.levenez.com/unix/unix.pdf
Advanced Programming the UNIX Environment
Week 1: UNIX Basics
In this lecture, we provide a whirlwind tour of the Unix programming environment. In the process, we write a simple shell, a simple version of the ls(1) command, and two versions of the cat(1) command while learning about the Unix Philosophy.
Advanced Programming the UNIX Environment
Week 1: Introduction
This video covers a lot of the meta information (what do we do, why are we doing it, how are we doing it, syllabus, etc.). Some things have changed since I created the video (for example, we now have an AI policy: https://stevens.netmeister.org/631/use-of-ai.html), but most of it remains accurate.
Advanced Programming the UNIX Environment
Week 1: UNIX History
We cover the early days at Bell Labs, USL vs BSDi, the birth of the BSDs and Linux, and how we got from Ken Thompson playing "Space Travel" on a PDP-7 to Unix running on your phone, fridge, and TV.
Scroll along through it all here: https://www.levenez.com/unix/unix.pdf
Advanced Programming the UNIX Environment
Week 1: Introduction
This video covers a lot of the meta information (what do we do, why are we doing it, how are we doing it, syllabus, etc.). Some things have changed since I created the video (for example, we now have an AI policy: https://stevens.netmeister.org/631/use-of-ai.html), but most of it remains accurate.
It's that time of year again! The Fall semester is about to start, and I'm teaching "Advanced Programming in the UNIX Environment". The syllabus and all course materials including all code examples is available here:
https://stevens.netmeister.org/631/
All video lectures are public and available for free on YouTube:
https://www.youtube.com/@cs631apue/videos
If you want to follow along, I'll be posting lecture videos and related links in this thread throughout the semester.
Frameworks already solved templating. They're good at it! What they CAN'T solve is the JS monopoly on DOM access. Open that up and watch innovation explode across the entire ecosystem. React, Vue, Svelte - they all work great. But imagine what could be built if any language had direct DOM access. New paradigms, new approaches, new frameworks we can't even conceive of yet. #compsci#webdev#javascript
Instead of standardizing one templating syntax (that'll be bikeshedded to death), give us the primitive: fast DOM access from any language. Let a thousand templating libraries bloom - in any language. Lower-level primitives enable more innovation than high-level APIs. That's the Unix philosophy. Simple, composable, powerful. Build the foundation right. #compsci#webdev #wasm #frontend#unix
A space for Bonfire maintainers and contributors to communicate