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.

