General statistics
List of Youtube channels
Youtube commenter search
Distinguished comments
About
Lawrence D’Oliveiro
Fireship
comments
Comments by "Lawrence D’Oliveiro" (@lawrencedoliveiro9104) on "Fireship" channel.
Previous
1
Next
...
All
8:12 He was actually forced to create Git. What happened was that BitKeeper was made available as freeware to the Linux developer community, hedged around with a great deal of caveats. One of these was “no reverse engineering”. Torvalds felt for some reason he could agree to these terms on behalf of the entire Open Source community. So when Andrew Tridgell was commissioned (by the FSF, I think) to reverse-engineer BitKeeper’s formats and protocols, Torvalds ordered him to stop. To which he responded in the predictable way. So Larry McVoy gave notice of the termination of the BitKeeper licence. Torvalds went off to ruminate on things for a couple of weeks, and came back with the beginnings of Git. And the rest, as they say, is history.
1700
Don’t use an RE to parse e-mail addresses.
140
5:38 That “security” aspect was a bit of a joke in the early days, when Red Hat installers tended to load on everything by default. A client of mine got hacked through a vulnerability in the SunRPC service, which we weren’t even using.
139
0:52 I used punched cards in a University summer job. The keypunch was a think an IBM 129 unit -- it actually had a memory for storing the contents of a card. You keyed it all in (you couldn’t actually see the characters you were keying, just a column count), then pressed the Punch key to actually punch the card, and if there was a mistake, you just advanced to the column where the error was, fixed that, and punched a new card from the updated memory.
115
GCC could be made more modular internally, for example by adding a plugin API. However, this was resisted for a long time by Richard Stallman because he was afraid it would be (mis)used to hook proprietary code into GCC and thereby evade the GPL. This allowed LLVM to get an edge in areas where GCC could not compete.
111
Previously, it was Twit-rated. Now it is X-...?
46
1:01 Overlooking the fact that C++ is already so insanely complicated to begin with, that it becomes exponentially harder to add new features without tripping over undesirable interactions with existing ones. Python 2→3 was one big bang of breakage, and evolution since then has been able to proceed much faster with minimal backwards-compatibility trouble.
43
The original plan was to make an educational machine that could only run Python code. The developers were surprised to discover that it would actually be cheaper to make it a full general-purpose computer. And so they did.
43
@ko-Daegu Fun fact: collage is an art form consisting of cutting and pasting.
39
Here’s a trivia question. In C++, you use “new” to create a class instance on the heap; when declaring a class instance on the stack, you don’t use “new”. In Java, all class instances live on the heap. So you would think that “new” would be redundant, and would have been omitted (as in Python). Yet Java still requires “new” for creating class instances; why?
37
Statements were not limited to the length of a single line. FORTRAN had continuation capabilities (put any character other than blank or “0” in column 6) since the beginning.
35
Yes, but Autodesk has by far the bigger advertising budget. Telling people how wonderful you are tends to count for more than actually putting out a superior product.
26
I can remember a computer consultant I met once, whose job it was to help people with their FORTRAN code, stating that he would never even look at a user’s program unless it had IMPLICIT NONE at the top.
23
Emacs doesn’t just have a GUI, it also provides a GUI toolkit you can access from Elisp code. Think of how the menus, status line, windowing etc are implemented -- yup, all in Elisp.
22
That particular writer was known for writing stories about enigmatic, baffling events where the characters have no idea what’s going on. Like one about a trial where the person on trial is not even told what the charges are.
21
The world’s most popular DBMS is so widespread, you probably have a copy literally within arm’s reach right now, in your purse or pocket. It’s SQLite, and it ships with every Android smartphone.
17
In other words, you cannot properly automate GUI testing, but algorithms can certainly be tested.
16
Worth mentioning the fundamental schism between “LISP-1” (e.g. Scheme) and “LISP-2” (e.g. Common LISP, Emacs LISP) languages. The first kind put both function names and variable names into a common namespace, while the second kind put them into separate namespaces.
15
Key points to remember about Python: * Every name you can define is a variable. This also includes function and class definitions: they are not declarations as in other languages, they are just special forms of assignment statement. * Every value (that you can return from an expression, put into a variable etc) is an object. * Functions and classes are also objects. * Every object is an instance of some class.
15
It was supposed to be “business-oriented” for the 1960s concept of “business data processing”. This meant fixed-field records and ISAM files, and certainly did not include dynamic string processing. Then, a decade or two later, relational databases came along, and became a rather important business need. And the best way of interfacing to these turns out to be via dynamic generation of query strings. Which COBOL can’t cope with very well. They did some nonstandard kludges to cope with this, but the reality is that even klunky old PHP is better at interfacing to relational databases than COBOL will ever be.
14
I use functional constructs heavily, and I like languages that support this (Python, LISP, JavaScript). But a pure-functional language just seems like a waste of time.
14
Emacs: the world’s most powerful editor. Does ∗your∗ editor’s extension language understand closures and lexical binding? Emacs’ Elisp does. Notice I didn’t say “text editor”, I said “editor”. I have successfully used it to edit binary files.
14
0:53 Also worth mentioning filesystems, network protocol stacks, and security management, as additional important parts of the kernel.
14
0:17 Command-line interpreters (CLIs) were not a revolutionary concept in 1971. After all, every interactive OS had them, and there were quite a few by that time. What was revolutionary was the idea that the CLI ran as just another ordinary process with no special privileges, rather than being built into the OS.
12
0:51 Actually, the OpenGL term “fragment” refers to intermediate pixel values. They are not called “pixels” until they are composited into final pixel values on the display surface.
12
Worth noting that Larry Wall, renowned creator of Perl and Patch, described laziness and hubris as two of the most important programmer virtues.
11
We already do. GPS already needs to take General Relativity into account. Because, you know, clocks run slower down here than up there.
11
I mainly use MDN as my reference for things Web. That has handy compatibility matrices for all the important features (that I’ve come across so far), so I know to only use stuff where all the boxes are green.
11
Consider what language an “enterprise” company like Facebook uses: they created “Hack”, which is their own dialect of PHP. They even open-sourced its implementation, the HHVM.
10
Python handles its rational Fraction type with the regular “/” operator. E.g. from fractions import \ Fraction as F print(F(3) / 4 * 1 / 2) prints out 3/8
9
@qandak As I understand it, Autolisp manages to leave out the features that make LISP so powerful (e.g. macros, lexical binding), leaving only the mess of parentheses.
9
The original name for JavaScript was “LiveScript”. Doesn’t seem to be used much nowadays ... just sayin’.
9
Speaking of “frameworks”, a logical next step would be to look at RATFOR, a.k.a. “RATional FORtran”. It was basically a preprocessor that translated into regular FORTRAN, but introduced some nicer statement constructs.
9
Jupyter is great for “scratchpad” programming, when you are trying things out.
9
Remember, Microsoft is not going to offer you Python-in-Excel for free.
8
I’ve never felt the need to use the C API. One project I did involved extracting telemetry data (accelerometer, gyroscope, GPS) from videos captured from GoPro cameras. I wrote a Python script which called ffprobe to identify the right streams and the exact locations of the data packets and their timestamps, then I could read those parts of the video file directly and decode the packets using the standard “struct” library.
8
“Modernizing” and “PowerShell” in the same sentence ... 🤣🤮
8
There’s a lot of truth in that. Everything is a file, every kernel API is a filesystem, and every kernel object can be accessed via a file descriptor. This makes it very easy, for example, to use regular shell commands to poke around /sys to manage the state of your hardware, you don’t need special tools written to special APIs. Sometimes you see signs of “file envy” on the part of Microsoft. Like when Powershell tries to make the Registry API look like a filesystem, only it isn’t, really, because that abstraction doesn’t work outside of Powershell.
8
You don’t have to “configure” Emacs to start using it. I just started gradually accumulating custom settings over the years I’ve been using it.
8
Did they ever fix the weird issue with how arguments were passed to functions and subroutines? Namely, if the actual argument was a simple variable or an array element, it would pass the address of that. If it was a more complex expression, then that would be evaluated into a temporary location and the address of the temporary was passed. In other words, the called routine could modify the actual argument in one case, but not another. Imagine you had declared a constant “PI” in your program and set it to π = 3.14... Now imagine that, due to a bug, you passed this to a routine which modified it. Suddenly your “PI” value, that you thought was a constant, is not so constant any more!
7
Just leave out the “Excel” part.
7
The key point not mentioned here is that information content is a statistical concept. The closer your data stream looks like to random noise, the less compressible it is. It is inherent in the design of compression algorithms that they produce a data stream that looks very much like random noise.
7
Quoth the Lambda: “Servermore” (With apologies to Edgar Allan SaaS.)
7
If a language reference is that complicated you need to have it handy for daily programming, then take that as a hint that the language is too complicated. I was able to internalize nearly all the core Python language after a few months of use. What I do refer to daily is the standard library docs (and docs for whatever other libraries I might need). Oh, and the page of the language spec listing the special method names.
7
“select *” is not something I would ever use in production code. Always select exactly the fields that you need, no more, no less.
7
The main use for archives that I see is not for saving my own data, but for distributing collections of files. And normally when you get one of those you want to extract everything.
7
You are free to change your shell to perl, if you want. You can even do it permanently by editing your /etc/passwd entry. You will soon discover why that’s a bad idea.
7
The PHP developers had no idea about Perl. They saw that “$” syntax, but didn’t understand what it meant in context (denotes scalar variables), and decided to use it for all their variables. Now they are looking at Python, and they still have no idea how its features work together. So they are copying ideas like iterators, and screwing them up.
7
@Celastrous Python is characterized by a compact core language with a great deal of extensibility. All the rest is library modules building on that. That’s what makes it so powerful.
6
zstd is widespread enough that you can consider it portable nowadays. And tar supports it, too.
6
Previous
1
Next
...
All