?

Log in

No account? Create an account
 

Very Interesting - ProWebDev

About Very Interesting

Previous Entry Very Interesting Dec. 6th, 2004 @ 06:47 am Next Entry

From: CatB: On Management and the Maginot Line

"My friend, familiar with both the open-source world and large closed projects, believes that open source has been successful partly because its culture only accepts the most talented 5% or so of the programming population. She spends most of her time organizing the deployment of the other 95%, and has thus observed first-hand the well-known variance of a factor of one hundred in productivity between the most able programmers and the merely competent.

The size of that variance has always raised an awkward question: would individual projects, and the field as a whole, be better off without more than 50% of the least able in it? Thoughtful managers have understood for a long time that if conventional software management's only function were to convert the least able from a net loss to a marginal win, the game might not be worth the candle."



Get rid of 50% of the less able programmers in the market. Good plan. Those of us that are more able will get better salaries and a happier day at work. If we culled off those who entered the profession because it paid well, and they liked computer games. Those who aren't interested in Programming really.

Then people wouldn't get narked at the people fucking up shit they have to clean up as much. Higher quality code would be produced without the dross poluting the CVS/SourceSafe/SubVersion repositories. Bad design would be less common.

And like I said, with a smaller, more talented pool to draw on, we'd have higher salaries in better jobs.

You really ought to do the same to the pool of IT project managers with no skill or training who bumble along fucking up the project even when it is purely consisting of the top 50% of talent.
Current Mood: exhausted
Leave a comment
[User Picture Icon]
From:brindy
Date:December 6th, 2004 03:05 pm (UTC)
(Link)
a-fucking-men
[User Picture Icon]
From:p3rlm0nk
Date:December 6th, 2004 04:04 pm (UTC)
(Link)
No kidding. Jesus christ, there are devs I work with that
have to be handheld through the simplest CVS tasks imaginable,
every time they do them ("How do I check in my changes again????").
This isn't to say that some tools/concepts aren't obscure/arcane/
inscrutable, but if you've got big problems dealing with a basic
component of the software development environment, maybe it's time
to find another career. *shrug* Fuck 'em, I've got an interview
someplace else on thursday anyway. At least it'll be a new and
interesting batch of irritants. ;)

It helps me somewhat when I'm looking at the really crap code
we've got in a few places to consider the entries in daily_wtf,
because usually ours aren't that bad (though we have submitted
some things that made daily wtf status).
[User Picture Icon]
From:p3rlm0nk
Date:December 6th, 2004 04:09 pm (UTC)
(Link)
(re: our entries into the daily wtf hall of infamy)

here

and

here

(both originally written by the same guy, iirc)
From:eyeh8u
Date:December 6th, 2004 07:10 pm (UTC)
(Link)
I never knew that site existed
[User Picture Icon]
From:jazzmahn
Date:December 6th, 2004 04:35 pm (UTC)
(Link)
AH yes, who could ever have guessed rot13 is secure.

I have a usenet sig...

--
Jeremy Kahn | jazzmahnATmykahn.com | http://www.mykahn.com
-------------- Solutions are not the Answer ----------------
main(){char b,c;for(;read(0,&b,1);){c=b&32;b&=~c;b=((b>='A')
&&(b<='Z')?((b-'A'+13)%26+'A'):b)|c;write(1,&b,1);}}


... that's as compact as I could get it, in C. Much less than a bazillion lines.
From:eyeh8u
Date:December 6th, 2004 06:58 pm (UTC)
(Link)
My c is rustier than a rusty thing made of rust. what does that sig do?
From:eyeh8u
Date:December 6th, 2004 07:09 pm (UTC)
(Link)
ah now reading p3rlm0nk's wtf it makes sense.

I did write some basic shifting cypher's in php when I was bored at work a few months back. Just a rotating caesar cypher with n stages and a sequence based increment. i.e. the Enigma cypher. I wrote it in very few lines of PHP and it's as secure as the enigma.
[User Picture Icon]
From:jazzmahn
Date:December 6th, 2004 07:14 pm (UTC)
(Link)
How does one un-do a thing like that? Do you need to know n and the key?
From:eyeh8u
Date:December 6th, 2004 07:47 pm (UTC)
(Link)
You need to know the number of stages and the increment used.

So for example, if you encode with 4 rounds of caesar with a shift of 3, you do for rounds of caesar decreasing the shift by 3 each time. From a shift of 12 to start.

To make it even more fun, I added shifting of the shift ;-) try brute forcing n rounds of caesar with a start shift of x and a shift-shift of y. I'll post the code tomorrow when I can get my hands on it, if I still have it in fact...

With the computing power we have now, thats seriously cheap, and, if you increase the range to all UNICODE space... it'll take a week and a day for people to even think you might have used a caesar variant.
From:eyeh8u
Date:December 7th, 2004 08:54 am (UTC)
(Link)
Code is a bit crappy actualy, but you get the point:


<?php
define( 'ASCIIMIN', 64 );
define( 'ASCIIMAX', 90 );

function jump( $char, $jump )
{
$ord = ord( $char );
if( $ord <= ASCIIMIN || $ord > ASCIIMAX )
{
$result = $char;
} else {
$ord = $ord + $jump;
while( $ord > ASCIIMAX )
{
$ord = ASCIIMIN + ( $ord - ASCIIMAX );
}
while( $ord <= ASCIIMIN )
{
$ord = ASCIIMAX - (ASCIIMIN - $ord);
}
$result = chr( $ord );
}
return $result;
}

function caesar( $plaintext, $jump )
{

for( $i = 0; $i < strlen( $plaintext ); $i++ )
{
$result .= jump( $plaintext[$i], $jump );
}
return $result;
}

function caesari( $plaintext, $jump, $increment )
{
for( $i = 0; $i < strlen( $plaintext ); $i++ )
{
$result .= caesar( $plaintext[$i], $jump );
$jump += $increment;
}
return $result;
}

$cypher = $_REQUEST['cypher'];

if( ( $cypher != '' ) && ( $_REQUEST['jump'] != '' ) && ( $_REQUEST['plaintext'] != '' ) )
{
$plaintext = strtoupper( $_REQUEST['plaintext'] );

if( $cypher == 'c' )
{
$cyphertext = caesar( $plaintext, $_REQUEST['jump'] );
} else if ( $cypher == 'ci' ) {
if( $_REQUEST['increment'] == '' )
{
$increment = 1;
} else {
$increment = $_REQUEST['increment'];
}
$cyphertext = caesari( $plaintext, $_REQUEST['jump'], $increment );
}

$plaintext = '';

} else if ( $cypher != '' && $_REQUEST['jump'] != '' && $_REQUEST['cyphertext'] != '' )
{
$cyphertext = strtoupper( $_REQUEST['cyphertext'] );

if( $cypher == 'c' )
{
$plaintext = caesar( $cyphertext, 0 - $_REQUEST['jump'] );
} else if ( $cypher == 'ci' ) {
$plaintext = caesari( $cyphertext, 0 - $_REQUEST['jump'], 0 - $_REQUEST['increment'] );
}

$cyphertext = '';
}
if( $_REQUEST['jump'] != '' )
{
$jump = $_REQUEST['jump'];
} else {
$jump = 1;
}
?>

<form name="encrypt" method="post">
Caesar Cypher: <input type="radio" name="cypher" value="c" <?php if ( $cypher == 'c' ) { echo( 'CHECKED' ); }?> > Incrementing Caesar Cypher: <input type="radio" name="cypher" value="ci" <?php if ( $cypher == 'ci' ) { echo( 'CHECKED' ); }?>> Non-Linear Caesar Cypher: <input type="radio" name="cypher" value="nlc" <?php if ( $cypher == 'nlc' ) { echo( 'CHECKED' ); }?>> Non-Linear Incrementing Caesar Cypher: <input type="radio" name="cypher" value="nlci" <?php if ( $cypher == 'nlci' ) { echo( 'CHECKED' ); }?>><br>
Initial Offset(s): <input type="text" name="jump" value="<?php echo( $jump ); ?>"> Increment(s): <input type="text" name="increment" value="<?php echo( $increment ); ?>"><br>
Plaintext:<br>
<textarea name="plaintext" rows="5" cols="80"><?php echo($plaintext); ?></textarea><br>
Cyphertext:<br>
<textarea name="cyphertext" rows="5" cols="80"><?php echo($cyphertext); ?></textarea><br>
<input type="submit">
</form>

[User Picture Icon]
From:jazzmahn
Date:December 6th, 2004 07:13 pm (UTC)
(Link)
It rot13's stuff.

It was actually in reply to this previous reply, referring specifically to this daily WTF entry (possibly the longest and least efficient ROT13 script ever devised) but I'm stupid and hit the wrong button.

(Leave a comment)
Top of Page Powered by LiveJournal.com