Hello, Windows! RetroCoding "Hello World" for Windows with Dave

Поделиться
HTML-код
  • Опубликовано: 8 ноя 2024

Комментарии • 1 тыс.

  • @KernArc
    @KernArc 3 года назад +529

    One can tell a true programmer by his ability to stroke his chin without interrupting touch-typing with both his hands at a machine gun rate.

    • @DavesGarage
      @DavesGarage  3 года назад +261

      Thanks! I left that in intentionally, hoping someone would notice :-)

    • @IIARROWS
      @IIARROWS 3 года назад +52

      That's what managers really want! If you need to think, at least don't interrupt your work.

    • @sirploko
      @sirploko 3 года назад +8

      Can you tell us the timestamp?

    • @lohphat
      @lohphat 3 года назад +15

      @@sirploko 10:04

    • @sirploko
      @sirploko 3 года назад +4

      @@lohphat Thank you!

  • @Gizmo10777
    @Gizmo10777 3 года назад +185

    I understood about 10% of this but couldn’t stop watching & found it really interesting

    • @DeltaNrOne
      @DeltaNrOne 3 года назад +9

      As a developer i know c++ a bit but 25% max for me

    • @jacksonmacd
      @jacksonmacd 3 года назад +1

      1% here. Fascinating anyway.

    • @HuntersMoon78
      @HuntersMoon78 3 года назад +2

      10% more than I understood but still super interesting

    • @qwertykeyboard5901
      @qwertykeyboard5901 3 года назад +1

      I do c based terminal linux programs so same

    • @stephanc7192
      @stephanc7192 3 года назад

      Agreed
      Which I got to 10%!

  • @matthiaswandel
    @matthiaswandel 3 года назад +278

    more tutorials along the lines of the old charles pezold books would be nice

    • @ccoder4953
      @ccoder4953 3 года назад +16

      Interesting seeing you here. Taking a break from woodworking and bandsaws? Or maybe just getting ready for your next mouse maze?

    • @jongmassey
      @jongmassey 3 года назад +6

      I bet you've got some interesting RIM war stories to tell?

    • @WigWagWorkshop
      @WigWagWorkshop 3 года назад

      👋Matthias, cool seeing you here.

    • @eDoc2020
      @eDoc2020 3 года назад +2

      Listen, everyone. Matthias really doesn't like all of these "ooh, fancy seeing my favorite YTer here" comments because they're usually a waste of time. Comments should add something to the conversation.

    • @bknesheim
      @bknesheim 3 года назад

      Agree and you here in the comments make me belive that youtube might be really small after all.
      It happen often that people I watch, watch and comment on other channels that I find interesting, but not in theire own topic. :-)

  • @jukpaa
    @jukpaa 3 года назад +18

    This takes me back years and years. My first university C-programming class gave us a project to build a Yatzi (Nordic version of Yatzhee) in pure C. I was a bit ahead of the class and chose to do mine in Win16 which was still cool and new - I remember a lot of the basics from here still vividly. And the best part is the teaching assistant who looked at my code (a basic HP-UX nerd) could not figure any of it out - he actually claimed this code will neither compile nor run. He had an interesting expression after the compiler went through some 100,000 lines of .h, maybe 1000 lines of my code and all of the sudden you had a Win 16 app that actually worked and had a bunch of nice Windows behavior like mouse roll-over gray scoring. Today everyone would consider that normal, but back then it was a "WOW!" moment. Love your content, takes me back as a former blue badge, too.

    • @2xsaiko
      @2xsaiko 3 года назад +1

      Hahahaha that's great

  • @MarekKnapek
    @MarekKnapek 3 года назад +7

    Recently I went retro and installed Visual Studio 5.0 (Visual Studio 97) into Windows NT 4.0. My hello world app is only 4kB in size when linking with dynamic CRT (basically libC in DLL instead of inlined inside the EXE). Then I went full masochist and switched to Visual C++ 1.10 and C (not C++ because the compiler's ability to handle templates drove me crazy). Now my app can run on both Windows 95, Windows NT 3.1 and newer, can detect missing unicode (wide) functionality and switch to current ANSI code page at run-time (no need to have separate ANSI and unicode builds). Currently I don't care about 16bit Windows and Win32s. I also customized the program's entry point in order to replace the CRT. Don't confuse real program's entry point, that the OS calls, (usually wWinMainCRTStartup inside CRT you link against) and the wWinMain entry point, that the CRT calls, you as app developer writes. I want to say how much I LOVE the offline MSDN documentation in HLP/CHM format.

  • @brianlhangford
    @brianlhangford 3 года назад +10

    The speed of coding is insane. Also, the flow of thought and organization of his initial code is insane.

  • @davidgreen8512
    @davidgreen8512 3 года назад +128

    I love how it rendered the text in the old System font. I honestly didn't even realise it was still available in Win10.

    • @igorthelight
      @igorthelight 3 года назад +29

      In C# you may just comment out "Application.EnableVisualStyles();" and application will look very oldschool :-)

    • @LangleyNA
      @LangleyNA 3 года назад +10

      I think it may be "vgafix.fon," "vgasys.fon" and other similarly named files. They're tiny six, seven, eight kilobyte files and have been included at least as far as Windows XP.

    • @1971merlin
      @1971merlin 3 года назад +4

      I can see part 2 jazzing that up. By the end of this i predict we will have recreated pinball, in fact.

    • @sycration
      @sycration 3 года назад +10

      @@artifactingreality That ended with XP. NT is much better

    • @nabagaca
      @nabagaca 3 года назад +10

      @@sycration Actually dos ended with windows ME. After that windows 2000 and forward (for consumers at least, windows NT had it earlier) were all based on the NT kernel.

  • @oddbec
    @oddbec 3 года назад +12

    This sure brings me back. I was always frustrated with how MFC hid the foundational stuff, so I bought books on win32 and did a deep dive into win32. I still have those books, more than 20 years later :-)

  • @scd147
    @scd147 3 года назад +69

    Getting big Bob Ross vibes from this, and I am here for it.

    • @DavesGarage
      @DavesGarage  3 года назад +61

      I was thinking that! A big wig... "We'll just put a little comment over here, next to the return..."

    • @zeropointzer0
      @zeropointzer0 3 года назад +11

      Let's take some red C++, add some blue Haskell to it and a tiny bit of yellow COBOL......let's put a bug...right there. Gotta make those little noises or it won't work. And...ah, you know me - everybody needs a friend! Let's hide a another small hard-to-find bug or a cute little zero day exploit right behind it - nobody can see it, but _we_ know it's there! Maybe we'll paint a patch for it later...or maybe we won't. It's up to you! Once you grab your keyboard, you get a programmer's license - in this piece of code, you have total and absolute freedom!

    • @RichardNobel
      @RichardNobel 3 года назад

      @@zeropointzer0 🤣 _"...a cute little zero day exploit..."_ 😝

    • @Lazarov_Tweevles
      @Lazarov_Tweevles 3 года назад

      "There are no mistakes"

  • @MonteMusicChannel
    @MonteMusicChannel 3 года назад +17

    C64 / 6502 Assembly course would be amazing. Thank you for your videos ! Learned a lot.

    • @DavesGarage
      @DavesGarage  3 года назад +11

      You got it!

    • @jackgerberuae
      @jackgerberuae 3 года назад +2

      @@DavesGarage if you are tuned in on the 6502, have you had a look at Ben Eater’s channel, where he builds a computer with bread boards?

    • @sexygeek8996
      @sexygeek8996 3 года назад

      I could have done this on my Apple II in 6502 assembly language with much less typing.

  • @christrahan2229
    @christrahan2229 3 года назад +8

    Dave, .. I personally started programming when I was around 10 or so with QBasic.. Finding QBasic and opening nibbles was great.. changing the game and modifying the code and seeing what I did and it come to reality on the screen started it all! You coded what I was learning on.. lol

    • @anon_y_mousse
      @anon_y_mousse 2 года назад +1

      Me too. Our school had old IBM DOS computers for way longer than they should've, but Nibbles and Gorillas were awesome games, for the time.

  • @LaskyLabs
    @LaskyLabs 3 года назад +3

    In a world where people are only using java and using "else if" instead of a bloody switch statement!
    One man, rises from the ashes to show us all how it's done.
    *Phat synth bass track plays.*
    DAVE PLUMMER!!!

  • @kenkelvin4023
    @kenkelvin4023 3 года назад +11

    I think this guy is one of the legends of our times

  • @heidirichter
    @heidirichter 3 года назад +7

    I'd be particularly interested in the same thing, but opening the same sort of Window on an Amiga, so yes, more of this please!

  • @theOriginalEamou
    @theOriginalEamou 3 года назад +16

    Easily my favourite channel at the moment, thanks for all the great content! Cheers from the UK.

  • @espensl
    @espensl 3 года назад +1

    As a fellow nerd who learned to code way back in the 80s and 90s, I cut my teeth on 6502 assembly, learned C, and progressed to x86 ASM, C, CPP, Pascal once my mom got me a PC and I have since that period on my 10th birthday built a life on knowing how machines work and how to solve problems and provide tools and experiences to others, I salute you! I really love your channel, and I love all the insider things from Microsoft and I especially love this video and your x86 ASM video that shows the Millenials how it's done...

    • @toyotasupra97
      @toyotasupra97 3 года назад +1

      I’m a millennial, and I learned HTML and pascal in computer science high school class in the early 2000s. Your generational assumptions just serve you negatively.

    • @espensl
      @espensl 3 года назад

      @@toyotasupra97 I am sorry if I offended you, it was not my intention. My point was actually that my generation had an advantage when it comes to this bare metal stuff, simply because we didn't have the comforts of modern era software development tools. I am not in any way or form claiming that the younger generations are not capable of learning how to program a machine directly. I just found it so cool and fascinating to see Dave show and explain all the steps necessary to make some simple Windows API calls using nothing but the native tongue of the CPU.

  • @sarcasmasaservice
    @sarcasmasaservice 3 года назад +8

    Thanks, Dave, this brings me back to my days of reading Petzold's "Programming Windows" and Prosise's "Programming Windows with MFC." I don't think reading those books made me a better person but they sure did make me a better programmer.

  • @NuclearMoonCat
    @NuclearMoonCat 3 года назад +13

    That was so interesting to watch, almost mesmerising! As someone, who is striving to become a junior C++ dev soon, that blast from the past was a great learning experience of how far we've come :D

  • @blaudrachen
    @blaudrachen 3 года назад +127

    I haven't written windows code like this in 15 years. I was a kid learning to code with Borland C++ because VC++ used to not have a free version and Borland came with a C book my parents got me :-)
    I kinda miss doing it this way...

    • @joshgray9035
      @joshgray9035 3 года назад +10

      I've had a 20+ career out of what I learnt using Borland's free compiler

    • @johnh10000
      @johnh10000 3 года назад +4

      Realy I didn't get the book. But the manuals were great. I recall back in college they threw a lot away, I got my mates to dive in and grab some for me. In return, I wrote "their" code.

    • @glasser2819
      @glasser2819 3 года назад +5

      I started in the '80's on Borland Turbo Pascal for CP/M

    • @blaudrachen
      @blaudrachen 3 года назад +3

      @@johnh10000 The bundle I got was actually put together by McMillan Publishing and included both Borland C++ 5.02 and Sam's Teach Yourself C in 24 Hours. The Sam's book got me started with C and basic C++.
      The Borland compiler was one of the most heavily used pieces of software on my PC all through grade school and high school.

    • @Mark.Brindle
      @Mark.Brindle 3 года назад +3

      I still have both Turbo Pascal 1.0 on 8" floppy for CP/M 86 and MS-DOS V1.
      I went on to all versions of turbo Pascal, Delphi, Borland C++, C, Prolog (loved prolog).anyone here use their B-tree library for Turbo Pascal?. Really miss them. They did a Turbo Pascal .Net for V1, then gave up.

  • @KennethMyhra
    @KennethMyhra 3 года назад +41

    Appreciate all your content, but this does really hit my heart. Would really appreciate more old school win32 C coding 🙌🏻

  • @jason_liam
    @jason_liam 3 года назад +60

    Didn't understood a thing. Loved every bit of it. Awesome videos Dave.

    • @DavesGarage
      @DavesGarage  3 года назад +42

      Me neither :-). Glad you liked it though!

  • @WooShell
    @WooShell 3 года назад

    Thankfully this is absolutely not overcomplicated and verbose.. you just have to love how clear and easy everything is on Windows.

  • @adamboles2308
    @adamboles2308 3 года назад +13

    This was great! Excellent explanation of what I thought previously to just be magic.

  • @sryx
    @sryx 3 года назад +2

    I just started up my old TI-85 from high-school and walked my son through coding a Sierpiński triangle app in TI-BASIC. I absolutely love this content :)

  • @joehammer3462
    @joehammer3462 3 года назад +6

    Dave, I really enjoyed this topic. Please cover more of this stuff! I'm a now retired EE and have been able to return to my hobby of software and electronics as opposed to my job of S/W and H/w. No more deadlines for me!

  • @fredskronk
    @fredskronk 3 года назад

    I absolutely love that you comment your code!!! Fire some reason things seems to have moved to “code is enough documentation” and I hate it.
    It’s much easier to get what the people before yo did if they’d bothered to tell you rather than relying on “good naming standards” :)

  • @KookoCraft
    @KookoCraft 3 года назад +8

    You have inspired me to learn C++ !
    I’m using my dads old books and some online sources (including your awesome channel!), and it’s a really handy language

    • @brianlhangford
      @brianlhangford 3 года назад +1

      I don’t get it. C++ is still a hugely utilized high level language used every day. In fact, if you take computer science in a university, it’s the first language you learn.

    • @oleksijm
      @oleksijm 3 года назад

      Our modern industrial civilization depends on C++

  • @unityasteroids1562
    @unityasteroids1562 2 года назад

    thanks for bringing back the memories, i almost forgot how much work it used to be to do the simplest things. Its cool how you still remember it as if it was yesterday

  • @delicious_seabass
    @delicious_seabass 3 года назад +4

    This was great, especially the extra tips that only someone from the inside would know. Would love to see more tutorials or walk-throughs like this. I wouldn't even mind a dedicated video on how the WndProc works behinds the scenes, or how to draw flicker-free like you had done with Task Manager.

  • @collinvisser7108
    @collinvisser7108 3 года назад +1

    This brought back so many memory’s of banging my head against the table - a good choice for the editor colours, the blue and white mad the memories more real

  • @RyGuy5320
    @RyGuy5320 3 года назад +8

    "They call it engagement, I call it.. dopamine."
    Loved that one! My comprehension of the coding here is elementary at best but I was still paying close attention from start to finish.
    Dave, have you ever considered publishing some content in a podcast format? I found myself listening to Dave's Garage whilst working in my own garage; video sometimes optional!

  • @GuildOfCalamity
    @GuildOfCalamity 3 года назад +1

    So glad I found this channel; Dave is an old-school ASM/C dinosaur... just like me.
    More old-school windows code Dave!

  • @FredeLundbeck
    @FredeLundbeck 3 года назад +4

    Really love this kind of content Dave, it's really intresting to see how it was done back in the days by the pros!

  • @dxmajrd
    @dxmajrd 3 года назад +1

    Dave is proper dev GOAT, with smooth jazz included! 10/10

  • @sydneybiscuit
    @sydneybiscuit 3 года назад +4

    Holy hell. This was amazing. Thank you so much for your knowledge, experience, and willingness to teach everyone on youtube. I look forward to each of your videos. I would love to see bare-metal basics for all of those topics you listed. Thanks again, and keep up the good work!

  • @davidgriggs5318
    @davidgriggs5318 3 года назад +1

    I went to school for game dev at Full Sail about 10 years ago and we took a windows programming class. We did stuff just like this to make a simple pong game.
    We had to start with an empty cpp just like this. That’s how we learned about a main game loop. Basically it’s a while(true) loop but we had to make sure we ended it when the right messages came through.
    It was cool because we did it before they taught us directx and OpenGL. We got to learn about brushes, painting, etc.
    Our second Windows programming class was in c# using forms, so we got a bit of the old and a bit of the new way to make windows applications.

  • @serpent77
    @serpent77 3 года назад +3

    Thanks for doing this Dave, I find that even though I never write code at this level (usually in c# with VS), just knowing what happens at this level behind the scenes help write better code and troubleshoot faster.

  • @CynthiaKerns
    @CynthiaKerns 2 года назад +1

    Ahh this brings me back to my beginning programming days.
    I still have my coffee stained copy of Programming Windows by Charles Petzold.

  • @neoncyber2001
    @neoncyber2001 3 года назад +3

    I have done a bunch of c/c±± on Linux and some embedded. But the massive windows boilerplate just seemed impenetrable. This is awesome

  • @classicnosh
    @classicnosh 3 года назад

    I've written many programs in Assembly Language. I have never written a Windows application in pure assembly language. I have written routines in Assembly to speed up a process but this was really fascinating. Thank you.

  • @jacobburch3240
    @jacobburch3240 3 года назад +3

    We need more videos like this, capture his knowledge before it’s lost.

  • @yvickmiossec6536
    @yvickmiossec6536 Год назад

    Hello Dave. Thank you for your videos. We're about the same age, and although life took me on a different path, I always nurtured an interest in computers, and coding in particular. Today's internet is so incredibly rich with content about programming, it's hard to imagine that in the 90s, even as the computer revolution was in full swing, taking an hobbyist interest in coding was quite challenging. Getting an overview of how a system worked, and getting a grasp on the concepts essential to understanding where your "Hello World" beginner's program fitted in the seemingly endless complexity of a windows system, was just impossible for the casual coder that I was. Dave's garage back then would have changed my life. Cheers !

  • @marchettejw
    @marchettejw 3 года назад +7

    Borland TurboC, god that brings me back to the mid 90s when I was leaning it in school..

  • @richardclarke376
    @richardclarke376 3 года назад +2

    I recently had to create a DLL plugin for a popular app. I built it using VC++ 2019 and ensured I didn't use any APIs introduced after Windows XP, or the DLL version of the VC++ runtime. As a result the DLL can be copy deployed and will work on just about any configuration likely to be in production today.
    This type of programming is one of the few ways you can write dependency-free code that just runs "out of the box"

  • @MrKnightmeister
    @MrKnightmeister 3 года назад +4

    Great content Dave. I'd love to see my retrocoding for Windows, particularly esoteric things, such as native mode applications in NT, simple drivers, etc. I'm more interested in Windows-related stuff, but I'm sure that the other platforms would be interesting too.

  • @UncleKennysPlace
    @UncleKennysPlace 3 года назад

    This is a fun channel. I used to program for the DoD back in the day, trying to write very tight code for the pitiful machines that were running (as a fresh upgrade!) Windows 95. I look back at those days fondly, but rarely write any code, except for the odd microcontroller board. Still have a copy of _Writing Solid Code,_ which was needed at the time, 'cuz Windows was as stable as a SpaceX Starship.

  • @delnarlt
    @delnarlt 3 года назад +3

    Awesome Video. You got me at old school. I love retro coding. Thanks.

  • @bru2al1tyusa82
    @bru2al1tyusa82 Год назад

    I've been subscribed for a while and never saw this video. I'm grateful creators like you pass on your knowledge.

  • @michaelmoltke911
    @michaelmoltke911 3 года назад +8

    Now it's really getting fun.
    Love the content.

  • @vann20
    @vann20 3 года назад +1

    Please make more of these, I realize they might not be so popular for a general audience but still, it's so inspiring to see you code, has made me better my code, and think multiple times "the perfect is the enemy of the good." In any case, thanks!

  • @lcrazy8l
    @lcrazy8l 3 года назад +4

    As someone a little too young to have caught this era of programming but infinitely fascinated with how everything was built off it - thank you. This was a treat to compare with today's Javascript everywhere reality.

  • @georgesealy4706
    @georgesealy4706 Год назад

    Back in 1992, this is exactly what we did for a 'client-server' commercial Windows product my company was selling. I still have the code somewhere. The big challenge was the limited resources on the PCs. It made me a better developer, for sure. Every byte was important. Thanks for the trip back. And hey, you are using Hungarian notation, cool.

  • @eshgholah
    @eshgholah 3 года назад +6

    Thank you sir. Bare metal coding rules. I loved it. Already subscribed.

  • @Propotus
    @Propotus 3 года назад

    As someone who has tried unsuccessfully to get into coding of any type its super nice to hear about the why behind everything instead of just hearing about the how.

  • @thomasandrews9355
    @thomasandrews9355 3 года назад +3

    Oh man, haven't wrote this level of code in mannnny years. I learned this about 10 years ago. I actually learned this by memorizing it then once I knew it, I made small changes. This brings me back.

  • @paulie1672
    @paulie1672 3 года назад

    Hi Dave. Since stumbling on your channel yesterday, I’ve been glued! Look forward to more videos! 👍🏼

  • @James-the-elder
    @James-the-elder 3 года назад +4

    I don't understand C and it's family, but I just love to hear your stories

  • @josegazo
    @josegazo 3 года назад +1

    Oh man, this episode brought back some memories of when I wanted to make my own game engine. I remember being stuck for days trying to understand the Windows api coding this very same stuff.

  • @hl2mukkel
    @hl2mukkel 3 года назад +5

    One thing to note is that GetMessage should not be used in a while loop like that, while it should mostly just return nonzero for success and zero when the quit message has been posted, there is also -1 which is returned in case of an error. I know you left out error handling deliberately in this case, just thought it would be nice to remark, great tutorial :)

    • @andrew2004sydney
      @andrew2004sydney 3 года назад +2

      Whoa! Showdown with the master! Grabbing popcorn now.

  • @BrianPost--ni6qs7yc4w
    @BrianPost--ni6qs7yc4w 3 месяца назад

    It all came flooding back to me as you were writing this application. Including the SetWindowLong & SetWindowLongPtr. I distinctly remember these 2 commands as it took me ages to find our how I was supposed to do it. I can't tell you what I used them for, I just remember I needing to call them. Now days I write all windows applications with C#.
    I also remember using Borland Turbo C 1.0 for writing windows applications & command line tools. I missed out on using ADA programming language which came out. My current boss hired me purely for my diverse experience & languages from the early games industry Z80 & 6502 assembly (ZX Spectrum [1992 edition with the rubber keys] & Commodore 64) as well as 8086, 80286, 80386 code which I still have from my MSDOS 5.0 days using protected mode application. I ported this code when we switched to using Windows 95.

  • @klaxoncow
    @klaxoncow 3 года назад +50

    "I'll leave the typos, so as not to distract anyone"
    And everyone with an OCD for typos is now totally distracted, staring at the broken lines. Wanting to reach into the screen and fix it themselves. "FIX IT! FIX IT!! FIX IT NOW!!!".
    You and I, Dave, have a different definition of what's distracting.

    • @michaelandersen271
      @michaelandersen271 3 года назад +4

      Same here! And he did not go through and show what he fixed. Literally unwatchable. When's the next one?

    • @BTheBlindRef
      @BTheBlindRef 3 года назад +1

      I couldn't get over the fact he was using sz as the prefix for the wide character strings instead of wz. I know different teams in MS have different standards, but come on! sz == single byte char, wz = wide char...

    • @rigoligorlc4795
      @rigoligorlc4795 3 года назад +2

      If I don't fix it immediately the error squiggles in the IDE will distract me even more.

  • @SandorPipei
    @SandorPipei 3 года назад

    It was a pleasure following your tutorial, recalling the good old days of windows programming from the 90's.
    The MSDN documentation was an amazing source for help for me, when I used the Win API and Win DDK.

  • @MorganC-zz1bg
    @MorganC-zz1bg 3 года назад +3

    Would love to see more like this.

  • @ChrisOBrien666
    @ChrisOBrien666 2 года назад

    Brings back memories of using Quick C for Windows.
    Another great video, thanks for the blast from the past!

  • @Creedoo
    @Creedoo 3 года назад +11

    Is it just me who wants Dave's real typing speed reveal at 100k ? 😆

  • @pianoman4Jesus
    @pianoman4Jesus 2 года назад

    Loved the blooper cuts at the end of this video. Thanks Dave. Ever reminded why I prefer to work in the space of interpretive script programming languages rather than compiled languages. Hats off to you working in compiled languages so I am able to be productive in interpretive script languages.

  • @NeonKnight042
    @NeonKnight042 3 года назад +7

    This was awesome! Thanks so much. If you don’t mind, how did you learn to program? Maybe talk about that in a video. Thanks again. Excellent stuff.

  • @thomb629
    @thomb629 3 года назад

    Very nice, fun to finally understand the code I copy-pasted early on learning programming. And to see the small, fast and lean version of what Qt has been hiding from me for 15 years (and that the API is actually quite nice).

  • @BartoszZasieczny
    @BartoszZasieczny 3 года назад +16

    Dave: We won't use any fancy Visual Studio, frameworks, etc. to write this.
    Also Dave: * literally runs whole another OS in the VM just to run the text editor *

    • @aetch77
      @aetch77 3 года назад +4

      That was WSL (Windows Subsystem for Linux), it's a part of Windows.

    • @BartoszZasieczny
      @BartoszZasieczny 3 года назад +4

      @@aetch77 WSL 2 runs Linux kernel in a VM.

  • @mirror1766
    @mirror1766 3 года назад

    As someone who has enjoyed a few of your videos and learned programming on an old Atari 130xe (years after its primary use), I used to have interest in Windows programming but now am a FreeBSD user so prefer to put my personal time there. I pretty much got out of programming entirely for most of the past 15 years but may change that and get back into learning C (studied c/c++ already a bit in high school). In any case, this video is why I hit subscribe; it was a great explaining video as best I can tell even if it is not an intro to C/C++. I recall a friend tried to write hellow world in Windows GUI but assembly and had it just below 1K in size back in the day.

  • @joshgray9035
    @joshgray9035 3 года назад +12

    Ah, the programming I did before I knew what a "stand up" is

  • @troogroove9318
    @troogroove9318 3 года назад +1

    Looking forward to the Amiga programming as I am starting to learn 68000 assembly on an Amiga. Keep you the good work.

  • @barilkobart
    @barilkobart 3 года назад +5

    Are you sitting comfortably?
    Good, then we'll begin
    Such a Canadian!
    Platinum Blonde

  • @jpotter2086
    @jpotter2086 2 года назад

    Beautiful layout and alignment on the fly. A joy to watch this composition!

  • @iXmerof
    @iXmerof 3 года назад +22

    More Retro Windows please! MFC, GDI, DirectX, Drivers :)

  • @ejharrop1416
    @ejharrop1416 3 года назад +2

    Thank you and I enjoy watching the video and will be back next time.

  • @NicolaiSyvertsen
    @NicolaiSyvertsen 3 года назад +8

    I would love a basic hello world intuition example on Amiga.

  • @ObligedTester
    @ObligedTester 3 года назад

    This is great. To see absolute bare metal Win32-programming done by an Microsoft-engineer is just incredible. This is just what makes RUclips so great. I hope that this series continue! Thank you for the time you put in to make these, and of course all the great stories from the 90's!

  • @snap_oversteer
    @snap_oversteer 3 года назад +23

    Interesting, also which oldest APIs are still supported in latest Windows? I know that there's the Win3.1 file dialog still used in some built in program, but what about even older APIs from 3.0, 2.x etc.?

    • @rdxdt
      @rdxdt 3 года назад +3

      WinExec api

    • @euromicelli5970
      @euromicelli5970 3 года назад +9

      I wouldn’t necessarily call File dialogs an “API”. But virtually all of the original Windows 1.0 API is still valid today. Only some small corner cases might have been removed, and out of the blue I can’t think of any. A few functions still exist (kind of) but are dead now and don’t do anything (like MakeProcInstance()). Everything you saw Dave type in the video is almost valid Windows 3.0 16-bit code (the most notable change needed is that he used some UNICODE function names instead of the original names. And correcting the typos :-) ). With a handful of additional touch ups, the code can even become valid Windows 1.0 code! (If you can find the ancient SDK and compiler needed to compile it, that is)

    • @rdxdt
      @rdxdt 3 года назад

      @@euromicelli5970 i would, like MessageBox api or the api that calls that dialog that winver shows.

  • @964tractorboy
    @964tractorboy 3 года назад

    Two (one) thumbs-up for any retro-coding fun. Always good to see bloopers. I get tongue-tied just watching...

  • @Hadw1n
    @Hadw1n 3 года назад +22

    Engagement for the algorithm gods. Loved the content :)

    • @Checker8763
      @Checker8763 3 года назад +1

      Pushing this awsome content :) too

  • @psei64
    @psei64 3 года назад

    Even though I barely understand python programming, I can see how clever and intelligent this code is. I really appreciate all the intense effort that went into something like Windows.

  • @naikrovek
    @naikrovek 3 года назад +43

    holy butts, you could hold a class about this stuff and charge admission and people would line up.

    • @DavesGarage
      @DavesGarage  3 года назад +68

      Let's pretend the video was the class - just send money! :-)

    • @Marenthyu
      @Marenthyu 3 года назад +5

      @@DavesGarage but i thought you are just in it for the subs and likes?
      I'd totally join a paid option on this channel for all the interesting stuff you share.

  • @Mark.Brindle
    @Mark.Brindle 3 года назад

    Great memories, thanks Dave! Started my windows journey on Win 1.x I was a C programmer on VAXs, purchased the Windows SDK as I saw it as the future.

  • @paulscarlett4346
    @paulscarlett4346 3 года назад +30

    PDP-11 please ... life before MS just for those that can remember when that was true.

    • @DavesGarage
      @DavesGarage  3 года назад +32

      I've got to find a good emulator for it where it's set up so that I can build a MACRO-11 program. I love MACRO11, it'll be fun...

    • @dh2032
      @dh2032 3 года назад +2

      @@DavesGarage yes, please

    • @ScottWalde
      @ScottWalde 3 года назад +5

      @@DavesGarage Emulator? Someone with your means can surely pick up an actual machine. :-)

    • @richardcini6562
      @richardcini6562 3 года назад +1

      I have a real 11/23+ in my shop but I often just use SIMH with an RT-11 configuration. SIMH is great if you’ve never used it.

    • @michaellesychyn4525
      @michaellesychyn4525 3 года назад

      Can always put together the best of both worlds with a pidp-11 kit if you enjoy the blinky lights/toggle switches of an original pdp-11 front console but also the convience of the SIMH emulator over having to potentially restore an original pdp11.

  • @davidcayll
    @davidcayll Год назад

    Quite amazed by the programming work in this video. I also liked the accompanying music a lot.

  • @Polaris64
    @Polaris64 3 года назад +3

    This brings back memories of reading Charles Petzold's book cover to cover :)

  • @JacobOvergaardMadsen
    @JacobOvergaardMadsen 3 года назад

    As I young programmer about 20 years ago, I dreamed of understanding something like this. But whenever I opened up Visual C++ as part of Visual Studio and asked it to create a default program, it was like looking at some kind of dark magic. So Visual Basic became a starting point and later, it was Java I was taught in school. Later I learned .NET on my own. Now I finally actually get a good explanation of how that black magic actually works! 🙂 Keep up the good work!

  • @johnh10000
    @johnh10000 3 года назад +3

    too right, that was fab you made it look too easy!

  • @bjorngitter
    @bjorngitter 3 года назад

    In my internship 1991 it was the first time I worked on a PC, before that I had mainly worked with the university systems (some form of Unix, if I recall correctly) and at home with my Atari ST. I was shocked to see how much work it was to get a simple message up and running. Yet again, once you have this scaffolding up, it's straightforward.
    I'm really happy that you included the part that makes your Hello World localizable. I'm sure that I have bugged you with this request at least once in the early nineties. I remember how in 1993 or so I had to explain to the developer of File Manager that shortcuts (like Ctrl + F) had to be localized. She couldn't believe it :) Fun times.

  • @peterhuyghe1006
    @peterhuyghe1006 3 года назад

    This brings back memories. I used to write code like this.

  • @MegaManNeo
    @MegaManNeo 3 года назад +4

    I'd love to see you code something for the Commodore 64.

  • @BDJ64
    @BDJ64 3 года назад +4

    No one appreciates us former Borland C programmers

  • @chriswareham
    @chriswareham 3 года назад

    Wow, that makes programming for the X Window System using nothing but Xlib look concise and clear!

  • @countryguy828
    @countryguy828 3 года назад +4

    This is what I wished I would have learned in college :-/

    • @statinskill
      @statinskill 3 года назад +1

      This is what I picked up just along the way, sonewhere at some time in my mostly non-microsoft career. I wouldn't put up with any amount of time living in a dorm just to learn this.

  • @Waldganger64
    @Waldganger64 3 года назад +1

    This is the most comfy Win32 video I have ever seen. Thanks Dave !

  • @SirKenchalot
    @SirKenchalot 3 года назад +35

    25 times per second? Let me know when you get up to 60fps as nothing short of that is acceptable these days!

    • @FreeScience
      @FreeScience 3 года назад +11

      Dave's video player; start a image viewer over and over with a new image.

    • @rudeviper
      @rudeviper 3 года назад +2

      I want 144 fps!

    • @elerius2
      @elerius2 3 года назад +4

      Looks like he was running a debug build. I wonder if a release build would hit 60. Honestly don't know if it would make any difference for an app of this simplicity or not.

    • @DavesGarage
      @DavesGarage  3 года назад +11

      @@elerius2 Yup, debug build :-) I imagine retail is faster!

    • @SirKenchalot
      @SirKenchalot 3 года назад

      @@rudeviper Yeah Dave! Come back when you have a 144 fps 4K Windows app written in Nano; what's wrong with you?

  • @1103-x5r
    @1103-x5r 3 года назад

    @Dave's Garage I used to program the C64, C16, PLUS 4, AMIGA. ATARI 400 right up to ST and of course PC. Assembly on all using Mikro for the 64. Ataris Asm Cartridge for the 8 bit. Lattice C and Seka Asm and not forgetting Devpac and Borlands offerings at the time on the Amiga, ST. I learnt Asm on a Vic 20. Used to write code straight in to a machine code monitor. Great Days and nights. I vote C64 or Amiga retro programming. I Like what your doing with the channel. Its refreshing that the old Coding breed is still living and getting that all important dopamine reward when that code just happens to work.

  • @henry1477
    @henry1477 3 года назад +5

    We’re you Working directly with the win api?

    • @DavesGarage
      @DavesGarage  3 года назад +8

      Yes, functions like RegisterClassEx and CreateWindow are part of, and exported by, user32.dll

  • @jemakrol
    @jemakrol 3 года назад

    Now we're going from fascinating to really interesting. More of this stuff, yes please! Bonus points for all those little "side-explanations" of why certain things are the way they are, or how you could use a quirk to your advantage.
    More retro coding!