John Carmack: Best programming setup and IDE | Lex Fridman Podcast Clips

Lex Clips
6 Aug 202215:20

Summary

TLDRThe speaker reflects on their development setup and preferences, advocating for the use of debuggers and IDEs in game development. They critique Silicon Valley's aversion to such tools, emphasizing the importance of experimenting within the system to understand complex code. The conversation touches on the evolution of development tools, the value of static analysis, and the role of AI in code generation and understanding. The speaker also discusses their personal experience with classic vi and Emacs, and the growing adoption of Visual Studio Code, highlighting the balance between tool efficiency and flexibility.

Takeaways

  • đŸ–„ïž The speaker has a preference for development environments that include powerful debuggers and IDEs, contrary to some Silicon Valley cultures that are less reliant on them.
  • đŸ› ïž Debugging tools are essential for understanding complex systems, as they provide a window into the inner workings of the code, which is too complicated to grasp by reading alone.
  • 🔍 The speaker emphasizes the inefficiency of using log statements and recompilation for debugging, advocating for more interactive and immediate feedback through debuggers.
  • 🌐 There is a cultural divide between game development and Silicon Valley tech companies, with the former valuing interactive debugging more than the latter.
  • 📚 The speaker experimented with classic vi (an older version of vim) but ultimately preferred returning to Visual Studio for its modern features and convenience.
  • 💡 The importance of using modern tools and practices is highlighted, as they can significantly improve productivity and code quality, even if it means stepping away from traditional or personal preferences.
  • 🔧 The speaker appreciates the value of static code analyzers and asserts in catching errors early in the development process, promoting a more robust codebase.
  • 🔄 The use of asserts in code is a personal preference that helps catch mistakes that might otherwise go unnoticed, acting as a safety net for potential issues.
  • 📈 The speaker discusses the benefits of setting limits in code, such as static array sizes, to be alerted when the assumptions about the world change, which can affect the performance of the program.
  • 🔬 There is a suggestion that AI and advanced tools could play a significant role in understanding and working with large, complex codebases that are beyond human cognitive limits.
  • 🔀 The speaker's setup includes a triple monitor configuration, which has been a significant improvement over dual monitors, but there is no mention of any special keyboards or mice.

Q & A

  • What is the speaker's opinion on the use of debuggers and IDEs in big tech companies like Google and Meta?

    -The speaker finds it surprising that big tech companies can be hostile to debuggers and IDEs, suggesting that they can learn from the game development culture where debuggers are used frequently and effectively.

  • Why does the speaker advocate for the use of debuggers during the development process?

    -The speaker believes that debuggers provide a powerful interface to examine and manipulate a system in real-time, allowing for a more interactive and efficient debugging process compared to traditional compile-run-debug cycles.

  • What is the speaker's stance on the use of static code analyzers and automated tools in coding?

    -The speaker is a strong proponent of static code analyzers and automated tools, arguing that they are essential for maintaining code quality and catching errors that humans might overlook, especially in large codebases.

  • How does the speaker describe their experience with using different development environments and tools?

    -The speaker has experimented with various tools, including classic vi and Emacs, but ultimately prefers an IDE with a helpful debugger and tools, such as Visual Studio, for its efficiency and user-friendliness.

  • What is the speaker's view on the role of AI in code development and analysis?

    -The speaker suggests that AI could potentially play a significant role in understanding and analyzing large, complex codebases that are beyond human comprehension, possibly through tools like GitHub Copilot.

  • Why did the speaker decide to use a debugger for their C++ code?

    -The speaker uses a debugger to interactively work with their code, setting breakpoints and stepping through functions to ensure the code behaves as expected, which they find more efficient than relying solely on their mental interpretation.

  • What does the speaker think about the importance of setting limits and assertions in code?

    -The speaker values setting limits and assertions in code as a way to catch unexpected changes or errors early, arguing that it forces developers to reevaluate their initial assumptions and code design choices.

  • How does the speaker feel about the transition from older development tools to modern ones like Visual Studio Code?

    -The speaker acknowledges the shift towards modern tools like Visual Studio Code and sees it as a positive development, noting that it might be a solution that satisfies a wide range of developers, including those who previously used Vim and Emacs.

  • What is the speaker's opinion on the use of triple monitors in their setup?

    -The speaker has transitioned to using triple monitors and finds it to be a significant improvement over dual monitors, describing it as a 'pure win' in their setup.

  • What does the speaker imply about the culture differences between game development and Silicon Valley venture culture?

    -The speaker implies that there are distinct cultural differences between game development and Silicon Valley venture culture, with the former being more pragmatic and tool-oriented, while the latter may be more resistant to certain tools like debuggers.

Outlines

00:00

đŸ’» Debuggers vs. IDEs: A Game Dev Perspective

The speaker reflects on their transition from game development to Silicon Valley's tech culture, emphasizing the significant differences in attitudes toward tools like debuggers and IDEs. They express surprise at how some large tech companies, like Google and Meta, underutilize these tools, favoring text editors like Emacs and Vim. The speaker advocates for the importance of debuggers in understanding complex systems, criticizing the inefficiency of relying solely on reading code or adding log statements. They stress that better tools, such as interactive debuggers, can streamline the coding process and help catch errors early.

05:01

đŸ› ïž The Importance of Code Analysis and Guardrails

The speaker discusses the value of static analysis tools in maintaining code quality, sharing their experience of thoroughly analyzing a large codebase to uncover numerous hidden errors. They emphasize the inevitability of mistakes in any large codebase and advocate for the use of automated tools and guardrails, such as static types and warnings, to catch these issues. The speaker also highlights the need for an ego check among developers, acknowledging that even experienced programmers produce flawed code. They argue that while test-driven design and unit testing are valuable, analysis tools that prevent errors from being compiled are more effective in ensuring code reliability.

10:02

🔱 Balancing Flexibility and Constraints in Programming

The speaker reflects on the balance between flexibility and constraints in programming, using their experience with fixed limits in early game development as an example. They argue that while making systems completely generic can be beneficial, it is also important to set limits and use assertions to ensure that the system adapts correctly when the world around it changes. The speaker prefers static array size declarations over continuously growing collections, as they provide a way to monitor and adjust for changes in usage patterns. They also share their approach to using asserts in personal code, finding them valuable for catching mistakes and ensuring that assumptions hold true over time.

Mindmap

Keywords

💡Debugger

A debugger is a tool used in software development that allows programmers to test and debug their code by stepping through the execution one line at a time, examining variables, and setting breakpoints. In the video's context, the speaker emphasizes the importance of debuggers in understanding complex systems and improving the efficiency of the development process, contrasting the traditional compile-run-debug cycle with the interactive approach of using a debugger.

💡IDE (Integrated Development Environment)

An Integrated Development Environment is a software application that provides comprehensive facilities to computer programmers for software development. The speaker mentions IDEs in the context of their importance in the development setup, discussing the preference for modern IDEs that come with helpful tools like debuggers, as opposed to older, more text-based editors like Emacs or Vim.

💡Game Development

Game development refers to the process of creating a video game. The speaker discusses the unique culture within game development, which is distinct from other tech industry cultures. They highlight how game developers often rely on tools like debuggers due to the complexity of game systems, which is a central theme in the video.

💡Silicon Valley

Silicon Valley is a region in Northern California known for its high-tech innovation and venture capital funding. The speaker contrasts the attitudes towards debuggers and IDEs in Silicon Valley with those in game development, suggesting that Silicon Valley companies may not fully utilize these tools, which is a point of discussion in the video.

💡Emacs

Emacs is a highly customizable text editor that is popular among programmers, especially those who prefer a keyboard-centric workflow. The speaker mentions Emacs as an example of a tool that some developers prefer over modern IDEs, despite the potential for less efficiency in certain development tasks.

💡Vim

Vim is a highly configurable text editor built to enable efficient text editing. It is an improved version of the vi editor. The speaker refers to Vim as an example of a tool that, while powerful, may not be as user-friendly or efficient for certain tasks compared to modern IDEs with integrated debuggers.

💡Linux

Linux is a family of open-source Unix-like operating systems. The speaker mentions a 'Linux bias' as a reason why some developers might not use debuggers as frequently, suggesting that the preference for command-line tools in the Linux community might influence development practices.

💡GDB

GDB is the GNU Project Debugger, a powerful command-line debugger that is primarily used for C and C++ programming languages. The speaker mentions GDB as an example of a debugger that is used when developers are at their wit's end, highlighting its role as a last-resort tool for some, but a first-choice for others in game development.

💡Static Code Analyzers

Static code analyzers are tools that examine source code without executing it, to look for potential errors, bugs, and nonstandard coding practices. The speaker discusses the value of static code analyzers in identifying issues that might not be caught by other means, emphasizing their importance in maintaining code quality.

💡Assert

In programming, an assert statement is used to check during runtime that a condition is true. If the condition is false, the program will terminate. The speaker mentions the use of assert statements in their code to catch mistakes and ensure that certain conditions hold true at various points in the program's execution, illustrating the proactive approach to error handling.

💡Visual Studio Code

Visual Studio Code is a free, open-source code editor made by Microsoft. It is highly extensible and customizable, with support for a wide range of programming languages. The speaker mentions Visual Studio Code as a modern IDE that is gaining popularity, suggesting it might be a compromise that satisfies both the need for powerful tools and the preference for lightweight, flexible editors.

Highlights

The speaker emphasizes the importance of debuggers and IDEs in understanding complex systems, contrary to the Silicon Valley culture that often avoids them.

Game development culture is highlighted as having distinct practices and values compared to the Silicon Valley venture culture.

The speaker shares a personal anecdote about the efficiency of using a debugger for immediate problem-solving within code.

The concept of using a debugger as a regular part of the programming process is introduced, rather than as a last resort.

The speaker discusses the limitations of relying solely on reading code to understand complex systems, advocating for experimental approaches.

The importance of using better tools to increase efficiency in the development process is underscored.

The discussion of AI's potential role in coding and its ability to understand and work with large, complex codebases is introduced.

The value of static code analyzers and dynamic tools in catching errors before they become problematic is highlighted.

The speaker recounts a personal experience using code analysis tools on a large codebase, revealing numerous errors.

The necessity of automated tools and guardrails in coding to prevent syntactical errors is emphasized.

The speaker shares thoughts on the use of asserts in code to catch mistakes and ensure program correctness.

The discussion of the changing world and its impact on code, advocating for static array sizes and asserts to catch unexpected changes.

The speaker's preference for an IDE with helpful debuggers over Emacs or Vim is mentioned.

A personal account of trying to adapt to classic vi and eventually returning to Visual Studio for its efficiency.

The speaker's setup preferences, including the use of triple monitors and a standard keyboard, are described.

The potential of Visual Studio Code as a unifying solution for developers, gaining popularity even among Vim and Emacs users.

The trade-off between the flexibility of older development environments and the responsiveness of modern IDEs is discussed.

Transcripts

play00:02

what about your setup how many screens

play00:06

what kind of keyboard is there something

play00:07

interesting what kind of i ide

play00:10

emacs vim or something modern

play00:13

uh linux what operating system laptop or

play00:16

any any interesting thing that brings

play00:18

you joy so i kind of migrated cultures

play00:21

where early on through all of game dev

play00:23

there was sort of one culture there

play00:25

which was really quite distinct from the

play00:26

more uh the silicon valley venture you

play00:29

know culture for things it's they're

play00:31

different groups and they have pretty

play00:33

different mores and the way they think

play00:34

about things where

play00:36

and i still do think a lot of the big

play00:38

companies can learn uh can learn things

play00:40

from the hardcore game development side

play00:42

of things where it still boggles my mind

play00:45

how

play00:45

i am how hostile to debuggers and ides

play00:49

that so much of the the kind of big

play00:51

money get billions of dollars silicon

play00:54

valley venture-backed funds are well

play00:56

that's interesting sorry so you're

play00:57

saying like

play00:59

like uh big companies that google and

play01:00

meta are hostile to they are not big on

play01:03

debuggers and ides like so much of it is

play01:05

like emacs bim for things and we just

play01:08

assume that debuggers don't work most of

play01:11

the time i for the systems and a lot of

play01:13

this comes from a sort of linux bias on

play01:16

a lot of things where i did come up

play01:18

through the the personal computers and

play01:20

then the dos and then

play01:22

windows and

play01:23

and it was borland tools and then visual

play01:26

studio and

play01:28

do you appreciate the buggers

play01:30

very much so i mean a debugger is how

play01:32

you get a view into a system that's too

play01:34

complicated to understand i mean anybody

play01:36

that thinks just read the code and think

play01:38

about it that's an insane statement in

play01:40

the you can't even read all the code on

play01:42

a big system you have to do experiments

play01:44

on the system and doing that by adding

play01:48

log statements recompiling and

play01:49

re-running it uh is an incredibly

play01:51

inefficient way of doing it i mean yes

play01:53

you can always get things done even if

play01:55

you're working with stone knives and you

play01:57

know and bear skins that's that is the

play01:59

mark of a good programmer is that given

play02:01

any tools you will figure out a way to

play02:03

get it done

play02:04

but

play02:05

it's amazing what you can do with

play02:07

sometimes much much better tools where

play02:09

instead of just going through this

play02:11

iterative compile run debug cycle and

play02:14

you have the

play02:15

you have the old lisp direction of like

play02:17

you've got a reply and you're working

play02:18

interactively and doing amazing things

play02:20

there but in many cases a debugger has a

play02:22

very powerful user interface that can

play02:25

stop examine all the different things in

play02:26

your program set all these different

play02:28

break points and of course you can do

play02:29

that with gdb or whatever there but

play02:33

this is one of the user interface

play02:34

fundamental principles where when

play02:36

something is complicated to do you won't

play02:39

use it very often there's people that

play02:41

will break out gdb when they're at their

play02:43

wit's end and they just have beat their

play02:45

head against a problem for so long but

play02:47

for somebody that kind of grew up in

play02:49

game dev it's like they were running

play02:50

into the debugger anyways before they

play02:52

even knew there was a problem and you

play02:54

would just stop and see you know what

play02:56

was happening and sometimes you could

play02:57

fix things even before you you know

play03:00

even before you did one compile cycle

play03:02

you could be in the debugger and you

play03:04

would say well i'm just going to change

play03:05

this right here and yep that did the job

play03:07

and fix it and go on and for people

play03:09

don't know gdb is a sort of popular i

play03:12

guess linux debugger

play03:14

uh

play03:15

primarily for c plus

play03:16

they they handle most of the languages

play03:18

but it's you know it's based on c as the

play03:20

the original kind of unix heritage but

play03:22

and it's kind of like command line it's

play03:24

not user friendly it's not it doesn't

play03:25

allow for clean visualizations and

play03:27

you're you're exactly right just so

play03:29

you're using this kind of debugger

play03:31

usually when you're what's end and

play03:33

there's a problem that you can't figure

play03:35

out why by just looking at the codes

play03:36

they have to find it that's how i guess

play03:39

normal programmers use it but you're

play03:41

saying there should be tools that kind

play03:42

of

play03:43

visualize and help you as part of the

play03:45

programming process

play03:47

just a normal programming process to to

play03:50

understand the code deeper yeah when i'm

play03:52

working on like my cc plus plus code i'm

play03:55

always running it from the debugger you

play03:57

know just i type in the code i i run it

play04:00

many times the first thing i do after

play04:01

writing code is set a breakpoint and

play04:03

step through the function now other

play04:05

people say it's like oh i do that in my

play04:07

head well your head is a faulty

play04:09

interpreter of all those things there

play04:11

and i've written brand new code i want

play04:13

to step in there and i'm going to single

play04:14

step through that examine lots of things

play04:16

and see if it's actually doing what i

play04:18

expected it to

play04:20

it is a kind of

play04:22

companion the debugger like you're

play04:25

you're now coding in an interactive way

play04:26

with another

play04:28

being

play04:29

a debugger is a kind of dumb being but

play04:31

it's a reliable being

play04:33

that is an interesting question of what

play04:34

role does ai play in that kind of

play04:37

with codex and these kind of

play04:40

ability to generate code might be you

play04:42

might start having tools that

play04:45

understand the code in interesting deep

play04:47

ways that can work with you because

play04:49

there's a whole spectrum there from

play04:51

static code analyzers and various kind

play04:54

of dynamic tools they're up to ai that

play04:56

can conceivably grok these programs that

play04:58

no literally no human can understand

play05:01

they're they're too big too intertwined

play05:02

and too interconnected but it's not

play05:04

beyond the possibility of understanding

play05:07

it's just beyond what we can hold in our

play05:09

heads as kind of mutable state while

play05:11

we're working on things

play05:12

and

play05:13

and i'm a big proponent again of things

play05:15

like static analyzers and some of that

play05:17

stuff where

play05:19

you'll find some people that don't like

play05:21

being scolded by a program for how

play05:23

they've written something where it's

play05:25

like oh i know better and sometimes you

play05:27

do but that was something that

play05:29

i was it was very

play05:31

very valuable for me when uh and not too

play05:34

many people get an opportunity like this

play05:35

to have this is almost one of those

play05:36

spiritual experiences as a programmer an

play05:39

awakening to

play05:40

i am theod software code bases were a

play05:42

couple million lines of code and at one

play05:45

point i had used a few of the different

play05:47

analysis tools but i made a point to

play05:50

really go through and scrub the code

play05:52

base using every tool that i could find

play05:55

and it was eye-opening where we had a

play05:56

reputation for having some of the the

play05:58

most robust strongest code you know

play06:00

where there were some you know great

play06:02

things that i remember hearing from

play06:04

microsoft telling us about crashes on

play06:06

xbox and we had this tiny number that

play06:08

they said were were probably literally

play06:10

hardware errors and then you have other

play06:12

significant titles that just have

play06:14

millions of faults that are getting

play06:15

recorded all the time so i was proud of

play06:17

our code on a lot of levels but when i

play06:20

took this code analysis squeegee through

play06:23

everything

play06:24

it was

play06:25

it was shocking how many errors there

play06:28

were in there things that you can say

play06:29

okay this was this was a copy paste not

play06:32

changing something right here lots of

play06:34

things that were you know the most the

play06:36

most common problem was something in a

play06:38

printf format string that was the wrong

play06:40

data type that could cause crashes there

play06:42

and you know you really want the

play06:44

warnings for things like that then the

play06:45

next most common was missing a check for

play06:47

null that could actually happen that

play06:49

could blow things up and those are

play06:51

obviously like top cc plus plus things

play06:53

everybody has those problems but the

play06:55

long tail of all of the different little

play06:58

things that could go wrong there and we

play06:59

had good programmers and my own codes

play07:02

that i'd be looking at it's like oh i

play07:03

wrote that code that's definitely wrong

play07:05

we've been using this for a year and

play07:08

it's this submarine you know this mine

play07:11

sitting there waiting for us to step on

play07:13

and

play07:14

it was humbling it was uh and i reached

play07:17

the conclusion that

play07:19

anything that can be syntactically

play07:20

allowed in your language

play07:22

if i'm

play07:24

it's gonna show up eventually in a large

play07:25

enough code base i you're not gonna good

play07:28

intentions aren't going to keep it from

play07:30

happening you need automated tools and

play07:32

guardrails for things and those start

play07:34

with things like static types and or

play07:36

even type hints in the more dynamic

play07:38

languages but

play07:39

the people that rebel against that that

play07:42

basically say uh that slows me down

play07:45

doing that there's something to that i

play07:46

get that i've written you know i've

play07:48

cobbled things together in a notebook i

play07:50

i'm like wow this is great that it just

play07:52

happened but yeah that's kind of sketchy

play07:54

but it's working fine i don't care it

play07:56

does come back to that that value

play07:58

analysis where sometimes it's right to

play08:00

not care

play08:01

but when you do care if it's going to be

play08:04

something that's going to live for years

play08:05

and it's going to have other people

play08:07

working on it i and it's going to be

play08:09

deployed to millions of people

play08:11

then you want to use all of these tools

play08:13

you want to be told it's like no you've

play08:14

screwed up here here and here and that

play08:16

does require kind of an ego check about

play08:19

things where you have to

play08:22

to be open to the fact that everything

play08:23

that you're doing is just littered with

play08:25

flaws it's not that oh you occasionally

play08:27

have a bad day it's just whatever stream

play08:30

of code you output there is going to be

play08:31

a statistical regularity of things that

play08:33

you just make mistakes on

play08:36

and i

play08:37

and i do think there's the whole

play08:38

argument about test driven design and

play08:41

unit testing versus kind of analysis and

play08:43

different things

play08:45

i am more in favor of the analysis and

play08:47

the stuff that just like you can't run

play08:49

your program until you fix this rather

play08:51

than you can run it and hopefully a unit

play08:53

test will catch it in some way yeah in

play08:55

my private code i have asserts

play08:58

everywhere yeah uh

play09:00

just there's something

play09:02

pleasant to me pleasurable to me about

play09:04

sort of the dictatorial rule of like

play09:07

this should be true at this point

play09:10

in too many times

play09:12

i've

play09:13

made mistakes

play09:15

that shouldn't have been made

play09:17

and i would assume

play09:19

i wouldn't be the kind of person that

play09:20

would make that mistake but i keep

play09:21

making that mistake therefore and the

play09:23

cert really catches me

play09:25

uh really helps all the time so my co i

play09:28

would say like 10 to 20 percent of my

play09:30

private code just for personal use is

play09:32

probably a certain and they're active

play09:34

comments that's one of those things that

play09:35

in theory they don't they don't make any

play09:38

difference to the program and if it was

play09:39

all operating the way you expected it

play09:41

would be then i they will never fire but

play09:45

even if you have it right and you wrote

play09:47

the code right initially then

play09:49

circumstances change the world outside

play09:51

your program changes and in fact that's

play09:54

that's one of the things where i'm kind

play09:56

of fond in a lot of cases of static

play09:58

array size declarations where i went

play10:00

through this period where it's like okay

play10:02

now we have general collection classes

play10:03

we should just make everything variable

play10:05

i because i had this history of in the

play10:08

early days you get doom which had some

play10:11

fixed limits on it then everybody

play10:12

started making crazier and crazier

play10:14

things and they kept bumping up the

play10:15

different limits this many lines this

play10:17

many sectors

play10:18

uh and it seemed like a good idea well

play10:21

we should just make this completely

play10:22

generic it can go kind of go up to

play10:24

whatever

play10:25

and

play10:26

there's cases where that's the right

play10:28

thing to do

play10:29

but it also the other aspect of the

play10:31

world changing around you is it's good

play10:34

to be informed when the world has

play10:35

changed more than you thought it would

play10:37

and if you've got a continuously growing

play10:39

collection you're never going to find

play10:41

out you might have this quadratic

play10:42

slowdown on something where you thought

play10:45

oh i'm only ever going to have a handful

play10:47

of these but something changes and

play10:48

there's a new design style and all of a

play10:50

sudden you've got 10 000 of them

play10:52

so i kind of like in many cases

play10:55

picking a number some you know nice

play10:57

round power of two number and setting it

play11:00

up in there and having an assert saying

play11:01

it's like hey you hit the you hit this

play11:03

limit you should probably think are the

play11:05

choices that you've made around all of

play11:07

this still relevant if somebody's using

play11:10

10 times more than you thought they

play11:12

would yeah this code was originally

play11:13

written with this kind of world view

play11:16

with this kind of set of constraints you

play11:18

were you were thinking of the world in

play11:20

this way

play11:21

if something breaks that means you got

play11:23

to rethink the initial stuff and that's

play11:25

it's nice for it to afford for it to do

play11:28

that is there any stuff like uh keyboard

play11:30

or

play11:32

monitor i'm fairly pedestrian on a lot

play11:35

of that where i i did move to triple

play11:37

monitors like in the last several years

play11:39

ago i had been dual monitor for a very

play11:41

long time and i am and it was one of

play11:44

those things where

play11:45

probably years later than i should have

play11:47

i'm just like well the video cards now

play11:49

generally have three output ports i

play11:50

should just put the third monitor up

play11:52

there that's been a that's been a pure

play11:53

win i've been very happy with that

play11:56

but no i don't have fancy keyboard or

play11:58

mouse or anything really the key things

play12:01

is an ide that has uh helpful debuggers

play12:04

has helpful tools

play12:06

so it's not the emacs vim route and then

play12:08

diet coke yeah so i did spend you know i

play12:11

spent uh one of my week-long retreats

play12:13

where i'm like okay i'm gonna make

play12:14

myself use uh there's actually classic

play12:17

vi which i know people will say you

play12:18

should never have done that you should

play12:19

have just used vim directly but you know

play12:22

i gave it the good try it's like okay

play12:24

i'm being in kind of classic unix

play12:26

developer mode here and i worked for

play12:29

a week on it i used anki to like teach

play12:32

myself the the different little key

play12:34

combinations for things like that and in

play12:36

the end it was just like all right this

play12:38

was kind of like my civil war

play12:39

reenactment phase you know it's like i'm

play12:41

going out there doing it like they used

play12:43

to in the old days and it was kind of

play12:45

fun in that regard so many people right

play12:46

now

play12:48

screaming as they're listening to this

play12:50

so again the out is that this was not

play12:52

modern vim but still i yes i was very

play12:55

happy to get back to my visual studio at

play12:58

the end yeah i'm actually i struggle

play13:00

with this a lot because

play13:02

so use a kinesis keyboard and um

play13:05

i use emacs primarily

play13:08

and i i feel like i can

play13:10

exactly as you said i can understand the

play13:12

code i can navigate the code there's a

play13:13

lot of stuff you could build within

play13:15

emacs with using lisp you can customize

play13:18

a lot of things for yourself to help you

play13:20

introspect the code like to help you

play13:22

understand the code and visualize

play13:24

different aspects of the goal you can

play13:25

even run debuggers but it's it's work

play13:28

and the world moves past you and the

play13:31

better and better ideas are constantly

play13:32

being built and that that puts a

play13:36

kind of

play13:37

i need to take the same kind of retreat

play13:39

as you're talking about but now i'm

play13:41

still fighting the civil war i need to

play13:43

kind of move into the 21st century and

play13:45

it does seem like the world is or a

play13:47

large chunk of the world is moving

play13:49

towards visual studio code which is kind

play13:51

of interesting to me against the

play13:52

javascript ecosystem on the one hand and

play13:56

ids are one of those things that you

play13:57

want to be infinitely fast you want them

play14:00

to just kind of immediately respond

play14:03

and like i mean heck i've got there's

play14:04

someone i know i'm an old-school game

play14:06

dev guy that still uses visual studio

play14:08

six and on a modern computer everything

play14:12

is just absolutely instant on something

play14:14

like that because it was made to work on

play14:16

a computer that's

play14:17

ten thousand or a hundred thousand times

play14:19

slower so just everything happens

play14:21

immediately and all the modern systems

play14:24

just feel

play14:25

you know they feel so crafty when it's

play14:27

like oh why is this refreshing the

play14:28

screen and moving around and updating

play14:30

over here and something blinks down

play14:32

there and you should update this and

play14:34

there's

play14:35

you know there there are things that

play14:37

we've lost with that incredible

play14:38

flexibility but

play14:40

uh lots of people get tons of value from

play14:42

it and i am super happy that that seems

play14:45

to be winning over even a lot of the old

play14:46

vim and emacs people that they're kind

play14:48

of like hey visual studio codes maybe

play14:50

you know not so bad i am that may be the

play14:53

final peacekeeping solution where

play14:55

everybody is reasonably happy with i

play14:58

with something like that

play15:19

you

Rate This
★
★
★
★
★

5.0 / 5 (0 votes)

Étiquettes Connexes
Game DevelopmentDebuggersIDEsVimEmacsVisual StudioCode AnalysisStatic TypesUnit TestingAI Tools
Besoin d'un résumé en anglais ?