HNHacker News
TopNewBestAskShowJobs

rian

212 karma · joined March 22, 2008

love to code
submissionscomments
rian··on Node Is Done. Done Is Node.
I'm not totally sure what the intention of this article is.

Is it to deter people away from using node as an application platform? Is it to deter people away from web programming in general? Is it to deter people away from using Macs?

In each case no hard evidence is given. Just a lot of baseless opinions.

I don't think this article is appropriate for HN. I didn't learn anything useful from this. If it was meant to be an opinion piece to influence how programmers think, it wasn't done very tastefully. What this article does best is reflect the immaturity of its author.

As far as the node project being over, I don't think that's true. There are surely IO scheduler optimizations that could be made ala http://haskell.cs.yale.edu/wp-content/uploads/2013/08/hask03.... The speed of JS code could always be improved. The HTTP standard is currently evolving and those changes will need to be made. There are probably other examples I'm failing to list.

rian··on Making Map Operations Implicit in Programming
This is already the case in Haskell. Look up functor
rian··on Programmable 6,000-Part Drawing Boy Automaton Built 240 Years Ago
Article/media is a bit sensationalistic in describing this as an early computer. The programming language (a list of letters) doesn't support arbitrary logic, branching and doesn't have a notion of memory. In that way, it's like an intricate player piano or HTML. Still a marvel of mechanical engineering but conceptually far from what we consider a computer today.
rian··on How to work with Software Engineers
Sorry, I knew it was intentional but I mean, despite the sarcasm, it still feels condescending. Just the pure existence of an article with the title "How to work with women," no matter how accurate, would still be condescending and bigoted. It's because all women are different, just as all software engineers are different.
rian··on How to work with Software Engineers
Is it just me or is this article a bit condescending? This makes it seem like software engineers are exotic creatures that normal people require a guide like this to work with. What if someone made "How to work with PMs" or better yet "How to work with women"? I feel like one of the core problems between PM<->Eng is that both sides stereotype each other, this just perpetuates that.

The rules in the afterward make sense but if you need a guide on the internet to get you to do those things, I'm not sure I want you to become a great PM in the first place. The problems here seem to be more fundamental, like: Don't be a psychopath. I think the rest of the rules should follow naturally.

Has the profession of PM become so bad that we need "don't be a psychopath" posts?

rian··on The Algebra of Algebraic Data Types
awesome post! one suggestion:

following your explanation it seems like the type constructors are more responsible for determining whether it is sum or product type instead of the data constructors. this tripped me up when i was trying to figure out why function types didn't have a size of a * b, and instead b^a. then i remembered that Add takes the same amount of arguments as Mul in the type constructor despite it being a sum type. i would hint more that what determines the size of a type isn't the type constructor but more the different data constructors, e.g.:

  data T a b = Foo a | Bar a b | Baz b | Qux (a -> b) <=> T = a + a*b + b + b^a
i'm already anticipating your recursive type post :)

  data Rec a b = One a | Two a b (Rec a b) | Three b <=> T = a + a * b * T + b
  T - T * a * b = a + b
  T * (1 - a * b) = a + b
  T = (a + b) / (1 - a * b)
... in haskell's ADT's how do you get the inverses of a type? then we could solve for the size of the recursive type Rec a b.
rian··on Show HN: Drapache - serve a dynamic website from your dropbox
this also exists if you're looking for something that is compatible with wsgi and supports intelligent http caching https://github.com/dropbox/dropboxwsgi
rian··on Go is amazing, period.
goroutines = (poorly implemented) cheap threads

threading (or CSP) is nothing new conceptually. yes, i agree, the go language has popularized a cheap threading implementation but the same design concepts we've applied to unix processes and posix threads apply to goroutines.

btw, blocks in ruby and generators in python have existed for many years prior to go.

rian··on Go is amazing, period.
people who program actually have a lot to learn from the fashion industry. trends are fine as long as trends are iterated on quickly. in comparison, it's taken programmers 15 years to make the half-assed-jump from java to go. and even then, the conceptual differences between java and go are minimal, superficial at best.

the fact is that go touts itself as a C++/java alternative but i see no significant/non-superficial reason to actually change languages. thinking in go is 99% the same thing as thinking in C++. consequently, 99% of the time doing stuff in go takes me roughly the same amount of time as doing the same thing in C++. programmers remain stunted.

we all know how efficient we can be writing code like in the von neumann style (not to mention 90% of programmers haven't yet even mastered that). to advance what people can do with computers it's time to start thinking beyond sequences of instructions and memory accesses, we need a language that encourages higher-order thinking. otherwise it's like building the empire state building with legos.

rian··on Go is amazing, period.
i truly believe go contributes negative work to society. it's basically C/C++/Java/C# with syntactic sugar except it's different enough to get bored programmers to waste their precious time reporting all their code.

if you want to learn a new language, actually learn a new language. learn a language that's actually breaking the mold in terms of how we communicate with computers. think at a higher abstraction level than dynamic dispatch and composable objects and subroutines, that stuff is already more than 40 years old.

http://www.thocp.net/biographies/papers/backus_turingaward_l...

rian··on Dropbox is my publish button
sweet this is what i use dropbox for!
rian··on Dropbox is my publish button
hey jerrya, this is fixed in the beta version available here: http://forums.dropbox.com/topic.php?id=44811. it's awesome.
rian··on Node.js cures cancer
IMHO i think node.js sucks because it forces you to manually pass callbacks around. can't it remember my call site for me and use coroutines or call/cc or yield or something? even fork() exists on UNIX (or pthread_create()). why is passing callbacks around the answer? it's like using GOTO.
rian··on Exceptions are monadic
look dude, you're right. monads are freaking awesome. it's because a lot of things in CS can be shown to "be monads", it's called turing completeness. http://en.wikipedia.org/wiki/Turing_completeness

unix pipes as monads: http://okmij.org/ftp/Computation/monadic-shell.html

cpp as a monad: http://conal.net/blog/posts/the-c-language-is-purely-functio...

monads invented for IO / functional impurity: http://homepages.inf.ed.ac.uk/wadler/papers/monads/monads.ps...

"This is not a "neat observation" -- it is something people routinely use, plentifully." ...in haskell

and who are you to say that integers are not usefully equivalent to exceptions??? have you ever heard of errno? i don't have exceptions or monads in bf, just pointers. i need an equivalence so that i can feel smarter when i code bf. and if you dare say that bf isn't a useful programming language then you better stop coding in java...

rian··on Exceptions are monadic
sigh,

http://boost-spirit.com/home/

rian··on Exceptions are monadic
the simple use of "Either" does not instantly qualify something as "monadic"

you know what else is monadic? NULL pointers. oh wait, you know what else is monadic? unix pipes. you know what else is monadic? CPP. really old shit.

just because the word monad isn't everyday english doesn't make it a cool or even an interesting concept. it's just an awkward abstraction for something everyone already intuitively understands. monads were invented for the sole purpose of giving haskell a programmable model for IO, that's it. it's just a concept that's only useful for haskell programming, everything else already has an intuitive programming model for IO.

it's like building up integers to be this crazy complicated concept and then saying Exceptions are integers. awesome, good job, you've just found an equivalence, here's a pat on the back (psst http://en.wikipedia.org/wiki/Church_encoding). i guess i should expect these kinds of vacuous observations given all the BufferedManagerFactorySingleton crap code java slaves write.

you know what else is monadic? state machines. you know what else is monadic? imperative programming. wait wait wait! you know what else is monadic? JAVA ITSELF head explodes

rian··on Red Hat's top secret Java Killer/Successor: The Ceylon Project
so sad.

first of all, nothing about java is good. nothing. can anyone on HN name one single app they use daily that is programmed in java? anyone? no! how is it that a language designed from the beginning to be cross platform doesn't have a single mainstream cross platform desktop app? they even couldn't get it to be a platform for web browser plugins, how pathetic is that! and even when it does run as a web browser plugin my computer has a seizure, hard disk starts humming, mouse pointer starts spinning, browser becomes unresponsive...

java does exist out there though. ironically enough in controlled server-side environments for in-house "business" web applications. that one really boggles me, i'd rather have my face ripped off than write a web app in java. no, seriously.

let java and the jvm just die, it's bad, it's all bad. the jvm was a bad idea, it sounds good in theory but C/C++/Python apps are 1000x more widespread than java apps. isn't distributability the entire POINT of the jvm?? why is it that java sucks at actually "running everywhere"? keep the intermediate language private to your language implementation, it serves no actual benefit anywhere else and you know what else? a "CLR" isn't actually an interesting problem. it's just a bad abstraction, like everything else in java.

anyway, here you have this guy, gavin king, making all these empty hype-y hand-wavy claims that java was the first language to perfectly combine static typing, readable syntax, and lexical scoping (did you run out of bullet points?) to serve as a host language for large team development and "large-scale deployments of multi-user applications." give me a break, man. if i ran my team or deployed my app with java as our host language my job would be 10-100 times more difficult and i would probably be 10e6 more unhappy in my actual life.

then this guy knocks on the lambda calculus. i should have stopped reading right then and there, obviously he must be a moron. what's next, REs got you down? if you think the lambda calculus is only used by "theoretical" computer scientists you should not be coding and you should definitely not be attempting to write a new language. you're ruining the children, the entire practice of programming by poisoning our culture with this misinterpretation of the lambda calculus. for a dude who keeps wanking over "automatic memory-management" you'd think he'd have some respect for LISP.

did you catch the three bloated slides of "Why we're frustrated?" lol come on, come on now. stop lying to yourself. you hate java, why are you trying to replace it with someone so much more complicated and senseless? how do you expect "business" programmers to understand this:

  Html hello {
      Head head { title = “Squares”; }
      Body body {
          Div { 
              cssClass = “greeting”;
              “Hello” name “!” 
          }        
      }
  }
this is actually supposed to be a series of class instantiations. the fact that "This looks like a typesafe declarative language (for example XML) with built-in templating. But it’s actually written in a general-purpose language" is actually a bad thing. don't even attempt to get the json fans on your side.

look if you're a psycho and want to program like a psycho why don't you just write a small runtime and a compiler that compiles your code to C (or java since you like the jvm so much) and be done with it. that's it, a weekend hack project. with all the tools that exist today for generating compilers, that's how it should be. let it evolve as you actually use the language. i presume you are writing this psycho language for an actual project you're working on right?

after 50 years of high level language implementations the world doesn't have any more room for a programming language for no end. C, Scheme, Haskell, Python, Javascript are good enough. it's time to make stuff happen. it's time to create good AI, it's time to engineer robots, it's not time to add lots of senseless syntax to java and call that a two-year project.

rian··on PyCon 2011: How Dropbox Did It and How Python Helped
slides are here: http://db.tt/ZWBTfdl
← PreviousPage 3 of 3