Recent submissions

Comment · 9 years ago
Comment · 9 years ago
Hear hear. Bill Gates is trying to kill malaria. He doesn't care about having the biggest number next to his name when he dies. He wants to be the guy who's known for killing hunger in Africa.
Comment · 9 years ago
For some reason, when I started my software engineering career I got it into my head that I needed to learn as much as I could about programming languages.

I learned ruby, perl5, python, lisp, forth, ml, ocaml, scheme, haskell, r, c#, java, lua, c++, factor, idris, asm, erlang, prolog, rust, d. But that wasn't quite enough because haskell and idris kept on talking about complicated type theory stuff. So I also learned lambda calculus, type theory, set theory, domain theory, topology, category theory, information theory, sub-structural logic.

What I'm trying to say is that I'm not afraid of learning new things. Even if they seem hard or esoteric.

When I heard that perl6 was ready, I took a look. I like the idea of a lot of what is present in the language (hey look, a grammar engine, that's neat). But ultimately, I decided that it was too much stuff that I would have to learn. Maybe that's just a perception problem on my part, but I have to think that they have some sort of problem if someone like me feels overwhelmed by all of the things that you have to grok in order to understand the language.

Comment · 9 years ago
> So basically you're saying that it is a preferred solution to teach kids math poorly, let them develop insecurity and aversion towards it and then spent a lot of money to let them overcome it than just do it right in the first place? Yeah, I know that's not what you mean, but you're missing a point.

If you knew it's not what they meant then why did you start off saying that's what they meant? If you thought they were missing the point why didn't you just say that?

Comment · 9 years ago
I really like type systems. I think that if you take the time to learn about type theory, then you are more likely to create better solutions (both with code and in life in general).

However, it isn't free. Type theory is a kind of math that most people have very little exposure to, so there's going to be a lot of work in order to start becoming proficient.

Additionally, there's more than one type of type theory. Are you using a system F like system? Are you going to have sub-typing? Is it going to be structural sub-typing? Maybe you want row polymorphism. Is there going to be a kind system? What about higher order poly kinds? Dependent typing? Intensional or extensional?

Additionally, there's more than one type of implementation of these type systems. Ocaml functors ... is it a generative or applicative functor? Haskell ... are you using gadts, functional dependencies, or type families?

In the end I think that type systems will eventually be able to get you a completely typed experience that feels exactly like a completely dynamic experience, but with compile and design time checks that always make you feel good about the experience. However, I don't think we are quite there yet and I don't think you can expect everyone to be able to take the time to get sufficiently familiar with an arbitrary type system in order to be productive with it.

Comment · 9 years ago
I'm not sure, but I remember seeing some research into using it for Haskell stream fusion (can't find the video, sorry).

I believe that the basic idea was that not all rewrites end up being equally fast ( a * b * c can be fused into ab * c, but maybe a * bc is faster). Trying all the combinations is an option in theory, but you get a combinatorial explosion so you normally dont get far in practice. Enter machine learning. I'm not sure how successful they were, but I imagine that the same sort of thing could be applied to SIMD.

Comment · 9 years ago
Yeah, I like the way you're going. I haven't spent much time thinking about how to fit in software engineering, but I did try to think about how to structure programming issues (which is probably the first step if you want to eventually get to a software engineering).

https://www.sep.com/sep-blog/2017/04/25/objective-code-quali...

It's missing a conclusion / wrapping it all up (which hopefully I can get to soonish), but is otherwise mostly done. [I should probably augment it with motivations and examples.] I'm not sure that this is the definitive answer, but more like this is my attempt to structure some of the things I've been encountering.

EDIT: Sorry about the length. I'm not sure there's a good way to shorten these sorts of ideas.

Comment · 9 years ago
Checkout the generic formula for any number of dimensions [1]. The function in the denominator is a factorial (except extended to work on decimals instead of just integers). The functions in the numerator are exponents.

Factorials grow much faster than exponents, so with an N-Ball we expect the "volume" to be small if we were to compare it to the corresponding hypercube when the dimension and when the diameter / length are all equal. After all we're comparing approximately diameter * R ^ D / D! and length * R ^ D. So if you put an N-Ball into a hypercube with length = diameter, what you'll discover is that the N-Ball is tiny when compared to the hypercube. Which means we have the weird and counter intuitive conclusion that all the "volume" of a hypercube is in the corners. Try calculating the volumes yourself using a high dimension like 100. Even better plug the whole thing into a script so you can generate a table and see the effect get progressively worse as you increase the dimension count.

There is also a similar effect on the N-Ball itself. Imagine drawing a smaller circle inside of a circle where their centers are the same such that the inner circle contains exactly half of the area of the outer circle. Now imagine doing this in a sphere. Now a 4D sphere. Now a 5D sphere. What you'll find is that as you increase the dimension count, the radius of the inner circle will get longer and longer. Which means that half of the "volume" of an N-Ball slowly moves closer and closer to the outer edge of the N-Ball as you increase dimensions.

Here's the punch line. Imagine that the N-Ball represents all there is to know about a topic. You begin in the center of the N-Ball and in order to learn more you have to walk to the outer edge of the N-Ball. Also imagine that you're only able to see what's right in front of your face. In the beginning at the center there is very little volume to look at. It will appear to be easy to understand what's going on. But as you walk to the edge of the N-Ball, the amount of volume that you're able to see increases. When you get right to the edge of a very high dimension N-Ball you will notice that you only know half of what is available to know.

Simple topics are N-Balls with low dimensions. It's easy to "walk" your way to knowing half of everything there is to know. Complex topics are N-Balls with high dimensions. Programming (and by extension software engineering) is really high dimensional. The more you learn the more you notice there is to learn. When you walk to the edge of what seems possible you find yourself swimming in a sea that dwarfs you. But in the beginning it looks like there isn't really all that much going on.

[1] - https://en.wikipedia.org/wiki/Volume_of_an_n-ball#The_volume

Comment · 9 years ago
More or less. I'm suggesting a mechanism for why something like the Dunning Kruger effect might occur and where we are likely to see it occurring.
Comment · 9 years ago
Comment · 9 years ago
I spent a couple years figuring out a certain problem. When I was done, it took me six months to be able to write up a blog series about it. I don't think autism has anything to do with it. Some problems are really hard to communicate.
Comment · 9 years ago
I'm 30% through writing a 10-20K word blog series about something that I've been working on for the last 6-8 years. I've probably written ~5K words already on blogs unrelated to my series where I'm kicking around the ideas that went into my project. Finally, the project probably isn't that interesting unless you've encountered a very specific type of problem before. Which means I probably should put in another 5-10K words to market it.

Sometimes it's not about confidence. Sometimes it's about complex social dynamics and how people react to suddenly being thrown into the deep end of a domain that's completely new to them.

"Tell me about a technical challenge that won't make me feel inadequate or be difficult to follow. Don't make it too simple though because then I'll think you're an idiot."

Ah yes, just be confident. That's the ticket.

Comment · 9 years ago
Apparently washing your hands also causes you to be more lenient.

So AI probably shouldn't be used for sentencing, but that's more to do with all the stakeholders being clueless about the technology. The people asking for it, paying for it, using it, and building it (hey I can just throw some packages together in R right?) don't know what they're doing and are using it to significantly impact the lives of others.

On the other hand, pretending an arbitrary Judge / Jury / sentencing guidelines also don't form a dynamic system with not well understood effects that's equivalent to random AI in terms of output doesn't exactly help anyone either.

At the end of the day you need people who are honorable who you can trust to do the right thing (as much as it sounds like a saturday morning cartoon).

Comment · 9 years ago
Cross pollination of disciplines also seems to bring out great ideas, which makes your (obviously first) proposal sound even better.

Unfortunately, I feel this is similar to that one dessert on the front page of the menu at an expensive restaurant. It looks delicious and tastes even better, but as soon as the bill comes you wondered what in the world you were thinking.

Comment · 9 years ago
I would be really interested in someone elaborating on this idea "phd is an apprenticeship for researchers".

Several people have insisted that I should go into a phd program, but when I looked into it I saw a lot of: learn how to do grant applications, publish this non-reproducible and barely significant result just so you have something published, work on a phd adviser's bad idea so he can take the credit, etc.

If you're working on an idea no one has had before, what kinds of support can others give you and do modern phd programs give that support?

Live from the official Hacker News API

A modern reader for Hacker News · SvelteKit + Skeleton