WEBVTT 00:00.000 --> 00:17.360 So, we have HP on stage, brother, what a name, what a name brother, okay, so we will talk 00:17.360 --> 00:30.560 about something called popo, right, so the stage is yours, yeah, you're 00:30.560 --> 00:36.760 going to regret having uploaded already, I'm afraid, but what is this talk about? 00:36.760 --> 00:44.680 This is about Microsoft Bob and implementing an application for this fantastic platform 00:44.680 --> 00:50.280 from about 1994, so who am I? 00:50.280 --> 00:57.300 My name is Hapay from Bram, I'm a board member of the Gido Foundation, I have a consulting 00:57.300 --> 01:04.680 company called pre-hanciled sales and I like old computers, sometimes also how new computers 01:04.680 --> 01:09.400 but that's more or more rare lately. 01:09.400 --> 01:17.960 So, what is it to talk about, well, first of all, why are we here talking about a project 01:17.960 --> 01:22.880 from Microsoft from 1994 that most of you have never heard about? 01:22.880 --> 01:30.400 It also occurred to me that when I was making this talk, the 1994 is long enough ago that there 01:30.400 --> 01:36.600 will be people in this audience that wasn't a window-life then and have kids now just 01:36.600 --> 01:45.200 for all of you all to think about for a second, you're welcome, so what are we talking 01:45.200 --> 01:46.200 about? 01:46.200 --> 01:49.960 What we're going to nerd out a little bit about some old computer stuff and is there 01:49.960 --> 01:56.680 anything we can learn from this project? 01:56.680 --> 01:58.160 So how did we get there? 01:58.160 --> 02:04.920 Why am I talking about this, why are you well forced to listen to this here now? 02:04.920 --> 02:12.040 I was browsing the internet that you do and I came across this forum post, I don't exactly 02:12.040 --> 02:19.080 know why or how I came across it but sometimes universe gives. 02:19.080 --> 02:24.360 And this was the thing that I got, hello, I have a friend here who still uses old computer 02:24.360 --> 02:26.120 running Windows 95. 02:26.120 --> 02:32.040 He said that the only thing uses for this letter using Microsoft Bob Latter writer. 02:32.040 --> 02:48.800 This post was from 2010, so this is a person that apparently used the Windows 90. 02:48.800 --> 02:52.040 Oh, there we go again. 02:52.040 --> 03:02.000 So apparently the genes friend used Windows 95 computer for about 15 years and you 03:02.000 --> 03:07.160 use the Microsoft Bob Latter writer to write their toes in. 03:07.160 --> 03:12.640 So there's many questions that is raised, so what is Microsoft Bob? 03:12.640 --> 03:15.160 What is Microsoft Bob Latter writer? 03:15.160 --> 03:17.160 Well, first of all, what is Microsoft Bob? 03:17.160 --> 03:22.320 We can quickly look on Wikipedia and find out that Microsoft Bob was a product from Microsoft 03:22.320 --> 03:25.120 from about 1994, 1995. 03:25.120 --> 03:30.880 That's right, 1995, this came out in the same year that Windows 95 came out with also turns 03:30.880 --> 03:34.640 out why you might never have heard of this thing. 03:34.640 --> 03:42.200 So SD, previous Wikipedia page says what it said, it was to replace program manager. 03:42.200 --> 03:46.800 And again, as I was writing this talk, I realized in 1994, quite a long time ago, so some 03:46.800 --> 03:52.680 of you might not know, this is program manager, this is what Windows 3, with some of 03:52.680 --> 04:00.720 you might never see an either I guess, looked like, so if I can, then Windows, etc. 04:01.280 --> 04:04.440 What was this about showing a house? 04:05.440 --> 04:10.320 Well, this is what Microsoft Bob computer interface looks like. 04:10.320 --> 04:16.320 The idea was that this was, in fact, instead of a desktop, this is what you got. 04:16.320 --> 04:26.640 So you got a friendly room with a nice dog in the corner showing things happening. 04:26.720 --> 04:33.040 For instance, this is a room that has, this is the public mouse house, and this is the public 04:33.040 --> 04:42.640 study, and this is Microsoft Bob letter writer, the project that the genes friend apparently 04:42.640 --> 04:46.480 spent 15 years writing all their correspondences in. 04:49.040 --> 04:54.880 So despite all of this, I'm really not here to make fun of Microsoft Bob, 04:55.840 --> 04:58.960 to a certain extent is because it does it all itself already, right? 04:58.960 --> 05:03.600 There's nothing I can say that is funny or just looking at the screenshot of this thing. 05:04.800 --> 05:10.880 So I'm not going to try, but there is a sort of earnestness to this whole thing that I 05:10.880 --> 05:19.200 find absolutely irresistible. Like Microsoft spent years building this thing, spend countless 05:19.200 --> 05:26.560 like many hours human lives with our spends building this thing, and then I've sold it in stores 05:26.560 --> 05:32.000 for about six months, then Windows 95 came out, and all of this was for nothing. 05:35.040 --> 05:41.600 So are there good things about this thing, and I really, I honestly think there are. 05:41.600 --> 05:47.680 So if you look at this screenshot that we're here, you'll notice that, for instance, this 05:47.680 --> 05:52.320 being grows is an item that you can click on. If you click on it, you can say change it, 05:52.320 --> 05:57.680 and then you can resize it, and it's all like pixel-verfic. Like this is running in the screenshot 05:57.680 --> 06:09.280 is from a doesbox running in 124768, for instance. It's also as a wild amount of integration 06:09.280 --> 06:15.760 for 1994. It can do things that you really would not expect your computer to do in 1994. 06:16.480 --> 06:23.600 For instance, there's an address book. I can add a contact for false them. I can give it a 06:23.600 --> 06:31.600 birthday, and then when I go to my calendar application, it'll know that February 5th is the 06:31.600 --> 06:41.520 birthday of false them. I can go to the mail application and send an email to false them by adding 06:41.520 --> 06:46.240 it to my address book that's a separate application. Of course, right now, this is all stuff we 06:46.240 --> 06:54.400 expect, right? But your computer from 1995 running Windows 3.1, you really wouldn't expect most of 06:54.400 --> 07:01.360 this. You barely would expect the thing to work at all. It's also super-walk. For everyone, 07:01.360 --> 07:08.720 it was like concerns about like the modern, vote-staff. Microsoft Bob in 1995 allowed you to not 07:08.800 --> 07:14.640 have a gender. It's also super-secure. Like you guys had best works on stuff. 07:17.200 --> 07:22.480 It's also surprisingly fun, and this is a thing that I genuinely think is kind of missing 07:22.480 --> 07:30.720 from modern computing. Like everything is like, no, KDE, Windows. It's all, it's all become a tool, 07:30.720 --> 07:36.640 right? There's very little fun. What you see here is me logging in with a false them user who has a 07:36.720 --> 07:44.320 birthday on January 31st, as in today. You noticed that you log in, and the dog will tell you, 07:44.320 --> 07:49.920 hey, this is for you, open it. This is just something that your computer just does. If you open it, 07:49.920 --> 07:57.760 what happens? This is just your desktop now, by the way, these are items. You can move it around. 07:57.760 --> 08:04.240 You can move the box around. You can click on the balloons and pop them. It's really cool. 08:04.880 --> 08:09.680 Your computer doesn't do this anymore. You can really try to delight you anymore. Your computer 08:09.680 --> 08:16.240 now just tries to not be visible for the most part. That's also some bad things. Once you have 08:16.240 --> 08:21.040 your giant vase, then well, that's just the size of the vase now. And if you don't like it, 08:21.040 --> 08:25.280 I just have to move it, make it smaller again. You want to make it exactly as big as it was? 08:25.280 --> 08:32.560 Hope you remember. Also, this is all shared, right? You can have multiple users using these same 08:32.640 --> 08:37.440 rooms. So if somebody decides to put like a giant flower in the middle, now that flowers 08:37.440 --> 08:45.760 just there for everyone in the house. Also, what the fuck is this? What is the one in my 08:45.760 --> 08:53.920 looking at? What is this supposed to be? And let's see, I'm going to try to do something slightly 08:53.920 --> 09:00.480 brave. This is the actual software running. So this is a male client, but 09:01.440 --> 09:08.640 what is this trying to convey? The house is relatively straightforward. We know what a house 09:08.640 --> 09:19.920 looks like roughly. I hope this is going to go through. Sorry. That was, oh, it's receiving. 09:21.920 --> 09:28.960 So what is this thing? In the sense of Microsoft Bob clearly tries to make your computer look 09:28.960 --> 09:47.680 like things, but this is like an letter which we can open. What is this thing that my 09:48.480 --> 09:56.240 male is showing up on? Well, this is one of these. You know, this thing that everyone has in their house, 09:56.240 --> 10:05.120 now it's very easy, very easy to use, very intuitive. One more. What does shit is this? 10:06.800 --> 10:14.640 It's actually not a bad graphic, but once the last time you've actually held one of these, 10:16.080 --> 10:21.120 I believe that's probably people in Israel who literally never seen one before. You're welcome. 10:22.080 --> 10:29.440 Also, well, it doesn't exactly have blue screens, application errors, general protection, 10:29.440 --> 10:34.880 fault, and you spread that VBX is going to be part of your daily life if you use Bob a lot. 10:36.000 --> 10:42.480 Might be because of those box, but you might not be surprised to hear that I have a laptop running 10:42.480 --> 10:50.000 exclusively Microsoft Bob and it also does it. But that comes help, but love this thing. It is 10:50.160 --> 10:57.040 quirky and weird and they try to make computers accessible to people and failed 10:58.080 --> 11:06.320 spectacularly, but earnestly. So, how what was suffered of them for this thing actually? Like, 11:06.320 --> 11:13.280 well, nobody really knows exactly because of the four months that this was on the stores. 11:13.280 --> 11:18.320 There was not any third-party app developed, nor did Microsoft have actually released an SDK. 11:19.200 --> 11:26.160 However, I was able with G-Hydra to figure out that there's some flag you can set in wind.ini. 11:26.160 --> 11:31.760 Yes, that is really the only way to do it. And with unlocks the virtual 11:31.760 --> 11:39.040 visual basic controls, which then allows you to open these controls of visual basic. And this is 11:39.040 --> 11:45.280 basically what the interface, in visual basic loops like when you're building a Microsoft Bob application. 11:45.600 --> 11:52.880 It's interesting because almost everything in Microsoft Bob is written a visual basic free. 11:52.880 --> 12:01.120 It includes the whole word processor and email clients, all entirely visual basic, but not the 12:01.120 --> 12:08.720 checkbook application in the calendar. I don't know why. What makes the Microsoft Bob application 12:08.720 --> 12:13.760 Microsoft Bob application? Well, first of all, there's a podium in the bottom right. This is 12:13.840 --> 12:19.120 actually an integral part of the app experience because there is no title bar or anything. 12:19.760 --> 12:26.400 The podium actually takes the place of what on other systems is the title bar. So it has the 12:26.400 --> 12:32.400 only menu that exists in a Bob application, which is the exit button. The new of the guide, 12:34.000 --> 12:39.680 which is managed by the podium and has to stay on the podium, it's very sad. And that is really 12:39.680 --> 12:47.280 all. So you see that in the corner there, you see the room, like the behind it, that is all spoken 12:47.280 --> 12:52.080 mirrors. It literally takes a screenshot right before starting up and there's puts it on the background. 12:54.080 --> 13:00.880 So, but in the background, Microsoft Bob actually uses state-of-the-art features of 1994, 13:01.200 --> 13:11.040 which is internally everything you see is an MSGET databases. All of the surfaces are exposed 13:11.040 --> 13:18.720 via calm object. All of the shared components, the podium, the guide, or VBX components, 13:18.720 --> 13:24.000 with at the time, were supposed to be the modern way of componentizing an application. 13:24.000 --> 13:29.600 The mail stores are in PST, with some of you might remember being. So these are actually the same 13:29.600 --> 13:38.240 mail format that Microsoft Outlook still uses today to store emails. And the mail client interfaces 13:38.240 --> 13:46.720 mapping, which means that the DLL that interfaces the Microsoft Bob mail client to the mail backend, 13:46.720 --> 13:52.400 is the same interface that Microsoft Outlook uses today to talk to Office 365. 13:52.800 --> 14:02.000 So, they really did try to make something good. Again, they failed, but they really did try. 14:03.040 --> 14:08.480 And of course, this thing has to run in 16-bit Windows LAN, because VBX didn't make an 14:08.480 --> 14:16.720 little Windows 95, almost none of the core technologies did. There's still some questionable choices, 14:16.720 --> 14:22.800 like while it looks like each app runs in the room. As I pointed that earlier, 14:22.800 --> 14:28.640 it's really is all smoke and mirrors. The podium manages the guide for some reason. There are two 14:28.640 --> 14:34.720 separate objects, but if you put the guide somewhere else on the screen, it just stops working. 14:35.440 --> 14:41.440 No, I still don't know why, and I spent a embarrassing amount of time trying to figure out why. 14:41.440 --> 14:50.560 And I think this is not necessarily really a Microsoft Bob specific problem, but there's a lot 14:50.560 --> 14:56.000 of boilerplate code, both in visual basic, as well as in C++, that you just have to have in your 14:56.000 --> 15:01.440 application. But at the time, people just love to do that. I don't know how many of you ever had 15:01.440 --> 15:07.600 the milled fortune of trying to write a 16-bit NFC application. But you start by wizard. We 15:07.600 --> 15:13.440 answer a bunch of questions, which will then generate literally hundreds of lines of codes for you. 15:13.440 --> 15:18.320 The two can't really touch, and you can, but you get to keep all the pieces. 15:19.920 --> 15:26.320 So how does software development work, if most of it is in visual basic? Well, C++ is possible, 15:26.320 --> 15:35.120 the only way to write VBX stuff isn't C++. So there is a APIs for that, but because they use VBX 15:35.120 --> 15:43.120 controls, we use visual basic controls, that means that every C++ has to be using MFC. 15:44.160 --> 15:49.680 MFC stands for Microsoft Foundation classes, right away, for the young whippersnapper, and the 15:49.680 --> 15:58.320 audience, and everything has come. So what does that look like? Well, instantiating the podium 15:58.320 --> 16:03.520 in C++ looks like this, and the only thing that this does is get to the little thing in the corner. 16:05.840 --> 16:12.480 Then in order to start an application, this is more or less the minimum amount of code you need 16:12.480 --> 16:19.840 to do anything at all, and this won't actually run like this. You also notice the work you told PIA 16:19.840 --> 16:26.240 everywhere, that was the actual internal name for Microsoft Bob. It's, it's codes itself, 16:26.240 --> 16:33.760 Utopia. So how did I figure this out? Well originally, like I said, there was like two 16:33.760 --> 16:40.000 native applications, checkbook.exe, which I ran through Geahitrafero very long time, trying to figure 16:40.000 --> 16:47.600 out all of these polls into Utopia, the DLL. But then after months of working, there's somebody 16:47.600 --> 16:54.240 just randomly dumped like the copy of part of the realistic A-Online. There's still a lot of missing 16:54.240 --> 16:58.640 pieces from that, but together with that, with all of the stuff that I had worked out beforehand, 16:58.720 --> 17:04.960 I was actually able to make something work. So let's see if the demo gods will be kind to me today. 17:14.480 --> 17:17.280 I have multiple dustboxes running my apologies. 17:18.160 --> 17:28.720 Wait, who doesn't? All right, so this is the application starting that you saw before, 17:30.400 --> 17:32.080 Bob Hela World made by me. 17:43.680 --> 17:44.480 Fantastic. 17:45.120 --> 17:49.120 Well, that is the real experience that you got there. 17:51.120 --> 17:58.560 And it's a quick, so just to show you that this is also not this is the actual 18:00.160 --> 18:05.440 notebook application of the visual basic one that I run through, visual basic decompiler, 18:05.440 --> 18:13.040 and spent more time than I would like to admit fixing up. But you'll see that this visual 18:13.120 --> 18:19.280 basic code shoots theoretically. There you go. Actually, run like, 18:21.920 --> 18:29.360 got them. All right, moving very swiftly along. 18:33.760 --> 18:42.320 So how did Gene's plight end? Well, Gene managed to rescue the documents off her friend, 18:42.480 --> 18:49.120 but it was puzzled by the fact that Bob would only have these number files, and she didn't understand 18:49.120 --> 18:57.600 why. And I didn't understand why either. So that's, that is not a dust file name, but you don't 18:57.600 --> 19:02.720 get to pick a dust file name whenever you make a new document in Microsoft Bob. 19:03.920 --> 19:09.520 And when you open documents, you don't get to see a list of files, you get to see a list of the 19:09.520 --> 19:14.880 documents you made. And it will also notice this little thing on the bottom there, 19:14.880 --> 19:19.840 share it with others, or keep it private. That's not a thing that Windows 3 can do. 19:19.840 --> 19:27.840 Windows 95 can barely do this. Well, the trick is that indeed on your file system, 19:27.840 --> 19:36.480 in the folder where the right application itself lives, that letter is in fact just called 77wtp. 19:37.200 --> 19:45.680 So Bob stores the real file, the Bob file names in a database. One of these MSGET databases that 19:45.680 --> 19:51.600 everything is stored on, and the user never actually sees any real files. In the rare cases where 19:51.600 --> 19:56.720 Bob will let you pick a file outside of itself, it actually calls it a dust file. 19:59.040 --> 20:04.720 So, and Gene was not able to figure this out. Would you, but can you figure it out today, 20:04.720 --> 20:11.040 where you've met a lot of your friends and family is now? I don't actually think that Bob 20:11.040 --> 20:15.680 did this on purpose. I think they were like, this is kind of my thesis about this whole thing. 20:15.680 --> 20:20.240 They actually, I think, were trying to do something good for a change. I mean, this is the Microsoft 20:20.240 --> 20:28.640 of the 1995, right? Not just today. They probably still write them. And it's still managed to 20:28.640 --> 20:33.520 be extremely careful because of this weird database thing. And this is something I can't reliably 20:33.520 --> 20:39.200 demo, obviously. But these MSGET databases also had a tendency to just blow up. Like, if you 20:39.200 --> 20:44.560 turn your computer off at the wrong time, they would just completely corrupt, which is fun. 20:45.200 --> 20:51.360 But modern software as a service actually does this on purpose, right? There's plenty of 20:51.360 --> 20:57.760 services where you can export your data, but only a version of it that is only short of what you 20:57.760 --> 21:05.440 actually put in. And I realize I'm preaching to the choir a little bit. But I think that stuff 21:05.440 --> 21:09.680 like this still happens today and people pick Bob because it was supposed to be user-friendly. 21:09.680 --> 21:14.480 I mean, for the four months that it was available on people got to pick it. And I didn't realize 21:14.480 --> 21:18.320 that this is what they were doing. And I think we're still doing this today. And I think we're 21:18.320 --> 21:26.080 still letting our friends and families do this today. So I want to thank you. And I want to open 21:26.080 --> 21:30.560 the room for some questions. I think there's only a couple of minutes. If you want to play with Bob, 21:30.560 --> 21:37.200 I put a version online. It has works in your web browser. I hacked the docs box a little bit so you 21:37.200 --> 21:43.200 can press the print button and you can get all of your beautiful documents in Chris Postcript, 21:43.200 --> 21:49.040 writing your browser. I have a Patreon. There's currently no paid stairs, but you can sign out for free. 21:49.840 --> 21:55.760 If you want to hire me to do weird tech shit, that's my business. And tomorrow I'm going to talk 21:55.840 --> 21:59.360 about the milk line you saw working. And follow me on Mr. Dom. 21:59.360 --> 22:11.360 There's apparently a time for one question. 22:17.360 --> 22:29.200 Yes? Why? Well, it is a good question. And I said that would 22:29.200 --> 22:35.840 answer it, but I didn't really, I guess. The real, I mean, the real answer is because I have 22:35.840 --> 22:42.080 severe ADHD and I picked and I saw that post by cheating exactly the wrong time. That is the real 22:42.080 --> 22:55.440 answer I guess. Thank you very much. You can, if you have more questions.