HNHacker News
TopNewBestAskShowJobs

palish

6,596 karma · joined February 20, 2007

=======

To whomever that has read upto here: you hereby implicitly agree my EULA, in which you swear to enjoy each of your scientific pursuits with intensity and to your fullest degree; and sometimes even to a dangerous degree, if the mood carries you thus. Additionally, you agree to never allow an employer, family member, or any other authority to break your intrinsic spirit; for they have no means of dominating your spirit except that which you subconsciously allow them. You shall be true to yourself and to your own principles, regardless of society (though in privacy). You shall hereby refuse to believe any scientific statement as "true", however benign, except those in which you alone have proven to yourself to be true, by your own hand and evidence. (Though it doesn't hurt to check out what other people have to say on the subject, from time to time; in fact, it turns out to often be a more valuable course of action, for the careful analysis of a close friend can often reveal subtle flaws in your process and in your logic, while occasionally forcing you to re-evaluate your core reasoning for choosing that process in the first place, which always leads to the path of learning and thus improvement and satisfaction.) You agree to eventually die with no regrets. Let no one impose themselves upon your judgement without merit. You shall endeavor to enjoy life to the fullest extent of the law (where applicable), and to realize that money is merely a means, not an end unto itself. In your spare time, you shall research that which is impossible, but intriguing, in order to always have something to strive for, thereby improving your skill and your spirit. You shall follow your curiosity wherever it leads (but keep both eyes open for signs of danger).

Most importantly: thou shalt enjoy every week, else thou shalt fix your life's situation regardless of how immutable it may seem.

=======

submissionscomments
palish··on VsVim
That is absolutely horrible. There's no reason to subject yourself to that. Use this instead: http://www.viemu.com/

I've been a happy ViEmu customer for... Hmm... Three years? Maybe a little longer. Anyway, it's just perfect.

palish··on Id Software Open Source releases on GitHub
I dropped out after I had secured a stable internship at a local game studio.

After working for them over the summer of my Junior year, it seemed like a good idea to continue working for them rather than attend my Senior year. Thankfully, I was correct in that assessment. Otherwise I would have wound up with no career and no diploma... :)

palish··on Beautiful Apps, Ugly Code
For an excellent example of how a clean object model can solve extremely difficult technical problems, check out LMAX's "Disruptor" framework: http://code.google.com/p/disruptor/

By rigorously separating the concerns into a clean object model, LMAX achieved a level of performance which might correctly be labeled "miraculous". http://screencast.com/t/g67kFj8nRue

It's written in pure Java. Amazingly, I haven't found anything that's achieved better performance thus far. It's very elegant.

palish··on Id Software Open Source releases on GitHub
Carmack is my personal hero. I'd like to share this with you:

  At 09:59 PM 1/27/2008, you wrote:
  >
  >Hey John,
  >
  >How does someone like yourself become a better engineer?  I'm
  >nineteen, and I dropped out of high school during my senior year to
  >work in game development.  Your work is inspiring on many levels.
  >Were you simply born with the ability to learn very quickly, or was
  >it the result of hard work?  I'd like to be the best engineer I can,
  >but I'm not sure how to keep improving.  What are your thoughts?

  Using your time effectively is very important, and there is often a 
  non-linear relationship between the amount of time you can stay 
  focused and the amount that you can learn or accomplish.  It is often 
  possible to get more done in a highly focused 12 hour stretch than in 
  a normal 40 hour work week that is interspersed with email, chat, and 
  other distractions.  Someone that can be completely obsessive about 
  something does have an advantage, but the same questions about focus 
  apply for any amount of time you choose to devote to an 
  undertaking.  Most people work at only a fraction of their potential.

  John Carmack
It profoundly inspired me. From that day to this, I've worked to push my technical ability as far as my brain and body allow.

When I someday succeed in my life's work (to build a game studio), I'll owe it entirely to him.

palish··on The ethics of brain boosting
How many times per day?
palish··on The man who hand-draws fractals
Hey, how's RAD? You guys rock, keep it up. =) Pretty much my heroes. The game industry is far better off due to your work.

On fractals -- I wish it had a clear definition. It's too subjective. For example http://en.wikipedia.org/wiki/Fractal. By the popular definition, it seems fine for non-linear growth in the number of shapes vs the level. (Though not especially interesting.) But I agree more with your interpretation.

palish··on The man who hand-draws fractals
This is a fractal: http://fineartamerica.com/featured/inverted-energy-spiral-ja...

It is obvious how to extend the drawing "to infinity".

I agree that some of them aren't (no recursion to infinity) but others are.

palish··on Yuri Milner: "stick with the founders as long as they’re pushing the envelope"
Minor quibble: Zynga isn't a game company. They're a social engineering company. They employ people to discover the best ways to get "players" to transfer their money to Zynga. All other priorities are secondary.

Sorry; this is a tangent. I'll blog about it or something.

As a game developer, I don't want my goal (to make fun games) to be confused with Zynga's agenda (to extract money).

palish··on Visualized Git practices for team: branch, merge, rebase
You can format your `git log` output to give you your network graph...

Really? Awesome. How?

palish··on Why Software Development Estimations Are Regularly Off
Let's say that you have 20 tasks. Each involves rolling a 10-sided die. If it's a 1 through 8, wait that number of minutes. If it's a 9, wait 15 minutes. If it's a 10, wait an hour.

That is a beautifully accurate description of modern software development. I hope you get quoted.

palish··on FileSonic disables all filesharing
Unless it's digital.
palish··on Wikipedia to Shut Down on Wednesday to Protest SOPA
Here you go: http://dl.dropbox.com/u/315/torrents/wikipedia.zip
palish··on What It’s Really Like to Work at Google
Hey Nos. I hope you've been well!

Is there any way you could give your first-reaction answer for "what is the worst thing about working at Google?"

palish··on Many Core processors: Everything You Know (about Parallel Programming) Is Wrong
Translation for readers:

Let's say you have some floating point numbers, like...

  float A = 42.90F;
  float B = 00.01F;
  float C = /* ... */;
  float D = /* ... */;
(A + B + C) will not necessarily produce the same result as (A + C + B).

In fact, if you do (A + B + B + B ...) very much, then you will wind up exacerbating the problem --- it can be a source of bugs if you repeatedly increment a counter by small floating point values. For example:

  const int Iterations = 10;
  for ( int i = 0; i < Iterations; ++i )
    A += B;
  printf( "%2.4f\n", A );
The output is 43.0000, as you'd expect. But what if we increase Iterations to 100? We get 43.8998.

Astute readers probably would note that 00.01F can't be exactly represented in base 2, and wonder whether something like 00.0125F would still suffer from this problem. Alas, yes:

  A = 42.9000F 
  B = 00.0125F

  8    iterations ==  43.0000 
  80   iterations ==  43.9001
  800  iterations ==  52.9006
  8000 iterations == 142.8820  /* we would expect 142.9 */
So if you want to parallelize some computations, and you want to do 4000 iterations on core #1 and 4000 iterations on core #2 and then sum the results, well... let's see what happens:

  float A1 = 42.9000F;
  float B1 = 00.0125F;

  float A2 = 42.9000F;
  float B2 = 00.0125F;

  const int Iterations = 4000;
  for ( int i = 0; i < Iterations; ++i )
  {
    A1 += B1;
    A2 += B2;
  }
  float A = A1 + A2 - 42.9000F;
  printf( "%2.4f\n", A );
The output is 142.8885 -- which is different from our earlier result of 142.8820!

You may be tempted to try various things to get around this fact... for example, what about counting from zero rather than from 42.9000? (Answer: the error can be even worse, which is a topic worthy of its own separate post) ... but you will quickly discover that this is a fundamental issue. The order of operations matters.

palish··on Zappos.com customer database compromised
Was the password hash generated using bcrypt?
palish··on Alexis Ohanian vs NBC - Debating SOPA
Cotton came out as the rich, smiling shark that he is, which makes smart people dismissive of anything he has to say.

Most people, by definition, are closer to average or dumb. This war unfortunately requires convincing large numbers that SOPA is a really, really bad idea.

palish··on Dropbox inventor determined to build the next Apple or Google
Holy french fries. With Google, I can get 80GB for $20/year: https://support.google.com/docs/bin/answer.py?hl=en&answ...

With Dropbox, 100GB would cost me $199/year.

I've been with Dropbox forever (I have account #315) but man, it is tempting to snag 80GB for the price of half a tank of gas.

Convenience is obviously the primary loss. But I'm a nerd. It would likely be easy to figure out some way of auto-syncing my whole music folder.

My other primary usage for Dropbox (and incidentally the motivation for its inception) is as a way to transfer files to other people. There's nothing like being able to host your own .html file within your own dropbox with literally zero effort. That said, a hybrid of the two seems best -- ridiculously cheap bulk storage, combined with the convenience of Dropbox when needed.

palish··on PyPy: Transactional Memory (II)
Aha! That sounds like just the ticket. I hope it's easy to use. A million thank-you's, and a Salami.

EDIT: I just saw your edit. That's what I'm doing --- shm_open(), ftruncate(), then mmap(). A little annoying that it doesn't automatically kill the shared memory when the program terminates, but still...

palish··on PyPy: Transactional Memory (II)
I've been trying to tackle precisely that problem.

Would someone please help me out and point me at a way of efficiently exposing a read-only block of memory to Python?

EDIT: Looks like "MemoryView" introduced in 2.7 is the answer.

palish··on PyPy: Transactional Memory (II)
However anything that requires some complex interprocess communication is essentially unworkable. You need to serialize and deserialize your data into wire-level protocols, which is often prohibitively expensive, even when you can get it to work.

Would you post more info about previous attempts at this? I was about to create precisely that. Literally today.

But if it's fundamentally unworkable...

palish··on Search: .lenght - Github
That command works nicely for me in Cygwin.

EDIT: Eh, apologies if this sounded like chastising -- I didn't mean to. As a developer who's been trapped in "Windows-mindset" for many years, I wanted to try to inspire other Windows devs to try to use *nix-based solutions even if their only option is Windows development. Cygwin is in a very good spot right now -- it's achieved so much acceptance that even the most hardened institutions now allow it to be installed.

palish··on Search: .lenght - Github
I'm confused as to why they couldn't simply:

  grep -R properites .
palish··on Javascript Ray Tracer
the output is literally physically photo-realistic, with fully-accurate GI lighting and accurate BSDF material interaction

This isn't true at all.

At what point are the equations "accurate"? What margin of error is acceptable?

We still have a long way to go before we can claim accurate lighting equations.

palish··on Donald Knuth on how he became good at math
That's probably true. Thank you.

Did you find it difficult?

palish··on Donald Knuth on how he became good at math
Good point, thanks. I could conjure up a few interesting stories. Also some useful hands-on (cross platform) game programming tutorials. "Learn Game Programming the Hard Way."
palish··on Death to .DS_Store
Heh. Self-referential cache: http://db.tt/qAfMnTjl
palish··on Donald Knuth on how he became good at math
Sam Altman has what I lack. http://www.paulgraham.com/fundraising.html

> You could parachute him into an island full of cannibals and come back in 5 years and he'd be the king. If you're Sam Altman, you don't have to be profitable to convey to investors that you'll succeed with or without them. (He wasn't, and he did.)

More than that, I can't seem to inspire confidence in people. I don't know the cause, but it's proving lethal to my ambitions. As far as I can tell, it's the same situation Jobs found himself in:

> "You know, I’ve got a plan that could rescue Apple. I can’t say any more than that it’s the perfect product and the perfect strategy for Apple. But nobody there will listen to me.” [1995]

I don't know. I'm just enjoying life and pursuing my research. But it feels unsettling coasting like this. I have Carmack's technical skill; if only I could rally like-minded capable people who wanted to build the next Id or Epic, then we'd stand a fair shot at success, at influencing our industry and the world. We wouldn't be just another puppet for publishers. We'd have a shot at making an impact: the next Half-Life or Final Fantasy or World of Warcraft. The formula is good people + shared goal + time + rapid iteration + don't get distracted. It works, it's proven, and I've seen it happen firsthand at S2. We can achieve that same success.

But why should anyone take me seriously? I probably wouldn't, if I weren't me.

palish··on Donald Knuth on how he became good at math
That's the plan, but without charisma or pedigree, I've found it quite difficult to inspire confidence.
palish··on Donald Knuth on how he became good at math
- full stack programmer. My focus is always on the quality and robustness of the final design, regardless of which specific technologies/components are used. I learn them all.

- a deep knowledge of the details. I share Robert Morris' passion for understanding precisely what is going on at every level. My insight into the low-level details of next-gen CPUs came from reading the Intel architecture manuals several times over.

- an ability to achieve high-quality results within a very short period of time, regardless of the project or goal. If you show me a problem, I'll show you a solution by the end of the day, probably with a rough prototype. By a week, I'll have discovered which solution/direction is the best long-term strategy, and will have a working production version 1.

- I have good judgement. This turns out to be rare.

Specific technologies:

- a master of C/C++. I've been coding since age 12, and I'm now 23, so that's easily 30,000+ hours I've spent practicing. I've been writing C/C++ professionally daily since my first gamedev job in 2007. Python is my language of choice; Lua a close second, primarily when performance is of concern (such as in gamedev). But a language is merely a means to an end, and I work with all of them.

- several years of hobby experience writing Rails websites/Javascript. I write Lisp interpreters for fun. I want to write an Arc compiler someday.

- extensive sysadmin knowledge, both Unix and Windows. FreeBSD is my preferred OS for server-side deployment.

- master of realtime 3D graphics; both OpenGL and D3D. Given time and freedom, I can build you a renderer of the finest quality (equal or higher than Rage).

- artistic talent and taste. Several years of 3D Studio Max and Maya modeling and animation experience. I build next-gen character art (high-poly sculpt in ZBrush, then decimate / build low-poly shell in 3D Coat; project detail; touch up textures via Photoshop -> rig in 3DSMax -> animate -> import into game).

Projects:

- in highschool, wrote a game engine roughly equivalent to Quake.

- several game engines / game ideas.

- a full game editor, using C#/.NET WinForms.

- next-gen realtime graphics experiments, including realtime skin rendering (the same technique was recently shown by Epic in their "Good Samaritan" demo).

- several Rails websites. Made a system for schools to administer tests, with the intent of surpassing Blackboard. (JavaScript-based; this was back before "Ajax" was a fancy buzzword.) Tried to apply to YC with it. pg gave valuable advice (selling to schools is like selling to government; quality doesn't always win). Was invited to Hacker School though, which was fun (seeing Anybots' Dexter robot in person walk around on two legs was just awesome).

Experience:

- Simutronics, HeroEngine. Graphics programmer (3 years)

- S2 Games, Heroes of Newerth. Engine programmer (1 year)

My thirst for knowledge is unquenchable in five lifetimes, and I strive for beauty and elegance in everything I pursue.

If anyone feels these claims seem too bold to be true, I'd love the opportunity to work with you to prove myself while serving your interests.

palish··on Donald Knuth on how he became good at math
Absolutely. My experience was the same: my mother loved to talk to me about my intelligence and curiosity as if they were rare and therefore special.

Maybe it was true, but by telling me that, she accidentally laid the foundation of the rest of my life: I started distancing myself from my classmates, and eventually my peers.

The result? I now have a skillset roughly equivalent to Carmack's, but no chance to capitalize on it. No one believes nor cares. (http://dl.dropbox.com/u/315/portfolio/pre-textured.jpg ; http://dl.dropbox.com/u/315/portfolio/face.png)

By setting myself apart, I likely ruined myself without even realizing it. It turns out that my skills don't matter. A Carmack without a company is no Carmack at all. And now I've no ability with people, as he does.

← PreviousPage 3 of 34Next →