• python-challenged (unregistered) in reply to mrprogguy
    mrprogguy:
    python-challenged:
    strcmp:
    e.g. getting a 404 ( http://worsethanfailure.com/Comments/ArticleFull ) for innocently clicking "[expand full text]" (simple solution: put a "JS is disabled, press your browser's [back] button twice to see the full article" message there)
    Why - oh why - do people build websites that rely on javascript when it can be disabled, and then don't put in checks to at least let the user know what to do because javascript is disabled

    There are very few reasons scripting should be disabled these days. Maybe he doesn't want readers who have scripting disabled. You still stuck in Web 0.9 or something?

    Me? No. But my employer is... security-anal. j-script is enabled for some of us, depending upon job-role, but not for others; drives some people nuts.

    The point was that not everyone has every feature turned on; not even the common ones; sometimes for good reasons, sometimes for not-so-good reasons. We as programmers, especially on this forum, should set a good example by doing basic error checking and informing the user that something that is required is missing. That's all!

  • trevor (unregistered) in reply to gamedev

    if( lang !supportAndOrRequire( braces ) ) { print lang + " is a POS!"; }

  • rgz (unregistered) in reply to slinkp

    you should swap continue with else: (no longer in a for remember?)

    Also, python has regexes, why didn't he/she (Paula Bean?) use them?

    captcha: muhahaha, hilarious

  • Jeff (unregistered)

    I notice a lot of people saying that

        for field in ('value',):
           do_stuff()
    and
        field = 'value'
        do_stuff()
    

    are equivalent. You missed another WTF -- there's a 'continue' in that thar for-loop! So this is the real equivalence:

        for field in ('value',):
           do_stuff()
           if blah: continue
           do_more_stuff()
    
    and
    
        field = 'value'
        do_stuff()
        if blah: goto label
        do_more_stuff()
    label:
    

    Except, of course, there is no goto in Python. Or there wasn't until this WTF, anyway.

  • Ben (unregistered) in reply to nobody

    Very clever.

    Captcha: bathe. Kurtz probably did need a bath.

  • fuzzylollipop (unregistered) in reply to tuffy

    actually ('value',) is a tuple with a single entry not a list

  • Fregas (unregistered)

    The REAL WTF here is that this site is no longer called the dailywtf.

  • Ben (unregistered) in reply to nobody
    nobody:
    The Ororor! The Ororor!

    Kurtz

    +1

  • (cs)

    Ok, it's 11:15 CST and the entire time between 10:58 and now I've gotten the "Sorry, we're out of stickers." message, and there's no note about the stickers on the post today like there was yesterday...

    :( That makes me a sad panda. I want a friggin sticker!!!

    Will buying them be possible at any point in our near future?

  • unregistered (unregistered) in reply to Fregas
    Fregas:
    The REAL WTF here is that this site is no longer called the dailywtf.
    agree
  • a (unregistered) in reply to tuffy
    tuffy:
    ted:
    But seriously, I don't know Python, could anyone convert this to pseudo code? For example, what the hell does "for field in ('value',)" mean?
    ('value',) is a list containing only the string 'value'. This loops over that one list item, thus field is 'value'.

    it's a tuple, not a list.

  • waffles (unregistered) in reply to mrprogguy
    mrprogguy:
    python-challenged:
    strcmp:
    e.g. getting a 404 ( http://worsethanfailure.com/Comments/ArticleFull ) for innocently clicking "[expand full text]" (simple solution: put a "JS is disabled, press your browser's [back] button twice to see the full article" message there)
    Why - oh why - do people build websites that rely on javascript when it can be disabled, and then don't put in checks to at least let the user know what to do because javascript is disabled

    There are very few reasons scripting should be disabled these days. Maybe he doesn't want readers who have scripting disabled. You still stuck in Web 0.9 or something?

    I have JS disabled for nearly all sites I visit for a simple reason -- it's very rarely used for anything useful. If a site requires JS, it's easy to enable it for that site, but sites that require JS tend to be usability nightmares that I don't want to visit anyways.

  • Rhamphoryncus (unregistered) in reply to mrprogguy
    mrprogguy:
    Micah Cowan:
    I'm not one to trust a language that makes such a big deal out of white-space but having a style imposed on developers does have it's benefits.
    ...Personally, I think using whitespace as syntax is pure genius (and I'm a C/Perl hacker, myself); the whole reason bracing "styles" exist is that we can never quite figure out what to do with the useless things ourselves (since we, like Python, just follow the indentation).

    Apparently you never programmed in Fortran. Everything had to start in column 7. Ridiculous.

    Blocking by whitespace goes slightly past genius into madness, since there's still that question of tabs-vs-spaces that each text editor wants to know about.

    You're boned either way. The number of C files I've seen that randomly mixed tabs and spaces.. but hey, I have my editor set to show tabs, unlike all those presumably pro-tab programmers who are blissfully unaware of how they're butchering them.

    Python 3000 will make mixing tabs and spaces an error, finally fixing the problem of editors not distinguishing them properly.

    Fwiw, I agree that Fortran is insane. Python isn't anything like Fortran though, and gets a lot of unfair hatred because of the association.

  • tuffy (unregistered) in reply to a
    a:
    it's a tuple, not a list.
    I'd hoped a little inaccuracy would save a lot of explanation for the non-Python programmers who probably know what a list is but don't know what a tuple is, but I see I'll have to be more pedantic in the future.
  • (cs) in reply to Atrophy
    Atrophy:
    Ok, it's 11:15 CST and the entire time between 10:58 and now I've gotten the "Sorry, we're out of stickers." message, and there's no note about the stickers on the post today like there was yesterday...

    :( That makes me a sad panda. I want a friggin sticker!!!

    Will buying them be possible at any point in our near future?

    I actually went so far as to set up a cron job to open up a browser window pointing to the sticker form at noon EST and I got the same thing. It's a shame that the form just wasn't activated today, as I was really looking forward to getting one.

    Count me in for purchasing a couple if they ever go up for sale.

  • (cs) in reply to python-challenged
    python-challenged:
    strcmp:
    e.g. getting a 404 ( http://worsethanfailure.com/Comments/ArticleFull ) for innocently clicking "[expand full text]" (simple solution: put a "JS is disabled, press your browser's [back] button twice to see the full article" message there)
    Why - oh why - do people build websites that rely on javascript when it can be disabled, and then don't put in checks to at least let the user know what to do because javascript is disabled
    Because we assume that our users live in the 21st century.

    In fact, in my mind, anyone who disables javascript is in the same category as the people who created and stocked bunkers for Y2K: paranoid. So, LITERALLY unwilling to enter the 21st century!

  • rgz (unregistered) in reply to tuffy

    Besides, python tuples are just "quick lists" read-only lists with the content managing methods striped, their are very list-ish in most respects.

    And then you have to explain to erlang programmers about how python tuple differ from erlang tuples.

  • An apprentice (unregistered) in reply to Jeff
    Jeff:
    You missed another WTF -- there's a 'continue' in that thar for-loop! <snip> Except, of course, there is no goto in Python. Or there wasn't until this WTF, anyway.
    Ah yes, the long lost secret technique of using 'continue' to actually express 'break'.
  • Rob Sirloin (unregistered) in reply to rgz
    rgz:
    Oh swell, some body beat me to it, bah I'll post it anyway. I'll do it differently then

    http://rafb.net/p/4ABXgf38.html

    And remember, the f in wtf stands for fuck.

    Worse than... Fuck?

  • Simetrical (unregistered) in reply to mrprogguy
    mrprogguy:
    There are very few reasons scripting should be disabled these days. Maybe he doesn't want readers who have scripting disabled. You still stuck in Web 0.9 or something?
    IQpierce:
    Because we assume that our users live in the 21st century.

    In fact, in my mind, anyone who disables javascript is in the same category as the people who created and stocked bunkers for Y2K: paranoid. So, LITERALLY unwilling to enter the 21st century!

    Actually . . . no. Things such as cell phones and Blackberries typically have JavaScript disabled by default, if it's available at all. Google bots do not use JavaScript. And so on. Relying on JavaScript support unless necessary is completely a bad idea.

    Graceful degradation is an important aspect of Web design, and it's really not hard in most cases: just write the source without any JavaScript, and have a separate JavaScript file that can hook into the link to provide extra functionality if JS is enabled. It's generally not any more complicated than using onclick. You'll also benefit from smaller page loads, since external JS can be cached.

  • Faxmachinen (unregistered)

    Amusingly enough, several people have suggested that "for field in ('value',) is the same as "field = 'value'". I guess they missed that "continue" statement.

  • d.e. (unregistered) in reply to mrprogguy

    The fortran/column 7 thingy is a throwback to "writing" programs on punchcards. Cobol has a similar convention. The first spaces on the cards were for comments.

  • Micah Cowan (unregistered) in reply to mrprogguy
    mrprogguy:
    Blocking by whitespace goes slightly past genius into madness, since there's still that question of tabs-vs-spaces that each text editor wants to know about.
    Explain why that's a problem. If you want to use tabs, use tabs. If you want spaces, use spaces. If you want to use spaces for some lines and tabs for others, at the very same level of code, you can't reasonably expect to be legible to other people's editor/terminal settings, so you're screwed whether or not you're using Python.

    Oh, nice. My captcha is "onomatopoeia".

  • (cs) in reply to Marcin
    Marcin:
    powerlord:
    Micah Cowan:
    I'm not one to trust a language that makes such a big deal out of white-space but having a style imposed on developers does have it's benefits.
    I'm having some trouble understanding what you mean by this; what makes you think "making a big deal out of white-space" imposes a style on you? I have never heard of a style (other than "poor") that doesn't require that all code at a given block-level be indented the same, and that nested blocks are indented further. Have you? Python imposes no style other than consistency in indentation, which is one style that every programmer will employ anyway, to preserve his or her own sanity.

    Personally, I think using whitespace as syntax is pure genius (and I'm a C/Perl hacker, myself); the whole reason bracing "styles" exist is that we can never quite figure out what to do with the useless things ourselves (since we, like Python, just follow the indentation).

    So, is that indentation using tabs or spaces?

    Can't it be both?

    Very bad idea, Python considers tabs to be 8 spaces. Extremely bad idea to mix tabs and spaces, and extrelely bad idea too (but slightly less so) to use inconsistant numbers of spaces. Tis leads you down a long and painful road.

    mrprogguy:
    Blocking by whitespace goes slightly past genius into madness, since there's still that question of tabs-vs-spaces that each text editor wants to know about.
    The Python Style Guide very strongly suggest to use spaces.

    The question of tabs-vs-spaces doesn't matter much though, as long as you're consistent throughout your files.

    Cowbert:
    I second this statement. Who in their right mind would port code from python to php?
    Management decides to change host for cost purposes, new host only supports PHP. d00med.
    a:
    tuffy:
    ted:
    But seriously, I don't know Python, could anyone convert this to pseudo code? For example, what the hell does "for field in ('value',)" mean?
    ('value',) is a list containing only the string 'value'. This loops over that one list item, thus field is 'value'.

    it's a tuple, not a list.

    Doesn't matter much as a Python tuple is merely an immutable list.

    (the real wtf is that Python doesn't have real tuples?)

    rgz:
    Besides, python tuples are just "quick lists" read-only lists with the content managing methods striped, their are very list-ish in most respects.

    And then you have to explain to erlang programmers about how python tuple differ from erlang tuples.

    Or haskell programmers, or Caml programmers I think, or pretty much any functional language programmer in fact ;)

    Simetrical:
    Actually . . . no. Things such as cell phones and Blackberries typically have JavaScript disabled by default, if it's available at all. Google bots do not use JavaScript. And so on. Relying on JavaScript support unless necessary is completely a bad idea.

    NoScript Firefox extension too, verrry popular.

  • (cs) in reply to gamedev
    gamedev:
    anytime I write ruby or python code it ends up looking like that :(

    Any non-wtf developer should read Martin Fowler's Refactoring. I find it even more important than over-hyped design patterns, some of which are just workarounds for languages that lacks some obvious constructs ( I personally can't live without ruby blocks ).

    About this one, like anything looking like that, code should read as explicit as possible, even without comments. Thus, extract code parts, isolate them in an explicitly named method, and you should end with a chain of obvious method calls.

    http://www.refactoring.com/catalog/extractMethod.html

  • (cs) in reply to aikii

    About pro- or con-javascript : okay, phone-browsers and geeks surfing with lynx are just poor arguments. But if a feature would have worked exactly the same way with 1995's browsers ( clicking on a link to see the complete article, is it so futuristic ? ), having it working only with javascript in 2007 is clearly a regression. There is just no limit, someday we'll have to install bloatware plugins just to do the exact same thing.

    I love javascript when it's added value.

  • GrandmasterB (unregistered)
    Now, I'm not one to trust a language that makes such a big deal out of white-space

    Exactly. And that is why Python is gay.

  • Joseph Newton (unregistered) in reply to Marcin
    Marcin:
    powerlord:
    Micah Cowan:
    I'm not one to trust a language that makes such a big deal out of white-space but having a style imposed on developers does have it's benefits.
    I'm having some trouble understanding what you mean by this; what makes you think "making a big deal out of white-space" imposes a style on you? I have never heard of a style (other than "poor") that doesn't require that all code at a given block-level be indented the same, and that nested blocks are indented further. Have you? Python imposes no style other than consistency in indentation, which is one style that every programmer will employ anyway, to preserve his or her own sanity.

    Personally, I think using whitespace as syntax is pure genius (and I'm a C/Perl hacker, myself); the whole reason bracing "styles" exist is that we can never quite figure out what to do with the useless things ourselves (since we, like Python, just follow the indentation).

    So, is that indentation using tabs or spaces?

    Can't it be both?

    Egaads, no!!

    I mean it can, but only at a considerable cost in readability and portability. Tabs can be subject to widely varying interpretations depending on the editor that a piece of source is opened in. There are still a lot of interfaces out there that still tab at eight spaces. Others may make the same tabs four, spaces, or three, or two.

    Combine that with space-based indentation in the same source, and you have no standard at all. I have seen some of that in Drupal source, and I can tell you, it makes an already difficult task of tracing execution paths a downright nightmare.

    For my part, I use an Editor [Programmer's File Editor for Windows] that provides the option of space-based tabbing. I prefer three spaces these days, but what is important is consistency within a unit of source. Just pick a reasonable indentation level [8 spaces is over the top IMHO] and stick to it.

  • Ann Coulter (unregistered) in reply to mrprogguy
    mrprogguy:
    python-challenged:
    strcmp:
    e.g. getting a 404 ( http://worsethanfailure.com/Comments/ArticleFull ) for innocently clicking "[expand full text]" (simple solution: put a "JS is disabled, press your browser's [back] button twice to see the full article" message there)
    Why - oh why - do people build websites that rely on javascript when it can be disabled, and then don't put in checks to at least let the user know what to do because javascript is disabled

    There are very few reasons scripting should be disabled these days. Maybe he doesn't want readers who have scripting disabled. You still stuck in Web 0.9 or something?

    You visit err... questionable websites then you should turn off javascript. Even in Web 2.0 most links are still links; no need for javascript to do an href.

  • Sysin (unregistered)

    All I say about this WTF: I'm glad that there is at least one other person out there who hasn't drank the Pythod Koolaid.

  • Boudin (unregistered)

    Way to go, Tony, PHP is so much nicer than Python. Wait?

  • Weave Jester (unregistered) in reply to slinkp
    slinkp:
    Would it? self.request is evidently a callable of some sort, not a mapping or sequence. And whatever it returns is not a builtin python type either, I don't know what kind of object has a value() method.
    The value method appears to operate under the same principles as the get() method on dictionaries, with the second argument providing the default value. If we accept this, then the if statement is clearly checking for the existence of a key called "field" in the object that self.request() returns. This would have been better served through __contains__ and the 'in' operator.

    Secondly, self.request() is called twice, yet the same value appears to be expected. Thus, self.request would be best wrapped in a property before use.

  • Phineas Balmer (unregistered)

    All these flames about different languages being inherently flawed just cracks me up. Like saying SlashCode is totally unreliable because it is written in Perl/MySQL. Any sufficiently established, modern language is sufficient to create reliable code.

    I wouldn't try writing something in Fortran, Cobol or Lisp. Currently, I work a lot with Active Server Pages (itself very outdated now). This scripting language (if you can call it that) is a nightmare to program with compared to PHP.

  • (cs) in reply to python-challenged
    python-challenged:
    Why - oh why - do people build websites that rely on javascript when it can be disabled, and then don't put in checks to at least let the user know what to do because javascript is disabled

    If you're eRe3t enough to want to disable javascript in your browser, you probably should be able to figure it out.

  • NullSession (unregistered)

    He probably meant (ERR)OROROROROR!

  • (cs) in reply to Squiggle

    The triple-breasted OROROR of Eroticon 6

  • Jon (unregistered) in reply to trevor
    trevor:
    if( lang !supportAndOrRequire( braces ) ) { print lang + " is a POS!"; }
    print '\n'.join('%s is a POS!' % lang for lang in langs if lang.supportsAndOrRequires(braces))
  • ibiwan (unregistered) in reply to Micah Cowan
    Micah Cowan:
    If you want to use spaces for some lines and tabs for others, at the very same level of code, you can't reasonably expect to be legible to other people's editor/terminal settings, so you're screwed whether or not you're using Python.

    The problem with this line of logic is that in C (or more generally, !Python) the braces are still there, so even a human-unreadable file can be programmatically entabbed into readability. In Python, if you lose your block structure due to, say, two people modifying the same source in different text editors, it's gone -- only careful editing by someone who fully understands the code can restore functionality.

  • sol (unregistered) in reply to Micah Cowan
    Micah Cowan:
    I'm not one to trust a language that makes such a big deal out of white-space but having a style imposed on developers does have it's benefits.
    I'm having some trouble understanding what you mean by this; what makes you think "making a big deal out of white-space" imposes a style on you? I have never heard of a style (other than "poor") that doesn't require that all code at a given block-level be indented the same, and that nested blocks are indented further. Have you? Python imposes no style other than consistency in indentation, which is one style that every programmer will employ anyway, to preserve his or her own sanity.

    Personally, I think using whitespace as syntax is pure genius (and I'm a C/Perl hacker, myself); the whole reason bracing "styles" exist is that we can never quite figure out what to do with the useless things ourselves (since we, like Python, just follow the indentation).

    he means doing:

    if(foo==false){fooBar();fooBar(7);fooBar(12);}else if(foo==funnyTriStateBoolMidVal){/fuck it/}

    may confuse you but it comes in handy

  • Anonymous of /b/ (unregistered) in reply to ibiwan

    Why would you be using text editors that automatically reformat code? That sounds like a recipe for disaster to me.

  • (cs) in reply to ibiwan
    ibiwan:
    ...The problem with this line of logic is that in C (or more generally, !Python) the braces are still there, so even a human-unreadable file can be programmatically entabbed into readability. In Python, if you lose your block structure due to, say, two people modifying the same source in different text editors, it's gone -- only careful editing by someone who fully understands the code can restore functionality.
    Agreed! Deleting all leading spaces in Python files is always a disaster. Thank heavens for source control.
  • (cs) in reply to nobody
    Kurtz:
    The Ororor! The Ororor!
    All hail the Ororor!
  • Demaestro (unregistered)

    The real WTF here is why convert Python code to PHP?

    Maybe because of the poor programming they thought that PHP would be better somehow.

  • alex dante (unregistered) in reply to Jeff

    Jeff wrote: "Except, of course, there is no goto in Python. Or there wasn't until this WTF, anyway."

    That actually hasn't been true since April 1 2005, when the goto module was released: http://entrian.com/goto/

    Not that I'm encouraging anyone to actually use it...

  • (cs) in reply to Phineas Balmer
    Phineas Balmer:
    All these flames about different languages being inherently flawed just cracks me up. Like saying SlashCode is totally unreliable because it is written in Perl/MySQL. Any sufficiently established, modern language is sufficient to create reliable code.

    No one said Perl/MySQL was a wtf, cowbert specifically said "Badly written perl". And many would consider any database without transactions (don't give me this innodb shit, /. uses myisam) a wtf, though slashdot has done pretty well on it. I remember quite well that old incarnations of LJ and Slashdot code were excellent candidates for tdwtf, even if you subscribe to the idea that cleverness is more important that maintainability or extensibility. That was 6 years ago, they've probably matured and been rewritten a few time since.

    Anonymous of /b/:
    Why would you be using text editors that automatically reformat code? That sounds like a recipe for disaster to me.
    Because Visual Studio, Eclipse, PhpED, and so on are actually really, really nice to use, and you can just stop worrying about formatting altogether. You might as well ask why anyone ever bothered to use lint back before IDEs got big - because some people just can't keep a style to save their lives, even if they're decent coders.
  • fusbar (unregistered) in reply to Weave Jester
    Weave Jester:
    Faced with such WTFness in the very first line, one would think that the author couldn't do any better. Instead, we have:
    if self.request().value(field, None):
    Which would be better expressed:
    if field in self.request:

    This is ofcourse a false statement from someone that hasn't read the code or understand python. The first, self.request().value(field,None) will look up if the is "key" field and if return its value, if not return None. But here, the key field could "hold" a value that is false which would render the hole statment false. This is not what would happen in your if field in self.request:, In your code, you only check if the key field is in the mapping object! Its completely different ofcourse...

    you-have-to-know-your-pythons-ifs-and-donts-ly'ers

  • Watson (unregistered)

    It would be just as dumb to write this in PHP as it was to write it in Python, but (using slinkp's rewrite as a crib):

    $field = 'value';
    if(!empty($_REQUEST[$field]))
    {
    	$val = $_REQUEST[$field];
    
    	if(strtoupper(substr($val,0,3))=='RE:')
    	{
    		$conds[] = $field." ~ '".substr($val,3)."'";
    	}
    	else
    	{
    		$lors = explode(' OR ', strtoupper($val));
    		foreach($lors as $wtf)
    		{
    			$wtf = str_replace("'", "\\'", strtr($wtf, '*?', '%_'));
    			// I'm going to guess that str.split() works on any sequence of
    			// consecutive whitespace chars
    			$wtf = "%".join('%', preg_replace('/\s+/', $wtf))."%";
    			$ors[] = array($field, $wtf);
    		}
    	}
    }
    
    if(count($ors))
    {
    	$like_expressions = array();
    	foreach($ors as $name=>$value)
    	{
    		$like_expressions[] = "upper($name) LIKE upper('$value')";
    	}
    	$conds[] = "(".join(' OR ', $like_expressions).")";
    }
    
  • (cs) in reply to cparker

    I assume "there are often times" means every k hours/days, not every k minutes, and that a bunch is actually a lot more than 4. How about, instead of writing a script (though there's nothing wrong with the solution), put all the shortcuts into a folder. To launch the files, open the folder, Control+A (select all), Enter (invoke).

    cparker:
    A fine example of ugly Python code. This should serve as proof that the language isn't the issue when it comes to horrororororific code.

    There are often times when I have to open a bunch of programs in batch, and these times are unpredictable, so a scheduled task wouldn't work here. Instead of clicking on each program's shortcut one at a time, I created a Windows Script Host VBScript (gasp Visual Basic!) to do it for me:

    Dim WSH, FSO
    Dim Shortcuts, Shortcut
    
    Set WSH = WScript.CreateObject("WScript.Shell")
    Set FSO = WScript.CreateObject("Scripting.FileSystemObject")
    
    Shortcuts = Array( _
    	"C:\Path\To\Sample\Application 1.lnk", _
    	"C:\Path\To\Sample\Application 2.lnk", _
    	"C:\Path\To\Sample\Application 3.lnk", _
    	"C:\Path\To\Sample\Application 4.lnk" _
    )
    
    For Each Shortcut In Shortcuts
    	If FSO.FileExists(Shortcut) Then
    		WSH.Run("%comspec% /k " & Chr(34) & Chr(34) & Shortcut & Chr(34) & " & exit" & Chr(34))
    		WScript.Sleep(15000)
    	End If
    Next

    I don't claim it's perfect, but it works for me and, IMHO, it's quite readable. Messy code is solely the individual programmer's responsibility. Programming languages are merely tools at the programmer's disposal, and are almost never the cause for the mess.

    If programmers learn good coding techniques, those same techniques can then be applied to any language. Some people get so caught up in the individual language's syntax that they forget the primary purpose of programming, which is not coding, but problem-solving.

    Addendum (2007-02-28 10:47): This five minute window thing is BS. I only wanted to split WSH.Run into two lines so it didn't cause sidescrolling.

    Alex, when are you ditching this hackjob forum software and going with something robust, such as the codebase Slashdot uses?

  • Michael (unregistered) in reply to ted
    for field in ('value',):
        print field
    

    Would print the word 'value'. What is happening here is (at the far right of the first line, just before the colon) that a tuple is being created with exactly one member (the string 'value'). A tuple is a sequence, and 'for' iterates over sequences -- assigning to the variable (in this case 'field') each of the items of the sequence.

    Why do we have a for loop, looping through a hard-coded sequence of precisely one item? Job security?

  • Michael (unregistered) in reply to Marcin

    It could be both, but it has to always match -- you could choose for instance yo always indent with 2 spaces and a tab... But you'd hate yourself in the morning ;-)

Leave a comment on “The Black Box of Or”

Log In or post as a guest

Replying to comment #:

« Return to Article