WwwBasic – An implementation of BASIC designed to be easy to run on the Web - <AUTHOR> https://github.com/google/wwwbasic <comment><USER2> New versions of BASIC are surprisingly common (heck, I even have one that's gotten some super-nice comments).

Mind-blowing BASIC example from the 1970's:

        100 A$="ABCDEF"
        110 A$ = REP ("123", 4, 0)
        120 PRINT A$

The result is ABC123DEF -- at position 4 (strings start at 1), replace 0 characters with "123". So the REP function looks at the statement it's part of, finds the variable that is being assigned to, and uses that as the starting string (!). It's kind of like a function, only with a weird implied variable that only works in an assignment.

You can't just PRINT the result directly, because then how would REP know what the string to change is?

Nowadays "weird" syntax has some solid foundational reason why it's useful or important. This not-really-a-function, though, simply has no justification whatsoever.

(This example is from the BASIC embedded in the Tektronix 4050 terminal).

There are enough variants of BASIC that there's a really nifty handbook with the differences at [https://archive.org/details/Basic_Handbook_2nd_Edition_1981_...](https://archive.org/details/Basic_Handbook_2nd_Edition_1981_CompuSoft_Publishing)

<comment><USER3> Hmm.

      perl -le '$A = "ABCDEF"; substr($A, 3, 0) = 123; print $A'
      ABC123DEF

<comment><USER4> Look again at that comment. He wasn't remarking about a substr, it was the curious syntax where the LHS of an assignment was actually an argument to the RHS function.

</comment></comment></comment><comment><USER5> Just a couple days ago, I was reading an article by David Brin called "Why Johnny Can't Code" (2016) [0] - where the author laments how difficult it was to find an accessible version of BASIC for his son to play with / learn on (they ended up buying a Commodore 64). Well, now the language runs on the web!

[0] [https://www.salon.com/2006/09/14/basic_2/](https://www.salon.com/2006/09/14/basic_2/)

<comment><USER6> A duinomite could have been an easier path. Natively does basic, has vga, and is pretty cheap. [https://www.olimex.com/Products/Duino/Duinomite/DUINOMITE- MI...](https://www.olimex.com/Products/Duino/Duinomite/DUINOMITE-MINI/open- source-hardware)

Edit: Interesting...the Duinomite folks even noted the "Why Johnny Can't Code" post: [https://www.olimex.com/Products/Duino/Duinomite/_resources/E...](https://www.olimex.com/Products/Duino/Duinomite/_resources/Example/)

<comment><USER7> There's also standalone BBC Basic for the Raspberry Pi: [https://www.riscosopen.org/content/sales/risc-os- pico](https://www.riscosopen.org/content/sales/risc-os-pico)

</comment></comment></comment><comment><USER8> Why is Google publishing this?

It's late but I'm confused why anyone would spend time doing this, and since it is in the official Google repository, presumably someone at Google was actually doing it on paid time.

<comment><USER9> > since it is in the official Google repository, presumably someone at Google > was actually doing it on paid time

Unlikely. Google (like many companies) assert ownership of everything their employees create, even on their free time. There are plenty of projects under Google organization that have no other affiliation with Google.

<comment><USER10> It might be a 20% project. Also, there is a process to clarify / obtain the copyright: [https://opensource.google.com/docs/iarc/](https://opensource.google.com/docs/iarc/)

<comment><USER11> I thought 20% time has been gone for years.

</comment></comment></comment></comment><comment><USER12> One of the reasons that BASIC was such an effective beginners' language was that it often appeared at bootup, so all you needed to do was turn on your machine and type a couple of lines to run a program.

This isn't that, but withering comments from Dijkstra aside, BASIC is still a great introduction to programming, and this is a fantastic idea; it'll be great to run loads of old type-ins in the browser.

Could have done with a crisper font, though.

<comment><USER13> Why is BASIC a great introduction to programming? Genuinely curious. It's a bad language by pretty much all computer science standards. It only has global variables. In the past it used line numbers not labels. Many Basics only allowed 2 letter variable names. It has almost no library. (I suppose those could be added but they're already available in other languages). AFAIK there is little to no tooling for BASIC (meaning no auto0completion or popup docs that many languages have now)

I grew up on basic on TRS-80/Apple II/Atari 800 and I have super fond memories of those times. You can even find lots of my BASIC code in old magazines from the 80s. But, I don't really believe those were better than today with kids with Scratch or Unity or other alternatives. Python or JavaScript (runs everywhere) etc... Maybe even PICO-8/Lua etc...

Are there some concrete reason BASIC is actually a good place to start?

<comment><USER14> I wouldn't advise unstructured BASIC, there are plenty of structured improvements to choose from.

It is easy to learn because it was the first language to come with batteries.

In some 8 bit micros it was as powerful as the underlying Assembly, only slower. So it was relatively easy to prototype.

Also the the runtime was the OS.

Nowadays a kid needs to learn how to access the development environment, probably configured by an adult and to do more complicated tasks might need some help getting libraries.

Maybe stuff like boards with MicroPython will help here.

</comment></comment></comment><comment><USER15> _Wow_ this takes me back.

BASIC was how I started programming, 30 years ago.

Is this the first time someone's implemented BASIC in JavaScript? It seems so... obvious in hindsight.

I wonder if this has any potential for kids who want to start to learn programming? Or if there are other better, more modern, places to start these days?

Also... why is this from _Google_ of all places? Seems like more of a personal hobby project.

<comment><USER16> Well, with .net being ported to wasm, you should soon be able to use vb.net in the browser too.

<comment> vertex-four VB.Net has little to do with Basic or Visual Basic - it's really just an alternative syntax for C#.

<comment><USER16> But it has preserved a lot of the simplicity of the basic language.

I think it's biggest value is that it offers a bridge for business users who's only programming experience is some VBA to a more sane and modern language.

<comment><USER17> >it's really just an alternative syntax for C#

That's very true. Either C# or VB.NET, you're programming the NET Framework. All you can do in C# you can do in VB.NET, and even there's some features that are better implemented in VB.NET, like Type.Missing [https://blogs.msdn.microsoft.com/eric_carter/2004/04/15/type...](https://blogs.msdn.microsoft.com/eric_carter/2004/04/15/type- missing-c-and-word/)

Of course any language with "Basic" in its name will be look down, but in today's NET there's no objective reasons to do so. Nowadays, VB is a better choice than C# to develop in-house business management software.

<comment><USER16> That is a bit dated, C# fixed that problem many years ago [1]

But there are still instances where the VB.net syntax is nicer than c#, for instance date litterals, or array litterals:

C# foreach(var x in new string[] {"A", "B", "C"})

VB For Each x in {"A", "B", "C"}

Also switch statements in C# are horrendous. But there are also instances where C# has a better syntax, like "x=>x+1" is way more elegant and practical than "Function(x) x+1".

But I think the writing is on the wall. VB will go the way of Winforms, i.e. sort of supported but nothing more.

[1] [https://en.wikipedia.org/wiki/C_Sharp_4.0#Optional_parameter...](https://en.wikipedia.org/wiki/C_Sharp_4.0#Optional_parameters_and_named_arguments)

<comment><USER18> Switch statements got an upgrade in v7 which makes things better

[https://visualstudiomagazine.com/articles/2017/02/01/pattern...](https://visualstudiomagazine.com/articles/2017/02/01/pattern- matching.aspx?m=1)

</comment></comment></comment></comment></comment></comment></comment><comment><USER19> Cool idea! I always thought of Python being the modern Basic. Its interesting to see this - could there even be potential for something like this?

<comment><USER20> Not really. Like you said, we have better beginner languages now, Python being the most prominent (especially seeing how it has a turtle graphics library out of the box). BASIC is extremely inconsistent for a modern language.

<comment><USER16> Python has its own inconsistencies, like any language that has been around for a very long time. Like some collection properties have to be accessed with a function (len()) while other as an instance function. It doesn't seem to follow any logic.

<comment><USER20> BASIC is far worse than that. Like, at least in Python, len() is a regular function. In BASIC, tons of core features are implemented as statements, with rather weird syntax that got even more weird over time.

       LINE (x1, y1) - (x2, y2), 5, FB

Can you remember what it does? (no, it doesn't draw a line; it would, if not for "FB").

Or, for example, MID$ is a function, except when it's not:

       MID$(s$, 1) = "foo"

Then there's stuff like DEFINT and GOSUB and ON STRIG and ...

The reason for all this is that BASIC was never designed as a language in which the standard library could mostly be written, or even described, in that language. Thus, most features were implemented as intrinsics, with magic syntax and/or semantics, which varies drastically from feature to feature. This goes even for the standard functions - e.g. MID$ is a function (except when it's not, as above) - but it can take either 2 or 3 arguments, which is not something that you can declare yourself. As a result, when language evolved, it also did so in a haphazard way, as with LINE re-purposed for other reasons.

The _original_ BASIC was very simple (but also non-extensible). The BASIC that most people remember - at its peak - was actually more complicated than an equivalent subset of Python.

<comment><USER21> And then there was Applesoft's assembly language extension mechanism: "&".

Enhancing Applesoft using ampersand routines: [https://link.springer.com/content/pdf/10.3758/BF03203836.pdf](https://link.springer.com/content/pdf/10.3758/BF03203836.pdf)

>Applesoft BASIC's ampersand (&) jump feature gives the programmer an easy and fast way to connect machine language routines to BASIC. When the Applesoft interpreter encounters an "&," it does an immediate and unconditional jump to location $3F5 (decimal 1013). This feature, originally described as being "intended for the computer's internal use only" and "not a proper APPLESOFT command" (Apple Computer, 1978, p. 123), has become the favorite procedure for executing machine language routines from a running Applesoft program.

<comment><USER20> Most BASICs had something like that. Here's something from QBASIC documentation:

       Transfers control to a machine-language procedure.

       CALL ABSOLUTE ([argumentlist,] offset%)

           ▪ argumentlist    Arguments passed to a machine-language procedure
                             as offsets from the current data segment.
           ▪ offset%         The offset from the current code segment, set by
                             DEF SEG, to the starting location of the procedure.

       Example:
           'Calls routine for printing the screen to a local printer.
           DIM a%(2)
           DEF SEG = VARSEG(a%(0))
           FOR i% = 0 TO 2
              READ d%
              POKE VARPTR(a%(0)) + i%, d%
           NEXT i%
           DATA 205, 5, 203  : ' int 5  retf  'Machine-language code
                                              'for printing screen.
           CALL ABSOLUTE(VARPTR(a%(0)))
           DEF SEG

And before that, there was DEF USR: [http://www.antonis.de/qbebooks/gwbasman/defusr.html](http://www.antonis.de/qbebooks/gwbasman/defusr.html)

</comment></comment></comment></comment></comment></comment><comment><USER22> Missed naming opportunity!

"gwwwbasic" anyone??

</comment><comment><USER23> [Chipmunk BASIC]([http://www.nicholson.com/rhn/basic/](http://www.nicholson.com/rhn/basic/)) is a nice console-usable BASIC on most platforms. You can work with it line- numbered, or structured, and has some graphics and sound support in the Mac desktop version.

I started on BASIC on the TRS-80 Model I in 1980, and it was a great introduction.

That said, newbies are probably better off starting Python (use IDLE for a decent REPL & editor), type `from turtle import *; reset()` to get a graphics window, and learning a nice language from the start.

</comment><comment><USER24> Doesnt even have a repl now. This one will surely take many people back [https://github.com/robhagemans/pcbasic](https://github.com/robhagemans/pcbasic)

</comment><comment><USER25> Is this similar to VBScript that Microsoft's Internet Explorer used? I used to program in that for one of my former employers using Active Server Pages as well. JavaScript was a lot faster so we switched to that.

<comment><USER26> This is a fun toy program. VBScript was a pretty comprehensive language built by some of Microsoft's top compiler people back in the day. It was infinitely more powerful than this and was often used for serious development.

<comment><USER3> What happened to VBScript? It feels like a kind of BeOS or Amiga within the scripting-on-Windows domain. It's just... disappeared, and tends to either fulfill "it MUST run EVERYWHERE" OCD-backward-compatibility requirements - basically Win32 Perl - or it's used for viruses.

Outside highly narrow application/context-specific situations, that is.

<comment><USER27> > What happened to VBScript?

Nothing.

      Microsoft Windows [Version 10.0.17134.285]
      (c) 2018 Microsoft Corporation. All rights reserved.

      C:\Windows\SysWOW64>cscript
      Microsoft (R) Windows Script Host Version 5.812
      Copyright (C) Microsoft Corporation. All rights reserved.

      Usage: CScript scriptname.extension [option...] [arguments...]

      Options:
       //B         Batch mode: Suppresses script errors and prompts from displaying
       //D         Enable Active Debugging
       //E:engine  Use engine for executing script
       //H:CScript Changes the default script host to CScript.exe
       //H:WScript Changes the default script host to WScript.exe (default)
       //I         Interactive mode (default, opposite of //B)
       //Job:xxxx  Execute a WSF job
       //Logo      Display logo (default)
       //Nologo    Prevent logo display: No banner will be shown at execution time
       //S         Save current command line options for this user
       //T:nn      Time out in seconds:  Maximum time a script is permitted to run
       //X         Execute script in debugger
       //U         Use Unicode for redirected I/O from the console

<comment><USER28> Internet Explorer also still supports it. You can write a full, albeit basic, application in a text file, rename it as 'whatever.hta' and run it by double clicking on it. It launches in its own window using the IE html control as its form. The MSDN pages have a clone of Notepad.exe as a vbscript .hta as an example.

In some ways it's like the grandparent of Electron or React apps, just a decade too early.

The last .hta I wrote was several years ago - a [mostly] complete clone of 'Active Directory Users & Computers' that anyone could use.

</comment></comment></comment></comment></comment><comment><USER29> It would be neat if someone could port some classic basic games to this.

<comment><USER30> DONKEY.BAS is there; I was secretly hoping for GORILLA.BAS.

</comment></comment><comment><USER31> What a neat way to encode the "DOS" font at the end of the wwwbasic.js file, including the characters that you can use to draw boxes.

</comment><comment><USER32> Not sure if anyone mentioned that but WBasic would be a much better name I think. Just like GWBasic and QBasic.

</comment><comment><USER33> Aw, it doesn't have line numbers.

Is there at least GOTO?

<comment><USER34> See the slides example

</comment></comment><comment><USER35> One word. Why? Serious question.

<comment><USER36> Two words: Why Not?

Just as serious. Programming does not always require a solid reason before you can engage in it, quite a bit of it is like playing. If you actually enjoy programming then it is much nicer to do than if everything needs a financial justification.

There is a similar analogy with music, you could make money with it, but you can also simply enjoy it.

<comment><USER35> Sure, I can see it as an engineer's pet project, but why would Google publish it?

</comment></comment></comment><comment><USER37> I think this falls between the cracks. Serious programmers (most HN readers) think it is too basic (sic). Non-programmers prefer hacking together cloud apps using Zap or IFTT where no code is needed. Enterprise just want thousands offshore maintaining legacy code

</comment><comment><USER38> There are much better languages than BASIC, for whatever purpose.

<comment><USER36> There are now, but BASIC was invented in the 70's, and some very powerful versions of it were used to build just about everything in the 80's and even the 90's. There was BBC Basic on the BBC micro, GFA Basic on the ST and of course MSVB on the PC, which if you have windows is most likely still lurking in your system somewhere.

Each of those could be used to write very complete applications including GUIs and such.</comment></comment>


New platform for fucking with Debt Collectors - <AUTHOR> http://bukit.co/ Just launching a new platform, it will probably break if you use it.  Try it and tell me how it goes.  The Freemium is useless but if you want basic just sign up (with credit card) and I will give it to you free for life...seriously. <comment><AUTHOR> In case you are wondering why we crashed- it turns out that YESTERDAY Amazon changed their policy on npms and they no longer support self signed certificates. FML, but hopefully this might help other people avoid a crash

[http://blog.npmjs.org/post/78085451721/npms-self-signed- cert...](http://blog.npmjs.org/post/78085451721/npms-self-signed-certificate- is-no-more)

<comment><USER2> Apparently there's a workaround:

[http://blog.npmjs.org/post/78085451721/npms-self-signed- cert...](http://blog.npmjs.org/post/78085451721/npms-self-signed-certificate- is-no-more#comment-1264392115)

<comment><AUTHOR> I already checked that and it won't work for my platform but I am sure there will be a workaround soon.

</comment></comment></comment><comment> jack-r-abbit Perhaps "fucking with debt collectors" is not the best way to phrase this. At first I was left disliking the existence a service that claimed to try to fuck with people (or companies) that are just trying to collect the money they are owed. They are not in the wrong... people in default are. (Even in situations were shit happens and you're behind... the fact remains that you owe someone money and they aim to collect it.) But it seems the service is meant to help both sides.

EDIT: I also understand the collectors can be very invasive and annoying. But think about how you would be if someone owed you $5k. Would you just ping them once a month or would you be a little bit in their face trying to get your money?

<comment><USER3> I've been on both sides, but on balance I'd say I have relatively little sympathy for industries that (a) consider "product innovation" to consist mostly of designing contracts that will trick consumers and (b) regularly lobby to change the rules governing bankruptcy, financial procedures, bank transfers, fees, etc. There are multiple industries that may be so described. Perhaps someday software will eat the world, but finance already has.

<comment><AUTHOR> not to be cliche, but its just a system and it can be disrupted.

</comment></comment></comment><comment><AUTHOR> Sorry everyone, site is still down. I'll go for the cliche and try and turn this crisis into opportunity...

My situation is this- I live in Israel and my programmer who built the site is in the Army and unreachable. I've been coding but I really just have skills that are "programmer adjacent."

I need to build my tech team so if this excites you and you have skills- (site is built in node.js and hosted on Amazon) please contact me through the email address in the executive summary.

</comment><comment><USER4> I'd love to take a look, but the page isn't being served. Or at least it's taking more than 5 minutes to load. Anyone have an executive summary?

<comment><AUTHOR> I have an executive summary, where should I send it? try to refresh www.bukit.co . I just checked and it's not loading for me so I am going to go into the servers and check what's going on, it was working a few minutes ago.

<comment><USER5> Post it here. I'm guessing not only peeters would like to read it.

<comment><AUTHOR> Will do. It's too bad slide rocket closed down, I used to have all of my decks there and it was easy to share.

</comment></comment></comment></comment><comment><USER6> $25/month and especially $100/month seems a bit steep for people who are so much in debt they have to manage their debt collectors.

<comment><USER7> Not necessarily.

Debt isn't just college students and poor folk. Job loss, divorce, health issues, etc can easily put you in a situation where the bills fall behind and you have a cash flow crunch, but you're not destitute.

I had a friend in a situation like this, and managing the various deals (payment arrangements, forgiveness programs, deadlines, etc) was very difficult. Paying $50/mo to manage this stuff would have saved her lots of money in fees and interest.

<comment><AUTHOR> Thanks Spooky23, I spent a lot of time working with people on one one so I know how much people are paying- and how much money people are losing because they aren't dealing with the issue.

For a lot of people, it's worth it just to have the peace of mind that a collection agency will never call them again.

</comment></comment></comment><comment><USER8> To the founder -- show it off here: [http://consumers.creditnet.com/Discussions/forum.php](http://consumers.creditnet.com/Discussions/forum.php) if you havent already.

<comment><AUTHOR> Haven't yet- will do. It's still kind of rough so I'm trying to get some feedback before I really publicize.

</comment></comment><comment><USER9> Site looks good, apart from the video on the right, which looks kinda wonky. Maybe it's just the initial frame (can't watch it right now) but it looks kinda WordArt-ish. Also, "join us, we're disrupting" sounds like a job advert, not a product proposition.

I love the idea though, and I wish you the greatest of success.

EDIT: could also do with some kind of tagline in the page title, unless that's not the done thing in SEOland anymore.

<comment><AUTHOR> Let me know when you watch it- I definitely need a new one. I am working on an instruction video now. Something more personal.

I can add a tagline in the page title. Great suggestion- and I'll ask a friend who does SEO about it

</comment></comment><comment><USER10> I've known the founder since the start and she's the real deal

<comment><AUTHOR> Thanks Alan!!! Nice to see you here

</comment></comment><comment><USER11> How about screwing with credit bureaus instead? They are an order of magnitude worse than the debt collectors.

<comment><AUTHOR> IMO, they are going to be screwed anyway. There are MUCH better systems of measuring people's credit worthiness. I looking forward to future tech slaying them completely.

Also, if I am able to fully execute the vision for BUKIT. It will screw with the credit bureaus _bonus_

</comment></comment><comment><AUTHOR> Just in case some of you are wondering who I am- my name is Sarah Nadav, this is my linkedin profile [http://www.linkedin.com/profile/view?id=17064747&trk=nav_res...](http://www.linkedin.com/profile/view?id=17064747&trk=nav_responsive_tab_profile)

and my twitter handle is @sarahnadav

</comment><comment><AUTHOR> Still working on the servers- here is a link to the executive summary [https://docs.google.com/document/d/1c4STqhM8PxcqNOoAMcjyFnXm...](https://docs.google.com/document/d/1c4STqhM8PxcqNOoAMcjyFnXmDo6-Lo07Xzq8OxwVpPk/edit?usp=sharing)

</comment><comment><USER12> The site is not working :/ try to fix it because HN is a great opportunity for exposure.

<comment><AUTHOR> I am on a chat with the Amazon support team to get this back up. It's set to scale to users but not this fast apparently.

</comment></comment><comment><AUTHOR> Problem is fixed and site is back up [http://bukit.co/](http://bukit.co/)

</comment><comment><AUTHOR> The patch was fixed with Amazon and www.bukit.co is up and running. I look forward to your feedback.

</comment><comment><AUTHOR> Just FYI- everything is back up except the SSL certificate so be aware. Should be fixed soon.

</comment><comment><AUTHOR> Never posted here before, how should I upload an executive summary? What is the best way?

</comment><comment><USER13> I don't get it - consumers pay you to send a cease and desist letter for them?

</comment><comment><USER14> Love the spirit of it.

<comment><AUTHOR> thanks! Just trying to create a platform that will help people know their rights and use them. Feedback is greatly appreciated :)

</comment></comment><comment><USER15> Waiting for it to come back up. HN effect :).

<comment><AUTHOR> Best.Problem.Ever!!!

<comment><USER15> Indeed :). On which type of instance are you running it on?

<comment><AUTHOR> I am running it on elasticbeanstalk in Amazon. It should scale but the traffic showed a bug in an ebextension file

</comment></comment></comment></comment><comment><AUTHOR> hey Everyone! Congrats- the traffic has crashed the site :) I am going into the server now and fixing it

</comment><comment><USER16> great idea, im surprised this does not already exist

<comment><AUTHOR> Mission was to create something that people needed, and should exist.</comment></comment>


SASStore - Simple binary string data store for Local Storage - <AUTHOR> http://dungfu.github.io/SASStore/

<comment><USER2> Given the popularity of SASS, this seems like a poor choice for a name... I thought this JS library came from the same project.

<comment><USER3> Agreed about the poor name - very unfortunate

</comment></comment><comment><USER4> I remember having to write some long code for localStorage that changes binary to 32 bit and then back to binary. Nice!

</comment><comment><USER5> IndexedDB is now supported by every browser but Safari (for that you can use a polyfill). Trying to work around localStorage limitations isn't really necessary any more.

<comment><AUTHOR> but then you have to have it be asynchronous to use indexedDB (which might be difficult or annoying with certain implementations)

</comment></comment><comment><USER6> While I've never actually run out of localstorage space, I can see it being an issue for some webgl applications. Cool stuff!</comment>


Save useful links and share it with your friends - <AUTHOR> http://www.listerlink.com <comment><AUTHOR> Welcome to era of the Digital Sharing & Discovery!

Hi everyone!

Let's say you're reading an article on the internet, a blog about tech, beauty or anything else on the internet, and, you find it interesting, you want to save it somewhere to get back to it later. Where are you going to save it?

Notes? Bookmarks? Tattoo it on your body? Not the best idea…

Listerlink.com – YES !

Our service allows you to save any internet links (Blog, news, youtube video, socials page etc.) to get back to it whenever you want…BUT it also gives you the choice to share it with other people, after all if you saved it -

You found it interesting… (Make sense, right?!), so they are chances that this link will be useful for someone else! (Of course if you want, you can keep the link private in our service..)

Now let's get on the other side of our platform:

You can as well discover some interesting content shared by other users and structured by categories on our platform!

Our team wish you an amazing year 2020! Thank you so much for your attention folks!

Listerlink.com – Sharing is caring!

</comment><comment><USER2> Great idea and congrats on the launch!

Do I need to be registered to see content shared by other users?

Good luck!</comment>


The quest to evolve neural networks through evolutionary algorithms - <AUTHOR> https://www.oreilly.com/ideas/neuroevolution-a-different-kind-of-deep-learning <comment><USER4> I spent more than 10 years working on this problem. One major challenge is how to represent the genotype-phenotype map so that genetic variation leads to favorable phenotypic changes. For this you start going down a rabbit hole of developmental evolution and the evolution of evolvability and then a seemingly unrelated subject: the evolution of robustness.

For anyone that's interested here's an article I published in 2008–it has about 175 citations.

[https://www.ncbi.nlm.nih.gov/pmc/articles/PMC2538912/](https://www.ncbi.nlm.nih.gov/pmc/articles/PMC2538912/)

I'd also recommend the work by Peter Eggenberger from the late 90s.

<comment><USER5> I have always seen evolutionary algorithm as a version of gradient descent that throws away the gradient, and instead just goes randomly in all directions until it finds something that works (which is extremely wasteful).

I suppose this is wrong since people still find these techniques useful, but what are the advantages of these techniques compared to gradient descent? (other than the fact that you don't need your fitness function to be differentiable)

<comment><USER6> "what are the advantages of these techniques compared to gradient descent?"

Well, the really big advantage is that simple gradient descent can get you stuck in local maxima (or minima, depending on how you look at things). Many fitness landscapes are guaranteed to produce suboptimal results if you use gradient descent. By contrast, a sufficiently large random variation will eventually "get out of the local hole"/"get past the local hump".

It doesn't necessarily have anything to do with differentiability; consider the graph of 0.5x+sin(x). A gradient descent technique is going to get stuck on that one right away, while random exploration won't.

Edit to address some stuff that dragontamer brought up below:

A good genetic algorithm is _mostly_ going to produce offspring that are close to the parents (recombination, which de facto is similar to hillclimbing/gradient descent/gradient ascent) but _occasionally_ it's going to try something off that's completely off the chain (mutation). Some of the early work with genetic algorithms focused on mutation, but it soon turned out that recombination was better _most_ of the time. Nonetheless, you still need _some_ mutation, or you run the risk of getting stuck at local extrema.

<comment><USER5> I think the premise (neural nets get stuck in local optima) is not trivial, and there has been a lot of research about non-convex optimisation showing that this is not much of an issue. I am not a researcher, but this answer [0] points to this research.

I would also say that there are multiple ways to escape local optima (setting a larger learning rate, multiple random initialisations, ensembling).

[https://www.quora.com/How-come-neural-networks-dont-get- stuc...](https://www.quora.com/How-come-neural-networks-dont-get-stuck-in- poor-local-optima-Why-are-there-so-many-high-quality-local-optima)

<comment><USER6> You say "not much of an issue" but your link says that it's an "open question that is _probably_ being worked on in the community".

Those aren't the same thing at all.

</comment></comment></comment></comment></comment><comment><USER7> While perhaps not immediately pertinent to the problem, the emergence of sexual reproduction is credited as a major factor in the explosion of variation in multicellular organisms. Part of the advantage, ironically, is that sexual reproduction is a rather large burden compared to evolutionary strategies that came before. The fact that sexual reproduction is so challenging perhaps ensures that less is left to chance by filtering out individuals that cannot meet the burden and rewarding those that tend to be better at achieving reproduction itself. Likely there is some relation between improved reproductive success and some novel traits that helped to achieve it. I don't have the knowledge to weigh in on AI analogs, but I could imagine roughly a strategy that involves co-related burdens and goals to improve the chances of choosing the right individuals.

<comment><USER8> I think, the main effect of sexual reproduction is that, much like GANs and competitive self-play, it creates species-internal competition: Both sexes need to impress, which makes _cheating_ an obvious strategy (makeup, steroids, Shakespeare quotes, LISP etc., but many such examples can be found in the animal world), and hence both sexes also need to be able to _detect_ cheating. Some species are rather asymmetric in that regard. For example, in humans it is mainly women who attract (they masquerade as fruits [make up is likely a cross-cultural phenomenon; and, well, breasts] tapping into male food gathering circuitry); men compete in hierarchies trying to impress and women select men from the top of the hierarchy. Complex dynamics emerging from this likely lead to the immense growth of the human cortex.

Sexual reproduction basically outsources some of the selection effort to the cognitive apparatus of the species itself, thereby introducing a massive amount of additional selection signals (mainly by the much increased necessity to model other minds, namely minds of the opposite sex). Many of these signals promote traits that are useful for survival (mainly intelligence and health).

<comment><USER9> I was thinking the same thing. I think it would be interesting to explore this area more and try to model it computationally.

Your point about physical features made me think of how physical attractiveness plays into human development as well.

Research has shown that beauty in humans is defined as physical symmetry. So "novelty" in our case might be defined as someone who is really ugly - <USER2> elephant man.

So in this case, beauty wouldn't really fit into the robot walking example as it's neither fitness (moving the foot forward) or novelty. More a different type of fitness that increases the odds of reproduction.

<comment><USER8> My guess would be that symmetry is a simple heuristic measure of physical fitness. Visual attraction is basically a strong regularizer that restricts the search space to phenotypes with particular traits. Asymmetry means that the joints wear out more quickly and muscles might not coordinate optimally leading to less strength and a reduced ability to hunt and to fight predators. AFAIK it is also a quite robust predictor of all kinds of diseases because it often means that the growth signalling is out of tune throughout the system. Visual selection basically performs environmental selection more immediately and more effectively: an asymmetric person might still survive, but its offspring has a lower overall chance to survive. The teaching signals of that are much weaker.

<comment><USER9> Good points. Never thought of it that way.

</comment></comment></comment></comment></comment><comment><USER10> For those new to the subject, here is a nice visual primer to Evolution Strategies.

[http://blog.otoro.net/2017/10/29/visual-evolution- strategies...](http://blog.otoro.net/2017/10/29/visual-evolution-strategies/)

<comment><USER11> Thanks for that. My undergrad was Industrial Engineering but I always loved the Operations Research stuff (which I'm hoping will lead me to more CS-y stuff if I can get a job or a Masters or something). All that OR with LPs and MIPs was a headache and but somehow Stochastic programming, GAs and NNs were scary and I never even tried to understand them. I always thought people describing them as simple were probably geniuses or something. Maybe one day I'll understand the second half of that link.

</comment></comment><comment><USER12> How do evolutionary hyper-parameter optimizations compare to Bayesian ones? My impression always was that Bayesian optimization is more targeted, and therefore more efficient and ultimately finds optimal parameters faster. However, evolutionary algorithms are easier to parallelize, so maybe EAs indeed have a place in a non-research-oriented, applied DL setting?

<comment><USER13> Covariance matrix adaptation is comparable on real-valued hyperparameters, but you're stuck outside of that. More typical genetic algorithms waste a TON of compute time, so they might end up finding a good solution, but the computational budget is out of reach of normal companies.

</comment></comment><comment><USER14> I came up with a similar idea recently--it figures that every original idea I ever have turns out to be not original and decades-old.

Perhaps the lack of success so far has been due to the fact that the faculties of the brain we attribute to higher-order complex thought are themselves based upon brain regions that are much older evolutionary-speaking. So it's not just one system you have to evolve--it's many hierarchical subsystems. And given the amount of time it took before human-level intelligence arose in the animal kingdom it's pretty clear that randomly evolving a human-level intelligence isn't something that's going to happen very often.

It also seems to me that the only reason intelligence evolved in the first place was because of the complex environment provided by our natural world. I have a feeling that we're not going to see much in the way of intelligent learning systems unless we can provide those systems with a sufficiently complex environment to learn and evolve within.

<comment><USER15> My personal hypothesis is that strong AI will evolve when Google decide to add live feedback to google search suggestions.

At the point that system can unprompted change what it shows the user, it'll be interactive enough that we will presumably just have to wait for adequate computational backing for it to "wake up".

</comment></comment><comment><USER9> I found this article really intriguing as someone new to this field.

If I'm understanding this right, it seems like most approaches up to this point are focused on evolving a single "unit" or brain / person.

You have the concept of "nature" that selects which units will advance to the next generation and passing on "DNA". First based on fitness and now the new approach is novelty.

This may seem a bit naive, but has anyone explored adding a social dimension?

For the robot walking example, you have nature choosing novelty and those that made progress.

A basic social dimension could have units observing other units and sharing information.

But then there's a variety of other dimensions - a unit blocking another unit from walking (cheating), a bigger unit destroying a smaller one, maybe success via misc factors like physical symmetry / popularity.

Idk. Just curious to learn more and where the research is at.

<comment><USER4> The is mostly in the real of Artificil Life. Check out Chris Adami's work from the late 90s as a starting point.

<comment><USER9> Awesome, thanks! I've been reading up a bit and this is exactly what I was hoping to find.

</comment></comment></comment><comment><USER16> One thing I find interesting to note is that modern day policy gradient deep reinforcement learning methods are incredibly similar to evolutionary algorithms and DRL methods have been applied quite successfully to neural architecture search.

<comment><USER17> I wonder why evolutionary algorithms never managed to be that successful.

<comment><USER18> They're quite successful on complex multiobjective problems, but you need a lot of compute power to cover the solution space sufficiently. Most problems either 1) don't have such stringent requirements on multiobjective optimization (i.e. the problem can be recast with a single objective function, likely one with a gradient), or 2) more typical machine learning algorithms are "good enough" and require less compute power. But for instance designing complex geometries under numerous constraints is well-suited to evolutionary algorithms. EAs also shine when the evaluation for fitness is computationally- intensive, as you can defer the fitness evaluations until absolutely necessary.

<comment><USER19> My understanding is MOEAs are not a whole lot better than random search.

</comment></comment></comment></comment><comment><USER20> Nice article, lots of good tidbits and insights. The thoughts on indirect encoding seem like an especially interesting area of research. I actually just finished up a project that used a genetic algorithm to tune some of the hyperparameters of an RNN [1]. I didn't evolve the architecture except which cell to use (LSTM or GRU), but it wouldn't be much of an extension to the proof of concept I coded. Thanks for sharing.

[1] [http://cole- maclean.github.io/blog/Evolving%20the%20StarCraf...](http://cole- maclean.github.io/blog/Evolving%20the%20StarCraftII%20Build%20Order%20Meta/)

</comment><comment><USER21> I wonder how much damage(physical damage) comes into play with evolving robust systems and creating interesting variations in nature. Using the robotic gait example, in the real world organisms have a high enough chance of losing limbs that having the neural circuitry to survive in the absence of one or more limbs is advantageous. Maybe these simulations could increase their ability to produce robust networks by modeling accidental damage(from tiny to catastrophic) to random parts of networks and selecting those that survive in spite of such damage.

<comment><USER22> See the work of Josh Bongard and Hod Lipson, examining exactly this topic.

[http://science.sciencemag.org/content/314/5802/1118](http://science.sciencemag.org/content/314/5802/1118)

</comment></comment><comment><USER23> Author of SharpNEAT here if anyone has any questions.

<comment><USER24> What would be your recommendation to learn about these topics ? Moocs, books, having some pet project ?

<comment><USER23> I don't know of any online teaching material, I think this is because it is a relatively niche and under explored area of research - which is one of main reasons I continue to maintain and develop sharpneat.

What has been useful for me is just setting up experiments and seeing what happens, and observing the way things go wrong. Typically evolution will find the flaws in any fitness score (metric) that is defined, often resulting in solutions that give good scores, but only because evolution was 'cheating', or rather, exploiting the flaws in the metric. This problem comes up a lot and it is is educational to go through that process and try to think up more robust tasks and ways of measuring success on those tasks. Ideally we want metrics that are continuous, so that we can 'follow the gradient' of success rather than e.g. having a fitness score just go from zero to a perfect score in one step.

Also it's been educational seeing how networks evolve. One of the early modifications I made to NEAT was to periodically disable additive mutations (add nodes and connections), so as to strip away any redundant structure that could be slowing down evaluation of each neural net. This came from just seeing the networks grow rapidly, and not always with an fitness score gains to show for it.

In summation I don't have a good answer for you, but if you can get interested in setting up an experiment and seeing how evolution tries to solve it all by itself hen maybe you'll get the 'bug' and start to think about where the limits to this approach are, and different ways of overcoming some of the present limits. From there you might want to pick through the occasional research paper to see what others are doing - I've found the NEAT based research to be quite accessible, i.e. e.g. not requiring a a lot of maths knowledge as is the case with deep learning and the like. Although I admit I do follow that world and have had to learn quite a bit of maths to keep up - and I think that's useful to draw ideas from that area.

Hope that is of some help anyway.

</comment></comment></comment><comment><USER19> Evolutionary algorithms are perennially intriguing, but generally other approaches are favored. Odd, considering the incredible success of evolution with extremely limited trials from a computational perspective. I wonder why evolutionary computation does not live up to the expectation?

<comment><USER25> I'd guess limited computing resources. Nature had billions of years times trillions of "experiments" instance to reach it's amazing current state.

<comment><USER26> Not only that, but a virtually unbounded population space to test. Count every single organism alive today.

<comment><USER19> Our top supercomputers can process tens of petaflops. That seems to easily dwarf these biological time scales you mention. There appears to be some magic in evolution that surpasses mere trial limitations.

<comment><USER26> I'd like to double down and say the top supercomputers today couldn't, in reasonable time, simulate a single generation of the genetic variation in your gut flora alone.

<comment><USER19> Sure, but that means the magic does not lie in evolution, but in the extreme amounts of information in biological organisms. Evolution is supposed to be able to generate incredibly complex organisms from very simple beginnings, all within a number of trials that can be simulated on today's desktop. Insofar as we displace the problem from evolution to the organism or environment we are saying there is nothing special about evolution. In which case it begs the question what is so special about evolution in the first place?

</comment></comment></comment></comment></comment></comment><comment><USER27> > At the time, its small group of practitioners thought it might be an > alternative to the more conventional ANN training algorithm called > backpropagation (a form of stochastic gradient descent).

The author doesn't seem to understand what backpropagation is - <USER3> descent is performed on the derivative formed from backpropagation, they are not forms of one another.

<comment><USER28> Yep, also SGD is not necessarily implied either (for example, full batch gradient descent).

</comment></comment><comment><USER19> Isn't detecting unlimited novelty impossible due to Chaitin's incompleteness theorem?</comment>


People Feel Dumb: That's why they don't code - <AUTHOR> http://impressmyself.co/post/69604357992/people-feel-dumb-thats-why-they-dont-code <comment><USER3> >I saw another article for an elementary school programming course, and I can't believe how far off-base we have gotten.

I don't understand this post at all. There were programming classes at elementary school 25-30 years ago teaching Logo and Basic on Apple IIs. If it weren't for those classes, I can't really be sure that I'd be programming now.

So we shouldn't have programming classes for children now because _confidence_? Am I missing something, or does confidence often come with experience, especially experience gained in childhood when you're too young and stupid to be properly terrified?

If you want to raise adult mountain climbers, does it make sense to start your children climbing hills, or to spend their childhoods giving them the confidence to attempt to climb mountains as adults, oblivious to their own incompetence? I don't think confidence-building to the exclusion of skill- building is the way to go.

<comment><USER4> I'm pretty sure most of us learnt to program outside of school, and off our own backs. Isn't that the best way?

School is there to show kids how to teach themselves anything they want to learn. Not to spoonfeed them specific skills they may or may not want to have.

<comment><USER5> Teaching someone to learn should damn well include exposure to a lot of different things to help them see the use of learning. It should include a "sandbox" wherein they can learn skills without consequences of simple mistakes and other learning related "failure" instilling a fear of living life.

It should include a bunch of basic skills as well - because seriously, I'd rather be taught "here's the common, most successful way of doing X" rather than having to go out and discover it on my own for thousands of random skills. Does that mean one day I may have to give up my notion of "checkbook register" that is comfortable and I've known forever in favor of "proper double entry book keeping" \- absolutely, and you know what, I'll take a class on that too. But in the mean time, I won't be figuring out how to track my dollars on my own, and in the future I won't rediscover double entry for myself. Why?

I'm too busy focusing on software stuff in depth. That's where I'm focusing my "learn for myself" talents and limited time.

</comment></comment></comment><comment><USER6> >I doubt that I am much smarter than the average person. If I can learn this stuff anyone can. Let me be super clear, there is nothing special about me or most other software developers, we just decided to show up and go for it.

Are you sure? You claim to be "not much smarter than the average person," but remember: if you're _any_ smarter than a person with median intelligence, you're smarter than _most_ people.

Also remember the really high failure rates in introductory programming classes: [http://www.codinghorror.com/blog/2006/07/separating- programm...](http://www.codinghorror.com/blog/2006/07/separating-programming- sheep-from-non-programming-goats.html)

>Despite the enormous changes which have taken place since electronic computing was invented in the 1950s, some things remain stubbornly the same. In particular, most people can't learn to program: between 30% and 60% of every university computer science department's intake fail the first programming course.

Maybe they're simply lacking in confidence, but these are students that _chose_ to take the course in the first place.

<comment> cupcake-unicorn I think the truly smart people don't realize how smart they are. I only know that I'm "smart" because I keep hearing it constantly from people. I thought I had normal conversations, apparently I have "intelligent conversations" instead! I have had the same experience as the author but I have internalized at this point that I do seem to be smarter than the average person.

I also feel that pushing programming for everyone is a stretch. Some people just don't get it, and never will, and that's apart from intelligence - <USER2> just requires a specific type of intelligence to truly grasp the concepts.

</comment></comment><comment><USER7> This generalizes to all forms of intelligence: those who are afraid of the feeling of stupidity and ignorance get stuck and don't move past it. I can't count the number of deeply intelligent people I've known who short-circuit their thinking and learning processes due to this fear.

It's not a self-esteem issue; it equally affects those who see themselves as smart, and those who don't. It's an issue of tolerating discomfort and confusion long enough to get to the other side. I'm not sure how exactly one teaches that.

<comment><USER8> I would argue that fear of failure is taught.

Small children are relentless and courageous and highly tolerant of discomfort -- falling down 20 times does not intimidate them when learning to walk. They get tired, shrug and try again later. They pause their learning process temporarily but there are no negative emotions there, while the thrill of attempting something new is still kindling.

</comment></comment><comment><USER9> People don't code because A) They are not interested in coding. B) They do not have the ressources to learn coding C) Coding has nothing to do with their job D) They are too lazy / no will to learn to code.

Hell, I know to code. I code daily, it's my job. And I pretty much NEVER coded as a hobby. I don't see why non-programmers would take up coding...

<comment><USER10> E) They don't have time to code off-hours

I have a list of things-to-code as long as my arm, lots of little utilities and websites I want to create. But once I knock-off work at the end of the day, have dinner and perform the daily ablutions I simply don't have time.

It is frustrating.

<comment><USER7> It is for this very reason that I think that Basic Income [1] can/will someday be a net wealth creator, even if 95% of its recipients end up sitting on their asses.

[1] [http://en.wikipedia.org/wiki/Basic_income](http://en.wikipedia.org/wiki/Basic_income)

<comment><USER11> Not just that. With guaranteed basic income, in effect everyone has f-you money. No employer could easily coerce employees to do what they don't think is right: the employees could more easily walk away.

We could eliminate copyrights. After all, with basic income, artists and creators are getting paid. Some might release their work to the public domain right away. Others might pursue different publishing options.

All sorts of corporate (not just individual) welfare benefits could be eliminated; after all, everyone is getting a basic income.

Basic income would greatly shift power from the most wealthy back to ordinary people. It could be that the effects would be profoundly democratic.

<comment><USER12> > Not just that. With guaranteed basic income, in effect everyone has f-you > money. No employer could easily coerce employees to do what they don't think > is right: the employees could more easily walk away.

While a basic income guarantee would reduce the capacity for coercion, unless you have fantastic levels of productivity such that you can have very high output with very low labor input, its not going to be anything like what is usually considered "F-you" money.

> We could eliminate copyrights. After all, with basic income, artists and > creators are getting paid.

The purpose of copyrights is to create a marginal incentive to create, which basic income does not do. OTOH, a well-established basic income guarantee would further weaken the case for very long term copyrights -- but the case for that has always been weak, anyway.

<comment><USER7> > The purpose of copyrights is to create a marginal incentive to create

Income is not the only incentive to create. Many are drawn to the impulse that Eddie Izzard calls "creativist": rather than making things in order to make money, make money in order to make things. Currently, copyrights and markets are the least-worst way we've found to enable these creations to bootstrap, but if we can do better, we should.

> unless you have fantastic levels of productivity such that you can have very > high output with very low labor input

The combination of robotics and software make a high-output/low-labor future highly probable, if not inevitable. How long it will take until Basic Income is affordable is debatable.

<comment><USER12> > The combination of robotics and software make a high-output/low-labor future > highly probable, if not inevitable.

Sure. But the future is, you know, different than the present.

> How long it will take until Basic Income is affordable is debatable.

 _Some_ level of Basic Income guarantee is affordable now. What varies with productivity is the _level_ at which Basic Income is sustainable.

<comment><USER7> Agreed. I'd be curious what the numbers added up to if we eliminated all social welfare programs and spent it it on Basic Income instead (not that I would necessarily advocate for or against that). I'll have to run some fuzzy numbers when I can find a moment.

</comment></comment></comment></comment></comment></comment></comment></comment><comment><USER13> The author implies that everyone is smart. This is false. On average, everyone is of average intelligence. The entire population lies either below or above average. Not everyone is capable of being a software engineer, and people like Barack Obama need to focus on helping people do well at whatever it is they can do well at (rather than trying to churn out a bunch of burdensome code monkeys).

<comment><USER14> > Not everyone is capable of being a software engineer

Bullshit. This is a very narcissistic view that lots of programmers have. I think you have this belief because it helps you enjoy feeling superior to non- programmers.

If a person can learn how to read and write, then they can learn how to program. It just takes time and effort, and some people can learn it faster than others. But just about anyone can do it.

The only things holding them back are their priorities and misconceptions.

<comment><USER15> It's not about intelligence--some people's brains just aren't wired in a way that would make them any good at software development. That doesn't mean that they _couldn 't_ ever learn how to write code given enough time, but not everyone has unlimited time and will power to do that. So in theory, yes, anyone could learn to code. In practice, it doesn't work out that way.

<comment><USER3> >some people's brains just aren't wired in a way that would make them any good at software development.

People say this a lot. That is the entirety of the evidence for it. I have yet to meet someone in a context in which they actually wanted to program who didn't have the ability. Programming isn't hard, _hard_ programming is hard, because it usually requires hard math and deep abstraction. In those cases, though, the programming is the easiest part - it's pencil to notebook that's frustrating.

<comment><USER16> > People say this a lot. That is the entirety of the evidence for it.

"I haven't seen the evidence" is hardly synonymous with "there isn't any": [http://www.eis.mdx.ac.uk/research/PhDArea/saeed/paper1.pdf](http://www.eis.mdx.ac.uk/research/PhDArea/saeed/paper1.pdf)

</comment></comment></comment></comment></comment><comment><USER17> The bare basics of coding, like variables, conditions, loops, creating and using objects, etc. aren't that hard. Certainly no harder than, say, high school algebra. So writing a simple script that's basically a big main function is something that most people are capable of learning how to do.

But core CS concepts about data structures and algorithms, or designing large OO programs with your own classes and methods? Those are significantly more difficult things. Not everyone can do that.

The thing is, being a programmer means you probably hang out with people of above-average intelligence, and read things written by people of above-average intelligence, so that skews your perception of what 'average' means. I mean, we had plenty of people fail miserably at my college intro coding class, and this was at a fairly respectable tier-1 research university!

<comment><USER18> > being a programmer means you probably hang out with people of above-average > intelligence,

Above average programming-related intelligence, anyway.

</comment></comment><comment><USER19> What we need are more people who know what they're doing. I find it condescending to assume that we really need to coddle more people and make them _feel good_ about coding. Do we need to make this same argument for electrical engineers, surgeons, pilots and air traffic controllers?

I don't mean to imply that the current software world is a cabal of highly- skilled geniuses who need preserving - it's not. From personal professional experience, it's, on average, a nuthouse of self-promoting Java idiots with a "dropout genius" mentality who have no common sense and are not nearly as smart or good at problem-solving as their blogs or resumes would lead you to believe.

However, I think it would another discussion entirely to ask if the wrong people feel confident enough to write code. The belief that we need to reach out and bring more people into programming, in a world where the average developer struggles to cobble together a web application that isn't full of basic security holes, is ridiculous.

Also, I strongly suspect all of these efforts to drag more people into coding are at least partly sponsored by industry, in an attempt to drive the relatively-high wage of a programmer down, in the face of a perceived increase in programmer demand.

<comment><USER20> > Also, I strongly suspect all of these efforts to drag more people into > coding are at least partly sponsored by industry, in an attempt to drive the > relatively-high wage of a programmer down, in the face of a perceived > increase in programmer demand.

Perhaps by newer and less experienced entrants into the business market. Whenever there's a boom in a certain market, you get a lot of hacks flooding in who have a lot of money, but little sense. Web development was this way post-dot-com-crash. There were many print advertising agencies that added on web development as a service to their clients. However, they didn't alter their business practices to accommodate the needs of software development.

These agencies treated software developers like graphic designers. They almost always required fixed cost contracts for development ($X to build a website), and this caused a ton of problems that would be evident to seasoned developers. When I suggested that they change their compensation practices they would refuse, and just blame it on the original programmer for being unskilled.

I didn't mind in the beginning, because I was making $200-$300/hr to fix their problems. However, I eventually quit consulting because I got bored with cleaning up bad code caused by time/money constraints. It wasn't stupid programmers who caused the problem, but stupid business people.

Bringing it back to the main topic - I think it's wrong to get more people to code. Those who graduate with CS degrees and software development skills are entirely capable to building large, functional systems. However, a good bulk of those programmers aren't going to work at a software/tech company. They're going to work in the IT departments of companies in non-software industries. Efforts should be made to better integrate these ad-hoc IT departments into the primary business.

</comment></comment><comment><USER21> > I saw another article for an elementary school programming course, and I > can't believe how far off-base we have gotten. We don't need more software > developers but if you believe that notion, I don't think more courses is the > way to go.

I don't think idea is to make everyone a software engineer, it's to teach the basics of computer programming to everyone so they can use it in their everyday life in the same way basic math, language and other skills are taught. Being able to hack together a basic script to automate a tedious task, or make your computer (something almost everyone has at this point) do something it can't already do would be beneficial to a lot of people, even when most of those people are not going to become software engineers in the long run.

<comment><USER22> Do you think they'd be allowed to? IT policy is generally 'nothing we haven't authorised' I remember not being able to connect non-approved _keyboards_ to the computer....

</comment></comment><comment><USER23> That's why people don't learn new things in general, they hate feeling helpless, clueless, dumb. They hate the shame and embarrassment of making basic mistakes, and they hate the potential of breaking things out of ignorance. If you've ever seen someone who is not very tech savvy use a computer you can see all of these things reflected in the way they go about things, it's a big reason why they tend to fall into a specific very narrowly defined pattern of use and stick with it.

</comment><comment><USER24> Saw someone tweet a few weeks back that criteria for advancement in education (e.g., graduating 1st to 2nd grade) needs to be mastery-based, instead of time-based. This is the most brilliantly simple insight into our education system I've ever come across. What better way to make someone feel 'dumb' than to give them an "F", "D", or "C" after a year of education when their peers receive "A"s and "B"s.

</comment><comment><USER25> I agree with the premise, but not the conclusion.

For myself, not feeling smart enough was why I waited longer than I should have to learn how to code.

This part especially resonates with me:

>"...we just decided to show up and go for it."

I think that's a choice that anyone has to ultimately make if they want to learn anything.

Software training programs among other things are just one way to capture people's interests, and I think is a good supplement to a larger push for people to learn how computers work.

</comment><comment><USER26> Why is it then all the worthy developers I've seen are super-smart?

</comment><comment><USER27> I think math can be taught much more effectively to young children through programming. It gives them a direct and useful application of what they learn in math which could motivate them a lot more.

<comment><USER19> I think math can be taught just fine without dragging programming into it. Basic math is usually abstracted away in programming anyway - it would be no different than using a calculator.

Plus, the level that you'd need to reach for the kid to see something interesting as a result of math would require so much time and knowledge that you'd have been better off to just teach them fractions.</comment></comment>


Show HN: CacheFS - <AUTHOR>

In my spare time I've been trying to solve the problem of network filesystems being too slow.  To that end I've created CacheFS.
CacheFS keeps a lazy local copy of your network drive in an attempt to make your network drive appear as fast as your local drive.
The project is far from consumer-ready, but it has hit a major milestone:  It caches reads and doesn't appear to corrupt anything.  I'm throwing it out here in the off-chance that someone else finds it useful, and for constructive feedback.  Enjoy!
https://github.com/cconstantine/CacheFS <comment><USER2> Neat project! However, I would consider changing the name.

There's already a CacheFS in Solaris. [http://www.c0t0d0s0.org/archives/4727-Less-known-Solaris- Fea...](http://www.c0t0d0s0.org/archives/4727-Less-known-Solaris-Features- CacheFS.html)

Linux has a similar feature named FS-Cache, and one of its storage backends is named CacheFS. <http://people.redhat.com/~dhowells/fscache/FS-Cache.pdf>

Do you really want to make this situation even more confusing?

<comment><AUTHOR> Wow, somehow I completely missed that another CacheFS exists. I will definitely be looking for a new name.

</comment></comment><comment><USER3> CacheIO.com is available...

So this is a tiny local version of a WAFS device, like riverbed?

<comment><AUTHOR> I like CacheIO.. I may use that. Thanks :)

That could be one application of this. My goal is to make a system that can work on top of any filesystem, without direct support for it in the filesystem. This way you could use it to speed on network drives of any kind, or even make spinning disks closer in performance to SSDs.</comment></comment>


Humble book bundle: Linux geek by no starch press - <AUTHOR> https://www.humblebundle.com/books/linux-geek-books <comment><USER2> So, the main price, _the linux programming interface_ by Michael Kerrisk, is it any good? I see stellar reviews on Amazon, but only 9 of them?

<comment><USER3> It's an excellent book, highly recommended. Copy pasting a review I wrote a few years ago [[https://eli.thegreenplace.net/2012/12/29/summary-of- reading-...](https://eli.thegreenplace.net/2012/12/29/summary-of-reading- october-december-2012)]:

[...] many books have tried to be the successors to Richard Stevens' legendary APUE. I think that "The Linux Programming Interface" is one of the very few successes in that endeavor. This 1552 book has truly encyclopedic scope, although it focuses only on the Linux flavor of Unix. It's best treated as a reference, rather than a tutorial to read from cover to cover. That said, I read a good portion of its chapters whole (in addition to skimming through the rest), and the book is so well written it makes a very pleasant read. It explains many complex topics in great depth; even topics which don't have good coverage in other places, like pseudo-terminals. I enjoyed reading, and I will definitely use it as a reference when the opportunity presents itself.

<comment><USER4> Off-topic, but I have to thank you for your amazing blog posts and Stack Overflow answers regarding LLVM internals. As a grad student in systems software, I can't even begin to account for how much time, energy, and loss- of-consciousness-due-to-head-trauma-from-repeatedly-banging-my-head-against-a- wall you've saved me from. Thank you so much!!

<comment><USER3> Thanks for the kind feedback, very happy I could help :)

</comment></comment></comment></comment><comment><USER5> Might be the first UNIX-focused bundle where I don't pay for the top tier. I'm not even sure I'll go for the $15 tier--everything I want is $8 or below.

Can anyone make a compelling case for any of the books in the $15 tier?

<comment><USER6> The real price for the book is usually paid in time. The right book at the right time can pay off richly in time and money.

</comment></comment><comment><USER7> My book is in there. So go get it!

<comment><USER8> Did No Starch contact you at all prior to the bundle?

I've always vaguely wondered about the economics of these bundles. As a consumer I love them, but I'm sure quite a few publishers and, more importantly, authors might feel like they devalue the content a bit too much.

</comment></comment><comment><USER9> Didn't this site use to have video game bundles?

<comment><USER10> Well, not under the /books/ section.

<comment><USER9> Not under the /games/ section, either.

<comment><USER10> There was one over the weekend. [https://www.humblebundle.com/games/daedalic-2018-bundle](https://www.humblebundle.com/games/daedalic-2018-bundle)

<comment><USER9> Over which weekend? That bundle was from June 5th.

<comment><USER10> Oh yeah, I confused the bundles in this article [https://www.neowin.net/news/weekend-pc-game-deals-a- chance-t...](https://www.neowin.net/news/weekend-pc-game-deals-a-chance-to- build-your-own-telltale-and-daedalic-bundles)</comment></comment></comment></comment></comment></comment>


Why Is It So Hard for Americans to Get a Decent Raise? - <AUTHOR> https://slate.com/business/2018/01/a-new-theory-for-why-americans-cant-get-a-raise.html <comment><USER2> Sounds like an other instance of corporate greed. And for this, corporations just got a giant tax break! Thanks, GOP.

I expect that in the current political climate, there's not much hope that things will improve. Let's hope someone out there actually cares about workers.

Thank you for sharing this enlightening (and depressing) article.</comment>


Mark Zuckerberg: I wouldn't start a new company in Silicon Valley today - <AUTHOR> https://www.businessinsider.com/facebook-ceo-mark-zuckerberg-bay-area-startup-launch-2020-1 <comment><AUTHOR> Access to talent, capital and culture still makes SF Bay Area one of the top if not first in the list. Are there issues here? Of course, one too many.</comment>


Make a Pseudoscope (2005) - <AUTHOR> https://pseudoscope.blogspot.com <comment><USER2> I was always wondering, why don't we have periscope windows?

What I imagine is a "light intake" on a roof, from which the light is concentrated into a straight long NARROW tube that takes it to an underground flat where the light is dispersed into a fake window.

Is such design not possible mathematically or just very expensive?

Maybe it could use Fresnel lenses to save on cost and weight. That way we would not get a clear picture of the outside world but at least lot of natural daylight.

<comment><USER3> I live in a 3-storey apartment building, and one of my neighbours downstairs actually has this. It's actually a bit of a sneaky marketing "hack" by the architects.

When the building was being designed a couple of years ago, they put a light tunnel in place running down the vertical length of one side of the building. This took light from the penthouse's roof and channeled it down to the ground floor.

By doing this, the architects could turn a 2-bedroom apartment into a 3-bedroom one. By law (at least in the UK), you cannot market a room as a bedroom unless it has natural light coming in. As my neighbour's apartment was surrounded on two sides by adjoining walls, this meant a room mid-way through the length of the building (and otherwise devoid of natural light) could be considered a bedroom, and marketed as such.

<comment><USER4> > It's actually a bit of a sneaky marketing "hack" by the architects.

> By doing this, the architects could turn a 2-bedroom apartment into a > 3-bedroom one. By law (at least in the UK), you cannot market a room as a > bedroom unless it has natural light coming in.

This doesn't sound right to me, so I checked and the best I can come up with is this, from the building regulations:

[https://www.planningportal.co.uk/info/200130/common_projects...](https://www.planningportal.co.uk/info/200130/common_projects/5/basements/2)

There is reference to fire escape/egress and to ventilation but nothing about natural light. I don't think there is any requirement to have natural light for a room to be defined as a bedroom.

The subject of what a bedroom actually is appears to be somewhat murky. The Building Regulations use terms like "habitable space" for most rooms within a house which I assume allows for the fact that one persons front room/lounge/living room might be another persons ground floor bedroom/granny annex/lodger's bedsit. There are some specific cases such as kitchens and bathrooms that don't tend to be as ambiguous, but I don't think there is a regulation that backs up your statement "By law (at least in the UK), you cannot market a room as a bedroom unless it has natural light coming in."

[http://www.rics.org/uk/knowledge/glossary/what-is-a- bedroom/](http://www.rics.org/uk/knowledge/glossary/what-is-a-bedroom/)

<comment><USER5> I don't know for the UK, but there is a similar limitation in Japan. An habitation room must have a window, which meant our house was a 2 bedroom + 1 utility room, and not 3 bedrooms.

I don't have the source of the requirement, just that it was specified in the contract, and we got an explanation as to why the third room was not deemed fit for habitation.

<comment><USER6> My understanding is that it's because of what the GP cited - there needs to be an alternate way to escape the room in the event of a fire/flood/etc.

A friend of a friend drowned because they were asleep in a "bedroom" which was a room in a lower level without a window.

</comment></comment></comment></comment></comment><comment><USER7> I achieved a presumably similar effect several years ago by viewing my 3D TV (remember those?) with the 3D glasses on upside down. It is definitely very strange having "near" and "far" effectively reversed, yet with all the other depth cues in place.

<comment><USER8> A more comfortable way to achieve this is just set the 3D mode to the wrong setting (eg. R|L side-by-side instead of L|R, or under/over instead of over/under). Agreed that it's a really weird feeling, almost like having something brushing your face.

(Also, it makes me sad that 3D is no longer a feature of new TVs. I guess I'm just going to have to hold onto the one we've got - _I_ like watching 3D movies even if no-one else in the house does!)

</comment></comment><comment><AUTHOR> > A pseudoscope is an optical instrument made with two prisms. As seen in the > drawing, the mirrors reverse the image in each eye causing some items viewed > through it to look quite unusual: convex objects become concave, things > pointing towards you may look like they are pointing away and vice versa.

— [https://pseudoscope.blogspot.com/2005/06/pseudoscope-is- opti...](https://pseudoscope.blogspot.com/2005/06/pseudoscope-is-optical- instrument-made.html)

<comment><USER9> If I am not mistaken, this homemade pseudoscope works on a slightly different principle - it switches the perspective from which each eye sees the object, without any left-right reversal. The two-prism device appears to preserve the perspective of each eye but does a left-right reversal of the images on each retina (I confirmed the non- left-right reversal in the mirror case with a pair of hand-held mirrors.)

[https://en.wikipedia.org/wiki/Pseudoscope#/media/File:Pseudo...](https://en.wikipedia.org/wiki/Pseudoscope#/media/File:Pseudoscope_prism.png)

</comment></comment><comment><USER10> What's the name of an optical device like this that merely magnifies the stereo separation without crossing the images? I see examples of photographs taken this way but not real-time viewing instruments [https://en.wikipedia.org/wiki/Stereo_photography_techniques#...](https://en.wikipedia.org/wiki/Stereo_photography_techniques#Longer_base_line_for_distant_objects_–_"Hyper_Stereo")

<comment><USER11> Look at old battleship rangefinders. Some of them had 8 or 9 metre baselines.

See [https://en.wikipedia.org/wiki/Coincidence_rangefinder#Stereo...](https://en.wikipedia.org/wiki/Coincidence_rangefinder#Stereoscopic_rangefinders)

</comment></comment><comment><USER12> Has someone built a virtual pseudoscope for virtual reality goggles such as Oculus Go?

</comment><comment><USER13> This illusion should be relatively easy to implement as a scene in VR.

</comment><comment><USER14> Title should be:

      Make a Pseudoscope (2005)

<comment><USER15> I mean, does knowing it was written in 2005 change how you read it? Titles only really need years if the context is important, and AFAIK the physics of prisms haven't changed all that much in 13 years.

<comment><USER16> It also helps readers to know if they've read the article before.</comment></comment></comment>


Show HN: Push-to-Talk for Pulseaudio - <AUTHOR> https://gitlab.com/somini/inpulse-to-talk <comment><USER2> This seems very useful; a universal solution at the OS level makes it easier to firm the habit of using PTT rather than relying on each individual app to offer (and then need to configure) PTT.

On a related note, I started using Nvidia's RTX Voice a few weeks back; I've never found anything better to remove background noise (and the noise of my mechanical keyboard). That includes some very expensive hardware solutions. It's incredible.

[https://www.nvidia.com/en-us/geforce/guides/nvidia-rtx- voice...](https://www.nvidia.com/en-us/geforce/guides/nvidia-rtx-voice-setup- guide/#RTX-Voice)

<comment><USER3> I've had people use rtx voice on discord and spam me with noise. I think it needs some work but is a great idea.

<comment><USER4> I've run into this bug too. I think it's funny something made to reduce noise can make so much.

</comment></comment></comment><comment><USER5> This is an awesome idea. I ended up doing it without this tool and just using pulseaudio-ctl.

1\. figure out the keycode for key you want to use. for me this was Scroll_Lock, so it looked like:

      keycode 78 (keysym 0xff14, Scroll_Lock)

2\. Add the following to the i3 config:

      xset -r 78 # no repeat for scroll-lock
      pulseaudio-ctl mute-input yes # mute at startup
      bindsym Scroll_Lock exec pulseaudio-ctl mute-input no
      bindsym --release Scroll_Lock exec pulseaudio-ctl mute-input yes

<comment><AUTHOR> I'm using Sway, therefore Wayland, no `xset` here. I'm pretty sure I tested something like this first and it did not work, which I why I went to the hassle of creating this.

</comment></comment><comment><USER6> I've been noticing lately that people in video meetings basically use the mute button as a convoluted ptt button. I'm glad someone else saw this

<comment> globular-toast I used to do big Skype calls in the finance company I worked at several years ago and it was de rigueur to stay on mute until you wanted to talk. Most people actually did it. I always wondered why they didn't just have push to talk as it's way more convenient and less error prone.

I discovered an interesting feature around muting one day as well. People used to conduct calls at their desk in the open office as there was nowhere else to go. It was awful, but worse was if I was in the same call as someone near me as I'd hear them both in my earpiece and across the room. One day it was my boss, sitting right next to me. I noticed that each caller had a mute icon next to them so I pressed his and, lo! It worked. I could no longer hear him in my earpiece. But neither could anyone else. Turns out you could remotely activate any other caller's mute button.

<comment> o-__-o I mute by default because I don't want to get comfortable and be surprised after preferences are lost after a reinstall or using a new computer.

As someone who changes sound cards a lot, I like the global solution..

</comment></comment></comment><comment><USER7> My Thinkpad has a microphone mute button with an indicator light and it works with Ubuntu. I find it very convenient to use.

<comment><USER8> Same. Works wonders.

But I had to configure the shortcut (Setup is i3 + pulseaudio + sxhkd):

        /*sxhkd/.config/sxhkd/sxhkdrc (lines 19-20)*/
        @XF86Audio{RaiseVolume,LowerVolume,Mute,MicMute}
          pulseaudio-ctl {up,down,mute,mute-input}

</comment></comment><comment><AUTHOR> Push-to-Talk with libinput + Pulseaudio

</comment><comment><USER9> Anybody doing it with Alsa

</comment><comment><USER10> But... what is it?

<comment><AUTHOR> Push-to-Talk, but works at Pulseaudio level, so it works on all apps at once. It has a single global "walkie-talkie button" that mutes and unmutes the microphone (I use the Windows key).

Very useful for remote work:

\- you can type on mechanical keyboards during calls without annoying your co- workers

\- if you move away from your computer for a while, the microphone will be muted, so you avoid background noise and embarrassing situations

\- if you un-mute the microphone without touching the trigger key, it will remain un-muted. In case you want to have longer conversations. Touching the trigger key will mute it again

<comment><USER11> Maybe it is psychological but I really want to see current mute status visually to rely on it. Else I assume that I am not on mute. This is not really rational if the function works reliably ...

<comment><AUTHOR> [https://news.ycombinator.com/item?id=23168784](https://news.ycombinator.com/item?id=23168784)

My Thinkpad also has microphone mute button with a LED, so I already have this.

It's pretty simple to add notifications, just change this script to invoke a wrapper script that uses "notify-send" then runs "pulseaudio-ctl":

        notify-send "Muted: $1"
        pulseaudio-ctl mute-input "$1"

[https://gitlab.com/somini/inpulse-to- talk/-/blob/master/inpu...](https://gitlab.com/somini/inpulse-to- talk/-/blob/master/inpulse-to-talk)</comment></comment></comment></comment>


Ask HN: Uniforms - <AUTHOR>

Hey guys, I stumbled on an article about people who wore the same outfit (Jobs, Einstein, Zuckerberg) everyday and the reasons behind it. As far as I can tell there are three reasons for this:
1: To reduce the amount of decisions a person must make in a day in order to retain cognitive ability. 2: To save time deciding on what do wear.
3: To establish  personal 'brand'.
The more I read into this the more it appealed to me (Reasons 1, 2 more so than three) and I'm wondering if people could share their thoughts on the same. Or, to make this a more pointed question:
If someone wore the same outfit every day and you were unaware of their reasoning what would you think? <comment><USER2> It wouldn't bother me much although I would initially assume they were rewearing the same clothes and not clean ones each day. Over time, when they didn't stink, it would sink in.

But that said, if it's all about points 1 and 2, you don't need to spend more than 10 seconds "deciding" what to wear. Make sure all your clothes are neutral enough to go together (but are not necessarily identical) and then just pick the first things at the top of the pile. They don't all have to be identical for this to work.

<comment><USER3> You could probably work around the same-clothes-not-clean issue by doing what service techs that deal with the public do: Get a patch sewn onto the shirt with your name on it.

People's minds are conditioned to think shirts with patches on them are uniforms.

You don't even have to use your own name. Thrift stores will sometimes have uniforms for sale with name patches still on the shirt. Aside from being comfortable with the sticker price, you'd just have to be comfortable using some other guy's name patch on your shirt.

For the record, I'd be cool with a patch that says "Peter Cooper".

</comment></comment><comment><USER4> It's broadly positive as long as the person's clothes are clean. Occasionally I've run into someone who seemed superficially well-dressed but when I got close to them I realized their clothes were falling apart, which is sad in multiple ways.

If you're going to do this, get someone to help you in figuring out what looks good, and spend money on it, ie if you end up wearing a blazer and jeans and a t-shirt, get the blazers tailored for a perfect fit. Fit is the difference between looking sharp and looking like a slob, no matter what you're wearing. Consciously or unconsciously, most people are going to judge you based on the quality of what you wear so you might as well give off a positive impression.

And I really mean it about soliciting someone else's input. If you are not 'into' clothes - and not wanting to spend time thinking about them suggests that you are probably not - then you are likely not a good judge of what suits you, and you may well have become comfortable with ill-fitting or poorly- chosen clothes through habit.

<comment><USER5> It's not hard to tell the difference between an outfit that looks good and an outfit that looks bad. I think you advice is flawed. Maybe people like you seek to validate yourself by asking for others opinion about what you should wear in order to impress other people, but you shouldn't assume everyone else needs other persons validation.

</comment></comment><comment><USER6> In the UK, it has been very common for people to wear the same basic stuff every day for decades. It started with your school uniform, followed perhaps by an army (etc) uniform, and then a job uniform.

The job uniform might be overalls or one chosen by a profession (eg nurses) or a particular company (a shop or restaurant or factory, an airline, etc). Not every job leaves you free to wear whatever you like.

In the city of London, and in companies such as IBM, many people adopted a common uniform that they wore every day, even if each person's choice of suit, shirt and tie might be slightly different.

The essential point is that your work clothes are not about presenting you to your colleagues but about representing your company in public.

When I went to work for a company with a more casual dress code, I'd have been out of place in my previous three-piece suit, shirt and tie. After a while, I devised my own style of "uniform" so I could wear the same things every day without having to think about it.

If anybody noticed, they didn't comment. But then, if they were wearing much the same things every day, I didn't notice or comment either. Really, who cares?

It makes shopping simpler: you just go out and buy a bunch of five identical shirts at a time. I sometimes got five-for-the-price-of-four-type deals. (You can haggle.)

I did find it was impossible to have identical outfits because clothes change when they are washed often. Also, companies change long-running designs, even if people don't think they do. In my case, the shirt buttons changed, though again, probably nobody else noticed.

Most companies have an unspoken "dress code" anyway. As long as you stay within that, nobody really cares.

</comment><comment><USER7> I spend basically zero cognitive effort or decision time on what to wear once it's purchased. This is because I have difficulty caring about my appearance and so I just grab the first clean thing. (Though I can care about my appearance with some effort, either to satisfy someone else or to derive some personal value from it.)

I was running a company, or a public figure, or both, I imagine I would place a higher value on my appearance and would need to expend daily effort on it, or hire someone to do so, or choose a uniform.

That said, if someone around me wore the same thing every day, it would just be an interesting fact about them. It wouldn't reflect negatively to me.

<comment><AUTHOR> I agree that people who run companies and thus are in the public eye are open to much more scrutiny but this is more a societal problem. Tim Cooks most public appearance is during a key note and has the staple dark shirt, dark pants and black shoes. Possibly great deal of thought went into this (How the outfit affects the viewers perception of the slides, detracts from products, etc. but it's still seen as a strong and staple look.

</comment></comment><comment><USER8> Joshua Klein does this: [http://www.youtube.com/watch?v=bXQAgzfwuNQ](http://www.youtube.com/watch?v=bXQAgzfwuNQ) I remember him saying why he does it, for the exact reasons you state. In terms of the perception of others; different issue entirely. That's why we have _normcore_ : [https://en.wikipedia.org/wiki/Normcore](https://en.wikipedia.org/wiki/Normcore)

<comment><AUTHOR> That's right! I'd forgotten he did this. He calls it the Black T shirt Prject and explains it here. [http://www.josh.is/the-black-t-shirt- project/](http://www.josh.is/the-black-t-shirt-project/)

My only gripe with his approach is that he owns two pairs of pants? I was thinking three would be the minimum that one would need; two in the wash, one out?

</comment></comment><comment><USER9> I do. (The number of layers varies with the temperature.)

May I ask the opposite question?

Why do many people change outfits almost every day? Do they derive satisfaction from the process of choosing clothes? Or do they derive satisfaction from the fact that other people notice these changes?

As you point out, choosing and owning different outfits comes at a cost, and people who choose to do so must have a reason for this behaviour.

<comment><USER10> Some people just like dressing up. Other's like to feel confident and they choose to take that confidence from their choice of clothing. Whether this is a good or a bad thing is another discussion.

So yes. "Most" people are superficial in the sense that, given that they look good, they are more likely to feel confident. I personally think that one shouldn't have external influences as a source of confidence (as that can be taken away) but that doesn't say that a lot of people don't feel that way.

Sometimes you just want to feel pretty, I figure.

On top of that, fashion is all about context. If I wear leather shoes I am dressed-up more than 99% of my peers. However, if I wear leather shoes in ... let's say Paris, I'm just one of many. Fashion is all about context. Imagine Steve Jobs going to a black turtleneck and dad-jeans con ... lol

</comment></comment><comment><USER11> I probably wouldn't notice. I would want to protect them from taunting of other colleagues although I guess that depends where you work.

If you're going to wear (eg) a Gap pocket T everyday it might be an idea to get different colours for each day. That doesn't add to the cognitive burden. (But I admit that I spend no time thinking about what I'm wearing)

</comment><comment><USER12> Obama does the same thing (for reason #1): [http://www.fastcompany.com/3026265/work-smart/always-wear- th...](http://www.fastcompany.com/3026265/work-smart/always-wear-the-same- suit-obamas-presidential-productivity-secrets)

It might be a bit mundane, but I can appreciate the pragmatism.

</comment><comment><USER13> I'm sorry but it is barely believable that #1 and #2 would make a difference in your life at all. Seriously, you could save much more cognitive ability by not leaving your home in the first place. First thing is that you won't even need to dress at all or even shower (bonus: no need to choose if you use gel or shampoo first and spend all that cognitive ability on adjusting water's temperature and pressure), then you don't need to make the +100 choices you are unaware you make during your commute.

#3 makes a lot sense, but you could also build a brand by wearing the same kind of clothes (e.g. hoodies, turtlenecks) but with changing details.

</comment><comment><USER14> In a way, it reminds me of Cartoon Characters who wear the same thing every day, they're instantly recognizable, even if you can just see their shirt/pants.

The branding is the only part really noticeable to anyone other than yourself and once you explain the other two reasons, Im sure they'll understand.

</comment><comment><USER15> If someone wore the same outfit everyday, they must really enjoy what they wear. For example, my dentist always wears scrubs and tennis shoes to work and he does not care what people think because it is comfortable to him. He also does not have to worry about ironing his clothes, getting his nice clothes messy, and it looks professional. I agree with the fact that it establishes a brand, because wearing scrubs gives the connotation of being in the health care field. Wearing the same thing also saves a lot of money, because you can get your outfit in bulk or on sale.</comment>


Ask HN: Should I take the plunge and learn how to program with Bloc.io? - <AUTHOR>

A bit more info... I'm a self-taught self-made mobile PM with UX chops, a bit of design tricks up my sleeve and strength in business/strategy.  Over the years, I've felt paralyzed, inferior and, dare I say it, 'stupid' because I can't program and wouldn't know where to start.
One of the most compelling reasons I want to do this 12-week bootcamp is I think it might be a good return on investment. Putting on my resume then I have experience in web development, and the ability to build projects and prototypes that express my ideas...would be amazing.
I also strongly believe programming teaches you how to think.
On the other hand, a lot of people are discouraging me from this program (bloc.io's 12 week bootcamp). It is definitely expensive--over my budget, it's a lot of work (which I"m willing to do), and the skeptics wonder what this course will even bring me as far as value. Will I even learn to be a web developer?  My goal isn't to be the best developer, it's simply to learn how to program--whether it be slow/fast, good bad.  I may never even use the skills I learn professionally, but is the journey and knowledge I gain not worth it? <comment><USER2> If you're a self-starter take advantage of all the free resources available and throw down for some quality books. If it's over your budget and you may never use the skills professionally it's difficult to see how it could be a "good return on your investment".

Programming does not teach you how to think. It's a great way to practice problem solving and critical thinking in a specific domain that has some carry over to "real life". If you are interested in how to think check out a website like Lesswrong.com and read a lot of books, be humble, listen and hang out with intelligent people that have different views than you do.

Good luck.</comment>