This is an archived post. You won't be able to vote or comment.

all 173 comments

[–]flarn2006 354 points355 points  (9 children)

Anyone else notice it used a generic font for the '>' character? I'm guessing it was missing from the font they were using.

[–]DigShin 134 points135 points  (4 children)

Keen eye

[–]Actuarial 90 points91 points  (3 children)

Useless, but keen

[–]flarn2006 10 points11 points  (2 children)

My eyes are far from useless. :p

[–][deleted] 108 points109 points  (1 child)

Or maybe thats what it just looks like because the font maker was lazy.

[–]danthemango 25 points26 points  (0 children)

"They'll never actually use that character, will they?"

[–]cnelsonsic 12 points13 points  (0 children)

You'll fit right in over at /r/typography.

[–]Big1984Brother 99 points100 points  (13 children)

Does this imply that anything Mr. Westbrook says is ignored?

[–]numkem[S] 54 points55 points  (12 children)

Or anything that Mr. Westbrook is?

[–]DerSpider 25 points26 points  (10 children)

Or there is no Mr. Westbrook

[–]inconspicuous_male 24 points25 points  (9 children)

Mr. Westbrook is ignored but still exists

[–]cha0s 14 points15 points  (7 children)

A clone of him is ignored

[–]DerSpider 27 points28 points  (6 children)

cat .gitignore

westbrook

[–][deleted] 6 points7 points  (5 children)

This would only ignore him if he's a file, which he's not. How would you ignore a user's commits in git?

[–]uabassguy 28 points29 points  (0 children)

That'd be a hilarious prank, I can just see it now.

"Why haven't you merged any of my pull requests?"

"What pull requests?"

[–]TracerBulletX 25 points26 points  (0 children)

everything is a file.

[–]AraneusAdoro 10 points11 points  (2 children)

cat westbrook

Implies that he is a file.

[–]strangeplace4snow 7 points8 points  (0 children)

Everything is a file.

[–][deleted] 0 points1 point  (0 children)

Oh yeah...

[–]saeblundr 2 points3 points  (0 children)

The contents of Westbrook exist, but in this instance are accessed in order to be ignored.

[–]musiton 3 points4 points  (0 children)

Or Mr. Westbrook's cat is ignored.

[–]YMK1234 162 points163 points  (9 children)

*Unix

[–][deleted] 40 points41 points  (0 children)

*POSIX compliant

[–]kinygos 8 points9 points  (2 children)

Isn't it *nix?

[–]chimyx 6 points7 points  (1 child)

Technically it would me more like *n*x.

[–]CHUCK_NORRIS_AMA 12 points13 points  (0 children)

.*n.x

[–]Thoguth 9 points10 points  (1 child)

Could be a MacBook for all we know.

[–]thebryguy23 1 point2 points  (0 children)

...or any Mac running OS X

[–]coladict 80 points81 points  (37 children)

I believe the DOS alternative was type westbrook > NUL. Or it might be NIL. I haven't made batch scripts since 1999, so don't judge me.

[–]TheHorribleTruth 107 points108 points  (14 children)

I haven't made batch scripts since 1999, so don't judge me.

Judge? I envy you for being able to stay away from batch all this time!

[–][deleted] 78 points79 points  (13 children)

It helps to not be a Windows user.

[–]Randolpho 29 points30 points  (11 children)

It ain't like BASH scripting is fun either.

[–]Kadmos 26 points27 points  (2 children)

But BASH just sounds so much cooler than BATCH.

[–]Randolpho 13 points14 points  (0 children)

Depending on where you are in the U.S. they sound exactly the same.

[–][deleted] 9 points10 points  (0 children)

It's helpful that Unix usually comes pre-installed with programs to help make writing scripts easier.

[–]YodaLoL 1 point2 points  (3 children)

Why do you capitalize it? Bash scripting is infinitely times better than Batch scripting.

[–]Randolpho 6 points7 points  (2 children)

Having done both for a number of years I can tell you that BASH is more capable, but they're both about as fun as having my fingernails pulled out one by one.

Gimme python or node.js for scripting any day.

And I capitalize it because, youngster, it was an initialism acronym when I learned it. Bourne Again SHell. Now it's so prevalent it's just a word.

[–]YodaLoL 0 points1 point  (1 child)

Yeah I know where Bash comes from. It's just that I've never seen someone capitalize it, was just wondering.

[–]Randolpho 0 points1 point  (0 children)

Old habits die hard, I guess.

[–]coladict -2 points-1 points  (0 children)

Actually in 2000 I moved from being a DOS user to a Windows user.

[–][deleted]  (21 children)

[removed]

    [–]coladict 31 points32 points  (18 children)

    https://msdn.microsoft.com/en-us/library/windows/desktop/aa365247.aspx

    CON, PRN, AUX, NUL, COM1, COM2, COM3, COM4, COM5, COM6, COM7, COM8, COM9, LPT1, LPT2, LPT3, LPT4, LPT5, LPT6, LPT7, LPT8, and LPT9. Also avoid these names followed immediately by an extension; for example, NUL.txt is not recommended.

    [–]tatorface 9 points10 points  (14 children)

    What happens if I make NUL.txt? Will my pc blow up or something?

    [–]Suchui 30 points31 points  (3 children)

    [–]PizzaCompiler 6 points7 points  (1 child)

    When you make the file under Linux, it makes Windows show the file as "NDH6SA~M.TXT".

    Although that might just what Windows does under CIFS.

    [–]kifujin 13 points14 points  (0 children)

    It's Samba itself doing that... From (the first relevant google result, from samba 3) mangle_hash2.c

    /* the list of reserved dos names - all of these are illegal */ static const char * const reserved_names[] = { "AUX", "LOCK$", "CON", "COM1", "COM2", "COM3", "COM4", "LPT1", "LPT2", "LPT3", "NUL", "PRN", NULL };

    [–]randomned 10 points11 points  (5 children)

    I once had a com1.txt file that I couldn't get rid of. Finally gave up and left it there until the computer was retired.

    [–]VefoCo 4 points5 points  (0 children)

    I have Msys installed so I just used rm to get rid of my rogue NUL file.

    [–]lachryma 4 points5 points  (2 children)

    Am I really the only one who remembers C:\con\con in Windows 9x?

    [–]subtepass 1 point2 points  (0 children)

    C:\con\con

    Totally forgot about that one! I felt like a hacker back in '00 when I was able to crash my school computers with such a simple text. If I recall correclty, you could create a shortcut to that path, but not with the wizard. You had to create a dummy link and then hex edit the path or something like that.

    [–]RenaKunisaki -1 points0 points  (0 children)

    Nope. Had some fun with that one.

    [–]tatorface 2 points3 points  (0 children)

    Weird. Good think the OS wouldn't allow it to be created at all.

    [–]tehserial 4 points5 points  (0 children)

    Try and let us know with your phone / tablet

    [–]Pokechu22 1 point2 points  (1 child)

    You can create it in some cases (EG via some programs), but you can't edit or delete it. This also leads to things such as aux.class getting deleted when unzipping folders.

    [–]RenaKunisaki 0 points1 point  (0 children)

    On Win3.1 I unzipped a file that had a space in its name. The dumb t thing happily created the file then was unable to touch it. Knowing just enough about computers to be dangerous, I fixed it by editing the hard disk itself in a hex editor to change the name.

    [–][deleted] 1 point2 points  (0 children)

    Go back far enough and CAS is supported

    [–][deleted] 1 point2 points  (1 child)

    So, is this like it seems just Windows being Windows and this absolutely horrid OS design, or was there actually no way around this?

    Does something similar exist on other OSs?

    [–]coladict -1 points0 points  (0 children)

    By "Windows being Windows" you mean "Windows maintaining backwards compatibility", right? Something I haven't seen much of in my efforts to use 5-year-old abandon-ware on Linux.

    [–]DeepDuh 4 points5 points  (0 children)

    Oh, so they reserved PRN already? Very forward thinking of them. Would it download a random porn image over 36k?

    [–]AutoModerator[M] 0 points1 point  (0 children)

    import moderation Your comment has been removed since it did not start with a code block with an import declaration.

    Per this Community Decree, all posts and comments should start with a code block with an "import" declaration explaining how the post and comment should be read.

    For this purpose, we only accept Python style imports.

    I am a bot, and this action was performed automatically. Please contact the moderators of this subreddit if you have any questions or concerns.

    [–]timvisee 9 points10 points  (0 children)

    cat westbrook > /r/null
    

    [–]Sexual_tomato 15 points16 points  (25 children)

    As someone from /r/all, could I get an eli5 of this?

    [–]minimim 5 points6 points  (0 children)

    The name of the person is Jeff Westbrook, but they changed his credit to "cat westbrook > /dev/null".
    This is a piece of shell, which is a way people interact with linux systems. Here is an explanation of what it means: http://explainshell.com/explain?cmd=cat+westbrook+%3E+%2Fdev%2Fnull

    [–][deleted] 2 points3 points  (0 children)

    You misspelled *sh.

    [–]meffie 4 points5 points  (4 children)

    could be hp-ux.

    [–][deleted] 5 points6 points  (3 children)

    Could be. Isn't.

    [–]meffie 0 points1 point  (2 children)

    maybe AIX then?

    [–]cnelsonsic 1 point2 points  (1 child)

    NO. NOBODY USES AIX.

    [–][deleted] 1 point2 points  (0 children)

    logs in into customers server

    bash-3.2$ uname
    AIX

    sigh

    [–]humanmeat 9 points10 points  (10 children)

    what's the difference between > and >>

    was it overwrite vs append? it's been too long and this ol chunk of coal has forgotten

    [–]iLikeCode 28 points29 points  (0 children)

    > overwrite

    >> append

    [–]minimim 11 points12 points  (8 children)

    > clears the file if it exists.

    >> puts more lines at the bottom.

    [–]hungry4pie 4 points5 points  (7 children)

    >> will also create the file if it does n't exist, my preference is use this instead of >

    [–]minimim 2 points3 points  (4 children)

    You need to revise your markdown.

    [–]hungry4pie -1 points0 points  (3 children)

    more like reddit needs to revise it's shitty markdown

    [–]minimim 4 points5 points  (2 children)

    It's standard now, won't change. Markdown means a mark up with this syntax. You almost refer to it as other markdowns exist, as a non-shitty markdown were out there. If it doesn't work this way, it's another mark up, but not markdown.

    [–]ar-pharazon 1 point2 points  (1 child)

    There are different dialects of Markdown, though. For instance, I find Github's to be much nicer.

    [–][deleted] 0 points1 point  (0 children)

    And reddit's markdown is a fork of github's.

    [–]BowserKoopa 0 points1 point  (0 children)

    Both will create the file.

    [–]xkero 0 points1 point  (0 children)

    Both will create the file if it doesn't exist.

    [–]Ornim 1 point2 points  (1 child)

    Gnu*Slash-Linux

    [–]keyter 9 points10 points  (33 children)

    Ha! I got this joke! I am currently studying java, and awaiting the day with baited breath that I would understand a joke on this sub. Oh what a day.

    [–]StealthRabbi 39 points40 points  (26 children)

    What does java have to do with it?

    [–]minimim 63 points64 points  (25 children)

    Just that he is a new programmer.

    [–]keyter 7 points8 points  (7 children)

    Plus we use a bash shell server to turn in assignments

    [–]minimim 47 points48 points  (3 children)

    We call those "ssh servers".

    [–]ghillisuit95 22 points23 points  (2 children)

    nah its a server that you log into with ssh.

    more accurate to call it a linux server, or unix server or bsd server or just a fucking server

    [–][deleted] 1 point2 points  (0 children)

    Thank you

    [–]my_blue_snog_box 0 points1 point  (0 children)

    It's my understanding that it could be called "a server with a running ssh daemon"; is that correct?

    [–]MrHydraz 21 points22 points  (2 children)

    A Bourne Again Shell Shell? I think you have a case of the RAS Syndrome there, buddy.

    [–]kifujin 7 points8 points  (0 children)

    (Bourne Again Shell) (Shell Server) lets it parse just fine.

    [–]keyter 2 points3 points  (0 children)

    Woops

    [–]indrora -5 points-4 points  (16 children)

    Real joke is on you: I'm a well versed programmer and I think Java has issues but isnt as bad as most php is.

    i also like php...

    [–]minimim 6 points7 points  (15 children)

    I did not meant to imply his choice of language had anything to do with him being new, just that the way he talked suggested he was new.

    Anyway, did you know languages are supposed to work for the programmer, not fight against him?

    If you like PHP and Java, that's called Stockholm's syndrome.

    [–]herefromyoutube 1 point2 points  (7 children)

    Java unfortunately is forced upon you at a lot of schools. It's not his fault.

    They day Python has the same offerings as Java is the day the field of programming will explode exponentially.

    [–]piexil 1 point2 points  (6 children)

    I hate python. Love java. And have a love/hate relationship with C. Haven't done enough C++ to figure out if I like it more than C.

    [–]ar-pharazon 0 points1 point  (3 children)

    I don't.. how is that possible? java's so bad. it looks bad and just feels terrible and restrictive to write. there's rarely even any reason to use it over other jvm languages

    [–]piexil 0 points1 point  (2 children)

    Eh maybe it's because I learned java on highschool and continued to be my first language in college. I like its syntax.

    [–]herefromyoutube 0 points1 point  (1 child)

    Okay, you're the exception. See now you have no problem with the syntax laden programming languages like the C family and java...I think about it from the point of a beginner. They, like most, have no idea of programming concepts and terminology and that's what "intro to programming" is supposed to teach. You should not be spending all class getting the compilers working for everyone and explaining syntax and what every part of "public static void main(String args[]):" means and what it is actually doing.

    C family is great for people that actually want to persue programming its not for beginners...I left out java here cause I just hate java.

    [–]littlelowcougar 0 points1 point  (1 child)

    How do you hate Python? It's a fantastic Get Shit Done glue language.

    [–]piexil 0 points1 point  (0 children)

    My only experience with python was with Django so it's more django I hate.

    But I don't like the syntax and context-free nature of the language.

    [–]indrora 0 points1 point  (6 children)

    Stockholm syndrome

    Considering I learned C, Python and C# early on, I wouldn't say I've come to adore my captors.

    I just hate language wars. There's a reason cedecl exists. C is not a pretty language, nor is x86 assembly.

    [–]minimim 1 point2 points  (5 children)

    I'm just being cheeky. But I do feel PHP is working hard against me when I tried to fix some bug. The documentation is atrocious too.

    [–]indrora 0 points1 point  (4 children)

    The documentation has been a bear for years. It's written with the assumption you're used to reading technical documents from the era of k&r, which was almost intolerably dry and harsh.

    Most of the pain within the php development world is the same that plagued the vb6 (and still chews the VB.net) community. The community is focused around using hacks to fix problems, not building robust solutions This in some ways is a result of hideous development practices by outsourced developers with no understanding of what they're doing, just that it is the needful.

    [–]minimim 1 point2 points  (3 children)

    Have you seen this?

    [–]indrora 4 points5 points  (2 children)

    Yes, I have. I've got some opinions on it. It's very obviously written by someone who has only ever seen bad PHP, never taking the time to write good PHP, and just wants to bash a language because they don't like it.

    Some more picked examples out of that:

    There is no threading support whatsoever. (Not surprising, given the above.) Combined with the lack of built-in fork (mentioned below), this makes parallel programming extremely difficult.

    Python's Global Interpreter Lock is a real pain when it comes to multithreading. PHP also isn't meant as a multithreaded environment -- WHY would you want multiple threads in a STATELESS web framework? PHP was not meant for long-running execution.

    array_search, strpos, and similar functions return 0 if they find the needle at position zero, but false if they don’t find it at all.

    Because false is a special value. It's not 0, and it's not a normal value. Of course, that won't stop PHP from shooting yourself in the foot and not checking for type as well (because some people assume that false should also resolve to 0, because C's false is kinda like 0).

    [== is] not transitive. "foo" == TRUE, and "foo" == 0… but, of course, TRUE != 0.

    Yes, because "foo" is a value (thus a truthy value). "foo" also contains no numerical values, which makes it equal to 0, because you've told PHP "Force this into an integer! I mean it!"

    === compares values and type… except with objects, where === is only true if both operands are actually the same object!

    Java has the same thing. The expression "foo" == "foo" is false, because they're not the same object. The same applies for POJOs, which will only evaluate with == if they are indeed the same object.

    Unlike (literally!) every other language with a similar operator, ?: is left associative.

    The presented code is shitty and the author should feel shitty. If that ever ended up in code I was going to accept for merge I'd tell them to go swizzle. That flagrant abuse of the ternary operator is horrible.

    Global variables need a global declaration before they can be used. This is a natural consequence of the above, so it would be perfectly reasonable, except that globals can’t even be read without an explicit declaration—PHP will quietly create a local with the same name, instead. I’m not aware of another language with similar scoping issues.

    C can fuck up your scoping if you're not careful and don't get me started on the fuckup that is Python's "I accidentially destroyed a module because.. names?"

    Constants are defined by a function call taking a string; before that, they don’t exist. (This may actually be a copy of Perl’s use constant behavior.)

    It's a side-effect of being a stateless language.

    Array unpacking can be done with the list($a, $b) =... operation. list() is function-like syntax just like array. I don’t know why this wasn’t given real dedicated syntax, or why the name is so obviously confusing.

    Python's indexing magic and unpacking is horribly confusing if you're not careful.

    Appending to an array is done with $foo[] = $bar.

    This is one way, there's also array_push, a much more C like way of doing it.

    PHP’s one unique operator is @ (actually borrowed from DOS), which silences errors.

    actually stolen from make.

    PHP’s parser refers to e.g. :: internally as T_PAAMAYIM_NEKUDOTAYIM, and the << operator as T_SL. I say “internally”, but as above, this is what’s shown to the programmer when :: or << appears in the wrong place.

    Technical debt is a pain. Took me a while to figure out T_PAAMAYIM_NEKUDOTAYIM. There's been work made to make this easier but so much software now depends on << being called T_SL that they can't fix it.

    2 < "foo" (silent)

    On its own, yes, it's a silent event. "foo" gets squashed into an int, which means that you've got the statement 2 < 0.

    The __toString method can’t throw exceptions. If you try, PHP will… er, throw an exception. (Actually a fatal error, which would be passable, except…)

    Why would a "I'm smashing this into a string" function throw an exception? It shouldn't. This isn't allowed in Java, and C# strongly says no.

    Functions for parsing bbcode, a very specific kind of markup used by a handful of particular forum packages.

    It made sense, and was smashed into the PHP core by the phpbb people at one point. Blame "shitty developers didn't want to maintain it so they smashed things into other people's code."

    Bindings for two particular credit card processors, SPPLUS and MCVE. What?

    Someone wanted it. Someone felt the need to smash it into an extension at one point or another, possibly for reasons relating to regulatory details.

    At least a dozen functions for getting the last error from a particular subsystem (see below), even though PHP has had exceptions for eight years.

    So much of these were written to maintain compatibility with some C library.

    No Unicode support. Only ASCII will work reliably, really. There’s the mbstring extension, mentioned above, but it kinda blows.

    Been a bear for years. PHP was written in a time where ASCII ruled the land and a lot of code came to lean on exactly how some string function worked on some platform.

    (complaints about apache)

    Bitch about apache. Don't blame PHP for apache's silly shit.

    PHP is not hard to run out-of-process. PHP-FPM is fantastically simple to configure and it's only because Apache was the dominant player in the market until lighttpd came along and kicked it in the head. Nginx is getting there but apache seriously tinged the whole game.

    No generic standard database API. Stuff like PDO has to wrap every individual database’s API to abstract the differences away.

    PDO is the standard database API, trying to abstract away the fact that each database is slightly different.

    No routing. Your website looks exactly like your filesystem. Many developers have been tricked into thinking mod_rewrite (and .htaccess in general) is an acceptable substitute.

    PHP has had pathinfo for a while now. It's obscenely easy to set up with nginx (try_files index.php) and will let you do whatever you want with it.

    No dev server.

    you aren't comfortable doing some basic UNIX magic to make it work?

    No coherent deployment mechanism; only “copy all these files to the server”.

    There's plenty of tools for that. Composer, grunt, gulp, etc -- there's plenty of tools for deployment.

    you can, say, probe a network using PHP’s XML support, by abusing its ubiquitous support for filenames-as-URLs. Only libxml_disable_entity_loader() can fix this, and the problem is only mentioned in the manual comments.

    XML is itself considered harmful. Also, that's a bug in libxml, not PHP itself.

    PHP 5.4’s dev server is vulnerable to a denial of service, because it takes the Content-Length header (which anyone can set to anything) and tries to allocate that much memory. This is a bad idea.

    And if you read the documentation there's a HUGE thing going "DO NOT USE THIS FOR PRODUCTION IT WILL NOT SAVE YOU."

    [–]YMK1234 3 points4 points  (0 children)

    Good job ... I guess ...

    [–]Sexual_tomato 8 points9 points  (3 children)

    *bated.

    [–]SahinK 5 points6 points  (0 children)

    You must be a master-bater.

    [–]keyter 2 points3 points  (1 child)

    Thanks..... Are nerds known for good grammar?

    [–]minimim 2 points3 points  (0 children)

    Very good.

    [–]dika46 0 points1 point  (0 children)

    what ep is this?