Show HN: UpShot, Open Source Screenshot Sharing via Dropbox on OS X - <AUTHOR> http://fredericiana.com/2012/11/27/upshot-osx-screenshot-sharing-with-dropbox/

<comment><USER2> Isnt the Dropbox Public folder going away or is already removed for new users ? I think they stated that in the Annoucement of their new "Share a link" feature.

If you are a longtime dropbox user you will keep it though.

<comment><USER3> <https://www.dropbox.com/developers/blog/19> is what you're thinking of, so yes. It's unfortunate though. With the Public folder, you can right click on any file and get a "Copy link to file" button. With the new sharing stuff, it opens up a page in the web browser where you click a button to copy a link to the file, and that link takes you to the file inside a dropbox page instead of a nice direct link. It's pretty horrific.

<comment><AUTHOR> Delightful. I might have to use the share API then.

<comment><AUTHOR> Actually, there seems to be a way to _opt in_ to a Public folder: <https://www.dropbox.com/help/16/en> (search for "Creating a Public folder" on that page).

I haven't tried it yet, but that seems easy enough!

</comment></comment></comment></comment><comment><USER4> the script I use on linux:

      #!/bin/bash
      userid="your id here"
      myfile=$(date +%Y%m%d%S).png
      scrot -s "/home/mononofu/Dropbox/public/$myfile"
      echo "http://dl.dropbox.com/u/$userid/$myfile | xclip -selection c
      notify-send "Done"

<comment><USER5> Here's mine, a bit longer but has a few options: <https://gist.github.com/803b05c449a5eea73101>

</comment></comment><comment><USER6> I don't like having an app constantly running for this, or for it to intercept all my screenshots.

That is why I use a hacked version of Gyazo (<http://gyazo.com/>). I modified the script so that moves the file to dropbox instead of their monstrosity of a share page.

Gyazo is the best because you launch the app, are presented with a standard screenshot UI, and then the app closes and your URL is copied and opened in a browser.

Here is my modified gyazo script if you want to try it: <https://gist.github.com/3390267>

<comment><USER7> Worked off that to make one that uploads to s3:

[https://github.com/RoboTeddy/dotfiles/blob/master/bin/screen...](https://github.com/RoboTeddy/dotfiles/blob/master/bin/screenshot)

\- uses https, to keep url and screenshot secret

\- uses long random filenames to prevent enumeration

\- copies url to clipboard before upload starts, so you can paste it immediately

</comment></comment><comment><USER8> This is cool also from the standpoint of a nice example of using Python to do a Mac menubar app. I've got an idea for something I'd like to do and I've been looking for an easy to follow example like this for a while now. Thanks!

</comment><comment><USER9> "when you do, it moves that file to the Dropbox public directory and copies the URL to the file into your clipboard automatically"

Sold. Given the amount of prototyping I do on my workstation requiring constant review of previous revisions for collaboration, this is something that lets me get a link sent and stays as far out of the way of my workflow as possible-and it supports an application my team already uses? Yep. Sold.

I might fork this so I can add the option to define which directory in /Public, since I'm OCD like that (having stray files kills me). Thanks for this!

<comment><USER10> Also try GrabBox, which is this but a year or so ago: <http://grabbox.devsoft.no/>

</comment></comment><comment><USER11> I use an instance of S3itch (<https://github.com/roidrage/s3itch>) together with the old Skitch client.

</comment><comment><USER12> I use <http://monosnap.com/> because it allows one to edit screenshots in a way Skitch did (does).

<comment><USER8> This should get voted up. This app is _exactly_ what Skitch should be. Thank you!

</comment></comment><comment><USER13> I'm excited to see a Cocoa app on github!

A year ago I hacked together an almost trivial Folder Action Script that does the same thing, and works really well. In case anyone's interested, here it is:

<https://gist.github.com/4165548>

<comment><AUTHOR> Very nice! Good work.

I also agree on the Cocoa app on github. Haven't seen many of those!

</comment></comment><comment><USER14> I use Jing to do just this. It works on Windows and Mac and next to Screenshots also allows to capture up to 5 Minutes of Screencast at a time. Then I have the save location set to the Public Dropbox folder and the link is automatically put into my clipboard.

</comment><comment><USER3> I actually just bought Captured on the appstore for this specific purpose. Wish I hadn't now, since imgur uploading (part of why I bought it) appears to be broken. This works wonderfully. I miss the old Skitch, but this helps me heal.

<comment><USER15> I used Captured and imgur and it's all working fine for me

<comment><USER3> It doesn't work at all for me. It just flashes the colorful lights for a minute, doesn't make the upload sound, and doesn't actually upload my screenshots. I tried emailing the author, but he hasn't responded. There doesn't seem to be any other way to get help. :\

</comment></comment></comment><comment><USER16> "I found TinyGrab, which works with OS X's screenshot function. I can even upload the files to my own server, but only using unencrypted FTP, which is scarily insecure."

!true. tinygrab supports sftp. doesn't it?

<comment><AUTHOR> On OS X? No. Not last I checked.

</comment></comment><comment><USER17> It works for me when I do Shift+CMD+3 (full screen), but Shift+CMD+4 (variable size screenshot) does not work.

OSX 10.8.2 and up to date dropbox.

<comment><AUTHOR> I fixed this bug and uploaded a bugfix release (0.9.1) to the download section: <https://github.com/fwenzel/upshot/downloads>

Feel free to download and replace your installation with that!

(PS: automatic updating is an upcoming feature also, but I first have to figure out how to do it :) )

</comment></comment><comment><USER18> The ability to just capture a portion of the screen is the only feature missing i would need. Awesome work.

<comment><USER19> Cmd-Shift-4 allows you to select a portion of the screen to screenshot. If you press Space after, you can select whole windows.

<comment><USER20> The thing is upshot doesn't seem to trigger if portion of the screenshot is selected. Capturing the whole window works though.

Edit: someone has opened a github issue for this <https://github.com/fwenzel/upshot/issues/28>

<comment><AUTHOR> Yes this was unintentional. Thanks for reporting this, I'll look into it!

I'll also need to add automated updates soon, or I can't notify people of updates ;)

</comment></comment></comment></comment><comment><USER16> btw..did you consider <https://droplr.com>

<comment><USER21> > Evernote made it hard to share the URL to the image itself, rather than a > webpage showing the image on it. This may help their revenue, but > unnecessarily hampers the recipients' ability to use the images I share with > them.

<http://d.pr/i/P0hg>

<comment><AUTHOR> Yeah, that's a bit sad.

That said, UpShot is not trying to compete with all the services out there that also do something useful. I just wrote my own to scratch a particular itch of mine. I hope it's useful to others also.

If you're not bugged by the interstitial HTML document standing between you and your screenshot, good for you! :)

<comment><USER3> I am. So much. So thank you and keep working on it.</comment></comment></comment></comment>


Videos Near Me - Videos in 2 mile radius - <AUTHOR> http://ctrlq.org/youtube/?hn

<comment><USER2> Would be kinda cool if it actually worked.</comment>


Critical Vulnerabilities in JSON Web Token Libraries - <AUTHOR> https://auth0.com/blog/critical-vulnerabilities-in-json-web-token-libraries/ <comment><AUTHOR> (With the caveat that this article is actually from 2015.)</comment>


Clinton Urges Countries Not to Restrict Internet - <AUTHOR> https://www.nytimes.com/2011/12/09/world/at-hague-hillary-rodham-clinton-urges-countries-not-to-restrict-internet.html?_r=all <comment><USER2> It's nice to know the US is trying to fight the worldwide plague of internet censorship and monitoring, DNS spoofing, and unilateral site shutdowns.

(cough cough SOPA cough cough DHS cough)

Yes sir, freedom of speech, freedom from unreasonable search, and "innocent until proven guilty", that's how we do it in the Land of the Free.

<comment><USER3> To be fair, it's not so different from the way we operate in every other situation.

e.g. championing free and fair elections and decrying other people's failures while passing a seemingly endless stream of poll-tax-esque disenfranchisement legislation here at home, in the name of combating voter fraud problems we've never actually seen manifest.

or decrying the "crony capitalism" of Taiwan and then China, while regulatory capture leaves us looking just as bad.

or decrying the income inequality in banana republics as evidence of corruption and social injustice, while deregulating and tax-cutting our way to the top of that list.

<comment><USER4> I find it interesting that line three of your post decries regulatory capture, while line four decries deregulation. I think it points to how much of a problem we actually have - we don't want complete deregulation, but the regulations we do end up getting often end up just making it worse. It's pretty disheartening.

<comment><USER3> Point three is very much about deregulation in industries enjoying regulatory capture.

Wall Street is quick to decry regulations that bar it from doing what it wants. But it's just as quick to protect those regulations that keep competitors out. The regulatory problem really is just one of capture.

"Business-crippling regulations" are up there with Reagan's Welfare Queen, Ohio's voter fraud and Tax Cuts' job-creating stimulus credentials. That is: long accepted as political fact despite a complete lack of evidence of their existence and a continually growing pile of evidence against.

<comment><USER4> I'm not dogmatic about these kinds of things - I will support anything that has a strong body of evidence supporting it (with the caveat that rights don't get violated). Regulations are not sacrosanct - there are bad ones and good ones, and sometimes deregulation kills the bad ones, in which case it should be supported. Sometimes it's just regulatory capture in action, as you said, in which case it needs to be stopped.

</comment></comment></comment></comment></comment><comment><USER5> Moral Relativism is nothing new.

Reminds me of the quote by Orwell: All nationalists have the power of not seeing resemblances between similar sets of facts. A British Tory will defend self-determination in Europe and oppose it in India with no feeling of inconsistency. Actions are held to be good or bad, not on their own merits, but according to who does them, and there is almost no kind of outrage — torture, the use of hostages, forced labour, mass deportations, imprisonment without trial, forgery, assassination, the bombing of civilians — which does not change its moral colour when it is committed by 'our' side.

</comment><comment><USER6> Hope she finds time to bring that show to Washington DC.

</comment><comment><USER7> I hope they realize how damaging their own in house legislature like SOPA is damaging to their international efforts. They already look a bit more suspect with SOPA on the table and were it ever to pass they'd have the credibility of China.

<comment><USER8> Less. China is honest about restricting its people and doesn't try to tell everybody else they're not paying attention to human rights.

</comment></comment><comment><USER9> It's ridiculous that there is no mention of SOPA or her thoughts on it in this article. Why would the NYT not mention it either?

<comment><USER10> I wish I could be there when the penny drops. Your face is going to be awesome.

</comment></comment><comment><USER11> Oh the hypocrisy.

[http://www.salon.com/2011/12/09/hillary_clinton_and_internet...](http://www.salon.com/2011/12/09/hillary_clinton_and_internet_freedom/singleton/)

<comment><USER12> Yes. The hypocrisy has me questioning her authenticity. Has she had a change of heart or is she just playing a game to increase popularity and gain votes?

<comment> buff-a She made this exact same speech before wikileaks (January 2010) [1]. She's making this exact same speech after wikileaks. The hymn sheet doesn't change. [2] By standing up and demanding that other countries behave morally she suggests that we make this demand because _we_ do. Do you think Pinochet did not stand and make these same speeches? Or Hu Jintao? Or Saddam Hussein? Or Thatcher? Or Assad?

Are you imagining she would stand up and tell the _truth_? Have you been paying attention? If you were to ask her, would she say that flying military aircraft into our airspace would be an act of war, even as we fly ours into Iran's? The list is endless.

This is all theater.

[1] [http://www.foreignpolicy.com/articles/2010/01/21/internet_fr...](http://www.foreignpolicy.com/articles/2010/01/21/internet_freedom?page=full)

[2] <http://orwell.ru/library/essays/nationalism/english/e_nat>

</comment></comment></comment><comment><USER13> Not a single mention of SOPA in the article...

<comment><USER14> Of course not. SOPA is common-sense legislation designed to protect the creative people in our society. It has nothing to do with Internet restrictions or censorship. </sarcasm>

</comment></comment><comment><USER15> Ok Mrs.Clinton, Please don't sell filtering and spying device to countries ;)

</comment><comment><USER16> NYT sucks for not mentioning SOPA. #FAIL.

</comment><comment><USER17> Great news, I guess this means that Wikileaks will be free to receive donations and disseminate news of interest to citizens.

At least now we know the real reasons the US wants to restrict internet access, it's not copyright as we had long suspected but to "threaten basic freedoms and human rights and also international commerce and the free flow of information."

</comment><comment><USER18> "THE HAGUE — Secretary of State Hillary Rodham Clinton and other international leaders urged countries and private businesses on Thursday to fight increasing efforts to restrict access to the Internet by repressive governments and even some democratic ones. "

Some democratic ones.... like the United States and Australia, right?

</comment><comment><USER19> I think my irony meter just hit 11.

</comment><comment><USER20> The USG has always been a big follower of the "do as we say, not as we do" paradigm.

</comment><comment><USER21> _She added: "There isn't an economic Internet and a social Internet and a political Internet. There's just the Internet."_

She should have said, "It's the Internet, stupid."

</comment><comment><USER22> This from a woman whose husband signed the DMCA into law.

</comment><comment><USER23> Meanwhile at the US.... SOPA Need I say more?

</comment><comment><USER24> I think we have a House to put in order first.</comment>


Real world OCaml external draft has just been released - <AUTHOR>

The Real World OCaml book has released a Draft for External review.<p>The PDF can be found at: http://www.realworldocaml.org/alpha5/rwo-snapshot.pdf <comment><AUTHOR> I have absolutely no relation to this book but I'm pretty excited about its release.

Specifically the chapters on the FFI, Memory Layout and Garbage collector seem pretty cool.

It's not often you get a text that goes into that kind of detail but if OCaml is to be a more prominent language then adding more libraries via the FFI is probably something that has to happen.

</comment><comment><USER2> alpha 5 is not yet open to the general public, access appears to be whitelisted</comment>


Xv6, a simple Unix-like teaching operating system - <AUTHOR> http://pdos.csail.mit.edu/6.828/2012/xv6.html <comment><USER2> Really cool project. Older, simpler, unixes are surprisingly relevant for undergrad-level learning.

It reminds me of my OS class in my undergrad days. We skipped a few bits by using the JVM to get a few things for free, but we still had to write (as groups of 3-5 people) an entire unix-like, complete with user-space programs, messaging systems, etc.

Definitely one of the most valuable classes I took for my degree.

</comment><comment><USER3> Also xv6 book that's meant to accompany the source code. [http://pdos.csail.mit.edu/6.828/2012/xv6/book- rev7.pdf](http://pdos.csail.mit.edu/6.828/2012/xv6/book-rev7.pdf)

<comment><USER4> The line numbers in the book reference a 92-page printout of the source code here: [http://pdos.csail.mit.edu/6.828/2012/xv6/xv6-rev7.pdf](http://pdos.csail.mit.edu/6.828/2012/xv6/xv6-rev7.pdf)

</comment></comment><comment><USER5> Purdue has a similar OS, Xinu, that was created for teaching. It is actually used in industry around the world. - [http://www.xinu.cs.purdue.edu/](http://www.xinu.cs.purdue.edu/)

<comment><USER6> +1 I learned a boatload by reading the xinu books.

Also met Doug, he's a great guy, old school C hacker.

</comment></comment><comment><USER7> That reminds me, I stumbled upon the website of the Unix Heritage Society ([http://www.tuhs.org/](http://www.tuhs.org/)) which has the source code for the early versions of Unix.

Here is the first version

[http://minnie.tuhs.org/cgi-bin/utree.pl?file=V1](http://minnie.tuhs.org/cgi- bin/utree.pl?file=V1)

I did not really spend enough time reading the source to understand what's going on but it's interesting regardless.

<comment><USER8> There's also a port of V7 Unix to x86, by [http://www.nordier.com/v7x86/](http://www.nordier.com/v7x86/)

I only wish that there was an add-on tcp/ip stack for that version, then one could really have fun with it. Yes, I know, the ip stack add on is called BSD.

<comment><USER9> You might want to look for 2.9BSD, a PDP-11 Unix variant which was more or less v7 with the TCP stack from 4.xBSD grafted in. Patching this into an x86 port would still be a bit of a project, but it's probably easier than starting with 4.xBSD directly, or starting from scratch.

<comment><USER10> This is great advice. 2.9BSD was the first UNIX I got to play with in depth it has all the pieces you need and it can do networking.

</comment></comment></comment></comment><comment><USER11> Because splatting object files and intermediates all over the same directories as the source drives me nuts, I shuffled things so that it's a bit easier to find things (splitting source into kernel/, user/, ulib/, tools/, and include/ directories) and generated files are collected into kobj/, uobj/, out/, and fs/ directories.

[https://github.com/swetland/xv6](https://github.com/swetland/xv6)

I also tweaked the scheduler to halt if there's nothing to schedule, per tankenmate's suggestion.

A side-effect of this change is the generate-source-code-printout targets were rather severely broken, so they're simply removed for the moment.

</comment><comment><USER12> If you are running this on your laptop and want to save your battery then use this patch...

[http://pastebin.com/BxXDDtTh](http://pastebin.com/BxXDDtTh)

<comment><USER13> Interesting. How does the processor restart after _hlt_?

<comment><USER12> Any interrupt will take the processor out of hlt state; i.e. hit a key on the keyboard, it will fire an interrupt and the processor will start processing again. The clock tick will also fire an interrupt. Once it fires an interrupt it will start searching for runnable processes again; e.g. a process can now return from a read() from it's STDIN tty now that you have typed a key.

<comment><USER11> There's some inefficiency here in that wake() doesn't cause the other cpu to wake immediately from hlt so it'll remain halted until the next timer tick or whatnot.

It'd be fun to add some scheduler stats and poke around with things a bit. Some really trivial cprintf() tracing in scheduler() implies that single processes can ping-pong between CPUs, but the printing itself is slow and invasive and could possibly be the cause.

</comment></comment></comment></comment><comment><USER14> >Russ Cox (email@example.com)

>Frans Kaashoek (firstname.lastname@example.com)

>Robert Morris (email@example.com)

sh$%t, this got to be good!

Cloning the repo and surfing at the source code, just for fun, right now :)

</comment><comment><USER15> xv6 is a pleasure to hack on and learn from! It's got everything you'd expect from a unix-like OS (multi-processor support, simple scheduler, unix-like FS, many of the standard syscalls, fork/exec based shell, etc).

Linux and *BSD may be the modern standard for unix-like OSes, but they're often too complex and opaque for beginners to learn from. It's super easy to read and toy with xv6's code if you want to learn more about OS internals, though. For example, I was able to implement a simple log structured file system: [https://github.com/Jonanin/xv6-lfs](https://github.com/Jonanin/xv6-lfs)

Note: if you're looking for companion reading material, check out this OS book: [http://pages.cs.wisc.edu/~remzi/OSTEP/](http://pages.cs.wisc.edu/~remzi/OSTEP/) (IMO it's super approachable and understandable for undergrad-level learning)

</comment><comment><USER16> I just did a quick grep through the code, and apparently students _are_ expected to understand this.

<comment><USER17> Shame this is getting downvoted, probably by people who don't understand the reference. See the second section ("You are not expected to understand this") in: [http://cm.bell-labs.com/cm/cs/who/dmr/odd.html](http://cm.bell- labs.com/cm/cs/who/dmr/odd.html)

</comment></comment><comment><USER18> I wonder how this compares to pintos ([http://www.stanford.edu/class/cs140/projects/pintos/pintos_1...](http://www.stanford.edu/class/cs140/projects/pintos/pintos_1.html)) which is an i386 unix like OS. In my under grad class we had to build thread scheduling, sys calls, virtual memory, and some file system functionality on top of pintos. It was the most challenging and most interesting set of projects I've ever completed.

</comment><comment><USER19> Adding to the list of alternatives:

MINIX ([http://www.minix3.org/](http://www.minix3.org/))

<comment><USER20> At the risk of reigniting an old flame war, it seems to me that a microkernel in which core OS functions such as process management and the virtual file system are in separate servers would be _more_ complicated than a monolithic kernel. Having device drivers and specific file systems in user space may be useful, though.

<comment><USER21> The impression I get (university class on OSes) is that the microkernel/modular approach is more about making it simpler to port than making a specific instance simple? Similarly it'd be less complicated to extend since that's just a case of adding a new loadable module. In terms of a learning OS I'm not sure exactly which should be prioritised - extendability/portability or a simple structure? If this is a topic with a lot of depth I'm obviously not getting I'd definitely be interested in a discussion - my exam is soon :)

<comment><USER20> Have you read the debate between Andy Tanenbaum and Linus Torvalds from about 1992? It's a discussion of the tradeoffs between microkernels (Tanenbaum) and monolithic kernels (Torvalds). You can find it here:

[http://oreilly.com/catalog/opensources/book/appa.html](http://oreilly.com/catalog/opensources/book/appa.html)

The chapter by Torvalds in the same book is also worth reading:

[http://oreilly.com/openbook/opensources/book/linus.html](http://oreilly.com/openbook/opensources/book/linus.html)

The claim that microkernels improve portability makes no sense to me, since Linux itself is very portable, as are the BSDs (especially NetBSD and OpenBSD).

<comment><USER22> This is flame between two man with HUGE egos, not a debate.

</comment></comment></comment></comment></comment><comment><USER23> Awesome! I really hope MIT releases video lectures for 6.828 so I can do the full course on my own. I'm listening to Berkeley's OS lectures right now but I would love a course built around xv6.

<comment><USER24> This page has links to 6.828 lecture videos (2011):

[http://pdos.csail.mit.edu/6.828/2011/schedule.html](http://pdos.csail.mit.edu/6.828/2011/schedule.html)

</comment></comment><comment><USER25> Alternatively there's also Barrelfish: [http://www.barrelfish.org/](http://www.barrelfish.org/) but there the focus lies on multiple cores (48ish+++).

</comment><comment><USER26> For anyone else who is playing with this in OS X Mavericks, I've written a blog post describing how to get things working on it (there are a couple steps that need to be tweaked.) - [http://blog.ljs.io/post/71424794630/xv6](http://blog.ljs.io/post/71424794630/xv6)

Hopefully this is useful to somebody and isn't too blatantly link whorey :)

</comment><comment><USER27> Someone's going to have the fun job of porting this to UEFI at some point in the not-too distant future.

<comment><USER28> It's multiboot, so you can just boot it from grub.efi. See sheet 10, xv6/entry.S.

The more annoying thing is likely to be that it's 32-bit only. Are there any common machines that do x86-32 UEFI boot? Alternatively, does a 64-bit grub.efi know how to exit long mode and go into protected mode, to multiboot a 32-bit kernel?

(I was actually talking the other day with some folks about whether a 6.828 project involving a UEFI port of JOS, the other teaching OS, would make sense, but the 64-bit thing seemed to make it less interesting unless you also plan to do a 64-bit port of JOS. Which has been done before in a final project, admittedly...)

<comment><USER27> Ah, true - there's no support for any other BIOS-based services, so that's not going to be a problem. Being 32-bit only isn't really an issue, there's no theoretical problem with a UEFI-based bootloader jumping into 32-bit before executing a multiboot image. You won't be able to make any UEFI runtime calls, but that's probably not a high priority anyway.

</comment></comment></comment><comment><USER29> The link to the schedule points to:

[http://pdos.csail.mit.edu/6.828/schedule.html](http://pdos.csail.mit.edu/6.828/schedule.html)

It should be:

[http://pdos.csail.mit.edu/6.828/2012/schedule.html](http://pdos.csail.mit.edu/6.828/2012/schedule.html)

</comment><comment><USER30> Were using the Xv6 kernel for the OS class here at the university of Utah, for the first time. In my opinion an OS class that makes you hack on low level code is significantly more beneficial tha just a theroy class.

</comment><comment><USER31> Alternatively, historical codebases of various unices at [http://www.tuhs.org/archive_sites.html](http://www.tuhs.org/archive_sites.html)

</comment><comment><USER4> If "Xv6's use of the x86 [is intended to make] it more relevant to students' experience," then why use AT&T assembly language syntax rather than Intel?

<comment><USER32> Because the GNU toolchain uses AT&T syntax and most students have the GNU toolchain readily available?

<comment><USER4> > GNU toolchain uses AT&T syntax

But also accepts Intel syntax with a directive, and even admits "almost all 80386 documents use Intel syntax" [1].

As for user acceptance, a poll on the xkcd forums shows that the vast majority of users prefer Intel syntax [2].

That takes care of the political/network effects arguments. As far as the actual technical arguments, the position against AT&T syntax is obvious and overwhelming -- the unnaturalness of src,dest operand order; the lazyness of the parser's authors at the expense of its users by requiring percents or dollar signs to indicate token types; the usually-redundant size postfix; and the utter incompatibility with basically all non-GNU x86 documentation.

[1] [https://sourceware.org/binutils/docs/as/i386_002dVariations....](https://sourceware.org/binutils/docs/as/i386_002dVariations.html#i386_002dVariations)

[2] [http://forums.xkcd.com/viewtopic.php?f=40&t=19558](http://forums.xkcd.com/viewtopic.php?f=40&t=19558)

<comment><USER33> Strictly imho, the translation overhead of reading one or the other if you're used to the opposite syntax is not that high. We're not talking haskell vs. c++ here, it's operand ordering and maybe a few characters' worth of difference in the commands (e.g. add vs addl) or typing register names and so on. The basis of my opinion, fwiw, is that all of my classes involving asm used GNU tools/AT&T, and I never felt enormous difficulties reading Intel- inflected docs. It's quite possible that I was just lucky enough to have never been bitten badly, I don't know.

So while I don't disagree with your technical reasoning, I don't think that it's a significant pedagogical barrier. The puckish part of me wants to suggest that having to figure something out when the documents are a) insane b) backwards c) written in Martian d) all of the above is great preparation for commercial work. ;)

<comment><USER11> The reality is you just don't need to write a whole lot of assembly day-to-day so using what the tools support best tends to be the path of least resistance.

Xv6 itself has about 5000 lines of .c and 364 lines of .S in the kernel. Another 1500 lines in vectors.S but that's machine generated. There's a ton of stuff one could add to Xv6 (drivers, syscalls, services, etc), almost all of which one would likely just write in C.

In practice, I've found assembly mostly used for some hand-tuned inner loops (codecs, memcpy, etc) and little snippets of glue code like entry.S, swtch.S, etc.

</comment></comment></comment></comment></comment><comment><USER34> I thought this was pretty awesome when I found it a couple of years ago, especially since it's multicore.

</comment><comment><USER35> Yes! I'm so happy to see this featured on HN. You'll be fascinated by the topics presented in xv6.

Have you ever:

\- ... Wondered how a filesystem can survive a power outage?

\- ... Wondered how to organize C code?

\- ... Wondered how memory allocation works?

\- ... Wondered how memory paging works?

\- ... Wondered about the difference between a kernel function and a userspace function?

\- ... Wondered how a shell works? (How it parses your commands, or how to write your own, etc)

\- ... Wondered how a mutex can be implemented? Or how to have multiple threads executing safely?

\- How multiple processes are scheduled by the OS? Priority, etc?

\- How permissions are enforced by the OS? Security model? Why Unix won while Multics didn't (simplicity)?

\- How piping works? Stdin/stdout and how to compose them together to build complicated systems without drowning in complexity?

\- So much more!

I credit studying xv6 as being one of the most important decisions I've made; up there with learning vim or emacs, or touch typing. This is foundational knowledge which will serve you the rest of your life in a thousand ways, both subtle and overt. Spend a weekend or two dissecting xv6 and you'll love yourself for it later. (Be sure to study the book, not just the source code. It's freely available online. The source code is also distributed as a PDF, which seems strange till you start reading the book. Both PDFs are meant to be read simultaneously, rather than each alone.)

<comment><USER36> I'm sold. Based on your experience, would this course be approachable for self-study by individuals without 3 years of CS education? The MIT page[1] suggests the intended audience for the class are seniors and graduate students (M.Eng and PhD).

[1] [http://pdos.csail.mit.edu/6.828/2012/general.html](http://pdos.csail.mit.edu/6.828/2012/general.html)

<comment><USER37> In my opinion, the 3 years of CS has more to do with age of the student than actual learning. With a requisite level of maturity, this should not be a problem.

</comment></comment></comment><comment><USER38> I'm not knowledgeable about different philosophies when it comes to OS's, but it seems that pretty much everyone thinks that being Unix-like is a good thing. Is that true? Or is there some people that think that some different philosophy that is perhaps more or less mutually exclusive with regards to being Unix-like is better? I don't even know if that last question makes sense.

<comment><AUTHOR> Inspiring comment from Bane early this year, [https://news.ycombinator.com/item?id=5624912](https://news.ycombinator.com/item?id=5624912)

If you need a yacht that can carry many people on the high seas through bad weather at speed, unix is solid. But there hasn't been a great racing dinghy since the 80s.

Maybe there is an demoscene/hacking tradition out there, waiting for to be discovered.

Consider the debates that we don't have:

* _Hardware abstraction_. Casual audio programming is harder now than it was twenty years ago. Also - why doesn't hardware self-describe?

* _High-level languages_. Chuck Moore's ideas of code bloat are on a totally different level to the mainstream. He's onto something.

* _Protected memory_. Does it matter on a machine designed for fun? How much more hackable could your OS be if you got rid of stuff like this?

Stability doesn't matter so much in fun systems. If you're in a dinghy and not capsizing, you're not sailing hard enough.

<comment><USER39> The VPRI (vpri.org) has some interesting ideas with respect to your second bullet point.

Also, there was something about Arthur Whitney looking to build a stand-alone OS in/under K recently.

<comment><AUTHOR> Found the reference. [http://kparc.com/os.htm](http://kparc.com/os.htm)

Thanks - looks awesome. I particularly like his approach to HTML.

</comment></comment></comment></comment><comment><USER40> MIT has essentially recreated XINU. BFD. [http://en.wikipedia.org/wiki/Xinu](http://en.wikipedia.org/wiki/Xinu)</comment>


Why are you afraid of remote work? - <AUTHOR> https://www.evozon.com/blog/afraid-remote-work <comment><USER2> The article completely ignores the point that I can get far more accomplished talking to people face to face than over Slack or Hangouts.</comment>


Here's why this Millennial loves the Beatles - <AUTHOR> http://college.usatoday.com/2016/09/22/heres-why-this-millennial-loves-the-beatles/ <comment><USER2> Is a millennial listening to one of the most prolific, well known, heavily advertised, critically acclaimed, etc band in the history of modern music really newsworthy? (no)</comment>


Mathematica 7.0 Released Today - <AUTHOR> http://blog.wolfram.com/2008/11/18/surprise-mathematica-70-released-today/

<comment><USER2> Those of you interested in Silicon Valley trivia might note that the name Mathematica was suggested by someone named Steven Jobs: [http://reference.wolfram.com/legacy/v1/contents/acknowledgme...](http://reference.wolfram.com/legacy/v1/contents/acknowledgments.pdf)

The name is a little misleading though, as the later releases have shown Mathematica to be a great general symbolic manipulation program not just for, say, Calculus homework, but Wolfram had already used the name SMP, and the other options just didn't seem as catchy: [http://www.stephenwolfram.com/scrapbook/internals/page5/3.ht...](http://www.stephenwolfram.com/scrapbook/internals/page5/3.html)

<comment><USER3> I always believed, that it was a shameless borrowing (as do "great artist") of Macsyma -- living on free as Maxima.

Octave, Scilab and python driven C++ (e.g. Automatically Tuned Linear Algebra Software, ATLAS) can do just as good, if not the same or better. If you know what you are doing (which would be a must, anyway).

ps: Steven's book is full of spin, so I guess some of them would also make it to his website and vice-versa: this is called marketing and propaganda...

</comment></comment><comment><USER4> While I will probably never use mathematica, due to its breathtaking price, one can only wonder how many researchers the world over simply pirate it. I also doubt we will ever see Wolfram willing to set the price at a level that normal human beings can afford.

Perhaps a client-server version that does all its computing back at Wolfram's servers, would give them the confidence to dabble with a sane price point...

<comment><USER5> researchers work in universities, almost all of which have site-wide licenses. Site-wide licenses for mathematica also start to approach reason. Its doubtful that that many researchers will have to pirate it.

<comment><USER4> Universities in a lot of countries do not have budgets that can deal with even $1000 a seat.

<comment><USER6> I can confirm this. We have a site-wide license for Matlab, but not for Mathematica. Educational version of Mathematica 7 would cost me my two monthly salaries - therefore I will pirate it.

<comment><USER7> I didn't buy any, but from my point of view, Mathematica is priced just a bit lower than Matlab.

Matlab quotes me $1900 for a single common license: <http://www.mathworks.com/store/loginSubmitGuest.do> while Mathematica is $1750: <http://store.wolfram.com/view/app/mathematica/>

How much does site license for Matlab cost you?

<comment><USER8> I got Matlab student version 4 years ago for around $140.

</comment></comment></comment></comment></comment></comment><comment><USER9> Sweet Jesus. The image-processing capability is pretty hot, as is this:

        ProteinData["A2M", "MoleculePlot"]

It's a shame Mathematica isn't open-source; I'd love to see the code.

<comment> syntax-case Why? Do you think there's something special about displaying molecules? Or do you think Mathematica does it better than anything else?

Try PyMOL - the most widely used molecular graphics software, probably.

<comment><USER9> Yes, I use PyMol quite a bit. The source code is hideous, and the author likes it that way. It would take an immense effort to smoothly incorporate PyMol into a larger system like SciPy or Sage; it would be very useful if that happened, but I don't think it will any time soon.

I haven't used Mathematica 7 yet, but it looks like the tools it implements in one small library are decent substitutes for what's currently implemented in several big hairy bioinformatics toolchains. Look at how we operate now -- NCBI offers a bunch of free standalone tools; BioPerl and BioPython do some good glue, and then there are a bunch of visualization tools, and we FTP copies of whatever databases we need and keep updated manually. The extensible tools each have their own extension language, so a RasMol script won't load in PyMol (the tweaks, not the PDB file). Mathematica 7 appears to offer the basic components of this in one clean, well-organized standard library, controlled by one powerful language.

All that's great, but the especially interesting thing is their claim that the design of the whole system made all of this _easy_. The image-processing tricks and the unassuming Parallelize function seem like very specialized features, but they cobbled all of this together in, I guess, 2 years and some change, on top of a codebase that's almost 20 years old. It's like the anti- PHP -- brilliant design decisions all along that make adding new features easier, not harder. I have a feeling the Mathematica source code contains some very interesting ideas, and if it were open-source, it would be relatively easy to add additional features that seem like a big deal in existing tools.

<comment> syntax-case I haven't used Mathematica 9.0 and its chemistry-related functions, but from the presentations, they look like practically useless toys for dabbles.

Can Mathematica do raytracing, display secondary structure, semi-transparent molecular surface and allow you to select coloring patterns? Is it easy to predict protonation states of molecules at different pH levels and electrostatic potentials? Can it do molecular dynamics?

Who cares that they have built-in access to the melting point of caffeine?!

</comment></comment></comment></comment><comment><USER10> Some of this stuff is jaw droppingly awesome. But I have to say, the most useful things for me will be the discrete calculus, the new visualizations, and the enhanced typesetting and UI. Many of the new mathematical additions are very interesting but very specific.

I am very happy that Mathematica 7 ships with so much _data_. Data processing and procurement is a perpetual burden for those in chemistry, life science and environmental science. I'll be glad if this tax has somewhat lifted it.

</comment><comment><USER11> If you missed Wolfram's talk at Startup School you can get it at (along with the other talks):

<http://feeds.feedburner.com/Ycombinator-StartupSchool>

<comment><USER2> Unfortunately, the link to the Wolfram talk on Feedburner isn't working. Here's a link to the transcript of the talk (the mp3 is also available for iPod-achievers by going to the talk index): [http://www.stephenwolfram.com/publications/talks/ycombinator...](http://www.stephenwolfram.com/publications/talks/ycombinatorschool/)

The talk is worth a read, but he doesn't give out any secrets to success ("work hard"), and note that the title of the talk is "On Starting a Long Term Company." It seems aimed at solving the problem of "How can I get the people, software, and money for my research?" rather than the problem of "How can I afford that ocean-front mansion and retire at 30?"

</comment></comment><comment><USER12> Mathematica is nice but I dont like their licensing policies. Had a huge fight with them once after I had to reinstall my OS :(

</comment><comment><USER13> So when do we get the version he talked about at Startup School that can find a unifying theory of physics by running cellular automata with randomly generated start conditions?

<comment><USER10> In 10^10^(big number) years? :-)

<comment><USER13> It's funny to think that the singularity, if it is coming, will produce this profound qualitative shift in human existence. And at the same time mean absolutely nothing in the face of a problem such as this.

<comment><USER10> _shrugs_

I have the feeling that if anything like the 'singularity' happens, it will feel fairly normal to the participants. There are many things today that would seem completely 'sci-fi' to people even a few decades ago. But we're still going to be resource and physics constrained, unless society changes our conscious enough that memes and genes won't still end up in an endless hunt for exponential growth.

<comment><USER14> Genes? Where we're going there are no genes.

</comment></comment></comment></comment></comment><comment><USER15> pg, any chance of negotiating a news.yc member discount?

</comment><comment><USER16> It truly, truly sucks that Mathematica would cost me nearly a month of pay. I'd love to have it and use it, but that is just far too much.

<comment><USER17> Maybe you can try sage:

<http://wiki.sagemath.org/sage_mathematica>

<comment><USER16> I love all the components that sage is built on, and am a huge python nerd, though I haven't tried sage itself.

Mathematica just does some super cool things and encourages a different pattern of thought, which I'd love to play with.

</comment></comment></comment><comment><USER18> I just a attended a free webinar about using Mathematica for education (<http://www.wolfram.com/services/education/seminars/s01.html>) and the guy who was chatting with all of the attendees told me my college already had a site license. Turns out I can use Mathematica at school and at home for free and I had no idea...

You might want to check if your campus has something similar set up. The Mathematica folks might be able to direct you to the right place.

</comment><comment><USER19> How is the programming language in Mathematica?

How is it for Matlab stuff? Or perhaps it isn't for linear algebra at all?

Can you write real standalone applications in Mathematica or it is solely for prototyping, analyizng and modeling?

</comment><comment><USER20> The upgrade for students is $75 (if you have 6). I don't think i'm gonna jump. Doesn't really seem worth it? I never use the advanced features as is. All i ever do is basic algebraic manipulations and screwy integrals.

</comment><comment><USER21> For $2500 it had better come as a brain implant

</comment><comment> syntax-case Mathematica's bugginess (on SGI) is what prompted me to learn "real" programming languages some years ago.</comment>


Schema migrations in SQL - <AUTHOR>

I just wrote a post on my blog about why schema migrations in SQL are hard. http://www.offbytwo.com/index.php/2007/09/10/why-schema-migr...
I decided to ask and see how folks work around these problems. So how do you manage schema migrations? <comment><USER2> Ultimately, I don't think migrations are really that useful in the first place. When you have a schema that's actually being changed often, you're in development mode, and you can afford to lose data. You can also be smart (yourself) about how you make changes to the tables to avoid data loss.

If you really do have a need for migration-like functionality, you can make a new database for each major departure. However, eventually you're going to have to reconcile the two, so you'll end up doing what you might have previously no matter what.

<comment><AUTHOR> Where does development mode end and production mode begin? With the Software as a Service model you can release updates to your code on a biweekly basis. That means the code (and potentially the schema) is always changing. While it is certainly possible to be clever and do things by hand this gets difficult to manage when you have a team of developers and multiple development, testing, staging and production environments. At my current job we use an internal tool that does some of the job but most of the time I want to fallback on using plain files for some data storage because subversion will version and merge it appropriately. I was more curious about whether or not others out there are using better solutions.

</comment></comment><comment><USER3> Rake on Rails.</comment>


Lisp Plus Plus - <AUTHOR> http://www.interhack.net/projects/lpp/

<comment><USER2> There's a fine line between madness and genius, and as far as I can tell, this seems to be exactly on the line. I think I might have to download the source...

<comment><USER3> Madness and genius actually form an intersecting Venn diagram. This falls squarely in the middle.

</comment></comment><comment><USER4> I actually worked for two summers at Interhack, so I found it interesting to see a link to their site here. The founder (Matt Curtin) is a really cool guy who teaches a Lisp course for one quarter a year at OSU (that's how I got the job). Matt had a hand in cracking the DES and wrote a book about it called _Brute Force: Cracking the Data Encryption Standard_.

Unfortunately, Interhack does a lot of computer forensic stuff that has human- intensive requirements. Because of his work, Matt is considered an expert for the purposes of court testimony, and he spends much of his time working on and testifying in computer forensic evidence cases, rather than hacking in Lisp as I'm sure he would prefer to be doing.

Don't get me wrong... his company is doing great. They just got an entire floor in a 12-story office building built to their specifications, they worked on a high-profile case last year for the state of Ohio lost tape archive incident, and they have somewhere around ten full-time employees. I just wish he (and the company itself) had some time to show off his programming chops in something other than internal software.

</comment><comment><USER5> You know, I'm really not usually too picky about this stuff, but I have to say, this is an extreme example (for me, at least) of presentation overwhelming content - I started to read that page, and the combination of the font size, the layout, and (mainly) the color scheme literally made me dizzy within seconds. I actually can't get through it, the text starts to pulsate on the page as I look at it and it's so distracting that I can't parse the content.

Maybe a great product, maybe even something revolutionary, but in all likelihood I'll never find out because of the website's color scheme.

It's funny, I'd always heard that white-on-black was considered bad design, but up until now I never really understood what "they" meant by that...

<comment><USER4> I see this complaint all the time, and it's really annoying. It's just a matter of opinion. I program in vim with light-colored text on a black background. For the longest time, I used the compiz window manager so that I could invert the color of my Firefox window so that web pages would have light text on dark backgrounds.

I'm betting that the real issue is alternating from one to the other. If you spend all your time looking at dark on light and then try to switch, I can see how it could be an issue. But the opposite is also true. At least light text on a dark background has another good thing going for it... you're not staring at what is effectively a light bulb.

Either way, can we please stop talking about this? At least half of the submissions that lead to such a page have a comment like this. It comes off as complaining and laziness, since if you really wanted to read it, you can simply highlight the text, use copy-paste, or any number of other solutions (the "No Style" suggestion was a good one).

<comment><USER6> No: it's bad design, and it should be eliminated.

</comment></comment></comment><comment><USER7> Reminds of pg on Viaweb: <http://news.ycombinator.com/item?id=99143>

</comment><comment><USER8> Where is the REPL?

<comment><USER9> Don't be so demanding. :) The library has a couple of debugger hooks, though. Not as good as a REPL, but way better than what you normally have to deal with in C++ and gdb.

Check out the sample code in the source distribution. The 'let' type hack the author uses makes this some of the most readable C++ I've seen. The same thing with templates would've been either a forest of angle brackets or required a boatload of typedefs which the reader would have had to constantly refer back to.</comment></comment>


The Great CoffeeScript to Typescript Migration of 2017 - <AUTHOR> https://dropbox.tech/frontend/the-great-coffeescript-to-typescript-migration-of-2017 <comment><USER2> I started reading through these comments expecting a tall wave of negativity, and was surprised to see such a warm wash of mixed and fond memories from the "bad old days" when ES3 and IE ruled the roost.

Full disclosure: I haven't used it myself much since ~2012 or so, and modern JavaScript now contains many of the most important features that CoffeeScript offered at the time .... Although they did screw some things up (IMHO): null- vs-undefined in default arguments, super as a parent reference instead of a direct function call, optional parens for single-arguments arrow functions (Prettier agrees!), no shared semantics between arrow and normal functions, that class syntax only supports methods and not data as properties, and so on...

When all is done and dusted, I hope that CoffeeScript can be looked back on with affection as a little experiment that showed surprising vigor, one that — with no corporate backing and zero financial support — spread by word of mouth through the web community of the early 2010s, and helped fuel the fire to get JavaScript moving and evolving as a language again.

As a side note — and I write this without bitterness — I do find it a bit strange that extremely well-resourced companies like Dropbox, GitHub, CircleCI, Trello, Airbnb (and many, many more) would write so many hundreds and hundreds of thousands of lines of CoffeeScript without ever attempting to contribute changes or fix the issues that they wanted to fix. It's open source! They probably would have been able to quickly and cheaply make most of the changes they wanted.

Anyhow, cheers for the blast from the past!

<comment><USER3> > As a side note — and I write this without bitterness — I do find it a bit > strange that extremely well-resourced companies like Dropbox, GitHub, > CircleCI, Trello, Airbnb (and many, many more) would write so many hundreds > and hundreds of thousands of lines of CoffeeScript without ever attempting > to contribute changes or fix the issues that they wanted to fix. It's open > source! They probably would have been able to quickly and cheaply make most > of the changes they wanted.

This is the heart of a really important issue in OSS that affects everything good and bad about the scene.

There are companies that pretty much waste millions on poorly managed projects but won't donate the few thousand needed to make a lot of OSS projects succeed while still using the software.

It doesn't help that a lot of the culture just accepts fragile dependencies (who cares if this semi-crucial dependency is managed by the equivalent of newman from jurrasic park), and that a lot of the biggest OSS projects are usually made by people working at some big company. Maybe copyleft licenses would've prevented some of these issues, but I am not sure individual users like those restrictions even if, in some ways, it would benefit the community as a whole.

Its absolutely disgraceful how little financial support some really commonly used libraries get.

<comment><USER4> And "they don't contribute" is one of the _less_ harmful things. Look at what Amazon did to Elastic/search.

<comment><USER5> What did Amazon do to Elasticsearch?

<comment><USER4> Took Elastic's product (Elasticsearch), forked it and started selling it under the same name. It's a cautionary tale for anyone thinking about running a business based on OSS. [https://www.google.com/amp/s/searchaws.techtarget.com/news/2...](https://www.google.com/amp/s/searchaws.techtarget.com/news/252471650/AWS- faces-Elasticsearch-lawsuit-for-trademark-infringement%3famp=1)

<comment><USER5> Gotcha, thanks!

</comment></comment></comment></comment></comment></comment><comment><USER6> I truly do not understand why so many jumped from Coffeescript. I still use it and still believe I can be more concise and expressive in Coffeescript. Typescript and ES2015 picked up a lot of wonderful things, but I find myself writing a lot less boilerplate in Coffeescript. I will continue to "do me". I dev in Coffeescript and publish in JS. The project even made it a focus to transpile to readable/friendly JS. No biggie.

I would not publish things like this, though :)

console.log [ i if i % 3 and i % 5, 'fizz' unless i % 3, 'buzz' unless i % 5 ].join '' for i in [ 1 .. 100 ]

Separately, I bought overpriced raspberry pi's instead of cheaper alternatives because I knew the community was a strong source of support. Modern JS has a much larger community than Coffeescript 2.

<comment><AUTHOR> I recall when we first adopted Coffeescript, the engineers who did it touted that we had about 20% fewer lines of code as an example of coffeescript being better - a lot of which was probably just the removal of lines that only had curly-braces. In hindsight, this wasn't a good metric to judge the language on.

As a larger engineering organization, what we've definitely learned over time is that we need to prioritize readability (and maintainability) over writability - as our code is going to last a long time and the original engineer who wrote it, will likely move on to another project, team, or even company. And while maybe they train their replacement, after a second or third iteration of that, the knowledge can easily end up lost.

Coffeescript, as a language, definitely prioritizes terseness, often at the expense of readability. And we didn't have internal coding standards that pushed back on this.

But even if we had done a better job using coffeescript, we're still better off in typescript today, due to the stronger community and stronger set of available open source tools to work with the language.

<comment><USER7> I see readability as a key advantage of TS. Once you are able to comfortably read type signatures, it is trivial to see what a function is supposed to do, or what a library is supposed to provide. When things don't work as expected, then it's just a matter of hopping into the debugger to inspect data inflight to find where the typings aren't matching up with reality.

<comment><AUTHOR> yup, types are a huge advantage, especially in large codebases where you probably don't know all the people who may write code to interact with your code.

Readability of types can become an issue over time, but with the right naming of interfaces and useful type aliases, that can be mitigated to some extent. And as the typescript language and community evolve together, there are new ways to make some types even more readable - I've seen generics for getting the return type of a function, which seems potentially really useful (and some people swear by; I haven't used them extensively, but it looks like a promising idea).

<comment><USER8> After ten years of JavaScript and after working on TypeScript apps that have now been around for 5+ years, I can assure you TypeScript is less maintainable long term than most languages.

Did you know that TypeScript's type system is turing complete? Good luck figuring out literal bespoke _type_ frameworks in TypeScript. Did you know you can have a TypeScript application that takes more than 8GB of memory to compile?

TypeScript is literally a Microsoft play to regain Visual Studio market share they lost by creating a language that much like C# and Java, practically speaking, requires a massive feature rich IDE for most developers to write software efficiently with.

You all fell for it, and at this point it's too late. Millions of extra development hours will wasted maintaining legacy TypeScript apps for years due to a Microsoft marketing stroke of genius.

<comment><USER9> If genuine developer satisfaction from everyone I know IRL who's used typescript is due to Microsoft's marketing, I say they deserve to win this one.

</comment></comment></comment></comment></comment></comment><comment><USER10> I stopped using CoffeeScript just because JavaScript fixed most of the issues that got me to use CoffeeScript back in 2014. Once ES2015+ became well supported, I decided I'd rather write code in the language that the interpreter understands, rather than something that precompiles. CoffeeScript isn't bad... it's just not significantly better than JavaScript is today.

Also, I find it interesting how many people like the Python syntax but hate CoffeeScript syntax. They have a lot of similarities.

<comment><USER11> As someone who works with Python a lot, Coffeescript always looked more like Ruby to me, especially with all the syntactic sugar (lack of parens, keywords like `unless` or `isnt`, #{} for string interpolation, etc)

</comment></comment><comment><USER12> > it was absurd to expect anyone to want this as their full time job for even > a month or two

That gave me a true 'kids these days' moment...

In my day within a spanish bank, as a team of 4 interns, we spent over 6 months reviewing/documenting an entire proprietary platform C codebase (full of gotos, endian-dependent hacks, post-compile patches and every horrible thing you could imagine), and then with a larger (~3x) team about 12 months cleaning, porting and expanding that codebase to a clean platform (if you can call SCO Unix 'clean').

What sort of dynamics prevent a product startup like Dropbox build an engineering team that includes the capability to do such a task?

<comment><USER13> Because startups tend to use how much you enjoy coding as a proxy for how good of a coder you are. So if you purposefully hire a bunch of people because they like coding, it's going to cause a shitload of problems once you unleash an "unfun" job like this on them for such a long period of time.

<comment><USER14> Wait what? So you should hire coders who don't like coding to do coding?

<comment><USER15> People who "like" coding tend to prefer hot new tech as a way of experimentation.

They often ignore the actual business problem that needs to be solved, because it can be solved using "boring" technology.

<comment><USER16> Seems like an invention on your part. I also sense some condescension towards this alleged group of people that you insist exists.

The reality is that people who like coding and thus trying new things are limited by the stack their job uses. Simple as that.

I don't really understand your hypothetical scenario where this alleged person is working on the new FooQux framework instead of getting work done. That's just someone who isn't doing their job. That they enjoying writing code seems irrelevant. Like trying to say people who like water skiing are awful employees because they're on the lake all day.

We need a word for this kind of HN trope. Condescension roleplaying?

<comment><USER17> My last phone screen, I emphasized that I like solving business problems, rather than tech for its own sake. They decided I "wasn't technical enough"...without asking me a single technical question.

That's the culture clash people frequently reference, and it's very real. If you don't perceive it, it's because you're swimming in it.

And I emphasize that the attitude, that the only good coders have tunnel vision and just want to play obsessively with tech, but only the cool stuff, goes far, far beyond the stereotypical SF startup environment or whatever. Because a large number of companies have a vague idea that to be cool, they should imitate what the trendy companies do, so even if you question the stereotype, the stereotype influences reality.

</comment></comment></comment></comment></comment></comment><comment><USER18> I fully remember picking up coffeescript because Dropbox had used it. I only ever used it on one project. I try and remember that every time I have the urge to go with Reason, Elm or even wasm compiling things. Long live JS.

<comment><USER19> If you are trying to build for a business, or something you yourself will have to maintain for years to come, vanilla JS seems like the way to go.

Perhaps Typescript isn't a fad to be abandoned, unlike say GWT, CoffeeScript, et al, but why risk it?

Javascript doesn't feel painful to me like Java does. I don't have a lot of problems with it that need solving with an alternate front end.

Long live JS!

<comment><USER20> AFAIK TS is pretty committed (at the expense of possibly-useful functionality) to being very, very simple to strip out, leaving vanilla JS in its wake. Unless you're minifying, the compiler output typically looks almost exactly like the well-formatted, sane, and readable JS you'd have written instead. That escape hatch is part of why I've not worried a bit about taking it up. Turning a TS project into a JS project, should you ever need to, is functionality that's essentially built-in, and you do it every time you run "tsc".

<comment><USER19> But I don't write "classes", and don't want to be lead down that path.

Allegedly TS has a solution for doing partial function application or currying, such as in the Ramda.js library, but the example that was provided to me a few weeks ago looked every bit as clumsy as the angle bracket stew in Java 8. I don't remember the details, other than "I hope I never have to read that."

PFA is like dependency injection for functions, without needing all the "executioner" class trapping nonsense, and with higher order function composition replacing much of the need for subclasses.

I guess deep down in my heart, I know that Typescript is coming to crush any joy out of working with JS. The industry of enterprise design patterns will demand it.

Some of you will understand this, but most will probably just hate on the unenlightened developer who must simply be resisting The Future. A "future" inspired by Simula67, with beans replacing copy books, and IoC provided singletons replacing individual .COB programs. Meh.

P.S. nothing personal. I'm simply terrified of the perception that TS is an unequivocal boon to programming-kind. It's not, for all of us.

<comment><USER20> How does TypeScript push one toward classes any more than ES does? Does using typescript keep a person from using ramda? They list typescript typings on the ramda site.

<comment><USER19> [https://github.com/DefinitelyTyped/DefinitelyTyped/blob/mast...](https://github.com/DefinitelyTyped/DefinitelyTyped/blob/master/types/ramda/index.d.ts)

"Fun" stuff to read. So if I want to write higher order functions, rather than classes / interfaces, I have to write, and worse, READ, mass boiler plate like the stuff in the link.

This feels like Java 8, to a large extent: you can use code that calls lambdas (e.g. Stream) but you don't want to have to wade through such HOF code that has the needed cruft to use the callbacks. So in practice, people won't create higher order functions and the like, as it becomes too much trouble to read and write.

<comment><USER20> What? Your tools do almost all the reading of types like that. It's the _entire point_ of using typescript: your tools tell you useful stuff with it. You'd never need to look at that file unless you found a mistake (bug) in the type definitions.

Though yes when defining your own functions you might need to take a second to write down what you intend it to do in a machine-readable way, so the next person who uses them can let their tools tell them what you intended, rather than memorized convention or docs or a comment somewhere or (quite often) just reading and experimenting with the code because that info is found no-where else at all.

When you're calling such functions the "cruft" is minimal or totally absent. Definitions are where TS makes you put in a little extra work to get your intentions out of your head and down in the codebase for the benefit of your future self and anyone else who has to try to make sense of it.

<comment><USER19> Would I be correct in guessing that you are more likely to write an abstract class in the next month than to write a higher order function?

Part of the problem in these discussions is that there are at least 2 populations with vastly different work flows. Which would be less of an issue if I were part of the majority enjoying "mob rule"

<comment><USER20> > Would I be correct in guessing that you are more likely to write an abstract > class in the next month than to write a higher order function?

I doubt it, because HOFs are hip in React-land right now and I don't really give a shit, personally, so I usually do whatever my team-mates find idiomatic in their current coding style and preferences, which means implementing and using HOFs, for now. Plus React picked "awkwardly add state and object-like functionality to functions by partially re-implementing objects" over "use built-in object system better, but tie react more strongly to OO-style programming" when they realized they had to pick one or the other to fix some problems, so React's even more functional now than it was before and is only heading farther that way as their chosen way forward continues to accrue functionality that OO-style React doesn't have.

Regardless, I haven't found TS to impede the writing of HOFs, and certainly not the use of them. I've been favoring them for a while even server-side just because it's "the thing to do" and other JS devs are familiar and comfortable with them these days and, again, I don't really care one way or the other. If I find myself on a team that prefers classes and objects, I'll use those instead in places where either would do.

Anyway, I'm more of a composition than inheritance guy when writing OO code. And I'd be more likely to define an interface than an abstract class. Not that I'd never, ever use the latter, it's just not something I reach for very often, especially in TypeScript.

[EDIT] actually, TS is _part of_ why I no longer have significant preferences for how I write Javascript. Before, the only Javascript style I found not to be hair-pulling-out stressful and unproductive was about as C-like as possible, favoring a procedural style and aiming for _zero_ indirection or "cuteness". Of course this was a popular JS style approximately no-where so this translated to my hating Javascript. TypeScript saves me from having to care. I'll write whatever, just give me types so I don't have to go read (or, god forbid, execute and poke around in) your code to figure out WTF you're doing even at the most fundamental level.

</comment></comment></comment></comment></comment></comment></comment></comment></comment><comment><USER21> Instead of TypeScript which is very far from being all-typed, I hope there will be wider adoption for proper Web languages like ReasonML[1], BuckleScript[2], PureScript[3], Elm[4], etc. With a better WebAssembly adoption and once they solve the garbage collection problem[5] and direct DOM access[6] there will no even need in JavaScript "glue".

[1] [https://reasonml.github.io/](https://reasonml.github.io/)

[2] [https://bucklescript.github.io/](https://bucklescript.github.io/)

[3] [https://www.purescript.org/](https://www.purescript.org/)

[4] [https://elm-lang.org/](https://elm-lang.org/)

[5] [https://github.com/WebAssembly/gc/issues/44#issuecomment-623...](https://github.com/WebAssembly/gc/issues/44#issuecomment-623912377)

[6] [https://stackoverflow.com/questions/42628328/wasm-access- dom](https://stackoverflow.com/questions/42628328/wasm-access-dom)

<comment><USER22> Well, loose typing allows for far faster prototyping. I know some people will debate me on this, but mixing int and string in an array or returning an object or a string is far faster than going the 'proper' way. It's not great, but it gets you started earlier and that's a big point.

Another thing is that it's extremely easy to migrate from vanilla JavaScript to Typescript. You simply add a compile step at first, which breaks nothing, and then you slowly move your js files to ts while still being able to cross use them. I've migrated a ~10k LOC app and it was a breeze - whenever I needed to touch a module, I simply took the 5 minutes to make it TS. Whenever I touched a function, I added the type parameter. Being able to slowly convert a big app without ever having a major breakage or a massive change is something extremely valuable and rare (looking at you, `async`).

<comment><USER23> TypeScript just moves all errors from runtime to compiletime, even the ones nobody would ever realistically encounter. The user's browser is the only typechecker that matters, and that's why end-to-end tests are more important than type-linting.

</comment></comment></comment><comment><USER24> I use coffeescript in 2020. It's a great language of choice especially if you come with a background of good programming languages like Ruby, Python, Elixir, Etc.

Coffeescript makes code more succinct, readable and javascript tolerable. I tried typescript, but, it's not my cup of tea and it has it's own quirks. I work with large scale media companies and never has coffeescript been in my way. If anything, it has made javascript bearable. These days, my choice is to avoid Javascript if I can and use something like Phoenix LiveView if I can get away with it.

I wish the coffeescript developers can ignore all the hipster noise and continue to support the project for their effort has saved so much valuable developer time.

<comment><USER25> I used CoffeeScript for a few years, and I went in deep. I loved the succinct and elegant syntax, it made coding in JavaScript a joy. I still think it's a wonderfully designed language with merit and worth.

When I decided to move on to ES2015, one reason was that JavaScript grew up, adopting some of the ideas of CoffeeScript, and the non-standard aspects of the latter became incompatible. (I recall some ECMAScript features couldn't be implemented in CoffeeScript, at least for a long time, due to existing syntax.)

A bigger reason was the mindshare of the developer community. When the majority adopted Babel and staying "future compatible", using modern language features that are guaranteed to be in the standard.

I want the code I write to be accessible to the majority, so more people can read, understand, and contribute to it. This is important for team work, such as easier onboarding of new members, so they don't have to learn a new (flavor of) language.

Choosing an "alternative" language also has long-term implications. When a developer moves on to a different project or company, they leave behind the code for others to maintain and develop. I realized that CoffeeScript would become legacy code, that someone will have to convert back to "normal" JavaScript eventually. I couldn't justify my developer convenience with that associated cost to others.

Funny enough, these days I prefer to write in TypeScript, another alternative flavor. I'm not "all in" yet, mainly because other developers at my work haven't picked it up. I have the impression that TypeScript is more of a standard than just a flavor, so I believe that writing it will not incur a long-term cost, but rather be a benefit, as more maintainable, type-safe(r) codebase.

Still, time will tell if that's true. Maybe I'm again contributing to legacy code, this time in TypeScript.

</comment></comment><comment><USER9> > In 2012, we were still a fairly scrappy startup of about 150 employees.

Perhaps it's just the changing definition of the word "startup", but the idea of a 150-employee startup being described as "scrappy" made me chuckle.

</comment><comment><USER26> I worry about the long term viability of using an offshoot language of Javascript such as Coffeescript or Typescript. These types of languages have a habit of falling out of vogue and basically becoming a dead language, which is exactly what happened to coffeescript. If a company decided to write an app in coffeescript in 2010, today they have a big pile of code written in a dead language on their hands. If instead the company had chosen a mainstream language with a guaranteed future such as JS, Java, or c# it wouldn't be an issue.

<comment><USER27> Typescript is nice in that it's a superset (mostly) of js. That doesn't mean it won't fall out of vogue, just that in a lot of cases converting from TS to JS is mostly straightforward, so you can "just" remove some type information and end up with valid JS.

<comment><USER28> You should be able to let tsc do it for you with a properly configured tsconfig file. Mostly just want it to not emit any polyfills.

</comment></comment></comment><comment><USER29> I worked on this project, it was super fun. Open to answering any questions.

<comment><USER28> I'm curious why not allow implicit anys instead of creating the tool that inserted anys? Seems roughly the same outcome but implicit anys would take a lot less work?

<comment><AUTHOR> Because of the way we had type checking set up - our existing code already used noImplicitAny, and we wanted to keep that, and we were typechecking it all in one shot, together, so we couldn't have different typescript flags for different files.

Now as to why to use noImplicitAny in the first place: mainly because implicit anys are usually accidents - places where developers didn't realize they should put a type. And the explicit `any` in many ways is sitting there for anyone who cares to replace it with something better; whereas implicit anys are much harder to notice.

</comment></comment></comment><comment><USER30> As someone who came into development after the Coffeescript wave I'm interested to know: how much did it feel like the future?

Was it always an early adopter, "look how forward we are" kind of thing, or was it just popular with Rubyists?

I'm trying to calibrate it with other possibly-next-big-thing front end languages.

<comment><USER31> CoffeScript had quite a bit of influence on JavaScript and TypeScript today (and/or really great timing w/ similar thinking). All of these were in early releases of CoffeeScript, and showed up in modern JavaScript years later:

* fat arrow functions

* classes

* template strings, multiline strings

* destructuring and ...rest values (splatting)

* elvis operator (foo?.bar?.baz - in TypeScript)

honorable mention

* list/iterator comprehensions (made some good progress in the ES speccing process, but ultimately didn't land)

<comment><USER32> I agree with some of items on your list but a lot of those features were part of ECMAScript 4 (ES4) which was largely abandoned in 2008 (with the exception of it being the basis of ActionScript 3). CoffeeScript's first commit was December 13, 2009.

From the Wikipedia entry ( [https://en.wikipedia.org/wiki/ECMAScript#4th_Edition_(abando...](https://en.wikipedia.org/wiki/ECMAScript#4th_Edition_\(abandoned\)) )

\</comment></comment></comment><comment></comment><comment>---

By August 2008, the ECMAScript 4th edition proposal had been scaled back into a project codenamed ECMAScript Harmony. Features under discussion for Harmony at the time included:

\- classes, \- a module system, \- optional type annotations and static typing, probably using a structural type system, \- generators and iterators, \- destructuring assignment, and algebraic data types.

\</comment><comment></comment><comment>---

I enjoy working in TypeScript in VSCode since it feels just like working in ActionScript 3 in FlashDevelop. except a bit slower.

</comment><comment><USER33> [https://saagarjha.com/blog/2020/05/10/why-we-at-famous- compa...](https://saagarjha.com/blog/2020/05/10/why-we-at-famous-company- switched-to-hyped-technology/) :P

<comment><USER34> Awesome! Thank you for this article.

</comment></comment><comment><USER35> Though I use it daily, my biggest criticism of TypeScript is that it's not opinionated enough. From inception it was designed as sugar on top of JavaScript but not a replacement, and therefor they decided not to make decisions outside of the ECMAScript specification.

The advantage to this is developer buy in, the downside is how annoying it is to work with at scale.

In a monorepo, running 10 compilers in watch mode because TS can only consume external source which is compiled to JS. You can't consume TypeScript source directly (which would be nice if you want to use github as a package repository).

But it's fine. I'm happy paying the cost to not use JavaScript directly, but I am disapointed because it could be so much more.

<comment><USER36> Have you seen Deno? Would it help with your issues?

[https://news.ycombinator.com/item?id=23172483](https://news.ycombinator.com/item?id=23172483)

</comment></comment><comment><USER37> CoffeeScript was an amazing companion to a Rails backend. While I did get bit a few times by unexpected CoffeeScript behavior (implicit returns and whitespace, ah!), it was substantially more beautiful and "developer happiness" than the options at the time (2014-ish).

CoffeeScript will always have a warm place in my heart, tho I do use TypeScript as much as possible now.

</comment><comment><AUTHOR> Author here, also willing to answer questions

<comment><USER38> "Lack of delimiters" is given as the most common complaint about CoffeeScript.

I've never written any CoffeeScript - Is this referring to the language's Python-like significant indentation, or something else?

<comment><AUTHOR> something else. More that `()`, `[]`, `{}`, and `,` in a lot of places in the language syntax were optional. And we embraced that... way too much.

E.g.

      foo: 1
      bar: 2

is the same as

      {
        foo: 1,
        bar: 2,
      }

for basically no good reason. When you start combining a lot of these, whitespace takes extra significance, and in extreme cases can easily change what you think the meaning of your code is, and what it actually is.

</comment></comment></comment><comment><USER39> This makes me miss CoffeeScript. Ah, well.

<comment><USER28> Only thing I still miss is noop functions are two characters. Everything else I liked is in JS now that nullish coalescing landed.

<comment><USER40> `_=>_` is technically more than two, but not by much.

<comment><USER16> Identity function is more confusing than just ()=>{} which is obviously noop because it doesn't return the input.

<comment><USER40> If you don't provide an argument, it will use undefined, which is the same thing yours returns. Maybe it's more clear, but it's about even for me.

</comment></comment></comment></comment></comment><comment><USER41> That bit was interesting:

>> Manually convert a list of ~100 commonly edited files from Coffeescript to TypeScript.

Seems obvious, but outlining it as a critical step probably helped in many ways.

</comment><comment><USER42> CoffeeScript never made any sense. The drawbacks of having a build/bundling step and having to run/debug transpiled code were never worth the tiny benefits it offered.

I think the drawbacks of bundling are still not worthwhile even for TypeScript, but I'm not surprised that people who liked CoffeeScript would like TypeScript even more. It is unquestionably more useful; at least you get some value in exchange for having to spend most of your development time waiting for the build to finish.

What is mind boggling to me is just how popular CoffeeScript became. It makes no sense at all. I guess it just got a lot of celebrity endorsements.

I think the problem is that 'real programmers' held such prejudiced and condescending views of JavaScript that they were not willing to learn it and figure out best practices. They were too proud for JavaScript but they still needed to use it for their job so that's why they were prepared to use any possible alternative; better or worse - At least their ego was protected.

Same thing with TypeScript; its main purpose is protecting developers' egos by allowing them to leverage the power of JavaScript without actually having to admit to themselves that they're using JavaScript.

IMO, it's self-deception. JavaScript has proven itself to be an amazingly flexible, adaptable and backward-compatible language. It has flaws just like any other language but it's an objectively amazing language. It has proven itself.

Some developers will insist that it was because of JS's monopoly on browsers that it was successful but you'd be surprised by how many set top boxes and car navigation systems are powered by JavaScript (and they could have used any other language).

JavaScript achieved this in spite of being constantly undermined - The fact that it was able to grow and dominate in such adverse social environment speaks to how truly great it is as a language.

<comment><USER43> > the tiny benefits it offered

It allowed using language features that only now, nearly a decade later are commonplace. It offered huge benefits.

</comment></comment><comment><USER44> Coffeescript tried to simplify the syntax, but it went too far.

\- A statement such as f(g(x)) becomes absurd without parentheses.

\- Indentation has a meaning, but it is legal to have inconsistent indentation.

Code is written once, read many times. Coffeescript got that backwards.

CoffeeScript is to JavaScript what Stenography is to Writing. Steno makes sense when you have to write something being dictated to you in real-time, but if you are not in a hurry, just write.

<comment><USER45> \- A statement such as f(g(x)) becomes absurd without parentheses.

Y'all just aren't used to ML syntax.

<comment><USER44> To me, having no parentheses is like driving on a 8 lane highway with no lane delimiters.

<comment><USER46> you'd really love lisp!

</comment></comment></comment></comment><comment><USER47> My fond memory of CoffeeScript was an interview I did way back when at Olark. It was a full day 'paid work along' interview that was popular at the time. I'd never touched CoffeeScript prior. In less than the day, I was proficient enough even navigating a foreign code base to build out a small feature within the Olark platform. (I think it was managing chat operators as groups?)

Fond memories!

</comment><comment><USER48> CoffeeScript rocks for functional programming. Less chars and more sense per LoC, easier to learn than JavaScript and syntax sugar is sweet.

</comment><comment><USER49> Hmm. I wonder how much longer it'll be before they migrate from Typescript to the next fad version of JavaScript that comes along?

</comment><comment><USER50> CoffeeScript? 2017?

I had the impression that CS was done when ES2015 came out in ... Well 2015

I personally prefered LiveScript, should have been.

<comment><USER13> They started the project of looking for a replacement language in 2015. You can't instantly rewrite all the code.

<comment><USER50> -can't +shouldn't

My co-worker of that time did exactly that one week before I got hired.

Also, he told noone.

I just saw it one time, when I played around with a tool that would visualize Git commits, years later. Thousands of lines of code.

Absolute mad lad.

</comment></comment></comment><comment><USER51> The only people I ever knew personally who used CoffeeScript also used Rails. That was usually the combo then.

The shine has kind of come off Rails, and the cool kids followed the shiny to the next thing, usually node, and so they moved to Typescript.

</comment><comment><USER52> Still use coffeescriot when I need to do something quick. It has added all the async goodness of the more recent js implementations and it is still 10x easier to read and makes me 10x more effective.

</comment><comment><USER23> I eagerly await the Typescript to SpoonScript (what have) migration of 2027.

</comment><comment><USER53> I loved CoffeeScript... I just loved types more. If CoffeeScript had a type system akin to TS or Flow, I'd be in heaven.

</comment><comment><USER54> I wonder what happened with the devs that started the tumble towards the Coffeescript migration... still locked in the cellar?

<comment><USER55> I don't think the CoffeeScript advocates did anything wrong at all. CoffeeScript was a popular solution with a healthy ecosystem, no one knew when JS was going to get these features, and TypeScript was still an emerging player (just like other typed JS variants like Flow).

Also, when I wrote in CoffeeScript, (1) I loved the JavaScript ecosystem more, (2) I understood the code I wrote better and built and learned more quickly, and (3) I understood the nuances of an JS-extension language, which helped me quickly understand what TypeScript was when I heard of it. I'd assume that other developers got some of these benefits as well, and these benefits may have been well worth the cost of converting from CoffeeScript later.

</comment></comment><comment><USER56> Is CoffeeScript all but dead? I use Ruby and Python a lot so the syntax of CoffeeScript looks great to me!

<comment><USER57> Lots of people use it (I use it for all my personal stuff) and it sees regular updates. [0] I think it coordinates well with modern client-side frameworks like Mithril (... and experts agree [1]). It has kept up with the new stuff in javascript, and it often does the new stuff better than JS. Example: in coffeescript you don't need the goofy function declaration flags that JS requires: "*" and "async". In coffeescript a generator is a function that yields and an async function is a function that awaits. This is clearly better.

Obviously, Typescript is more appealing to management. It may not be obvious from this thread, but bragging about how old-n-busted coffeescript is compared to... whatever was a lot cooler a couple of years ago than it is now. Nowadays the cool kids complain about npm or rollup or something.

[0] [https://github.com/jashkenas/coffeescript/commits/master](https://github.com/jashkenas/coffeescript/commits/master)

[1] [https://mithril.js.org/signatures.html#splats](https://mithril.js.org/signatures.html#splats)

</comment></comment><comment><USER58> Cofeescript will always be remembered as peak code hipsterdom.

</comment><comment><USER59> You can easily test your Coffeescript code with a dynamic type checker and be perfectly type safe, even at runtime! Why for gods sake convert your code base to another language primarily for imaginary type safety?

But for some strange reason entire armies of developers move to Microsoft's Typescript, living their imaginary type save dream. Moving from a language as Coffeecript to Typescript is like dropping at least 25% of your productivity. Not only you'll have to write more code, which in itself increases the chance for bugs, but you'll also be fighting countless compiler issues, installing numerous @types modules, having intellectual discussions about types and whatsoever to make it 'kind of work'. Oh, and almost none of the TS code bases I've seen are without the 'any' keyword, which is actually an instant breach of your type safe haven. IMAO 'any' should never pass a code review in a Typescript project if you want to stay true to your religion. With such a strict regime, like you are forced to with real strictly typed languages, would completely eliminate TS. Without 'any' it's practically impossible to write a large code base with it.

I wrote numerous relatively bug free applications in Coffeescript, small and large as well. Just do good testing and you'll be fine, and as a bonus you'll have type safety at runtime! The mine field is not types IMAO, there is so much more to high quality code bases.

<comment><USER60> Using 'any' is perfectly fine, you just don't understand how most companies use TS.

<comment><USER59> Not using 'any' is also perfectly fine, as you can with Javascript, Python, Ruby, etc.. And I guess that most companies just don't understand how I use Coffeescript.

Besides, I am not against others using Typescript, it's a fun experiment and a great opportunity for front-end developers to learn about static typing, enjoy it if you can! For me it unfortunately doesn't work, I've never gained from it because I generally don't have type issues. It's a pain in the ass that's constantly bugging me, pulling me out of the flow. It's a monster of a tool that tries to solve a problem I don't have.</comment></comment></comment>


'Confessions Of A Designer', What Goes On In A Designer's Mind - <AUTHOR> http://designtaxi.com/news/351395/Confessions-Of-A-Designer-What-Goes-On-In-A-Designer-s-Mind/

<comment><USER2> Disappointing. I was hoping to get some insight into this designer's creative process. Instead it is just a series of hackneyed statements about how clients don't value design and Macs are better than PCs.

<comment><USER2> If you want a much more interesting take on designer-client communication, check out this project by Brighten the Corners:

<http://brightenthecorners.com/page.php?jumpTo=56#i56>

They took samples from 10 years worth of email received and split them into three posters: Positive, negative and neutral. They are all good, but the headline for the 'negative' poster is an absolute classic ...

</comment></comment><comment><USER3> Sorry, but this is the farthest thing from real design. Slapping a (poorly typeset) font onto a poster with some commonly commiserated points is not design. They might as well have ditched the "posters" and just shared the quotes/anecdotes.

</comment><comment><USER4> Can't you designers just give Comic Sans a break? It's a fine font and has some fine places for usage.

<comment><USER5> No we can't, no it's not, and no it doesn't. There are many other fun, comic-y faces that aren't terribly designed.

<comment><USER6> Could you give some examples please?

<comment><USER5> Examples of alternatives? Glad to. Blambot(1) makes a range of great ones, especially Giant Sized Spectacular, and I'm personally partial to Loose(2).

(1) <http://www.blambot.com/fonts_design.shtml> (2) <http://new.myfonts.com/fonts/zeptonn/loose/>

<comment><USER4> These fonts (1) certainly look good but they are very different from Comic Sans, almost too pro. I think none of them capture the childish, random, non- professional feel that Comic Sans visualizes. I can understand why people loath Comic Sans but as I said, it has it's uses where more professional types fail.

I recently saw Comic Sans used in one company's printed invoices. I though it ridiculous until I discussed the topic with the people there. They actually made a very tactical decision in using the font. It was all about the feel of it.

Come to think of it, perhaps I'll found a fan club for Comic Sans. :)

</comment></comment></comment></comment></comment><comment><USER7> If you want a humorous take, the classic "Missing Missy"

<http://www.27bslash6.com/missy.html>

</comment><comment><USER8> Pretty accurate, but the designer overlooked one small design detail: all of the posters use the same crumpled paper background image. That's sloppy and lazy.

Here's my designer poster: _Details Matter_

<comment><USER9> Quite - I was also disappointed in her grammar. Anyone who did paid work for me and came back with something containing "just because... doesn't mean" would not get a second contract.

<comment><USER10> Depends on whether you hired the person to be a designer or a copywriter. But for such a short bit of copy I get your point.

</comment></comment></comment><comment><USER11> I dislike these quotes. I would expect a good designer to be a professional, and to understand how all the people working on a product are important. In 'Confessions of a Designer', I sense mostly elitism and the idea that if you're not a designer, you can't make good-lucking stuff. Admittedly, none of these things are said quite that literally, so maybe it's just me interpreting the quotes that way.

</comment><comment><USER12> IMO she's wrong about Comic Sans. According to 'Just My Type', teachers value this font, because autistic children accept/comprehend it easier.

</comment><comment><AUTHOR> I like "if you think it's simple, do it yourself" works for devs too.

<comment><USER13> But sometimes things are simple and just time consuming, so you'd rather have someone else do them...

</comment></comment><comment><USER14> I feel like the sentiment portrayed in these posters could apply to almost anyone in any profession that happens to be feeling a little undervalued. This is not unique to design. More importantly, there is very little in useful advice. Disappointing this made it to the front page.

</comment><comment><USER15> There is no attempt to educate clients in this just a number of blanket statements. I'm sorry, but in most industries you try to educate clients about what you are doing and why it's valuable - this is just telling people they are idiots.

</comment><comment><USER16> I clicked on the link before I saw that it's Taxi, which is crap.

This sort of shallow thinking is representative of the designer, if we define designers very loosely and pathetically.

</comment><comment><USER17> Perhaps it's just me, but I find myself wanting to say "If you think it's so easy then do it yourself" _to_ designers rather than it coming from them.

</comment><comment><USER18> Uninspiring. <http://clientsfromhell.net/> is (funnier|sadder|closer to the truth)</comment>