Domain: c2.com
Stories and comments across the archive that link to c2.com.
Comments · 1,108
-
Instant Language Builder [Re:Too bad]
check a bunch of boxes for common language conventions and then automatically build a compile
That idea was pondered at C2: http://wiki.c2.com/?InstantLan...
-
Larry Wall said it betterThis is the first of The Three Great Virtues of a Programmer.
Laziness
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.
-
Re:Good thing they can't do this to C.
You didn't see ADA and OSI TP4 take off? Dude, where have you been? We totally all use DECNet PhaseV, now. I'm joking, of course (you have to say this on
/.). You should check out this old page old ADA discussion. It's right in the same vein and fleshes out the reasons why committees almost always design pretty crappy technology even after better alternatives dominate. Remember the retards in the late 1990s who wanted to make OSI network stacks replace IPv4? They were such passionate handwaving assholes who just couldn't understand why the world didn't want to be told how to do technology by some group of passionate handwaving assholes. The more things change, the more they just fucking don't. -
Re:PHP in a good language
Even PDO doesn't support passing an array as a parameter for, say, the right side of SQL operator IN. Sometimes it can be easier to make a loop that does $db->quote() and then always use that loop for IN than to generate a string of question marks of the appropriate length and ensure that the parameters before the list, the parameters in the list, and the parameters after the list are always bound in the same order.
Yeah, that is mildly annoying, but that's a pretty niche feature missing. I've wanted it maybe a half-dozen times in my career. (And I think it's a limitation of the underlying C APIs as well?)
Which doesn't help if you happen to have only one user, or a small number of users one at a time, doing relatively heavyweight queries. You might end up doing cURL on localhost to spawn a bunch of subprocesses.
If you *need* to spawn subprocesses, there is a module for it. It's not something 99% of users ever need to do, and is usually a sign that you're either using the wrong language entirely, or are architecting things completely ass-backwards.
Language design, as I said, is as much about choosing what features to leave out as it is what features to add. PHP has very, very limited multiprocessing support. But C has no eval() function, and anyone asking for it would rightly be asked what the hell they were thinking. Likewise, I think it's fair to say anyone looking for top-notch multiprocessing support in PHP is doing something at least a little fucky. I've done it myself, once or twice, but it was always something PHP was not meant to do.
A numeric string in PHP behaves like an int in some contexts but not in others. This inconsistency leads people like her* to prefer languages that use strong dynamic typing, such as Python.
Preference is fine, but she is declaring a language fundamentally flawed because it doesn't match her personal preference.
Now, it is a valid complaint that PHP will often make counterintuitive or even lossy conversions, with barely a notice logged. Were I to design a PHP replacement language, I would certainly make it so that only lossless conversions can happen implicitly (eg. string "0.0" can convert to float 0.0 but not int 0). But that is still a matter of preference, and PHP's "let's try to make it work" philosophy is at least consistent here.
As have I. But the messy part is that references to functions are stored as strings as opposed to being some other specialized type, as in C (function pointers), Python (callable objects), and C++ (both of the above). In addition, prior to PHP 7, it was impossible to catch a call to a missing function as an exception; programs had to use the look before you leap (LBYL) anti-pattern.
On the other hand, using it as a string allows some rather useful tricks. Like that pseudo-polymorphism thing I mentioned - I was writing a report generator, and needed three functions implemented for every report type. I *could* have just written one function, and made a giant switch statement for the two-dozen report types, or I could have shoehorned them into classes and objects... but instead I just set up a naming convention, and did some string concatenation to get the right function names.
* Eevee's name is Evelyn according to her Twitter account. I know her from a Discord server about Game Boy development.
Noted, thanks.
-
Re:PHP in a good language
For instance, mysql_real_escape_string() was always a hack. The actual solution was proper placeholder syntax [...] We got that (in I think PHP5) with PDO, which is also database-agnostic.
Even PDO doesn't support passing an array as a parameter for, say, the right side of SQL operator IN. Sometimes it can be easier to make a loop that does $db->quote() and then always use that loop for IN than to generate a string of question marks of the appropriate length and ensure that the parameters before the list, the parameters in the list, and the parameters after the list are always bound in the same order.
The lack of parallel programming is because it's designed as a web server scripting language. You extract parallelism by having multiple requests from multiple users
Which doesn't help if you happen to have only one user, or a small number of users one at a time, doing relatively heavyweight queries. You might end up doing cURL on localhost to spawn a bunch of subprocesses.
in weakly-typed languages, if you can convert it into an int, it *is* an int.
A numeric string in PHP behaves like an int in some contexts but not in others. This inconsistency leads people like her* to prefer languages that use strong dynamic typing, such as Python.
"using a variable as a function name". Which, if I understand what he's referring to right, is again a feature. You can use a variable to get a function name - "$foo()" will take the string value of $foo, and look for a function with that name. I've done pseudo-polymorphism this way.
As have I. But the messy part is that references to functions are stored as strings as opposed to being some other specialized type, as in C (function pointers), Python (callable objects), and C++ (both of the above). In addition, prior to PHP 7, it was impossible to catch a call to a missing function as an exception; programs had to use the look before you leap (LBYL) anti-pattern.
* Eevee's name is Evelyn according to her Twitter account. I know her from a Discord server about Game Boy development.
-
Re:Don't give professional tools to amateurs
By the original definition, "low-level languages" were machine code and assembly. That's it. LLL's were bound to the architecture; HLL's were not. That's why it's silly to call C a "portable assembler," it's a contradiction in terms. Assemblers by definition require ISA-level control and one-instruction-per-statement.
As for HLL's, the term has shifted somewhat. I suggest reading this article:
http://wiki.c2.com/?HighLevelLanguage
The term "High Level Language" was originally used to distinguish things like FortranLanguage from things like assembly language. Therefore, originally "high level language" very much included Fortran, Basic, COBOL, PL/I, and a little later, C.
Observing that such languages are not very high level compared with e.g. Prolog, YACC, Lex, ML, Haskell, etc, some people started calling the older high-level languages "low-level languages", or qualifying them as "higher level languages", etc. This is often erroneously thought to be revisionism, but is the very basis of much of Computer Science, and such terminology while not universally accepted among all programmers, is at least understood by those with a broad understanding of the relevant foundations of the topic at hand.
A more diplomatic approach to the topic, while sacrificing accuracy to appeal to the less-disciplined mind, would be to simply call more sophisticated languages "very high level languages", if a distinction is needed, rather than trying to snidely imply (or state outright) that there's no difference between assembler and Fortran, Basic, COBOL, PL/I, C etc.
No one who has done extensive programming in assembler would ever make the mistake of calling such things "low level languages"; there is a very sharp and painful difference.
-
Re:You can't get around the time investment
What you speak of DOES exist. Not just the toy drag n' drop toy languages nobody uses, but also actually high powered layman's programming tools that work very well and are extremely widely used. These tools are called Excel and Access. Using these two, an accountant or middle manager can model a seriously complex business process using simple and straightforward application of logic. They can get a GUI screen and everything!
And they do. Often. And I see the things they make. The terrible, awful things. See, usually the people using these tools are very... programming impaired. They don't understand abstraction. They can't design an interface. They have absolutely no concept of the QualityWithoutaName, and if you try to educate them they shut down. They're a man who learned to walk by running a marathon. They learned how to run at a decent jogging pace in a single direction, and scoff at you when you suggest learning how to walk or stand still without falling over. The solutions they make are incredibly fragile, and they become slaves to their own monstrous process. Then an actual developer is brought in to parse the lovecraftian nightmare and write something sensible.
Once you get over the syntax, actually learning software development is really about learning how to model problems effectively, write code that is highly maintainable, and communicate concepts effectively in a team of other developers and to the end users. Understanding the sometimes esoteric bits is a given! It's a baseline, like how a carpenter knows how to hit a nail so it doesn't bend. Suggesting that giving nail guns to laymen will make them good carpenters is simply missing the point of what makes a good carpenter's work good!
-
Re:Is this going to be worse than the Russian brea
I'm a business user. I can call 24x7 and within 60 seconds be talking to a real English speaking tech about bits and bytes, DHCP, speeds & outages, or whatever connectivity issues I can think of and we can talk in real-time -- no scripts, "I'll research this bite thing you speak of and get back to you", or anything like that. One guy was surprised about my internal network config (he'd SSHed into the router) and we talked a few minutes about pros and cons.
The worst I've had is like a 90-second hold researching how bad an outage was (storm hit multiple points and devices) and trying to determine an overall ETA. They were close --within 2 hours -- and I suspect they were pulling a Scotty. -
Re:interesting
Are you sure it was a QNX demo or the Amiga DE SDK based on TAO intent OS? I still have the Amiga SDK manual for that OS and probably the DVD is hidden somewhere around my house. I actually liked that OS.
-
1970's
Many have noticed that almost all big software ideas were invented/discovered by the 1970's and that most new stuff is merely refinements of those ideas.
You can add neural networks to that list. The recent "deep learning" networks are just a smart application of prior ideas, with a big dose of computing power not available in prior eras to both test neural network configurations and run the AI applications.
If you want startup ideas, I'd suggest dynamic relational. It's not revolutionary, but a tool I wish existed for rapid prototyping and rush-job RAD. (It's not my fault it's a rush job, I'm just following PHB orders.) You can make money by releasing an open-source version, but also sell an "enterprise" version and/or support contracts, similar to the PHP Zend model.
Another idea is to follow ARM and Android OS model by creating a content sharing standard to make it easier to share content among different OS's, CMS's, and social networks. It's almost like a file system standard, but with better or more consistent meta-data, including more powerful categorizations that cross beyond the mere hierarchies of files. Most content has or needs elements such as: title, synopsis, author, categories (list), intended audience (personal, friends & fam., work, public, etc.), create date, change date, expiration date, etc.
The company wouldn't charge to use the standard, but one would have to pay a fee to use the product name or get a copy of the formal specification. Big co's would typically pay to use the Foo logo, but small co's or amateurs could only say "Foo compatible" to avoid fees. (You don't have to pay Google to use the Android OS, but you do if you want to call it "Android" and use the green Android logo.)
-
APL Still A Write Only Language
source http://wiki.c2.com/?AplLanguag...
[6] L(L':')L,L drop To:
[7] LLJUST VTOM',',L mat with one entry per row
[8] S1++/\L'(' length of address
[9] X0/S
[10] LS((L)+0,X)L align the (names)
[11] A((1L),X)L address
[12] N0 1DLTB(0,X)L names)
[13] N,'',N
[14] N[(N='_')/N]' ' change _ to blank
[15] N0 1RJUST VTOM N names
[16] S+/\' 'N length of last word in nameAs mangled as the above if you look at source link with it properly formatted with the correct characters it isn't any better.
-
Re:One of the great delusions of software developm
Except that Joel thinks that he knows better the Fred Brooks
The management question, therefore, is not whether to build a pilot system and throw it away. You will do that. [...] Hence plan to throw one away; you will, anyhow.
It is interesting to note that Brooks recants this in the latest version of MythicalManMonth, where he says "This I now perceived to be wrong, not because it is too radical, but because it is too simplistic. The biggest mistake in the 'Build one to throw away' concept is that it implicitly assumes the classical sequential or waterfall model of software construction." -- The Mythical Man-Month, 20th Anniversary Edition, pg. 265 ISBN 0201835959
The problem is that the 1st version has so many hacks that it becomes unmaintainable.
There is never time to do it right, but there is always time to do it over.
-
Re: All together?
Note that for fedgov and affiliated companies, US-owned proprietary software source code may be available for review, custom compilation, etc.
Reviewing source is almost pointless. How do you know that you are looking at the real source code? Or all the source code? Or that you can really find hidden (obscured) untrustworthy code? Even if you build it yourself, you may not be totally safe.
-
Ken Thompson
-
Re:You have to look at the source
-
Re:I'll hire.
American programmers are lazy, impatient, and hubristic. That's why they're good programmers.
-
Re:Android is PC because it has AIDE
Layne's Law of Debate implies that without agreement on definitions, a debate can't proceed fruitfully. So let's get things cleared up first:
Android is a toy operating system.
I put toy operating system into a web search engine and got a bunch of links about hobbyist OS development. Android certainly isn't that. So what do you mean by a "toy operating system"?
-
Lines of Code
Definitely heard of it, for sure. There's no particular reason to think it has much to do with programming performance.
-
High-brow fails [Re:It depends on the use]
"High brow" programming has never proven itself in practice for multiple projects. There's never been a case where top-notch, highly-educated programmers are put into a single organization such that it consistently out-competes the "medium-brow" shops. They may be paid more than average, but in theory they'd be far more productive using high-brow techniques such that it overshadows their higher salaries.
Some bring up Paul Graham and his e-stores company, but that was a one-shot deal. Once the company became established it abandoned Lisp. Quick-to-market entrepreneurial may benefit from it, but I'm talking rank and file projects.
Related discussion:
-
Re:Holy Blinking Cursor, Batman!
I hire C++ developers. I give a simple coding test to all applicants. 95% of all coders fail even the simplest of tests. There's a reason that trivial tests like FizzBuzz are used during programmer interviews. That's because most "programmers" are utter crap. They don't know their tools. They don't know the language that the program in. They don't stay up-to-date. They cannot reason about problems. 95% can't do the simplest of problems. You have to really deep before you find people who can talk about design principles, design by contract, etc.
"Tell me what a class invariant is."
Blank stare.
"What is the Liskov substitution principle?"
Deer in headlights.
Thank you for your time.
I work in the financial industry. We pay shit-tons of money if you know how to engineer software. But even here the talent pool is miserable.
-
Cargo Cult Metrics without scienceThe Road to Performance Is Littered with Dirty Code Bombs
Unexpected encounters with dirty code will make it very difficult to make a sane prediction.
Dirty code is defined as ' overly complex or highly coupled.' As a programer you are expected to deliver X number of features by Y date. Unless one of those features is 'simple and loosely coupled code' what does that have to do with predicting anything? For performance you don't predict. Experiments are the only thing you have that work: test and change and re-test and un-change and re-test, endlessly. Anything else is voodoo programming, not to insult the pracitioners of Santaria, Vodou or Hoodoo.
How about predicting the schedule? I recall that Steve McConnell once joked that to get better at estimating we need to get better at estimating. (This may have been someone else.) Greg Wilson showed we can do this in programming, and Computer Science in general. We only have to do scientific experimentation with various methods. We throw away what doesn't work (instead of writing pulpy business books to bilk people out of money.) But you'll still have to run a lot of tests to do that, too.
It is not uncommon to see "quick" refactorings eventually taking several months to complete. In these instances, the damage to the credibility and political capital of the responsible team will range from severe to terminal. If only we had a tool to help us identify and measure this risk.
It is my opinion that any refactoring that cannot be done by an automatic program isn't refactoring. The original definition of refactoring is just 'factoring' or re-organizing the code. It is not a re-writing as in an 'several months' effort.
Misuse of a sexy, trendy name from the 90s does not change this. All re-writing suffers the risk of second-system syndrome and not in the throw-one-away sense of prototyping. Do you have a button to press in your IDE to make the change? Do you have in mind a short sed statement, simple awk program, EMACS macros or a on-hand shell scriptlet to do the transformation? If not then you cannot get away from re-thinking the problem. This will require re-design of the solution and re-implementation of the feature. Each of these carries time risk at least as high as the original work.
What if the problem is overly complex or highly coupled? The code may merely be an expression of this. In this case only a paradigm or perspective change by the customer, developer or user can untangle the problem. The computer cannot help you do anything but automate making a mess if the problem is a mess. Changing perspective is often an unbound-in-time problem for human beings. Good luck with estimating completion dates for that.
In fact, we have many ways of measuring and controlling the degree and depth of coupling and complexity of our code. Software metrics can be used to count the occurrences of specific features in our code. The values of these counts do correlate with code quality.
In fact, Greg Wilson showed in his presentation that almost every metric on the market when analyzed showed no better and usually equal predictive power as simple counts of Lines of Code.
The situation in programming is almost as if more code equals more bugs while less code equals less bugs.
This seems obvious and
-
Stupid and Lazy
"Be Stupid and Lazy" sounds a lot like Lary Wall's "Three Great Virtues of a Programmer: Laziness, Impatience, and Hubris" http://wiki.c2.com/?LazinessIm...
Of course, maybe the "Be Stupid and Lazy" author was just being lazy
:) -
Crockford's Legacy: It's time for E!
Okay, so this might be a bit of a ramble. Hi, I'm one of the developers of Monte https://monte.rtfd.org/, a new programming language based on E. E http://erights.org/ is a language from the 90s. Crockford worked on E. E's TermL mini-language became JSON. Another person who worked on E was Mark Miller. Miller's thesis project was formalizing and describing systems built with E. Crockford and Miller both are part of the committees that steer JS.
Now, to bring it all together: Object capability security is a security discipline based on the principle of least authority and perfect encapsulation. It allows us to build secure distributed computations with pretty good security properties; wf-stringe can prove that certain data cannot be exfiltrated, that certain I/O cannot happen, and that certain computations are arbitrarily safe to evaluate. It's not perfect, but it's a massive improvement on the state of things.
E and Monte, as well as a few other languages like Caja, Pony, and Waterken, are object-capability languages. Just like languages without manual memory management cannot misbehave in certain ways, these languages also promise that they cannot fail in certain desirable security-related ways.
Crockford, Miller, and others have been deliberately steering JS towards more capability-safe constructions. The object model has been tightened up, and tools like weakmaps, promises, and "template strings" (we call them quasiliterals in the literature) have been added. However, JS is still defined by its weak points, and those points are weak indeed.
Obviously, my bias is towards Monte. It's my preferred language and I want it to be popular. But, more importantly, I want the ideas that went into Monte to be popular. So, in that spirit, I'm going to give you a short list of questions. I want you to think, "How can I do that in my favorite language? Why would I want it?" Monte is meant to be the next Blub http://wiki.c2.com/?BlubParadox, the next language that is mediocre but built on a good foundation, and part of that is trying to see how Monte answers questions like:
- The encapsulation problem: How do I produce an object which perfectly encapsulates a value; i.e. the object refers to a value but referring to the object is not sufficient to gain reference to the value?
- The concurrency problem: How do I run two interacting plans of code at once?
- The privacy problem: How do I prove, (in)formally, that a value cannot be exfiltrated from my program except through designated channels?
- The confused deputy problem: What ambient authority is assigned to a "deputy", a program which can be fooled into misusing that authority?
...I've gotta stop writing blog posts on not-my-blog. -
What comes around
Paper [...] is the focal point, while all of Dropbox's other services and features now plug into and augment the experience.
Sounds like OpenDoc...
-
Re:Dynamic Relational [Re: That's not how it works
Here's one description, but it's kind of meandering:
http://wiki.c2.com/?DynamicRel...
I'm working on a shorter description that I plan to put on github.
LOL couldn't stop laughing.
-
Dynamic Relational [Re: That's not how it works...
Here's one description, but it's kind of meandering:
http://wiki.c2.com/?DynamicRel...
I'm working on a shorter description that I plan to put on github.
-
Re:What the Idiotic Hell./
That would be lovely, if it were actually true.
Well, that statement could be interpreted in multiple ways. If you want a job, you have two choices: Go for what most employers are asking for, or go for what some employers are asking for but aren't currently getting. Having said that, popularity of a language seems inversely related to the usefulness of a language in many cases.
Oh, and while we're here, in what possible universe are Java and C# "C-based"?! Wadler's Law in action...
-
Humble?
And here you thought I was a humble guy...
Can this really be the same Larry Wall who's famous for promoting hubris as a virtue?
-
Re:Arguing over the subjective
Emacs
... Use a real editor kid..."When I log into my Xenix system with my 110 baud teletype, both vi *and* Emacs are just too damn slow. They print useless messages like, 'C-h for help' and '"foo" File is read only'. So I use the editor that doesn't waste my VALUABLE time...Computer Scientists love ed, not just because it comes first alphabetically, but because it's the standard. Everyone else loves ed because it's ED!... When I use an editor, I don't want eight extra KILOBYTES of worthless help screens and cursor positioning code! I just want an EDitor!! Not a "viitor". Not a "emacsitor". Those aren't even WORDS!!!! ED! ED! ED IS THE STANDARD!!!"
-Ed is the standard text editor. -
Re:Cue the lawsuits.
When I read the article the other day about MS C++ compiler adding in telemetry info into programs compiled with it as a default option without any notice that it was doing it and having to explicitly turn it off, I was glad I hadn't continued getting new versions of VS.
Bloody hell, I'd not heard of that.
Seems that we're now only one step away from The Ken Thompson Hack, that's if we're not already secretly there already.
-
Re: Yes
It's worse than that. Even having the complete source code offers incomplete protection unless you are sure of your entire build toolchain. See Ken Thompson's hack: http://c2.com/cgi/wiki?TheKenT...
If you extend this to hardware, that's a whole nother layer to the crazyness.
-
Re:It's good to ridicule bad technology like JS.
When you say "Rigid class hierarchies make no sense.", you actually mean "Class hierarchies make no sense to incompetent programmers."
I guess Gerald Sussman must be an incompetent programmer, then!
If you and programmers like you don't know how to use classes, inheritance, polymorphism, traits and the other features of real class OO, then it's a problem that lies solely with you. The rest of us know how to use these tools properly. They make sense to us.
Sounds like blub to me.
Instead of crying about how stuff you apparently don't understand "makes no sense", try to learn about it. You'll quickly see, like the rest of us intelligent programmers have, that your prototype OO hacks are just that: hacks. They're also completely unnecessary for people who understand class OO.
Fuck off.
-
Re:Ken Thompson Attack
Boy this is at the scale of the Ken Thompson attack. Compilers that insert backdoors
http://c2.com/cgi/wiki?TheKenT...
No, I think that requires one more level of indirection -- reinserting the backdoor in the compiler when it is recompiled without the backdoor.
-
Re:Ken Thompson Attack
Boy this is at the scale of the Ken Thompson attack. Compilers that insert backdoors
http://c2.com/cgi/wiki?TheKenT...
No it's not. Ken Thompson's work was beautiful and subtle - a compiler disguised all evidence of its backdoor even when you write code to search for these backdoors or when you compile the compiler itself.
If Ken Thompson had gone on stage to say "hay guys I made a compiler which inserts a call at the entrypoint of your program" -- well, that's trivial.
-
Ken Thompson Attack
Boy this is at the scale of the Ken Thompson attack. Compilers that insert backdoors
-
Re: Honestly?
The concept of premature optimization only assumes that software will eventually achieve representative functionality. Which it does long before anyone decides that it is "done".
Deciding what level of functionality is representative enough to start optimizing is hard. That's why the rules of optimization are:
1. Don't.
2. Don't Yet (for experts only). -
Re:Ban bitcoin
Or c) you have no idea what's actually happening.
In the United States, at least, crime rates (violent and total) have dropped steadily since a peak in 1990, and most studies on the subject indicate that reporting rates are improving. This means that even though the crime rate figures match what was seen in the mid-1970s, it's actually likely that the 1970s were worse than the data shows, but we'll never really know for certain.
The idea that "crime doesn't seem to go away and terrorism only seems to increase" is the result of a few insidious biases. First is the availability heuristic, by which we rely more on recent and emotionally-charged events more than events farther in the past or less emotional. Perhaps you've forgotten the Weather Underground, or the Unabomber? We also have confirmation bias, which is why despite actual measurements showing otherwise, crime doesn't seem to go away and terrorism seems to increase. Once you have formed the opinion that the government is either evil or stupid, you'll continue to notice and accept any report of the government's failings, while rejecting any report of successes.
With that in mind, it appears that new security measures (including reducing cash transactions) are working to reduce crime, but they are not perfect or infallible... just like every security measure ever devised.
-
Implement Dynamic Relational (DRDBMS)
http://c2.com/cgi/wiki?Dynamic...
I always wanted one.
-
Sure...
Can I write the software? Oh you forgot about that little detail, eh? I guess you'll insist on it being open course, of course. Sure, nobody could every fool you if you could see the source code.
There is no way for this to be trustworthy. The system must be both comprehensible *and verifiable* by the vast majority of citizens. That means less technology. The future lies in simpler laws and rules. That's supposed to be the big draw of a minimum income - significantly reduce the complexity of government by making the rules extremely simple: everyone gets $X stipend. No welfare, old age pension, foodstamps, etc.
-
Cargo Cult Programming
By far the worst insult to be accused of is Cargo Cult programming because it says not only is the implicated incompetent they are also dishonest.
While just making a mistake is inevitable human fallibility.
-
Re:There's only one way to be sure
But do you trust the compiler used to compile the compiler?
Although I don't think, say, GCC has been "Ken Thompson hack infected," the attack a) has been used before, and b) illustrates broader principles of trust. https://news.ycombinator.com/i... -
Re:Seems to be more and more
I guess you've never heard of the infamous Ken Thompson Hack: http://c2.com/cgi/wiki?TheKenT...
Skimming through the source code is not enough. However, using Open Source enables a bunch of eyes to review the code.
-
Re:Open to Questions
Where's the suggestion box?
I have a few items:
- Have a feedback option that doesn't involve email. Have somebody actually read what's submitted.
- Fix the justoposition between "brevity is the soul of wit" and accepting Bennett Haselton's long-form rants. Either pick one approach, or devise a way to keep the concepts separate, like having a separate topic for essays.
- Resist the temptation to add to a story. The story is not the place to discuss where the editor was when he heard about the Challenger desaster or what specs are appropriate for a $50 computer. Those belong in the discussion. Perhaps give editors the ability to reserve the frosty piss, but keep stories objective.
- Keep the stories objective. If you're running a piece about one company, discuss the company's industry. If the story is about one product, discuss that product's contributions to the state of the art. If the story is about a person, describe the person's actions, but do not judge them.
- Understand what you have. This is Slashdot. We want Natalie Portman naked and petrified, covered in hot grits. We don't want attachments to Facebook, Twitter, LinkedIn, Google+, or Reddit, unless we've specifically opted in to those. We want things that are well-designed, not things from a designer. Announce your changes with a poll (perhaps restricted to positive-karma users?) and see if they're accepted by the community.
- Stay involved. You're posting pretty often now, but what about next month? What about next year? You might browse stories now and then, but will a post calling your name be noticed? Are you Kibo?
- Perennially, fix HTML and Unicode in posts. Lists that look like quotes and Unicode that looks like a simian's attempt at Shakespeare have been long-standing problems, and fixing them would go a long way toward establishing some trust with the users. Good luck with learning Perl for that.
In short, take care of us, and we're happy to have you here. Our corporate overlords are dead. I, for one, welcome our new corporate overlords.
-
I'm old enough to remember
I'm old enough to remember when Java was supposed to be "write once, run everywhere", and all that downloadable code was supposed to be sandboxed so the security hassles were fixed. Maybe I'm a little fuzzy here, but all that was supposed to arrive on a pony.
-
Re:Specialization
If you choose good quality software components, you don't need to have someone on-site who understands their inner workings, just the interface.
If there are no leaky abstractions.
-
Re:This is why I bought a 100% free libreCMC route
Now you just have to hope that the compiler hasn't got a backdoor generator built into it (the Ken Thompson hack)...
-
Customizable
How about allowing the user to customize the interface to some extent. Here's some notes that use web browsers as examples:
-
Re:NoSQL is amateur land.
That question is about 5 levels above the Fizz Buzz test, so I'm not surprised that you had so much trouble finding people who could pass your test. People who work with databases should definitely be able to answer that question, but it's also common enough to find people with computer science degrees who've never had to deal with a database in their life.
Most computer science degrees are only going to have a single course on databases, and it's probably easy enough that you can get through by kind of understanding how databases work just enough to pass the exam, and proceed to forget it all a couple weeks later. There are plenty of programming jobs out there that don't require databases. There's also plenty of programming jobs where everything has been blocked off, such that the only way to access the database is from a defined list of stored procedures. So it's completely believable that a very competent programmer might just have not had any exposure to databases and might struggle with a question like this. Just as some other people would have trouble answering questions dealing with something like how sorting algorithms work. Because the last time we had to do it was during some second year computer science course, and from that point on all we were concerned with was calling the correct function to get the job done.
-
Re: Look at the bean counters for your answer
So, you're one of those.
-
Re:Ada had this in 1995It reminds me of this quote:
"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."