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:31.360 about something called popo, right, so the stage is yours, yeah, you're all going to regret 00:31.360 --> 00:38.360 having uploaded already, I'm afraid, but what is this talk about, this is about Microsoft 00:38.360 --> 00:48.360 pop, and implementing an application for this fantastic platform from about 1994. 00:48.360 --> 00:56.360 So who am I, my name is Hapay from Bram, I'm a board member of the Gido Foundation, I have 00:56.360 --> 01:03.560 a consulting company called pre-hanciled sales, and I like old computers, sometimes also 01:03.560 --> 01:10.560 how new computers, but that's more or more rare lately. 01:10.560 --> 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.760 from Microsoft from 1994 that most of you have never heard about? 01:22.760 --> 01:29.240 It also occurred to me that when I was making this talk, that 1994 is long enough 01:29.240 --> 01:34.600 ago, that there will be people in this audience that wasn't a window-life then, and 01:34.600 --> 01:42.600 have kids now, just for all of you all to think about, first, second, you're welcome. 01:42.600 --> 01:47.720 So, what are we talking about, what we're going to nerd out a little bit about some 01:47.720 --> 01:56.640 old computer stuff, and is there anything we can learn from this project? 01:56.720 --> 02:02.800 Well, how did we get there, why am I talking about this, why are you forced to listen to this 02:02.800 --> 02:04.800 here now? 02:04.800 --> 02:12.000 I was browsing the internet that you do, and I came across this forum post, I don't exactly 02:12.000 --> 02:20.320 know why, or how I came across it, but sometimes universe gives, and this was the thing 02:20.320 --> 02:26.080 to get, hello, I have a friend here who still uses old computer running windows 95. 02:26.080 --> 02:31.920 He said that the only thing uses for this letter using Microsoft Bob letter writer. 02:31.920 --> 02:48.640 This post was from 2010, so this is a person that apparently used their windows 95. 02:48.640 --> 02:52.000 Oh, there we go again. 02:52.000 --> 03:02.960 So apparently, Gene's friend used Windows 95 computer for about 15 years, and used Microsoft 03:02.960 --> 03:07.160 Bob letter writer to write their toes in. 03:07.160 --> 03:13.760 So there's many questions that is raised, so what is Microsoft Bob, what is Microsoft Bob 03:13.760 --> 03:14.760 letter writer? 03:15.320 --> 03:17.080 Well, first of all, what is Microsoft Bob? 03:17.080 --> 03:22.280 We can quickly look on Wikipedia, I find out that Microsoft Bob was a product from Microsoft 03:22.280 --> 03:24.840 from about 1994, 1995. 03:24.840 --> 03:30.120 It doesn't write 1995, this came out in the same year that Windows 95 came out with 03:30.120 --> 03:34.280 also turns out why you might never have heard of this thing. 03:34.280 --> 03:41.960 So, as the previous Wikipedia page says, what it said, it was to replace program manager. 03:42.040 --> 03:46.280 And again, as I was writing this talk, I realized in 1994, it's quite a long time ago, 03:46.280 --> 03:52.040 so some of you might not know, this is program manager, this is what Windows 3, 03:52.040 --> 03:58.280 with some of you might never see an either, I guess, looked like, so if icons and windows, etc. 04:01.240 --> 04:03.400 What was this about showing a house? 04:05.320 --> 04:10.200 Well, this is what Microsoft Bob computer interface looks like. 04:10.200 --> 04:16.120 The idea was that this was, in fact, instead of a desktop, this is what you got, 04:16.120 --> 04:24.120 so you got a friendly room with a nice dog and a corner showing things happening. 04:26.360 --> 04:33.000 And for instance, this is a room that has, this is the public mouse house, and this is the public 04:33.800 --> 04:42.600 study. And this is Microsoft Bob letter writer, the project that the genes friend apparently 04:42.600 --> 04:46.440 spent 15 years writing all their correspondence this in. 04:49.080 --> 04:54.840 So, despite all of this, I'm really not here to make fun of Microsoft Bob, 04:55.800 --> 05:00.600 to a certain extent is because it does it all itself already, right? There's nothing I can say 05:00.600 --> 05:03.560 that is fine here, then just looking at the screenshot of this thing. 05:04.760 --> 05:10.360 So, I'm not going to try, but there is a sort of earnestness to this whole thing that, 05:10.360 --> 05:19.160 that I find absolutely irresistible. Microsoft spent years building this thing, spend countless, 05:19.160 --> 05:26.520 like, man-hours, human lives, or spend building this thing. And then I've sold it in stores 05:26.520 --> 05:31.960 for about six months, then Windows 95 came out, and all of this was for nothing. 05:35.000 --> 05:41.640 So, are there good things about this thing? And I really, I honestly think there are. 05:41.640 --> 05:47.640 So, if you look at this screenshot that we're here, you'll notice that, for instance, this 05:47.640 --> 05:52.360 ping grows is an item that you can click on. If you click on it, you can say change it, 05:52.440 --> 05:57.640 and then you can resize it, and it's all like pixel-verfic, like this is running in the screenshot 05:57.640 --> 06:09.240 is from a doesbox running in 124768, for instance. It's also as a wild amount of integration 06:09.240 --> 06:15.720 for 1994. It can do things that you really would not expect your computer to do in 1994. 06:16.600 --> 06:23.640 For instance, there's an address book. I can add a contact for false them. I can give it a 06:23.640 --> 06:31.560 birthday. And then when I go to my calendar application, it'll know that February 5th is the 06:31.560 --> 06:41.560 birthday of false them. I can go to the mail application and send an email to false them by adding 06:41.560 --> 06:46.200 it to my address book that's a separate application. Of course, right now, this is all stuff we 06:46.200 --> 06:54.360 expect, right? But your computer from 1995 running Windows 3.1, you really wouldn't expect most of 06:54.360 --> 07:01.640 this. You barely would expect the thing to work at all. It's also super-walk, for everyone who's 07:01.640 --> 07:08.760 like concerned about like the modern Vogue staff, Microsoft Bob in 1995 allowed you to not 07:08.840 --> 07:14.600 have a gender. It's also super-secure. Like you guys had best works on stuff. 07:17.160 --> 07:22.520 It's also surprisingly fun. And this is a thing that I genuinely think is kind of missing 07:22.520 --> 07:30.680 from modern computing. Like everything is like no KDE, Windows, it's all, it's all become a tool, 07:30.680 --> 07:36.280 right? There's very little fun. So what you see here is me logging in with a false them user who 07:36.360 --> 07:44.200 has a birthday on January 31st as in today. You noticed that you log in and the dog will tell you, 07:44.200 --> 07:49.880 hey, this is for you, open it. This is just something that computer just does. If you open it, 07:49.880 --> 07:56.200 what happens? And this is just, this is just, this is just your desktop now, by the way, these are items. 07:56.200 --> 08:03.320 You can move it around. You can move the box around. You can click on the balloons and pop them. 08:03.320 --> 08:06.840 It's really cool. And this is, your computer doesn't do this anymore, right? You can 08:06.840 --> 08:11.640 be really trying to delight you anymore. Your computer now just tries to not be visible for the 08:11.640 --> 08:18.360 most part. And that's also some bad things. Once you have your giant vase, then well, that's just 08:18.360 --> 08:22.920 the size of the vase now. And if you don't like it, I just have to move it, make a smaller again. 08:22.920 --> 08:29.800 You want to make it exactly as big as it was? Hope you remember. Also, this is all shared, right? 08:29.800 --> 08:36.200 You can have multiple users using the same room. So if somebody decides to put like a giant flower 08:36.200 --> 08:43.480 in the middle, now that flowers just there for everyone in the house. Also, what the fuck is this? 08:44.440 --> 08:50.840 Like, what is the bottom line looking at? What is this supposed to be? And let's see, 08:52.200 --> 08:58.040 I'm going to try to do something slightly brave. This is, this is the actual software running. 08:58.040 --> 09:05.720 So this is a male client, but what is this trying to convey? Like, the house is relatively 09:05.720 --> 09:12.440 straightforward, right? We know what a house looks like, roughly. I hope this is going to go through. 09:15.720 --> 09:24.200 Sorry? That was, oh, it's receiving. Yeah, there we go. So what is, what is this thing? 09:24.200 --> 09:30.680 In the sense of, like, the Microsoft Bob clearly tries to make your computer look like things. But 09:34.120 --> 09:47.640 and this is like an letter, which we can open. What is this thing that my 09:48.520 --> 09:55.560 male is showing up on? Well, this is one of these, you know, this thing that everyone has in their 09:55.560 --> 10:05.080 house. Now, it's very easy, very easy to use, very intuitive. One more, what does shit is this? 10:06.760 --> 10:14.680 Like, it's actually not a bad graphic, but once the last time you've actually held one of these, 10:15.560 --> 10:21.080 I believe, that's probably people in Israel who literally never seen one before. You're welcome. 10:23.320 --> 10:29.400 Also, well, it doesn't exactly have blue screens, application errors, general protection, 10:29.400 --> 10:34.840 fault, and you spread that VBX is going to be part of your daily life if you use Bob a lot. 10:35.960 --> 10:42.440 Might be because of those bugs, but you might not be surprised to hear that I have a laptop running 10:42.440 --> 10:50.040 exclusively Microsoft Bob, and it also doesn't. But that comes help, but love this thing. It is 10:50.040 --> 10:57.000 quirky and weird, and they try to make computers accessible to people and failed 10:58.040 --> 11:06.760 spectacularly, but earnestly. So, what was offered to them for this thing, actually, like, well, 11:06.840 --> 11:13.880 nobody really knows exactly because of the four months that this was on the stores. There was 11:13.880 --> 11:19.480 not any third party app developed, but nor did Microsoft have actually released an SDK. However, 11:19.480 --> 11:26.360 I was able with G-Hydra to figure out that there's some flag you can set in wind.ini. Yes, 11:26.360 --> 11:33.000 that is really the only way to do it. And with unlocks the virtual, official basic controls, 11:33.000 --> 11:40.440 which then allows you to open these controls of Visual Basic, and this is basically what the 11:40.440 --> 11:45.240 interface, in Visual Basic, loops like when you're building a Microsoft Bob application. 11:46.680 --> 11:52.840 It's interesting because almost everything in Microsoft Bob is written in Visual Basic 3, 11:52.840 --> 12:01.080 that includes the whole word processor and email clients, all entirely Visual Basic, but not the 12:01.160 --> 12:08.760 checkbook application in the calendar. I don't know why. What makes the Microsoft Bob application 12:08.760 --> 12:14.200 Microsoft Bob application? Well, first of all, there's a podium in the bottom right. This is actually 12:14.200 --> 12:20.440 an integral part of the app experience because there is no title bar or anything. The podium 12:20.440 --> 12:27.720 actually takes the place of what on other systems is the title bar. So, it has the only menu that 12:27.720 --> 12:34.760 exists in a Bob application, which is the exit button. Then you have the guide, which is managed 12:34.760 --> 12:40.920 by the podium, and has to stay on the podium. It's very sad. And that is really all. So, you see 12:40.920 --> 12:47.560 that in the corner there, you see the room, like the behind it, that is all spoken mirrors, 12:47.560 --> 12:52.040 that literally takes a screenshot right before starting up and just puts it on the background. 12:52.920 --> 13:00.920 So, but in the background, Microsoft Bob actually uses state-of-the-art features of 1994, 13:00.920 --> 13:10.920 which is it internally, everything you see is an MSGET databases. All of the surfaces are exposed 13:10.920 --> 13:18.680 via calm object. All of the shared components, the podium, the guide, or VBX components, 13:18.680 --> 13:24.040 with at the time, were supposed to be the modern way of componentizing an application. 13:24.040 --> 13:29.560 The mail stores are in PST, with some of you might remember being. So, these are actually the same 13:29.560 --> 13:38.200 mail format that Microsoft Outlook still uses today to stay our emails. And the mail client interfaces 13:38.200 --> 13:46.680 mapping, which means that the DLL that interfaces the Microsoft Bob mail client to the mail backend, 13:46.760 --> 13:52.360 is the same interface that Microsoft Outlook uses today to talk to Office 365. 13:55.240 --> 14:01.960 So, they really did try to make something good. Again, they failed, but they really did try. 14:03.080 --> 14:08.440 And of course, this thing has to run in 16-bit Windows Land, because VBX didn't make 14:08.440 --> 14:16.680 until the Windows 95, almost none of the core technologies did. There's still some questionable choices, 14:16.680 --> 14:22.760 like while it looks like each app runs in the room. As I pointed that earlier, 14:22.760 --> 14:28.600 it's really is all smoke and mirrors. The podium manages the guide for some reason. There are two 14:28.600 --> 14:35.080 separate objects, but if you put the guide somewhere else on the screen, it just stops working. 14:35.400 --> 14:41.480 No, I still don't know why, and I spent a embarrassing amount of time trying to figure out why. 14:43.480 --> 14:50.680 And I think this is not necessarily really a Microsoft Bob specific problem, but there's a lot of 14:50.680 --> 14:56.680 boilerplate code, both in visual basic as well as in C++ that you just have to have in your application. 14:57.560 --> 15:01.880 But at the time, people just love to do that. I don't know how many of you ever had the mill 15:01.880 --> 15:07.880 portion of trying to write a 16-bit NFC application that you start by wizard, where you answer 15:07.880 --> 15:14.360 both questions, which will then generate literally hundreds of lines of codes for you that you can't 15:14.360 --> 15:22.360 really touch. And you can, but you get to keep all the pieces. So how does software development work 15:22.360 --> 15:29.000 if most of it is in visual basic? Well, C++ is possible, the only way to write VBX stuff isn't 15:29.000 --> 15:35.560 as C++. So there is, there's APIs for that, but because they use VBX controls, we 15:35.560 --> 15:43.080 introduce visual basic controls, that means that every C++ app has to be using MFC. 15:44.120 --> 15:49.480 MFC stands for Microsoft Foundation classes, right away, for the young whippersnapping 15:49.480 --> 15:56.440 in the audience, and everything has come. So what does that look like? Well, 15:56.440 --> 16:02.360 instantiating the podium in C++ looks like this, and the only thing that this does is get to the 16:02.360 --> 16:11.560 little thing in the corner. Then in order to start an application, this is more or less the minimum 16:11.560 --> 16:17.000 amount of code you need to do anything at all, and this won't actually run like this. 16:17.800 --> 16:23.000 You also notice the work you told P.A. everywhere, that was the actual internal name for Microsoft 16:23.880 --> 16:32.680 but it's, it's calls itself Utopia. So how did I figure this out? Well originally, like I said, 16:32.680 --> 16:39.000 there was like two native applications, checkbook.exe, which I ran through Geohydrafero very long time, 16:39.000 --> 16:47.000 trying to figure out all of these calls into Utopia, the DLL. But then after months of working, 16:47.000 --> 16:53.800 somebody just randomly dumped like the copy of part of the real SDK online. There's still a lot 16:53.800 --> 16:58.680 of missing pieces from that, but together with that, with all of the stuff that I had worked out beforehand, 16:58.680 --> 17:05.000 I was actually able to make something work. So let's see if the demo gods will be kind to me today. 17:05.960 --> 17:20.200 I have multiple dots boxes running my apologies. I mean, who doesn't? 17:23.560 --> 17:28.760 All right, so this is the application starting that you saw before, 17:29.240 --> 17:33.240 ball parallel worlds made by me. 17:43.720 --> 17:48.920 Fantastic. Oh, that is the real experience that you got there. 17:48.920 --> 17:58.520 And it's a quick, so just to show you that this is also not this is the actual 18:00.120 --> 18:05.400 notebook application of the visual basic one that I run through, visual basic decompiler, 18:05.400 --> 18:13.080 and spent more time than I would like to admit, fixing up. But you'll see that this visual 18:13.160 --> 18:23.000 basic code shoots theoretically. There you go. Actually, run, like, 18:26.040 --> 18:36.440 all right, moving very swiftly along. So how did it, how did Gene's plight and, 18:36.440 --> 18:44.200 well, Gene managed to rescue the documents off her friend, but it was puzzled by the fact that 18:44.200 --> 18:51.480 ball would only have these number files, and she didn't understand why, and I didn't understand why, 18:51.480 --> 18:59.560 either. So that's, that is not a dot's file name, but you don't get to pick a dot's file name. 18:59.560 --> 19:07.240 Whenever you make a new document in Microsoft Bob, and when you open documents, you don't get to see 19:07.240 --> 19:13.320 a list of files, you get to see a list of the documents you made, and it will also notice this little 19:13.640 --> 19:18.120 thing on the bottom there, share it with others, or keep it private. That's not a thing that 19:18.120 --> 19:27.880 Windows 3 can do. Windows 95 can barely do this. Well, the trick is that indeed on your file system, 19:27.960 --> 19:36.440 in the folder where the right application itself lives, that letter is in fact just called 77.utp. 19:38.360 --> 19:45.640 So Bob stores the real file, the Bob file names in a database. One of these MSGET databases that 19:45.640 --> 19:51.560 everything is stored on, and the user never actually sees any real files. In the rare cases where 19:51.560 --> 19:56.760 Bob will let you pick a file outside of itself, it actually calls it a DOS file. 19:59.000 --> 20:04.680 So, and Gene was not able to figure this out. Would you, but can you figure it out today 20:04.680 --> 20:11.400 where the method out of your friends and family is now? I don't actually think that Bob did this 20:11.400 --> 20:16.280 on purpose. I think they were like, this is kind of my thesis about this whole thing. They actually 20:16.280 --> 20:21.400 I think we're trying to do something good for a change. I mean, this is the Microsoft of 1995, 20:21.400 --> 20:29.560 right? Not just today. They probably still write then. And it's still managed to be extremely 20:29.560 --> 20:34.360 captive because of this weird database thing. And this is something I can't reliably demo obviously, 20:34.360 --> 20:39.960 but these MSGET database also had a tendency to just blow up. Like, if you turn your computer 20:40.040 --> 20:47.960 off at the wrong time, they would just completely corrupt, which is fun. But modern software as a 20:47.960 --> 20:52.760 service actually does this on purpose, right? There's plenty of services where you can export your 20:52.760 --> 20:59.720 data, but only a version of it that is only short of what you actually put in. And I realized 20:59.720 --> 21:06.680 I'm preaching to the choir a little bit, but I think that stuff like this still happens today, 21:06.680 --> 21:10.840 and people pick Bob because it was supposed to be user-friendly. I mean, for the four months that 21:10.840 --> 21:15.560 it was available on people got to pick it. And I didn't realize that this is what they were doing, 21:15.560 --> 21:19.960 and I think we're still doing this today, and I think we're still letting our friends and families 21:19.960 --> 21:27.000 do this today. So I want to thank you, and I want to open the room for some questions, 21:27.000 --> 21:31.720 I think there's only a couple of minutes. If you want to play with Bob, I put a version online. 21:32.680 --> 21:38.840 It works in your web browser. I hacked the docs box a little bit so you can press the print button, 21:38.840 --> 21:44.200 and you can get all of your beautiful documents and post scripts writing your browser. 21:45.240 --> 21:49.080 I have a Patreon, there's currently no paid stairs, but you can sign out for free. 21:49.880 --> 21:56.040 If you want to hire me to do weird tech shit, that's my business, and tomorrow I'm going to talk about 21:56.040 --> 21:59.320 the milk line, you saw working, and follow me on messed it up. 21:59.480 --> 22:11.320 Yeah, apparently we have time for one question. 22:17.320 --> 22:27.560 Yes? Why? Well, it is a good question. 22:27.560 --> 22:36.840 I would answer it, but I didn't really, I guess. The real answer is because I have severe ADHD, 22:36.840 --> 22:40.920 and I picked, and I saw that post by Gene, and exactly the wrong time, 22:40.920 --> 22:43.720 that is the real kind of this is the real answer, I guess. 22:48.280 --> 22:50.600 Thank you very much. You can, if you have more questions.