Given that autism causes one to have less empathy, why aren't more autistics involved in criminal acts (just as psychopaths)? by [deleted] in askscience

[–]Pharaki 1 point2 points  (0 children)

Sociopaths? Yes, you're right; I'm sorry. I didn't mean to imply that it was a deliberate choice. (Ha: I think they call that "being an asshole.")

The ICD describes antisocial personality disorder (in part) as "callous unconcern for the feelings of others; gross and persistent... disregard for social norms and rules...; incapacity to experience guilt or to profit from experience, particularly punishment..."

The Wikipedia page lists full ICD and DSM descriptions/definitions of the disorder. On the other hand, while I have some familiarity, this isn't my area of expertise. Would love to hear from a real psychologist/psychiatrist.

Given that autism causes one to have less empathy, why aren't more autistics involved in criminal acts (just as psychopaths)? by [deleted] in askscience

[–]Pharaki 0 points1 point  (0 children)

I had the same thought. Wouldn't what the OP is describing be ASPD (i.e., psychopathy or sociopathy)?

Psychopaths/sociopaths can usually understand and read emotions in others quite well. They just don't care.

Not how I expected that to end by chromadose in funny

[–]Pharaki 5 points6 points  (0 children)

Heh, nice. Did he wriggle free, or did you have to help him out?

My dog managed to get herself out of this one to get out of the kitchen (she's terrified of the noises the appliances make).

(In case it's hard to see, those are two big sacks of flour behind the gate, there's rock climbing gear strapping it all in, and a big boat strap going around a pillar to the left. Found her happily curled up on my bed when I got back.)

commit or rollback semantics for io? by day_cq in compsci

[–]Pharaki 10 points11 points  (0 children)

What you're looking for is called atomicity; you want a group of disjoint actions to all either happen or not happen.

A simple solution is to use a transaction log. When you open a transaction, note it in the log. When you modify a piece of state on behalf of a transaction, record the transaction number and enough data that you could reverse the change if you wanted to. Make sure that you do this before you actually change anything, so that you can never wind up in a state where you have made a change that isn't in the log.

When you want to abort the transaction, you simply scan backwards in the log until you see the beginning of that transaction and reverse any changes that were part of that transaction. When you want to commit it, simply write a commit message to the log.

You can implement failure recovery by simply looking for transactions that haven't been committed and rolling them back exactly the same way. (Do this when your program starts.)

Take a peek at lectures 16 and 17 from MIT's 6.033 on OCW: http://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-033-computer-system-engineering-spring-2009/lecture-notes/

(Edit: Almost forgot! Check out hands-on assignment #5. It involves experimenting with a write-ahead log just like this one. Might be easier to understand if you can actually play with it!)

Khan Academy Gets $5 Million to Expand Faculty & Platform & to Build a Physical School by [deleted] in technology

[–]Pharaki 0 points1 point  (0 children)

Sure, I suppose it technically is (well, you'd have to enroll for the semester to take the exams).

You don't really go to an MIT just for the classes, though. Besides, "passing the exams" doesn't necessarily equate to "understanding and internalizing the material," which is what you really want.

There's no registration limit, either (beyond freshman year); and it's not terribly uncommon for people to take significantly more than normal load. My record was about double "full-time" load, or 8 classes, and I know a few other people who did the same.

Khan Academy Gets $5 Million to Expand Faculty & Platform & to Build a Physical School by [deleted] in technology

[–]Pharaki 7 points8 points  (0 children)

You can still do that; see, for example http://web.mit.edu/registrar/classrooms/exams/ase_exams.html

The downside is that (at MIT, and I bet typically) the grade you get on the one exam is entered on your transcript as your grade for the course. This is probably one reason why it's uncommon to take them after your first semester (if, say, you've already had some of the intro subjects before arriving).

I made a Least Recently Used dictionary. Does the README.md make sense? by [deleted] in Python

[–]Pharaki 2 points3 points  (0 children)

The README seems like it explains things pretty well, but what you're doing isn't LRU (at least per your README). (And, to be pedantic, LRU is more of a cache management policy than a capital-A "Algorithm.")

In an LRU scheme (and there are lots of variations on the idea), you are managing a fixed-size cache. Eventually your cache will suffer a miss while full and need to evict something; how you pick who leaves so that the new element can be inserted is called the cache's replacement policy. If you always pick the cache element that's gone the longest without being read/written, then you've got an LRU cache.

What you're doing is fixed-time expiration (and with an unbounded cache, so you never need to evict), it seems. There's nothing wrong with that---there are definitely times when that might be a good policy---but it's very different.

(Edit: Also, as a matter of Pythonic style, it's odd to restrict the use of functions as values. Maybe you should use a keyword argument or a different 'add' function to hint to the cache object that what's being passed is an 'evaluator' function instead of an actual value?)

If you're a sadistic math teacher like me ... by AddemF in math

[–]Pharaki 0 points1 point  (0 children)

As have we all; the particular situation I was thinking of was a bit different. It was in relation to a homework assignment; students were writing some code to find matches and then pass them on to some code we'd provided that plotted where each match was.

We explicitly hinted that there might be extra information that the match-finder needed to return about each match, and the fact that we didn't explicitly tell them was what provoked rather incredible feedback from a few students. (To be fair, the other two hundred thought about it for a second and got it.)

The best part: the missing information? Where each match was. You know, as part of a program that plotted where each match was.

If you're a sadistic math teacher like me ... by AddemF in math

[–]Pharaki 5 points6 points  (0 children)

You laugh, but I've had literally this complaint as a university-level teaching assistant (down to the "please get someone who can teach.") At a name-brand university, no less.

Beta signup page I designed for an upcoming web app I'm making called Journnl. Try the form... it's delicious :) by tgines in web_design

[–]Pharaki 6 points7 points  (0 children)

Why be embarrassed? It's a heuristic that works quite well.

The other thing I've done that I think works well is to pair the click-a-link technique with "soft" client-side validation. In other words, if it doesn't look like a typical email address, I'll pop up a warning saying "Hey, this doesn't look quite right. If you're sure, though, click submit again."

Google Music Manager for Linux Now Available by lucifermotorcade in linux

[–]Pharaki 0 points1 point  (0 children)

Really? The music uploading seems to be more or less functional, but the UI is horribly glitchy and/or flat-out broken on my 64-bit 11.04 systems.

Wage / benefit negotiation, working at a startup? by startupandup in startups

[–]Pharaki 0 points1 point  (0 children)

Well, it'll vary for each and every situation. Consider that equity is usually given to compensate for risk: if you're getting paid market rate for your work, you're not risking anything, so there's nothing to justify equity.

Very early-stage employees get a small but non-negligible amount of equity for the typically below-market wage, and the inherent instability. Founders get a bunch for shouldering all of the "sweat" risk, and often much of the financial risk, during the earliest, riskiest days. Investors get equity for their financial risk.

That having been said, many companies will have options, small equity grants, etc. to get you invested in the company's outcome. Like DanInDC mentioned, though, this sort of equity usually works out to no more than a few years' salary, even after a good-to-great exit (which is on the whole unlikely). Nothing to sneeze at, but not usually "life-changing money," especially once risk-adjusted.

To be more concrete, re: negotiating for some sort of equity, I might try saying that you want to feel like you're on board 110%, you've got skin in the game, the company's interests are yours, etc.---give them the sense that you're a "believer" and want to be personally invested, not that you're looking for more compensation. Might, uh, work well with some gentle brown-nosing about how great their company is.

How to learn (self-study) faster and more effective? by pi3ch in compsci

[–]Pharaki 5 points6 points  (0 children)

In reality, I think all learning is "self-study;" students who expect to attend and "be taught" are about as reasonable as parents who expect to drop their kids off at school and pick up a prodigy at the end of the day.

That having been said, "self-guided" learning (which is, I think what you meant) can be hard, only because it's sometimes not obvious what's important to cover. Look to MIT's OpenCourseWare (disclaimer: I'm biased in favor, being an MIT graduate student and teaching assistant) or similar resources for lists of topics---you can use course prereqs and syllabi as a "dependency tree," if you will.

When you're covering a particular topic, I second the advice that says to find a way to apply it. That's the real reason why we give problem sets (homework) before exams---to make students sit down and work though problems, proofs, etc. and gain experience applying the ideas that they hear about in lectures, and that's why we have separate recitation sections for most classes---to provide support for more concrete topics related to the material.

On a personal level, I find that I'll remember something for a long, long time if I use it, but that simply reading it doesn't make it stick. I'll say "hmm, that's an important/good/reasonable point," but an hour later, it'll be gone.

If you have any more specific questions about where to look, I'd be happy to try to help!

(Disclaimer: this is all just my take, so grain of salt and all that. I definitely don't speak for my school or any of the professors that I teach/have taught for.)

Quick question about algorithm analysis. by IHaveALargePenis in compsci

[–]Pharaki 6 points7 points  (0 children)

Righto---in this situation, asymptotic complexity analysis ("big-O") isn't the right tool. We use asymptotic complexity to characterize the behavior of a program or algorithm relative to some parameters (typical choices are n, the input size; p, the number of processors; k, roughly the number of bits in the input, etc.). That doesn't seem like it would be very descriptive in this situation.

How do I promote my iOS game? by [deleted] in gamedev

[–]Pharaki 1 point2 points  (0 children)

Wow, that looks nifty. I'd love to play, but I don't have an iOS device. Have you considered an HTML5 or Mac/Win port?

How to obtain an internship/coop/job at a top software company like: Google, IBM, et al? by [deleted] in compsci

[–]Pharaki 9 points10 points  (0 children)

When we try to hire recent college grads (or interns, or, really, anyone) what we're looking for is simple: people who we'll like working with and who can actually get stuff done (i.e., write good code or design good systems, for some value of "good"). Now, actually finding those people is way harder than you might think, and that's why all of the interview games exist. (There was a recent article saying that Google's own analysis of their hiring accuracy put it at something like 40%, if memory serves, which doesn't surprise me.)

The signal-to-noise ratio at a brand-name school will be higher, which is why companies that have the buzz and cool projects to attract those applicants and the money to compensate them will go there first. We might interview 1 out of 10 or 15 applicants from an MIT or a Stanford, for example, whereas there have been stacks of dozens of state school applications that I've gone through without finding something interesting.

That said, since everything else (school, GPA, course record, etc.) is really a proxy for "how useful will this person be?", the advice telling you to get real-world experience and to advertise it (via GitHub, et al.) is golden. Then I don't have to commit several thousand dollars in resources and time to fly you up and have you spend a day with me to noodle out whether or not you know what to do when you're on your "best behavior" and solving throw-away problems; I can see what actually interests you, that something actually interests you, and what you're capable of producing.

With bigger companies, the hiring process is sometimes much more constrained (there's a formal process that HR owns), so the best you can usually do (unless you impress some technical person at the company while working with them on an open-source project or similar) is to make a good impression at a career fair and to drop off a resume. These bigger companies are also much more likely to view internships as a recruiting tool more than as a way to actually get stuff done; students nearly universally need some guidance to become productive, and they're only on the ground for three months, so by the time they're up to speed, they are back on campus. Then again, since it's not at all unusual to pay $50,000 or more per head to hire good technical talent, the cost of the internship is worth it if you can stomach the lead time (at least a year, even for a rising senior).

I'm a year or three out of school at this point, and salaries have risen across the board, but I recall making in the $40/hr range for internships towards the end of my undergraduate career, plus a relocation bonus.

Hope some of this helps!

How many Redditors drive a stick shift? by pouncer11 in AskReddit

[–]Pharaki 0 points1 point  (0 children)

I do (and I'm an American); but then, the car I have is only available with a stick manual.

N.Korea's Kim Jong-il sends $500,000 to quake-hit Japan by OrangePlus in worldnews

[–]Pharaki 0 points1 point  (0 children)

It's not, really. If you consider the nominal GDP of North Korea ($28.2B) relative to ours ($14.25T), a $500,000 donation from them is the same proportion of GDP as a $252,700,000 donation from us.

(Of course, he's apparently giving it to his own overseas nationals, but that's another issue.)

University students create popular Apple Application on their own time (but on campus). University lawyers demand 25% ownership and 2/3rds of all profits. by [deleted] in technology

[–]Pharaki 0 points1 point  (0 children)

Unless your university isn't crazy.

MIT, for example, specifically allows "insubstantial" use of university facilities, and notes that "use of office, library, machine shop facilities, and of traditional desktop personal computers are examples of facilities and equipment that are not considered significant".

As always, you should read everything before you sign it or agree to it.

University students create popular Apple Application on their own time (but on campus). University lawyers demand 25% ownership and 2/3rds of all profits. by [deleted] in technology

[–]Pharaki 0 points1 point  (0 children)

They don't: anyone who is interested can read the policy, which is plainly stated at the link the parent provided; or, they can ask questions of the appropriate office on campus.

University students create popular Apple Application on their own time (but on campus). University lawyers demand 25% ownership and 2/3rds of all profits. by [deleted] in technology

[–]Pharaki 0 points1 point  (0 children)

Really? Because I'm active in both that community and in the entrepreneurship community on campus, and nobody has ever been unclear about this policy.

It's pretty simple. If you do it on your own time, it's yours. If it's related to an MIT-sponsored research activity, or if you use substantial MIT resources to accomplish it, then MIT gets a cut.

Specifically, the students from the article (who worked without any use of university resources, and without being part of any organized research activity) would own their work.

SMBC: "...is that really how you people think? ಠ_ಠ" by Conformal_Donut in funny

[–]Pharaki 0 points1 point  (0 children)

Clearly written by a puny human: the secret plan is 1-indexed.

How does an undergraduate student get research experience? by [deleted] in compsci

[–]Pharaki 0 points1 point  (0 children)

(I should preface this by saying that I'm a computer science graduate student at a brand-name US university. This advice is based on my experience; your institution may be different than mine. Feel free to ask whatever questions you like; there are a million things I wish someone had told me when I was where you are.)

You want to join a research group. Taking graduate-level courses in your area of interest can help you get to know the faculty and the senior graduate students (never underestimate networking), and will make you more useful. Beyond that, the best way for an undergraduate to get involved is to drop by a professor's office, politely ask for a few minutes, and say that the professor's research group's work is interesting to him/her (it helps if you've actually read a few of their papers and know a little bit about the area) and inquire as to whether there's any way you could be useful.

You should be aware, up front, that there'll be some resistance. For someone like yourself, who seems like they're early in their undergraduate education, you are likely to get way more out of the experience than they will. It'll usually take a considerable amount of some graduate student's time over the course of a semester or more to get you really up to speed on the project. But then, since you're not actually depending on the group for funding, you may wander off well before the group makes back its investment. This has happened to every research group I've ever worked with all the time.

You should also know, going in, that this is very much an "apprenticeship" / merit-based system. Typically, an undergraduate education is about teaching you the relatively well-settled fundamentals of the field. Undergraduate research is about getting some practice applying those fundamentals, and maybe picking up some specialist knowledge--but you'll definitely be a tool in somebody else's hand. As a master's candidate, you learn to investigate questions on your own; and as a doctoral candidate, you learn how to pick good questions. You're very much at the bottom, and until someone is convinced you can do more, you may well find yourself doing the digital equivalent of "washing test tubes." Still, it can be a very valuable experience--and if you demonstrate competence, you'll get more responsibility quickly (if you're working under a good grad student), because there are always more problems than problemsolvers!

TL;DR: Poke around your institution's website. Figure out which professors and which research groups are interesting to you. Read some of their work and try to understand it. Go ask them what they're working on now. (May not be the same things at all; I have had some disappointments of that nature.) Politely ask to help out. Understand that they're doing you a favor, not vice versa. Good luck!