189 karma · joined February 2, 2008
Put another way: In general, you are probably effecting a positive change if you are making money and are not in trouble for doing so.
-Stop using a mouse. Use a trackball or a trackpad or anything else. I have a death grip on mice and I bet others do too.
-If you have to use a mouse switch your mousing hand. Deal with the fumbling and inaccuracy. You'll figure it out.
-Lean farr back in your chair(legs propped up) and rest your keyboard in your lap. Shift position occasionally.
-Move your monitor so that you look in different directions. Laptops are great for this and that compensates for their other ergonomic problems. You can usually find a way to move them higher or lower and correspondingly shift the strain.
Decision tables, by the way, _work_. If you haven't tried them, it will only take a brief perusal of Wikipedia to get the concept. Their benefit is that all logic is represented in a single table: if every entry in the table has been filled, all cases are covered. Much easier to read than linear code, much less prone to error.
You can write your own decision table by hand in a spreadsheet program. But above a certain level of complexity(the point where you really, really want correct logic the first time) a complete decision table becomes very time-consuming to write by hand. By design it will still give more correct results than just hacking away, but automated approaches become very appealing. Decision tables were researched for a while in the 60s and early 70s, but were abandoned presumably as the field moved on to more prestigious topics.
Subtext's so-called "schematic table" does much to add the necessary automation - the next step in making it production-worthy would be to port such a system to output code in existing languages.
I feel that the real stars are usually operating fairly quietly, building on a primarily-open model rather than a walled garden, and creating strong businesses in a highly traditional fashion: by being the best around. (cue the Joe Esposio song)
You can still build a stable foundation on an open model if your company holds the expertise in the technology; your immediate competition is likely to be arrogant and compete in the sprint for the walled garden, rather than the marathon for the open model. (other companies working towards an open model are collaborators toward a standard, but competitors in services. Hardly an unusual situation.)
If the competition gets a lot of momentum in an inelastic product(for example, operating systems or instant messaging), that can kill you early on, but over the long term the most-open player usually becomes disruptive and causes the marketplace to expand with a new set of services. That is my observation of most such situations in technology.
1. Eat a variety, particularly with respect to fruits, nuts, and vegetables. If you can't get them in natural forms then at least go for processed combinations. Uniformity of diet is a symptom of agricultural society and should be avoided.
2. Make eating a priority after you wake up. Eat a few hours before bed so that you wake up when you're hungry.
3. Rely on protein to make a meal filling - in whatever form it takes, milk, soy, whey, meat, fish...
Why is the game industry using C/C++?
"Because they need the highest possible performance."
Why do they need that performance?
"To look better than the competition."
Why is looking better than the competition important?
"It sells better."
Why not do other things to sell better and get a better time-to-market with a slower language?
"Too risky."
And the entirety of console gaming has bought into ideologies of low risk, top-to-bottom. The systems are either underpowered or just plain difficult to develop for, the publishers impose boneheaded ideas, and the additional manufacturer requirements increase the costs, but the perceived benefits of a system with low piracy and high retail impact make everyone buy in, again and again. The burden always falls on the developer to suck up the worst excesses and ship something workable. And this in turn encourages a dogmatic developer ideology where one accepts "nobody ever got fired for buying IBM" type stuff because of perceived risk. C/C++ is just one of those things.
I'm inside this system now... and while I like the company and am satisfied with the job, I would love to see it all break apart. It's a nasty system and we get the short end of it.
That he pooh-poohs all static languages by pointing to some excess of Scala and using a slippery-slope argument from there doesn't really help.
Plus the verbosity.
Also, Lua is imperfect for games: Squirrel is considerably more attractive because it is designed to work in real-time situations(no GC interference). I also had issues with Lua's error-handling.
Each line gets a time in seconds followed by a call on some entity: hello world is "0.0 Script:Print("hello world")". The syntax quickly gets verbose from there - and no multi-line statements allowed!
Some of the flaws of this language:
-Miserable computational abilities. Until just this morning we were unable to add two numbers together. The main limitation is poor access to information - getting things like the x position of an entity requires a language extension - an easy one, but when it's not there....
-A vague notion of types. Variables attached on entities are typically enclosed in quotes: "true", "100", etc. But in arbitrary instances you can also use space-delimited vectors, for example: Script:Goto(100) or Entity.SimpleMovableInst:SetPosition(0 0 0). If you use the wrong thing, you will be lucky to get an error message. Usually it just silently fails.
-Lexical macros. These were added in order to cut down on the number of custom scripts we were using: instead of cut-and-pasting "switch1...door2....etc." variables we could say "$[target]" and it would be replaced at runtime with the contents of variable "target" on that entity instance. But they have the effect of giving a lot of false errors in the cases where we don't need to use those variables on a rich, multi-purpose entity. Worse, if I forget to add a variable necessary for the script, that instance will fail and I may not realize why.
-The parser doesn't recognize delimitation of strings, among other things. Putting a colon inside a print statement causes an error message.
It is no surprise that endless grief has resulted from these various flaws. I fixed bugs resulting from all of the above just today.
It works fine for timelines, but I'm hoping to get Scheme(or something with similar potency) for the next project.
-It's built in tandem with a OS, Isaac, that is using the OO features as a central part of the design.
-It's not complete yet. It's a few years into the project, but the specification may still change. So it's more interesting toy than production-ready right now.
-It compiles to C code and can directly inline C statements with a simple backquote syntax so it has good compatibility with existing systems, even though it's meant for a research OS.
Multiplication. Long division. Algebra. Geometry. Trig. Calc.
I was never very motivated to study math. The problem was, my older brother was very into it(and now is a math grad student, ever-so-slowly getting his thesis together). This set a model that I could not hope to emulate, but it only meant my mom pushed me more, talked to the school to get me into the advanced/accelerated classes I didn't really want to take. She probably would have done some of that without my brother around, but not as much.
This led me down the "please the parents" line of study, which naturally meant some surreptitious, embarrassed attempts at cheating. This only made me feel worse, of course.
In college I started into computer science, thinking that I at least liked the programming. But integral calc sunk me for good, and in a particularly bad quarter that was my low point, I tried taking linear algebra as well as a repeat of calculus, thinking that perhaps the extra pressure would do something good.
Of course not. I dropped linear algebra and failed calc again. After that, I decided to declare in economics, restarted calculus with the "ez-for-econ-majors" series and sailed through those courses with a solid B average. I struggled through, but passed on the first try, the two intermediate econ courses which started introducing serious mathematical modelling. The remainder of the major was electives, and not difficult ones.
I never knew, until after that whole period of my life was over with, exactly what was holding me back. Now I'm pretty sure that it's about motivation and dedication. My brother is fairly normal but can get interested enough in math problems to sacrifice his well-being. The genius researchers of the field sacrifice well-being regularly, without really knowing it, and are typically slightly unhinged socially.
As for myself, I tend to run away from a challenging math problem. So, even if I'm forced to tackle it, it will probably take me 10 times as long to solve as it would my brother(not even factoring in his years of experience now). Once I overcome those hurdles particular to a new category of problem I am fine, but I have to take considerable effort to do so.
Summing that difference up over a long-term period like that of a college course, the best students can zoom far ahead because of this motivation factor, even if they aren't necessarily the _smartest_. Indeed, many math students reach the upper-division levels on memorization alone and get stuck from there, as proofs take on more and more importance. That's a major failing of current math education in the United States - overdependence on rote techniques. (The former Soviet educational system, OTOH, had probably some of the strongest math education, and much of it has been translated to English - pick up a book from that period and you will probably see a small and dense text that introduces high-level concepts in great, if unforgiving, detail. Very different from the thick drill+practice textbooks I'm used to.)
My conclusion: many academic fields can accommodate a half-hearted practice. Math is not one of them. And our society doesn't respect that difference, shoving it under the rug as "I'm just not good at math."
The proposed extreme is to encourage community via personalization. I personally disagree with this: web sites are typically too big to be communities in a natural sense. What you will get is increased visibility for a small elite of spam-heavy commentators.
The other extreme is 2ch-style anonymity. This is open to mob abuse, but it also discourages powergaming.
The core issue is how to continue scaling the system to match interests when they reach hundreds or thousands for every front-page story. news.yc is getting there already....
That is, people who come there(and many different people do, the turnover is high) also tote along some baggage of what they think the city is about. Vision meets and gradually becomes reality as the newcomers act out their desires, to varying degrees of success. So there is a sort of flow at work. Realization of all the various lifestyles present is a multi-decade process. Plus it changes quickly and incrementally, so as to become nearly unrecognizable. I'm still nowhere near a full comprehension of my hometown.
The broad strokes pg paints in this essay seem more reminiscent of college lifestyle than the character of entire cities. A four-year college is able to concentrate those kinds of ambitions precisely: everyone is at roughly the same few stages of life and so can quickly find common ground.
But in a city, things quickly collide.
Main caveat: have to baby its airflow so that it doesn't overheat. Vista will throttle on overheating, Linux won't, at least not the kernel I'm using.
I got sunburned.
The direction of Flash has been towards greater openness since around the time Adobe acquired Macromedia in 2005: One year later they released a new major version(9) with a new VM and a completely refactored API, and along with that they released an open source Flex 2 compiler.
Adobe would probably open source their own player and ensure it becomes the "de-facto standard implementation," if it were not licensing-encumbered.
And that means that it could be dethroned on mobile devices: unique Flash builds everywhere will increase the cost of the platform over time, become a support nightmare, and eventually make users switch to a more open alternative. As it stands platforms other than Windows and Mac are second-class citizens, either having buggy/lowered performance(Linux), or supporting only older versions of SWF. (Wii Opera, mobiles) This is not a good track record.
So Adobe should be applauded for this move. They aren't stupid, and they still will have some control over the spec into the near future, since they possess the premier dev tools. (I love MTASC/haXe/SWFMill, but must admit that they have shortcomings.)
I've also discovered a way to consistently crash the Linux plugin.
I'm hoping for either a suitable, market-accepted replacement to come along, or for an emulation like Gnash to get up to speed with the newest versions of SWF.
But in forming an actual dialogue, such all-or-nothing viewpoints make people defensive. The behavior of monopolies that have been obsoleted by technology is little different from that of the Luddites - they try to stop the change, even when it's irrational to try. "Irrational self-interest" is a pretty neat term to sum it up.
"You Weren't Meant to Have a Boss" strikes keenly and precisely at the employed, because it primarily lists benefits of startup life, presenting an unbalanced picture. The title certainly doesn't help matters. That PG's arguments are pretty strong, and he has some established weight in online communities, makes him hard to dismiss out of hand, which further increases the tension.
Internet discussion tends to stay low on the hierarchy because the people replying are mostly stuck in defensive mode. Pragmatic, nuanced thinking doesn't seem to come naturally to humans.