rivalis's comments

rivalis | 10 years ago | on: Some Musings on Mathematics

If you're talking about the linked post, I think the person who wrote it is Colin Wright, and he has a PhD from Cambridge in Combinatorics and Graph Theory.

And anyway, at least they're talking about it... Is being ignored because math is "boring" better? Maybe yes, maybe no. I suppose it depends on how "evangelical" you want to be with respect to mathematics.

rivalis | 10 years ago | on: Some Musings on Mathematics

Not always. Sometimes "outsiders" just want some kind of insight as to why you do what you do all day; they're curious. A mathematician interested in engaging with the public has to try and identify which question is being asked. It's actually slightly dangerous to assume that your interlocutor is only interested in utility, because this type of answer can come across as disingenuous or dismissive.

I don't think that whenever someone asks an artist or writer what the "point" of their work is that they're looking for a justification for allocating public funds to it. They might want that, but they also might want some kind of insight into or identification with the intrinsic motivation for the work.

rivalis | 10 years ago | on: Parallels Between Math and Software Engineering

Mathematical truths and objects are real things with existence independent of our minds that we "discover," not just designed things. The author seems to believe that the language used to describe mathematics (which is indeed a designed thing, just like software) is the only thing "there." She is probably a formalist.

I think it is important to remember this, because mathematics, like a computer, "fights back." You cannot simply dream up whatever structure you want and have it mean what you want and behave how you want. See Godel's incompleteness theorems. No matter what you are doing, your mathematical constructs (including your implicit Turing Machines in your computer programs) must obey certain underlying constraints that are completely mind-independent. These constraints are what mathematicians study, albeit through a glass, darkly.

Regardless of ontological issues with the post, I like that it emphasizes the designed nature of our mathematical tools. The space of possible tools is so large that there is near-limitless room for human creativity and design in mathematical research. It is a shame that most mathematics classes don't really get that across.

edit: fixed misgendering, sorry, that was sexist.

rivalis | 12 years ago | on: Ask HN: How to best acquire theoretical computer science knowledge?

My advice is indeed geared towards general CS, it was unclear to me if the original poster wanted to get into heavy-duty theory or just gain a more rigorous understanding of CS in general.

Even at good schools (in the US, anyway) the calc up to multivar that is required isn't done with what I would call good proofs. They'll generally do epsilon-delta definitions of the limit and a few other fun things, but will fall far short of a truly rigorous development of the calculus. Same goes for many introductions to linear algebra and stats with calc courses. Some math departments use linear algebra to introduce proofs and creative mathematical thinking, though, so this isn't always the case.

So if someone is looking to develop how they think in mathematics and they already have a good programming background, they are much better served by taking a discrete math course than any of those sorts of math courses. If they then want to learn calculus, I would recommend self-study from Spivak's "Calculus" book which is a fun and elementary but rigorous treatment of the subject. You get to see not just how calculus works, but why it works, which is sorely lacking in most undergrad calc courses, even up to multivar.

rivalis | 12 years ago | on: Ask HN: How to best acquire theoretical computer science knowledge?

IamA graduate student in theoretical computer science.

I don't know that I agree with the poster above with respect to:

"a top school would require you to study a bunch of mathematics to gain a certain level of rigor of your thinking"

Most good schools require only two courses in "pure theory": first an introduction to discrete mathematics, where you learn about logic and how to prove stuff, a smattering of number theory/crypto, graph theory, probability, and automata theory; second an algorithms course that teaches you to analyse and construct algorithms according to certain design methods. Together this is really only a year of mathematics, and both courses are quite fun.

Note that discrete mathematics as taught by a good CS program is NOTHING like the math you learned in high school or elementary school, it teaches you to think creatively about mathematical structures and then justify that creativity with logic.

If you're already a developer, you'll probably have a bunch of latent structures hanging around in your brain that will let you have an easy/fun time with the material in these two courses. I suggest that you study discrete mathematics and algorithms in depth, to the level of some decent undergrad course on each. Learning this material will give your thinking the sort of quantitative/logical "edge" you might want -- these two courses contain the basic mathematical tools common to much of computer science. I do agree with the post above that they are not the most practical things in terms of everyday engineering, though.

Addendum: if you find that you really enjoy the mathematical angle and you think machine learning is cool, also learn linear algebra, because a bunch of machine learning theory and implementation relies on linear algebraic algorithms and concepts. Linear algebra actually would be practical to know if you ever do anything with data analysis.

rivalis | 13 years ago | on: Why a Computer Science Degree Matters

I am a graduate student at a big state university, studying complexity theory. I TA for the (required) introduction to discrete mathematics sometimes, and when we study FSM's I get to have a lot of fun motivating them for the students.

Automata theory may seem arcane, but if you want to truly understand concurrent programming, protocol design, robust systems, etc, you need good cognitive models. Heck, Erlang (one of my favorite languages for massively distributed computing) has some nice OTP stuff (http://www.erlang.org/documentation/doc-4.8.2/doc/design_pri...) built in for using FSMs to make your code sane and robust.

FSM's are one of the theoretical CS concepts that it is easiest to see the practical use for, but other TCS tends to be just as useful if you look at it right. Eg, space complexity right? For the most part that doesn't matter, does it? Nope. A bunch of modern internet-sized problems end up being streaming problems (http://geomblog.blogspot.com/2005/05/streaming-algorithms.ht...), and you need to understand basic space complexity, linear algebra, and probability, all of which a good CS degree will get into your head. I think the role of a good CS degree is to get some theory into people's heads, so that they have the right cognitive models for tackling difficult problems that come up in the real world.

I'm not saying that a CS degree is necessary to be a good programmer, or that you can't pick up those mental tools without a CS degree if you need them. But, it is easiest for most people to learn that kind of stuff in a university environment. I for one didn't know that I needed theory to work on the sorts of massive-data problems I was interested in, before going to university. A good CS degree knows about your unknown unknowns.

rivalis | 15 years ago | on: Ask HN: Apart from Hacker News, what else you read?

Random stuff. Really high-entropy, high-novelty stuff, as different from research papers and math/cs textbooks as I can manage (these make up the bulk of my reading material). Currently:

- Portrait of a Lady - The Illiad - A collection of Walter Benjamin's very early work - The Braddock Essays (a collection of award-winning essays about teaching composition to college students)

rivalis | 15 years ago | on: Open Letter To New Programmers

The first thing I do when someone tells me that they want to learn how to program is teach them how finite state automata work. If they seem to enjoy that, walk them through the NFA to regular expression proofs. Then we have a talk about the data structures that would be involved in storing and manipulating automata, regular expressions, and their input. Finally, I recommend that they start playing with SICP or How to Design Programs. The people that I've introduced to programming this way have a fairly sophisticated, "no-magic" attitude earlier than is normal. Introducing automata first provides a really good way to talk about machine model (automata itself) and programming language (how to specify the automata).

rivalis | 15 years ago | on: Lucene's FuzzyQuery is 100 times faster in 4.0

On the one hand, this does not inspire confidence. It is disturbing to have magic in one's software. On the other hand, the speed gains are really impressive: I'm sure there are times when it is reasonable to make a magic vs. utility tradeoff. Also, it's OSS: I'm sure someone will eventually want to make a well-understood and documented version, and the devs seem like people who would be willing to accept that.

rivalis | 15 years ago | on: Joel Spolsky: Can your programming language do this?

Even when I'm working in a language that doesn't have first class functions, I find it easier to lay out my code by writing functional pseudocode and then "unrolling" maps into loops, closures into structs/objects, compositions into a sequence of calls, etc. It probably leads to idiomatically awful Java, but I find it easier to read and write, and nobody else needs to deal with my code. So...

rivalis | 15 years ago | on: Peter Thiel Is Wrong About Higher Education (It’s Worse Than A Bubble)

On the subject of evidence for "failing to educate": there is statistical evidence (with a decent sample size and population) that a large percentage of students (36-ish) do not show improvement on the CLA (http://www.collegiatelearningassessment.org/) after four years of college, a test meant to measure the sorts of higher-order literacy skills that almost everyone agrees college students should learn.

rivalis | 15 years ago | on: YC: The new grad school

You're conflating a few things here. This is certainly how higher education started, but in many places it has not remained that way. Some European democracies have made higher education radically affordable, such that citizens can learn to think critically and engage with the issues of living in a modern, information-dense culture.

The capitalist function is at odds with this. Job training focused curricula teach practical skills to the detriment of timeless "enrichment" subjects. This damages the level of public discourse and is hostile to democracy (well-informed decisions on the part of voting public). It trains people to submit to a corporate environment, instead of enriching their inner life for decades to come.

This is why things like YC are excellent: they teach the best of capitalism, ie, leadership, risk-taking, meritocracy.

People should be free to determine how many dollars they want to attempt to accumulate relative to other goods. I completely agree that we need to get the price of Higher Ed. in the US under control. I also think that we need to be more up-front about what you can really get out of it: the "signalling function" of a degree (http://octavia.zoology.washington.edu/handicap/honest_econom...) is fundamentally wrong-headed and doesn't do anyone much good: it leads middle-class kids who just want a decent credential to waste money on a college that is torn between vocational school and a transformational mission, and employers don't get much in the way of real information about a job applicant from it.

Sorry to ramble. I'm just very glad to see this conversation begin to open up; attitudes towards and uses of college degrees are incredibly broken, and it seems like a massive "re-factoring" of the whole system (concerns include: civic sophistication, quality of life enrichment, entrepreneurial, vocational-centric) into smaller, more focused parts is what is needed.

The serious acceptance of YC and other options like it is the first step along that path. Education is not one-size-fits-all, and we have been telling ourselves that about the "college" system for far too long.

rivalis | 15 years ago | on: YC: The new grad school

This is dubious; the whole "higher education vs. entrepreneurship" discourse is a false dichotomy. What has happened is that capitalism has degraded most peoples' perceptions of the goals of higher education: they think it is meant to give them skills for a job or something. Higher education is meant to transform the student's ability to think, such that they can contribute truly new knowledge to society. This often involves less than spectacular monetary compensation for long and painful hours.

The tension between the job training mission imposed by a capitalist society and the more traditional humanist "transformational" mission has watered down the educational system.

As someone who chose education for the sake of education with my eyes wide open and not expecting much in the way of dollars afterward, I applaud the decisions of entrepreneurs to recognize the mission confusion of colleges and simply leave.

Institutions should be like UNIX programs: they should do one thing and do it well. I think that it would be in everyone's best interest to pull job training right out of colleges and use the YC model.

page 1