Jump to page: 1 2 3
Thread overview
Per popular demand, here are Adam D Ruppe's presentation slides
May 23, 2014
Mattcoder
May 23, 2014
Adam D. Ruppe
May 24, 2014
John
May 24, 2014
Adam D. Ruppe
May 24, 2014
Nick Sabalausky
May 25, 2014
Nick Sabalausky
May 25, 2014
Nick Sabalausky
May 27, 2014
Adam D. Ruppe
May 27, 2014
Adam D. Ruppe
May 27, 2014
Nick Sabalausky
May 28, 2014
Adam D. Ruppe
May 24, 2014
Tolga Cakiroglu
May 24, 2014
Adam D. Ruppe
May 24, 2014
Nick Sabalausky
May 24, 2014
Adam D. Ruppe
May 23, 2014
Piotrek
May 23, 2014
Gary Willoughby
May 23, 2014
Adam D. Ruppe
May 24, 2014
Adam D. Ruppe
May 24, 2014
sclytrack
May 24, 2014
Adam D. Ruppe
May 24, 2014
sclytrack
May 24, 2014
Adam D. Ruppe
May 28, 2014
Dicebot
May 23, 2014
Adam graciously shared the slides of his DConf 2014 talk with us:

http://imgur.com/hHCN3OL


Andrei
May 23, 2014
On Friday, 23 May 2014 at 19:29:12 UTC, Andrei Alexandrescu wrote:
> Adam graciously shared the slides of his DConf 2014 talk with us:
>
> http://imgur.com/hHCN3OL
>
>
> Andrei

Hehe, I'm just imagining what Walter will say: "Lack of images"!

Matheus.

May 23, 2014
On Friday, 23 May 2014 at 19:29:12 UTC, Andrei Alexandrescu wrote:
> Adam graciously shared the slides of his DConf 2014 talk with us:
>
> http://imgur.com/hHCN3OL
>
>
> Andrei

I didn't know zipped pesentasion file can be still readable ;)
May 23, 2014
On Fri, 23 May 2014 12:29:12 -0700, Andrei Alexandrescu <SeeWebsiteForEmail@erdani.org> wrote:

> Adam graciously shared the slides of his DConf 2014 talk with us:
>
> http://imgur.com/hHCN3OL

Oh cool! finally the conference-goers can see the slides :)

-Steve
May 23, 2014
On Friday, 23 May 2014 at 19:29:12 UTC, Andrei Alexandrescu wrote:
> Adam graciously shared the slides of his DConf 2014 talk with us:
>
> http://imgur.com/hHCN3OL
>
>
> Andrei

Ha, I really liked his talk :)
May 23, 2014
You can see some margin notes I added this morning about stuff I was thinking about saying to fill time!

For example, being willing to experiment helps with speed, like Walter said. It also applies here: disassemblies might be scary the first time, but if you dive into it and see about toying with it, just tinker, guess and check your way to better benchmarks... you'll probably find success before too long.

And the key point with the "just try it gnashing of teeth" note is that you really don't have much to lose! Except time perhaps, but once you've done it a few times you'll be able to find shortcuts. And besides put a time limit on yourself to make sure you don't waste your whole life and you'll be ok.

LOL up top I called myself a "web/dynamic god". See what I said about my ego? I praise me even in notes to self!

Up top, I made a note to self after Don's talk, where he talked about getting serious with industrial use. Well, I say back to fun... but at the same time, knowing the whole library is useful. Not only is it good to know the underlying stack when abstractions start leaking, but there's actually practical applications to playing with the runtime:

1) Special performance or size requirements (Sociomantic, I think Mike Parker did that for some games too, or embedded stuff)

2) Organization-wide lint kind of stuff. You can use a custom object.d for RTInfo for example to do checks and not worry about third-party integration so much because you are only interested in "works for me" without the hassle of redistribution.

3) Running D in places like a platform that only has a C compiler or maybe converting to JavaScript (that's how I started this, it was dtojs forked off Daniel Murphy's D->C converter that first got me playing without the runtime) might find use of these functions being implemented differently or ignored.


So while I still tend to say half the stuff I mentioned there is useless info, the general idea of being willing to play with it might not be - you never know when one of these random ideas will work out.


* * *

Two other margin notes that came up during the conference: Walter mentioned UFCS with the first argument as the "this" thing.... but when you do a method on a struct, the this reference is actually passed as a (hidden) last argument! So I just lol'd a bit at it not being quite so uniform.


The other one is moving the language to object.d. For example, some of the chatter after Don's talk was about size_t being unsigned. So annoying! I think it would be kinda nice if that could actually be redefined somehow. I've also talked before about how it might be cool to to "alias int = __int;" to use builtin ints or "int = RangedChecked!(0, 100);" to make the int type behave differently in the case of that custom runtime.

To my surprise though, I ran out of time and even had to cut some questions short :( Oh well, y'all can always find me here.



PS sorry I had to run out early today during the lightning talks! My ride back to the airport was already there, they wanted to avoid rush hour traffic.
May 23, 2014
On Friday, 23 May 2014 at 19:59:23 UTC, Mattcoder wrote:
> Hehe, I'm just imagining what Walter will say: "Lack of images"!

Heh, I actually went through a few idea stages here:

1) I'd list the druntime functions. I determined this to be boring and subject to change anyway. But I spent like a month without better ideas and it was too boring for me to even do... so yeah nothing got done.

2) I'd write a little bare metal program to use as the slide show that demonstrates various language features and highlights their source code with animations and responses to timers and keyboard input. The "slides" would then be the source to that program.

Probably would have been cool, but I never found the time to actually write it. (I wrote the foundation for it, the timer interrupt handler, the text video output, the bulk of D working... but the program itself just kept being put off in favor of other things)

3) Then, a big breakthrough happened: I had that day with the friends walking on that bridge guard rail. (BTW it wasn't actually 50 miles high, but it is no exaggeration that I was terrified for the guy who walked all the way across it. One other person there walked across part, but she had the good sense to get back on the regular road once we got over the water. But the one guy is a madman, a madman!)

That got me thinking about cost/benefit with experimentation and I realized that story made a good contrast with the test.d files I make so often and the talk plan changed.


At this point, my plan was to get a handful of photographs to illustrate each concept... but again, things just kept coming up. Last week, I decided to stop stressing over it and just accept that I was going to be unprepared. (Which actually worked out well enough for me in church last month when I got a literally last minute request to substitute teach there and it went ok for everybody but my armpits lol. But if I can fill an hour improvising a reasonably productive discussion on faith and prophets, surely I can do it about D.)

Anyway, by moving the goalposts from "nice visual presentation" to "I'll improvise it live!", I went from worrying about being unprepared to being content with just knowing the big idea and let my mind go back to other things.

That said, I didn't want to improvise *everything* because I had an experience back in the 5th grade that taught me otherwise. The science teacher gave me a chance to do a planetarium presentation. I knew how to work the projection machine and knew a little bit of material, but I didn't actually have even a lesson outline prepared and I leaned HEAVILY on the teacher to bail me out.

However, before I knew it, it was already May 22, I was in California, and firewalled out of my desktop computer. So I did the next best thing: got out my notebook and pen and scribbled down a page of topics to touch.

I expected to have to open the floor to questions after like 20 minutes and spend the rest of the time just talking with people, but to my surprise, it filled the whole hour. (Actually, that shouldn't be so surprising, just Monday night I spent an hour talking with a couple friends about half a page of notes. But that's a totally different audience and a totally different set of topics so I wasn't sure it would pad out the same way.)


Regardless, it was pretty ok, if a bit wandering at times. Could have been a lot worse.



BTW re the last "cool stuff" header note, here's the code I slapped together to demo that idea:

import std.stdio;

align(1)
struct foo {
//align(16):
   ubyte c;
   ushort d;
   uint b;
   ushort a;
}

pragma(msg, diagram!foo);

string diagram(T)() {
    import std.string, std.conv;
    string ret;
    T t;
    int offset = 0;
    foreach(idx, item; t.tupleof) {
        int off = t.tupleof[idx].offsetof;
        int size = t.tupleof[idx].sizeof;

        if(off > offset) {
           // padding
           foreach(i; 0 .. off-offset)
             ret ~= format(" internal padding\n");
           offset += off-offset;
        }

        foreach(i; 0 .. size)
           ret ~= format(" %s\n", t.tupleof[idx].stringof[2..$]);

        offset += size;
    }

     foreach(i; 0 .. T.sizeof-offset)
        ret ~= format(" struct padding to %d\n", T.sizeof);

    return ret;
}


Of course, I ultimately used my fingers as bytes but here you can play with it a bit more and see different combinations as to struct layout so have some fun with it!
May 24, 2014
On Friday, 23 May 2014 at 23:56:39 UTC, Adam D. Ruppe wrote:
> On Friday, 23 May 2014 at 19:59:23 UTC, Mattcoder wrote:
>> Hehe, I'm just imagining what Walter will say: "Lack of images"!
>
> Heh, I actually went through a few idea stages here:
>
> 1) I'd list the druntime functions. I determined this to be boring and subject to change anyway. But I spent like a month without better ideas and it was too boring for me to even do... so yeah nothing got done.
>
> 2) I'd write a little bare metal program to use as the slide show that demonstrates various language features and highlights their source code with animations and responses to timers and keyboard input. The "slides" would then be the source to that program.
>
> Probably would have been cool, but I never found the time to actually write it. (I wrote the foundation for it, the timer interrupt handler, the text video output, the bulk of D working... but the program itself just kept being put off in favor of other things)
>
> 3) Then, a big breakthrough happened: I had that day with the friends walking on that bridge guard rail. (BTW it wasn't actually 50 miles high, but it is no exaggeration that I was terrified for the guy who walked all the way across it. One other person there walked across part, but she had the good sense to get back on the regular road once we got over the water. But the one guy is a madman, a madman!)
>
> That got me thinking about cost/benefit with experimentation and I realized that story made a good contrast with the test.d files I make so often and the talk plan changed.
>
>
> At this point, my plan was to get a handful of photographs to illustrate each concept... but again, things just kept coming up. Last week, I decided to stop stressing over it and just accept that I was going to be unprepared. (Which actually worked out well enough for me in church last month when I got a literally last minute request to substitute teach there and it went ok for everybody but my armpits lol. But if I can fill an hour improvising a reasonably productive discussion on faith and prophets, surely I can do it about D.)
>
> Anyway, by moving the goalposts from "nice visual presentation" to "I'll improvise it live!", I went from worrying about being unprepared to being content with just knowing the big idea and let my mind go back to other things.
>
> That said, I didn't want to improvise *everything* because I had an experience back in the 5th grade that taught me otherwise. The science teacher gave me a chance to do a planetarium presentation. I knew how to work the projection machine and knew a little bit of material, but I didn't actually have even a lesson outline prepared and I leaned HEAVILY on the teacher to bail me out.
>
> However, before I knew it, it was already May 22, I was in California, and firewalled out of my desktop computer. So I did the next best thing: got out my notebook and pen and scribbled down a page of topics to touch.
>
> I expected to have to open the floor to questions after like 20 minutes and spend the rest of the time just talking with people, but to my surprise, it filled the whole hour. (Actually, that shouldn't be so surprising, just Monday night I spent an hour talking with a couple friends about half a page of notes. But that's a totally different audience and a totally different set of topics so I wasn't sure it would pad out the same way.)
>
>
> Regardless, it was pretty ok, if a bit wandering at times. Could have been a lot worse.
>
>
>
> BTW re the last "cool stuff" header note, here's the code I slapped together to demo that idea:
>
> import std.stdio;
>
> align(1)
> struct foo {
> //align(16):
>    ubyte c;
>    ushort d;
>    uint b;
>    ushort a;
> }
>
> pragma(msg, diagram!foo);
>
> string diagram(T)() {
>     import std.string, std.conv;
>     string ret;
>     T t;
>     int offset = 0;
>     foreach(idx, item; t.tupleof) {
>         int off = t.tupleof[idx].offsetof;
>         int size = t.tupleof[idx].sizeof;
>
>         if(off > offset) {
>            // padding
>            foreach(i; 0 .. off-offset)
>              ret ~= format(" internal padding\n");
>            offset += off-offset;
>         }
>
>         foreach(i; 0 .. size)
>            ret ~= format(" %s\n", t.tupleof[idx].stringof[2..$]);
>
>         offset += size;
>     }
>
>      foreach(i; 0 .. T.sizeof-offset)
>         ret ~= format(" struct padding to %d\n", T.sizeof);
>
>     return ret;
> }
>
>
> Of course, I ultimately used my fingers as bytes but here you can play with it a bit more and see different combinations as to struct layout so have some fun with it!


Your presentation was awesome. I wish there was more time available.
And btw, you were looking great too! :)

May 24, 2014
On Friday, 23 May 2014 at 23:56:39 UTC, Adam D. Ruppe wrote:
> On Friday, 23 May 2014 at 19:59:23 UTC, Mattcoder wrote:
>> Hehe, I'm just imagining what Walter will say: "Lack of images"!
>
> Heh, I actually went through a few idea stages here:
>
> 1) I'd list the druntime functions. I determined this to be boring and subject to change anyway. But I spent like a month without better ideas and it was too boring for me to even do... so yeah nothing got done.
> ...

I liked your presentation as well. When you started talking about writing your Floppy Disk driver for your kernel without using BIOS or DOS, I remembered my 11 years ago days. Wish there was more time and you could continue.


May 24, 2014
On Saturday, 24 May 2014 at 18:12:40 UTC, Tolga Cakiroglu wrote:
> When you started talking about writing your Floppy Disk
> driver for your kernel without using BIOS or DOS,

Aye, programming on DOS was cool (and of course, so was programming without DOS too!)

It is actually frustrating to know what the hardware can do then being limited by some abstraction or emulation that does less. This is why doing terminal work on Linux annoys me: the VT100 emulation is sooooo much less capable than the plain old VGA hardware (or the X11 protocol, of course).

That's one reason why I started making my own terminal emulator <https://github.com/adamdruppe/terminal-emulator> so I can do custom extensions to get some of this back. Key up notifications, easy output when jumping around, etc. Of course, my terminal.d library, like ncurses, can do a lot of that too, there's still the annoying underlying limitations that really don't have to be there.

And good old mode 13h!


But yeah, the floppy disk drive is fun too and doing that driver was something I played with a long time ago with 16 bit code, now that was something painful to get right too! Resetting and aligning the motor, etc., fun.

Like I alluded to at the end though, my favorite part is the noise the drives make :) Real computers are noisy!
« First   ‹ Prev
1 2 3