Profile

Cover photo
Dan Doel
Works at Capital IQ
Attended Case Western Reserve University
Lives in Cambridge, MA
176 followers|33,329 views
AboutPostsPhotosYouTube

Stream

Dan Doel

Shared publicly  - 
 
Today I discovered that if SQL Server Management Studio is stuck trying to expand a list of tables in a database (which locks up the entire interface, by the way), and you try to kill it using the task manager, it can blue screen your computer.

Isn't that great?
1
Josh Cough's profile photo
 
Totally wicked.
Add a comment...

Dan Doel

Shared publicly  - 
 
Awesome Games Done Quick 2014 is live, raising money for the Prevent Cancer Foundation.

This year with two blindfolded Punch-Out runs (probably).
1
Add a comment...

Dan Doel

Shared publicly  - 
 
Boy. I miss the suburbs.
1
Paul Chiusano's profile photo
 
I like that its resealable. That's a key feature.
Add a comment...

Dan Doel

Shared publicly  - 
 
Steak + garlic = yum
6
Clint Moore's profile photoDan Piponi's profile photo
2 comments
 
Anything + garlic = omg yum
Add a comment...
Have him in circles
176 people
Mike Doel's profile photo
Austin Seipp's profile photo
Don Stewart's profile photo
Andrea Vezzosi's profile photo

Dan Doel

Shared publicly  - 
 
After having worked with JavaScript for a few weeks now, I have come to the startling conclusion that it is not a good language. In fact, it's probably worse than some of its peers (which are also not great) in various ways, despite its reputation (I think) for being one of the better 'scripting languages.' And I'm not even talking about stuff like lack of proper tail calls, or weird "wat" (https://www.destroyallsoftware.com/talks/wat) behavior. That's bad, but JavaScript is bad in even more basic ways than that.

1. Slow edit-compile cycle

This seems contradictory, because JavaScript doesn't get compiled. But that's the whole problem. When you don't have a compiler, or some kind of static checker, your method of finding basic mistakes that would have been caught that way is to just run the program. When you're working on a section of code that can only run multiple minutes into the program (like I am, in this case), that means your effective compile times are multiple minutes.

It's actually worse than the Scala project I also work on. That compiles quite slowly, but in the event of actual errors, it tends to fail quickly. But with JavaScript, I have to wait minutes just to find out that I misspelled a variable name. Which brings me to the next problem....

2. Non-local behavior of simple mistakes

What happens if you access a non-existent member of an object? You get back undefined. Not an error, just something similar to null (except there apparently is a null, which is different). This also happens if you access a variable that hasn't been bound. Sometimes this gives you an error right where you made the mistake, if you write:

    noExist.foo

But other times, you'll just pass noExist along, and eventually get an error in a completely different part of the program (or an entirely different program all together). This means that after my 3 minute 'compile,' I sometimes don't even get told that my problem is a basic name error; I have to figure out that's what the problem is from other clues.

3. Modularity

From what I gather, JavaScript has no built-in module capabilities (which doesn't surprise me). This means that, like Scheme, modules are built out of other language features, like first-class functions. This is fine, except that unlike Scheme, JavaScript doesn't have macros to make the syntax acceptable. So you end up with something that looks like (I don't remember the precise syntax, but this is close):

    module ('myModule', ['foo', 'bar', 'baz', 'quux', ...],
      function (F, BR, BZ, Q, ...) {
        ...
      });

Now, we have modules with a dozen or so imports, so to figure out which module any qualifier stands for, I have to count up to the qualifier in the second list, and then count up to the corresponding member of the import list. And if you're adding a new import, and want to keep them organized in some way other than just chronological order of addition, I hope you don't accidentally get elements of the two lists swapped relative to one another, because you'll probably spend half an hour tracking down what went wrong (mostly due to #2).

4. Statements

My brain no longer comprehends languages that aren't entirely expression based.  So I constantly find myself writing things like:

    function (x) { x === 5 }

This function returns undefined, i.e. doesn't return anything (void). You have to put a return in to return the value. This might not be so bad, except JavaScript doesn't have types that would allow it to complain that I have produced a procedure, whereas I meant to write a function that returns a boolean. And of course, there is also the typical, 'if isn't usable as an expression, so we need an additional operator,' stuff.

There's probably more, but this is my list so far.
18
2
Sjoerd Visscher's profile photoJim Snavely's profile photoGershom B's profile photoNami Doc's profile photo
9 comments
 
Unsoundness in action : https://gist.github.com/t0yv0/44493510

Probably better than nothing, indeed. Did somebody try ScalaJS ?
Add a comment...

Dan Doel

Shared publicly  - 
 
How to be an Android enthusiast:

1) Complain when Google releases some feature only for their new phone, and question their claims that they're just testing the waters with it.

2) Side load a package that unlocks the functionality on your device anyway.

3) Complain when Google tweaks the way said feature works on your not-yet-supported device, which causes you to spend a few minutes fixing some minor problem it induced.
1
Add a comment...

Dan Doel

Shared publicly  - 
 
Hope this turns out well.
1
Add a comment...

Dan Doel

Shared publicly  - 
 
"Mantle.....lol , nvidia Gsync just killed AMD"

Blows my mind when I see people crow stuff like this. Great, nVidia put AMD out of business with their display sync technology. Now they can charge you double for the same stuff because they're a monopoly. But nVidia was your favorite team and they won, so it's worth it.
1
Add a comment...

Dan Doel

Shared publicly  - 
 
Monads are just free-monad monad monad-algebras. What's the problem?
2
roux cody's profile photo
 
Recursion: (noun). see Recursion.
Add a comment...

Dan Doel

Shared publicly  - 
1
Add a comment...
People
Have him in circles
176 people
Mike Doel's profile photo
Austin Seipp's profile photo
Don Stewart's profile photo
Andrea Vezzosi's profile photo
Work
Occupation
Software Engineer
Employment
  • Capital IQ
    Software Engineer, 2011 - present
Places
Map of the places this user has livedMap of the places this user has livedMap of the places this user has lived
Currently
Cambridge, MA
Previously
Maineville, OH - Cleveland, OH
Links
YouTube
Contributor to
Story
Introduction
Why don't you try making four beats a day for two summers?
Education
  • Case Western Reserve University
    Computer Science, 2001 - 2005
Basic Information
Gender
Male