Domain: c2.com
Stories and comments across the archive that link to c2.com.
Comments · 1,108
-
Re:That's what Nokia, Moto, and Microsoft said
I'm a Linux guy who still builds his own boxes.. but..
Palm who?
There's the fucking point, son: Real artists ship.. and by ship, Jobs meant something consequential, not a piece of shit Palm.
"We make Hondas, not Yugos" - Former Apple VP
Hindsight my ass.. for every goddamned Newton they've brought out an iPad, iPhone, AppleTV, etc. Pull your head out of your ass. They've got enough money to buy the talent they need to make a car.. hell... all of the other automakers had better have their senior engineers and designers signing non-competes.
-
Re:Evidence of the Great Filter?
Sure, lots of kids go to university, and lots of them even graduate, but I still don't think a large percentage of those people couldn't invent something new or advance scientific understanding. The Fizz Buzz test is a perfect example of this. Even people who have undergone a lot of training can't come up with a solution to a simple problem that they've never seen before. They are find doing grunt work programming because they aren't encountering problems that they haven't seen before. If they do, they Google it and look for code from someone else who has already solved a similar problem to what they are doing. I've met quite a few "programmers" in my day who were unable to complete even the simplest of tasks, and even with a lot of guidance would fail to solve the simplest of problems.
-
The first wiki trying it also
The first public wiki, the Wiki Wiki Web* founded by Ward Cunningham which covers soft. eng. philosophy, is trying to go "Federated", but so far users are confused up the wazoo.
A determined "grammar vandal" mucked up the original wiki such that they had to rush out the federated one faster than planned.
Related links:
https://en.wikipedia.org/wiki/...
http://c2.com/cgi/wiki
http://c2.fed.wiki.org/view/we...* Sometimes known as the "Portland Pattern Repository"
-
Re:Yes, but can you trust your compiler tool chain
This only works if Debian can guarantee the integrity of the development tool chain. See this >30 year old talk/paper by Ken Thompson describing the problem. Once inserted, the malware is persistent and invisible. Re-compiling your compiler and applications from known-good versions doesn't help.
The problem got a lot more complicated for the attacker today... Thompsons attack works well if there are only a few architectures and only a single compiler. But the attack complexity grows exponentially in the presence of multiple architectures (that can be used to cross-compile each other) and multiple compilers (that can compile each other). Now you need a compiler virus that not only compiles on all architectures well, it also needs to detect all kind of compilers that are there and works on all versions of them. The "reproducible build" system makes it even worse for the attacker, because its easier to to compare the results.
-
Yes, but can you trust your compiler tool chain?
-
Re:LISP
See the Great Lisp War
-
Re:Wrong.There's a quote about Ada that I always think about:
It's quite apparent that the evolution of the C family of languages (C, C++, Java, C#) is converging on a language very like Ada, except unfortunately as a kludgepile rather than a clean design.
Then there is this quote from the same page:
? I wrote in Ada for two years. My experience was that its extremely consistent data-typing rules and high readability gave me the highest productivity and lowest bug rate of any environment I've used before or since.....I would say that in Ada more than any language I've ever personally used (or seen) it is possible to truly express and recognize DESIGN.
Of course, the Ariane 5 shows that no language can save you from bad programming. Ultimately it is the people using the language that matters, not the language itself.
-
Re:custom kernel?
Ken Thompson's C compiler is an interesting read on the subject:
http://programmers.stackexchan...
http://www.reddit.com/comments...
Basically, It's a compiler with a backdoor that injects it's source code when it's compiling itself. pretty interesting idea for 1984. -
Software Engineering Philosophy
The very first public wiki: it goes by the aliases "Wiki Wiki Web", "C2 wiki", and "Portland Pattern Repository".
It's a combination wiki, blog, and discussions on the philosophies of software design. It's messy, but often messy in a good way.
There is a tension between what may be called "practitioners" and "academics" that I find fascinating (and have helped fuel, I must say). The practitioner stance is that human (coder) nature/perception and economics (bottom line) are the key factors, while the academics tend to argue that symbolic parsimony and mathematical provability/analyzability are the keys.
You will generally NOT find definitive/consensus answers, but you will find interesting questions and a wide variety of opinions on various software design and IT topics. It's fuel for thought in the sense of "Why is technique X better than technique Y?", or "can you objectively prove that technique X is better than Y, and if not, what's holding you back?"
http://c2.com/cgi/wiki?Welcome...
However, lately it's only in read-only mode, and being redone into a "distributive" wiki, in part driven by vandals and spammers. The future direction is unknown.
It's like a junkyard for idea-tinkerers.
-
Re:How is this news for nerds?
Ah yes, the fictional Founding Fathers, who (as revisionists would have you believe) had the foresight to predict 200 years of technological, cultural, and societal changes...
Most of those legislative ancestors had slaves, and according to primary sources, they treated those slaves about as well as any of their peers did. They held pretty normal views on most societal issues of the day, with a bit of irritation at specific injustices perpetrated by the British colonial government. From a historical perspective, the Founding Fathers were not radical liberals, or ultimate paragons of social justice. They were mostly wealthy middle- and upper-class colonists, primarily distinguished from other rebellious colonists by the fact that they played a very good political game to gather and sustain support during their revolution.
We could simply say that they had the realistic foresight to build a government that is merely able to change with society, but that won't reinforce that lovely pedestal we hold so dear. Instead, we project our own morals onto the deceased diplomats, and assume that they support our causes.
This is not to say anything about whether the recent decision being good or bad. Rather, this is a plea to give credit where credit is due. The recent legal changes originate with the recently-changed opinions of American society as a whole, rather than the opinions of a few long-rotted corpses. This is why a public awareness campaign is so important, and why complaining about politicians accomplishes so little. Whether you approve of the current law or not, we did this together, for better or worse.
-
Truck number
Tell management to stop playing with a Truck Number of 1. During the ramp up of the new guy, with or without your knowledgebase, they'll be in trouble. They'll want the new guy up to speed in day one, and he might not be up to speed in six months after you leave. And he might leave too if management stresses him out trying to get your performance out of him. Note: I am such a special snowflake in my organisation too, so I'm projecting. But in my case the company would just shut and everybody else would go home (they're all ex-bankers, now otherwise retired). If they were to get a replacement for me the guy would have to read a fuckton of source code, the same way I did, before he can do my job. And it took me about 6 years to understand what I'm doing, as it's not my baby. It was somebody else's, and that guy didn't like to share his thought process even though we worked on this for 4 years in the beginning before we parted ways.
-
Re:Can they compile from source?
Forgot to mention--no discussion of this is complete without bringing up Ken Thompson
-
Read Yossef Kreinin's C++ FQA and its rebuttals
You'll get a lot of insights on C++ after doing do.
- http://stackoverflow.com/quest...
-
Re:The first crappy language I encountered!
It was a teaching language; it resembles assembly, Fortran, and COBOL; pushed into production and was very harmful; http://c2.com/cgi/wiki?BasicCo...
But of course since we learn nothing in IT and software development we had to do it again; http://www.pbm.com/~lindahl/re... . It was a teaching language for the love of Mike.
Probably because larval PHBs had only one computing class in college and so it was what they dictated when placed in a decision making position over IT and programming departments. Footnote, I see the same thing happing with Python these days. Being pushed into unsuitable roles because that is all anyone knows.
-
Risk of regression
> There's a risk of regression when exposing the code to many more systems
The risk of regression is due to refactoring, not due to testing. Ironic, given that the post cites de-obfuscation as a reason for doing this. Or perhaps our submitter just got an MBA and is learning to think and speak in management-ese.
-
Re:Use yourself as audience.
I talk to myself when I code by myself.
Talking about what I'm about to do and the problems and potential consequences, out loud helps me process it and spot potential issues or better directions.It's a good technique. It sounds a lot like rubber ducking.
-
Rubber Ducking
It's called Rubber Ducking. The idea is that by talking out loud, you have to form your thoughts into words, which requires you to organize your thoughts more completely. Think about all the times that you've gone to ask someone a question, and as soon as you ask them the question, you figure out the answer yourself. Whether you use a rubber duck, a live video audience, or another person doesn't matter much. This is one of the reasons that pair programming can be quite effective.
-
Don't re-invent the wheel
Don't re-invent the wheel instead Refactor mercilessly
-
Re:Easier to Destroy than Create
(Personally I'd like to see an XML sub-language to control the browser's interface and menus, and I can copy that XML to any desktop or device to have the browser interface be MY WAY all the time. I don't want an org dictating my browser interface. An "interface builder" utility would probably have to be provided for non-coders. Rough draft of such an idea: http://www.c2.com/cgi/wiki?Use... )
You mean something like XUL?
-
Re:Easier to Destroy than Create
The struggle now is how to keep people from destroying things. FireFox is a disaster. Gnome is useless.
If enough people agree with that and agree why it's a disaster, then they'll fork it or back an existing fork. That's how "democracy" corrects wayward OSS projects. MariaDB appears to have done it successfully after too many got ticked off with Oracle's management of MySql.
But the problem with the browsers is that there is not yet enough consensus on what sucks about them. Maybe it's just hard to get browsers right and there is no way to make everyone happy.
(Personally I'd like to see an XML sub-language to control the browser's interface and menus, and I can copy that XML to any desktop or device to have the browser interface be MY WAY all the time. I don't want an org dictating my browser interface. An "interface builder" utility would probably have to be provided for non-coders. Rough draft of such an idea: http://www.c2.com/cgi/wiki?Use... )
-
Re:Quis custodiet ipsos custodes?
Or perhaps, "Quis audiet ipsos auditores"?
It sounds like it is the Ken Thompson problem of trusting trust once again rearing its head.
-
Re:Good code
For newly written code, things like readability, testability, and maintainability all can come in to whether it is "good" or not
For legacy stuff, Good code is code that works. Who cares how easy it is to read or test as long as it works?
The second one should also include "immutable". If it's hard to understand it will evolve easily to non working, and time spent on improvements can start to creep up very fast.
I have worked in very clever, solid code, but not easy to read. It was then maintained and extended by average, but competent programmers down the road, and turned into a big mess, only because it was so hard to understand.
In my experience, good code is easy to read, above all. That will make it easy to extend it coherently, find bugs and stuff. Also, if it doesn't work OK, it's easy to find out why. The single metric that saves time, money, and improves quality down the road is readability. Eveything else should be suject to that.
And, about the last point in the "article", "efficient", it's nonsense. Premature optimization is the root of all evil. You should _always_ follow the second rule of optimization (see http://c2.com/cgi/wiki?RulesOfOptimization ).
-
Re:Or...
I see it less of a hobby, I see it as lazy asses that can't be fucked to get off the couch and walk 5 feet to a light switch.
This is exactly the kind of laziness that makes for excellent programmers (or at least perl programmers: http://c2.com/cgi/wiki?Lazines...). The definition of Laziness from the 2nd edition of the camel book:
The quality that makes you go to great effort to reduce overall energy expenditure. It makes you write labor-saving programs that other people will find useful, and document what you wrote so you don't have to answer so many questions about it. Hence, the first great virtue of a programmer. Also hence, this book. See also impatience and hubris.
The example you provide is a great of example of an incomplete, misconfigured, or broken by design system. If the end result is more effort than before, then it wasn't automated. The "clapper" works better than using your smartphone to twiddle light switches manually.
There are a bunch of parts to a well implemented home automation system. If any one of them is missing or incomplete, then it's going to suck and waste your money and time. The hardware and the controllers need to be in place, of course. If you don't have controllers for everything (or at least most things), then it's going to feel incomplete and it won't behave well. Once you have controllers for most things (or most things of a class, like for most of your lights), then they need to be automated in some way. Using your phone or tablet to manually trigger events is a fine *addition* to the norm, but that's not automated. Using presence information (motion sensors, rfids, cameras, light sensors, etc etc) would start to automate things, as would timers and many other hooks.
Getting all those set up nicely takes significant work, which is why many people stop at just being able to click on things on their phone which is, as you noted, pretty useless. Laziness isn't the problem, it's the solution. You need an extremely lazy mindset to go through the additional effort so you don't ever have to touch the switch again. This is all too much for most folks.
Where I think the automation CAN make strides with average folks is when it ties together multiple activities, orchestrating more complex results via a single trigger. For example, there are smart switches that can control multiple lights and be programmed for various sets and moods. You'd still click the switch, but it'd take care of many changes via one trigger. The fairly dumb smart phone app control could also be used to do this with IoT devices. Another area which should be pretty obvious is for your TV/Entertainment system - click one button and have your receiver change inputs to your PS3, turn on the TV, change TV input, adjust volume, change TV brightness, dim the lights, put the dvr into low power state, and set an alarm for 1hr from now so you don't keep playing all night. This has all been possible for ages with cheap equipment... it just takes some work with the initial setup. If all these various parts start to get some standard API's, maybe some apps can come alone to make it easier for normal people to pull off stuff like that.
-
Re:Yeah, article & responses are sad; blame O'
BTW, my own current work on all that, just checked in a new update to a version of the Pointrel System yesterday which I am please with conceptually. I use it here:
https://github.com/pdfernhout/...But the main repository for that version of the Pointrel System is here:
https://github.com/pdfernhout/...It has ideas in it that could be useful for a Simple Federated Wiki like Ward is working towards and other knowledge sharing tools beyond that. At the core of this version of the system is the idea is document "envelopes" which wrap JSON objects and supply indexed metadata including arbitrary triples and also supply a document ID, where you can post new versions of a document with later timestamps to change the indexing of them or the content. This is just my own twist on a lot of ideas that have been running around for a long time (including in CouchDB, MongoDB, RDF, Wikis, git, and my own previous work). Inspiration often ping-pongs back and forth between people or indirectly across networks.
Anyway, I'd say Ward Cunningham's "Wiki Way" feels somewhat more like Stallman's ideals than O'Reilly's "Open Source" ideals, even if it is different in its own way.
http://c2.com/cgi/wiki?WikiWay
http://c2.com/cgi/wiki?TheWiki...
http://en.wikipedia.org/wiki/W...However, there are truths to what all of these people have to say from their different perspectives, whether about ideology, practice within pragmatic current politics, or community tools. It can be hard to put them all together.
-
Re:Yeah, article & responses are sad; blame O'
BTW, my own current work on all that, just checked in a new update to a version of the Pointrel System yesterday which I am please with conceptually. I use it here:
https://github.com/pdfernhout/...But the main repository for that version of the Pointrel System is here:
https://github.com/pdfernhout/...It has ideas in it that could be useful for a Simple Federated Wiki like Ward is working towards and other knowledge sharing tools beyond that. At the core of this version of the system is the idea is document "envelopes" which wrap JSON objects and supply indexed metadata including arbitrary triples and also supply a document ID, where you can post new versions of a document with later timestamps to change the indexing of them or the content. This is just my own twist on a lot of ideas that have been running around for a long time (including in CouchDB, MongoDB, RDF, Wikis, git, and my own previous work). Inspiration often ping-pongs back and forth between people or indirectly across networks.
Anyway, I'd say Ward Cunningham's "Wiki Way" feels somewhat more like Stallman's ideals than O'Reilly's "Open Source" ideals, even if it is different in its own way.
http://c2.com/cgi/wiki?WikiWay
http://c2.com/cgi/wiki?TheWiki...
http://en.wikipedia.org/wiki/W...However, there are truths to what all of these people have to say from their different perspectives, whether about ideology, practice within pragmatic current politics, or community tools. It can be hard to put them all together.
-
Re:Is self-employment for everyone?
Stock ownership is a form of business ownership that doesn't require you to be "self-employed". For class-determining purposes it doesn't have to be stock in the business that employs you, either. Just so long as you're getting some of the benefits of being "the employer"
...but not enough that dividends alone are enough to live on. In that case, what distinguishes someone who owns one share of stock in one company from someone who owns a substantial portfolio? Market cap divided by the number of employees a business has, or some other metric?
That's all really much less important than things like homeownership
So how should one reasonably become a homeowner in a high cost of living area such as the Bay Area or New York, NY? Does the first step involve moving to some other city where your profession is practiced but which has a lower cost of living?
the debt you owe (rent) on that borrowed property
With the shift from allodial title to fee simple, even homeowners still pay rent on property that they're borrowing from the county. Some have to pay additional rent to a homeowners' association.
E.g. a homeowner who is in terrible debt otherwise is still clearly lower class because they're still having to borrow capital
How much debt is "terrible"? Must one complete a Total Money Makeover (as Dave Ramsey called it) and begin to live off the credit grid before entering the middle class? It might sound like I'm picking nits, but if people start talking about the middle class before defining how much capital that entails, they'll just talk past each other.
-
Re:Never Use Goto
Then how do you cleanly handle a function that needs to acquire N resources where any one of the acquisitions can fail -- and it needs to clean itself up on failure (and possibly on success)?
The only non-goto answer I've seen so far is to have ever deeper nesting of if's (with a return buried in its depths if the resources should be held on success), followed by a bunch of unwinding else's that contain and separate the error handling in else's and far away from the error detection (with a different return path when the resources are held on success).
Such coding contains a bunch of anti-patterns: ArrowAntiPattern and rejects the use of GuardClauses and HandleErrorsInContext.
Meanwhile, the goto version does exactly the opposite -- it doesn't have ever deeper nesting of the common successful path, it uses guard clauses to abort further execution upon error detection, error dispatching (and any in context handling if necessary) is easily done and you can jump to exactly the right section of cleanup code and it is easy to have a single exit point for the function after all the cleanup code at the bottom of the function.
-
Re:Never Use Goto
Then how do you cleanly handle a function that needs to acquire N resources where any one of the acquisitions can fail -- and it needs to clean itself up on failure (and possibly on success)?
The only non-goto answer I've seen so far is to have ever deeper nesting of if's (with a return buried in its depths if the resources should be held on success), followed by a bunch of unwinding else's that contain and separate the error handling in else's and far away from the error detection (with a different return path when the resources are held on success).
Such coding contains a bunch of anti-patterns: ArrowAntiPattern and rejects the use of GuardClauses and HandleErrorsInContext.
Meanwhile, the goto version does exactly the opposite -- it doesn't have ever deeper nesting of the common successful path, it uses guard clauses to abort further execution upon error detection, error dispatching (and any in context handling if necessary) is easily done and you can jump to exactly the right section of cleanup code and it is easy to have a single exit point for the function after all the cleanup code at the bottom of the function.
-
Re:Never Use Goto
Then how do you cleanly handle a function that needs to acquire N resources where any one of the acquisitions can fail -- and it needs to clean itself up on failure (and possibly on success)?
The only non-goto answer I've seen so far is to have ever deeper nesting of if's (with a return buried in its depths if the resources should be held on success), followed by a bunch of unwinding else's that contain and separate the error handling in else's and far away from the error detection (with a different return path when the resources are held on success).
Such coding contains a bunch of anti-patterns: ArrowAntiPattern and rejects the use of GuardClauses and HandleErrorsInContext.
Meanwhile, the goto version does exactly the opposite -- it doesn't have ever deeper nesting of the common successful path, it uses guard clauses to abort further execution upon error detection, error dispatching (and any in context handling if necessary) is easily done and you can jump to exactly the right section of cleanup code and it is easy to have a single exit point for the function after all the cleanup code at the bottom of the function.
-
The arrow anti-pattern
Pass your post through a prettifier and see how the arrow anti-pattern becomes clear.
-
How is WA+OR not a "predefined region"?
We disagree on the definition of "predefined region". In what way is the Pacific Northwest not a recognized "predefined region"? Based on the existence of this article, the region defined as Washington and Oregon appears to have "received significant coverage in reliable sources that are independent of the subject".
-
Re:Never used recursion
I don't agree fully with the post but:
http://c2.com/cgi/wiki?TailRec... gcc does it, LLVM does it. But you certainly can find an obscure not gcc based compiler for a niche processor, OS, that not does it. -
Answer: read slashdot for long enough
See: Working Effectively with Legacy Code book review (2008) for a book of that title by Michael Feathers (PDF article) on that very topic.
There is even a summary of key points at Programmers @ StackExchange. Hundreds if not thousands of programmer's blogs address this very topic.
You're welcome. Now get back to work.
-
Re:Brits hated him so much....
Psychological manipulation or social influence is not necessarily negative depending on how it affects YOU. If it benefits you then it is in your interest to promote it. Do you understand? I know of Tommy Flowers, and you know of Tommy Flowers, and when somebody reads this they know of Tommy Flowers and the secret will eventually spread . But for now the masses will believe a gay man Alan Turing, was the person responsible for shortening the war. it benefits gay people and it is meant to make heterosexual people ashamed for mistreating homosexual people. http://c2.com/cgi/wiki?TommyFl... ( On the other hand, in early 1998 Tommy Flowers said with great feeling to a friend of mine, when Nic referred to AlanTuring's "great contribution" to Colossus (and I accept Colossus and the enigma code breakers had a key role in the Allies defeating Hitler): "Alan Turing had nothing to do with it!" It seemed like it wasn't the first time he had heard of Turing's "great contribution" to the engineering and practical breakthroughs that nobody now questions Tommy was crucially involved in - and he was quite keen to put the record straight! ). https://duckduckgo.com/?t=ouk&...
-
Re:Speaking of mistakes
There is a Wiki, the original one. Wiki is its name. It's quite good too, at least if you're interested in software development.
-
Re:It depends
That reminds me of this spoof: http://www.c2.com/cgi/wiki?Ayn...
-
Re:betteridge's law of headlines
Probably for the same reason that Layne Thomas gets the credit for all debates being ultimately over defining a word. It's been around longer: "misunderstood words" in Hubbard's Study Tech method (1972) and "rectification of names" in Confucius's philosophy.
-
Define fed, clothed, sheltered, and schooled
the simple test should be: is the child fed, clothed, sheltered, and schooled?
Nothing in law is as simple as that. You must first define each of those four factors. Let me give you an example related to "schooled": Some countries are known to haul homeschooling parents off to prison unless one parent has an accredited education degree and a valid teaching license. In fact, most political debates can be rephrased as debates over defining words.
-
Instant R.Y.O. language?
How about a "language" that makes it easy to generate a language how I personally want it so that I'm not stuck with somebody else's goofy preferences:
-
Re:Self-defeating name
And you have Postgre nasal drip. "Microsoft" is also a goofy name, I would note, and that didn't seem to slow the company. It's certainly not very manly.
If you want ideas for future OSS tools, here's a free list:
http://c2.com/cgi/wiki?FutureO...
I like "GazundWidth" and "GezundHeight" myself. "OraFiss" is also cool.
-
Re:That's not even why OOP was created...
You need to look at the history of programming languages yourself, I'm not sure where you got that information, but it's all jumbled. For example, the message passing paradigm was in the language where "Object Oriented programming" was coined. There is a lot of good stuff Here.
-
Re:another article by the same guy
-
"Is" can mean identity or subset
In colloquial English, "is" can refer to identical sets or to subsets. Set theory notation is more rigorous: A is a subset of B (A c B) if all elements of A are in B, and A equals B (A = B) if A c B and B c A. Consider these five sets of actions:
- C is the set of copyright infringements.
- P is the set of patent infringements.
- I is the set of infringements, which contains C union P.
- L is the set of larcenies.
- S is the set of acts designated "stealing" by copyright maximalists, which contains I union L.
Obviously, copyright infringement doesn't equal patent infringement (C != P). Yet we say copyright infringement "is" infringement in the sense of a subset (C c I): all actions in C are in I. It's also true that infringement doesn't equal larceny (I != L). The question here is one of definition: whether "stealing" is a good name for some set that contains I union L. If this is true, then "stealing" is broader than larceny, and copyright infringement "is" stealing (C c S).
-
Define AAA
Has there been ANY 'AAA' title released in the last 10 years that the CEO of the company that published it shouldn't have made [an apology like this] after it's release?
The answer to that question depends on whether you consider first-party Wii and Wii U games to be "AAA". Without defining AAA, we'll just talk past each other.
-
Re:Real cross-platform is HARD
The framework must provide for platform-independent ways to do things so that it is easier/shorter to do it the right way than using a naive but non-portable approach.
You're totally right. Otherwise, it flies in the face of the virtue of laziness. If the easiest way to do something is cross-platform, you'll write all your code to be cross-platform whether the project requires it or not. Requirements, after all, always change;)
-
Re:POSIX open, named by Stallman, predates SCO
Also, POSIX predates SCO (barely)
There appears to be a lack of clarity in how we define "SCO". I was using "SCO UNIX" to refer to all UNIX variants containing code derived from AT&T UNIX, as opposed to those deriving from 4.4BSD, which excised all AT&T code except for the API now known as POSIX. AT&T later sold UNIX to Novell, which sold it to SCO, hence "SCO UNIX". You might be referring only to SCO OpenServer, which is based on Xenix, Microsoft's port of AT&T UNIX code to the IBM PC architecture.
so both implementations derive from the standards
And Android derives from portions of The Java Language Specification.
-
Re:Take away for me
That is a great point !
Yes, they really need to look at the same programmer across procedural, functional, and OOP languages. In my experience programmers that don't understand how to use C well tend to be very poor Java, etc. programmers.
:-( Understanding low levels such as memory usage and cache performance, the ability to read assembly, and knowing concepts such as register spell and branch prediction, while not "necessary" for the modern programmer all help you to be a much better programmer by understanding what the machine is doing. People who suggest "Just throw memory / cpu / hardware at a problem" are piss-poor programmers.However consider the majority of programmers 0.5% can't even grok a simple 4* case if-then statement of FizzBuzz
....* http://blog.codinghorror.com/w...
* http://c2.com/cgi/wiki?FizzBuz... ... then I would say the bigger problem is teaching programmers to have critical thinking. Stop over-engineering everything. Here is an article on "Criminal Overengineering."* http://coderoom.wordpress.com/...
This is the reason modern programs chew up megabytes of RAM and people _still_ are waiting on a GHz CPU.
Somewhere along the way we lost the importance of K.I.S.S. -- Keep it Simple Stupid.
--
* The 4 cases are:
1. n mod 15 = 0, print fizzbuzz
2. n mod 5 print buzz
3. n mod 3 printf fizz
4. default: print n -
Re:THIS JUST IN...
vi is still better.
Everyone knows that Ed is the standard text editor.
-
Re:Yay :D
Enabling the video camera or microphone won't actually help. You'd need both to determine if the user was actually using their phone, and the processing cost needed to perform that kind of recognition on a large scale would be so ridiculously expensive that it would undermine any additional benefit from the research.
Statistically, a user waiting 60 seconds before searching is uninteresting. It's an outlier, so the developers really don't care what happened. Far more useful would be an observation that 75% of users use the center enter key to submit queries, 20% use the mouse, and 5% use the enter key on the numeric keypad, combined with an observation that 80% of mouse users move the cursor around after a period of inactivity before clicking. To a design team, that means that the users' attention has shifted to typing, and they've forgotten where the mouse is. Perhaps the mouse should highlight in some way when it first moves...
Similarly, the actual content of searches doesn't matter from a UI perspective. If you're having trouble searching for something, it doesn't matter if you're looking for instructions to knit a sweater for a kitten, or the mixture used in the Oklahoma City bombing. On the other hand, the exact search text is useful to the folks developing the search engine, so they can put the most relevant results at the top of the list. Of course, the search engine team doesn't care about how long it takes the user to find their mouse cursor.
This leads to one of the most entertaining aspects of the whole privacy debate. Gathering data is easy, but proper anonymizing is hard. Practically speaking, the analysis of the gathered data is often easier than ensuring that data is anonymous. For example, there are certain combinations of ZIP code and state that identify as few as 30 people within the continental United States, so any data set that includes both ZIP code and state is probably not sufficiently anonymous. It's far easier to simply collect only what's needed for a particular team, and make sure nothing else can be connected to that record. One database records that somebody searched for "geriatric german grandmas spanking spanish men", and another knows that user submitted a search with a mouse, and perhaps another knows that the user is located in western Iowa. With no way to connect the records, the business need is fulfilled and the user's privacy is effectively safe... but the legal disclosure will still simply say that the company collects all those things, stirring up a nice panic.
-
Re:And?
From what I understand, Intel is working towards riding the Android train, and they supposedly have more engineers working on Android than even Google does.
...That's not hard. HTC even has had more software engineers working on Android than Google does, for far longer than Intel has. Google seems to think that if it increases the number of developers working on the Android team, it could make things worse.
This is not to say that your main point is not valid. It is. Intel is indeed investing heavily on Android. And thank god that it has. The much faster x86 Intel emulator has actually been a life saver for many Android Developers.