
Writing System Software [video] - dsr12
https://www.youtube.com/watch?v=VBrnmciV9fM&list=PLrEMgOSrS_3fghr8ez63xKFNF-BA6Pz13
======
antirez
In case you are interested in providing feedbacks about the next episodes, my
current list of potential ideas is:

1\. Code snippets: show small self contained functions from random places
inside Redis.

2\. Redis Sentinel: the first design, the immediate redesign of v2, and how it
is internally implemented.

3\. The use of goto in Redis.

4\. Redis protocol parsing and zero-copying of objects.

5\. The odd Redis persistence model: fork() and fighting the copy-on-write.

6\. Redis crash report. Generation and usefulness over the years.

7\. Observability inside Redis: latency hooks, LATENCY DOCTOR and MEMORY
DOCTOR.

8\. Hybrid data structures: Streams macro nodes implementation.

9\. RIO: Redis I/O abstraction and OOP in C.

10\. Redis Cluster: how the Redis message bus is implemented.

11\. Redis Cluster: hash slots tracking and redirections.

If you have any preference and/or other ideas, will be cool to hear.

About this experience itself, good things: shooting a video takes more or less
just the time to record. Preparation is just a few minutes, and later post
processing is an automatic process... So in 1 hour max everything is done.
However I see that the reach of the videos is very low compared to a blog
post, which requires more time to write sometimes, at least to have the _same_
amount of info. So it's a tradeoff. Also consuming the video may be a problem
for many, for instance for language barriers due to the speaker accent (in my
case) and the listener ability to understand English without subtitles. Let's
say I want to make 10 episodes and re-evaluate if it's a good idea to change
style and do 5 minutes episodes instead.

~~~
anselmio
> language barriers due to the speaker accent (in my case) and the listener
> ability to understand English without subtitles.

It's usually easier for a non-native English speaker (at least below ILR[1]
Level 3 or CEFR[2] Level B) to understand English spoken by another non-
native, because the pace is slower, idioms and expressions are not used so
regularly, etc. Your accent is much easier for non-natives than a strong Irish
accent, for example. So I wouldn't worry about that too much.

[1]
[https://en.wikipedia.org/wiki/ILR_scale](https://en.wikipedia.org/wiki/ILR_scale)
[2]
[https://en.wikipedia.org/wiki/Common_European_Framework_of_R...](https://en.wikipedia.org/wiki/Common_European_Framework_of_Reference_for_Languages)

~~~
antirez
Cool, makes sense, thank you. I just want to talk slower in the next videos,
so that it will be easier... at the cost to enlarge the duration a little bit.

~~~
mdn0420
Playback speed is adjustable so I wouldn't stress too much about it.

------
falcolas
Having watched similar series in the past, I would highly recommend some extra
effort be put into the presentation - recording videos with no attention to
lighting or sound makes it really hard to see and hear what's going on.
Specifically for me, it's really hard to understand what's being said over the
keyboard and reverb.

Some basic lighting (so your face isn't in shadows), a separate directional
microphone (even a $40 snowball would help immensely), and potentially some
sound baffling in the room would make a real difference to the video quality.
Finally, dark colors with low contrasts encode quite poorly on YouTube; some
of the code is rather hard to read.

I realize we're watching a software engineer and not an entertainer, but the
payoff in the quality of the videos for relatively little effort and
investment is remarkably big.

~~~
mikekchar
As someone who has spent a fair amount of time playing with this, post
processing audio is a big win. I use audacity and perform the following
effects (the order is important):

\- Noise reduction

\- Compressor with "Make-up gain for 0 db after compressing _turned off_ ".

\- Equalisation with a curve that starts at -6 db at 20Hz, peaks at 6 db at
150 Hz and then curves down to -30 db at 20000 Hz.

\- Normalise with Remove DC offset and normalising at -0.1 db (0.0 db
sometimes leads to problems for some reason).

\- Amplify if you need it (usually I don't)

The logic here is: Noise reduction, to reduce hiss, key clicks, etc, etc.,
Compressor to squash the low and high amplitudes (turning off making up the
gain also forces it to squash in a certain direction... I forget which at the
moment, but it's important), Equalise as a kind of nicer low pass filter that
gets rid of the noise reduction artefacts and other noises that make it
through, Normalise to bring the amplitude back up that was knocked off by the
compress (but in a nicer way than amplify would give you). Finally just fine
tuning with amplify.

I usually re-encode in FLAC and then mix it back into my video using my video
editing software (I use Kdenlive).

The difference in audio quality is unbelievable. You need to fiddle around a
bit with the settings for your voice/environment, but I highly recommend
giving it a try.

~~~
jerrre
> \- Equalisation with a curve that starts at -6 db at 20Hz, peaks at 6 db at
> 150 Hz and then curves down to -30 db at 20000 Hz.

this seems like a very bad idea, this will give you very dull, boomy sound,
for most recording setups. It's a bit too much work to type out everything
here, but this is not good advice.

Most of the time the best improvements are to be made with getting a decent
microphone and set it up properly (doesn't have to cost much more than $100).

------
nybblesio
I really feel bad about blatant self-promotion; especially in a thread like
this about somebody else who is producing video content. However, I think some
folks here may enjoy my work.

I have a daily programming stream on Twitch:
[https://twitch.tv/nybblesio](https://twitch.tv/nybblesio). I stream from
5am-10am MT Monday to Saturday. (I have to take at least one day off or my
brain overheats.)

I also archive all of my streams to my YouTube channel:
[https://www.youtube.com/channel/UCaV77OIv89qfsnncY5J2zvg](https://www.youtube.com/channel/UCaV77OIv89qfsnncY5J2zvg)

I have several projects running concurrently and I switch between them each
week. This week, I'm working in C++17 for Ryu: The Arcade Construction Kit.
Next week, I'll be writing ARM AArch64 assembly language on Raspberry Pi 3. I
also have an MS-DOS arcade game project written in 100% x86 assembly language.
I worked on that last week. All of these projects are curated into playlists
on YouTube if you want to check them out.

~~~
swyx
i confess i am completely not understanding this trend in twitch streaming
coding. i prefer asynchronous videos where i can speed or fastforward through
parts. i understand the value in seeing people make and solve mistakes but
that can’t be the only value in -watching- a live stream can it?

(is this what it feels like to be old?)

~~~
henry_flower
I think the essence of any live streaming is an active chat; viewers ask
questions, point out mistakes, &c. you 'engage' w/ your audience irt.

------
davebryand
It's really fun to see that the people that we consider geniuses are really
just smart people spending their lives forming concepts into reality, one
function at a time, like the rest of us.

~~~
hathawsh
OTOH, smart people often build systems with excessive complexity, leading to
maintenance problems. Genius is found in making complex things comprehensible
and simple.

~~~
mbrodersen
I would say that people who build systems with excessive complexity are
(almost per definition) not smart. They made appear confident and have a high
level of "I am so smart" feel about them. But they are clearly not.

~~~
freyir
Some people learn the value of simplicity through experience. They start out
building over-complex things, and they’re not “not smart,” just inexperienced
and misguided.

------
ejlangev
Excited to check out this series and glad that Antirez took the time to make
it. Would be cool to see more people make this kind of thing in the same mold
of this and the DHH series from the last few weeks. Very interesting to hear
something like a person's inner monologue while they're writing and reading
code.

~~~
minimaxir
I've been trying similar-style videos on advanced data analysis/visualization
since such screencasts are an unexplored area (my most recent video using
Stack Overflow data:
[https://www.youtube.com/watch?v=6OeyTfp7eq8](https://www.youtube.com/watch?v=6OeyTfp7eq8))
but there are a few snags which make it less accessible for anyone to do:

1\. It requires subject preparation to avoid going off on a tangent. (in the
case of the video above I cheated and use prewritten code, and the video was
still 30+min long.)

2\. It requires specialized software and hardware that's not free. (good
recording software + good mic + good webcam are $50-100 _each_ )

3\. It requires good hardware preparation too (e.g. precise placement of the
mic and good light for webcam, so I couldn't record at night)

4\. It requires time for editing (unless in my case you slap on background
audio and call it a day)

I bought a new mic since I was unhappy with the audio quality in that video,
and am taking steps to refine video focus.

~~~
drdrey
What recording software do you use?

~~~
minimaxir
Screenflow
([https://www.telestream.net/screenflow/overview.htm](https://www.telestream.net/screenflow/overview.htm)),
which is the same software used for OP's video.

------
zengid
"This is about system software, so we will see lower level things [...] to
show --in real source-code, not in small toy examples-- how things work, why
certain things were implemented in a given way. You know, when software starts
to become bigger, then the very clean approaches _start to fail_. You have to
face compromises in order to make things work.."

------
antirez
Thanks everybody for the feedbacks! I'm going to improve my mic setup :-)

------
yani
Excellent series. English is easy to understand and the thought process is
simple to follow. The only suggestion that I have is to make the videos a bit
shorter. 10 to 15 minutes will work great for me.

------
kartiksura
Very good work. How about a video/blog where you can describe use-cases where
redis has been creatively used to solve a tough problem. With some redis
design patterns included?

~~~
antirez
That would be great but it would be more a work of collecting data from other
people building things with Redis, and I've very very few interactions with
the many people running Redis. I kinda do my part in the Github repository and
very seldom I've interactions with other folks. I'm happy with this setup
because interactions = not working.

------
jfdi
Nice work @antirez, you're an inspiration to the community!

~~~
antirez
Thanks! I started the video series thinking nobody at all would care, so it's
nice to see that it's worth to continue.

------
unlivingthing
Thanks a lot Antirez for doing this! I have been a fan ever since you
discovered the idle ping scan! Your work has inspired me to keep growing!

------
postit
I thought I was the only borland's blue background widow out there.

~~~
dpwm
It immediately reminded me of my days of dabbling in QBasic.

------
dsr12
For people wondering if Antriez is following DHH's example, he is. He
announced it in this tweet:
[https://twitter.com/antirez/status/966052769391153155](https://twitter.com/antirez/status/966052769391153155)

DHH wrote about his series in this blog post: [https://m.signalvnoise.com/on-
writing-software-well-aee37807...](https://m.signalvnoise.com/on-writing-
software-well-aee3780767a6)

Link to his playlist:
[https://www.youtube.com/watch?v=H5i1gdwe1Ls&list=PL3m89j0mV0...](https://www.youtube.com/watch?v=H5i1gdwe1Ls&list=PL3m89j0mV0pdNAg6x9oq6S8Qz_4C-yuwj)

~~~
glitchdout
That's no longer the correct playlist. Watch the last video of that playlist.

The correct playlist is now this:
[https://www.youtube.com/playlist?list=PL9wALaIpe0Py6E_oHCgTr...](https://www.youtube.com/playlist?list=PL9wALaIpe0Py6E_oHCgTrD6FvFETwJLlx)

------
cbsmith
Having a hard time getting past the blatant use of vi instead of emacs... ;-)

~~~
antirez
I'm not strongly in one side or the other btw ;-) Just happened to start with
vim feeling very well with it, and continued for years. From time to time
tried Emacs back in the days (20 years ago, like), and was nice but could not
found a reason to switch, very different paradigm.

~~~
cbsmith
Yeah, I'm just teasing a bit... which is apparently not much appreciated.

