Coding is priority number five - <AUTHOR> http://bitquabit.com/post/coding-is-priority-number-five/

<comment><USER2> > "Shit Umbrella"

I have in the past categorised managers as "umbrellas" or "funnels" (and I guess there's an inbetween 'pipe').

The idea is that there is work the team should ideally not be doing (the 'shit'). That either needs to be rebuffed by the manager or handled another way (e.g. by stalling on it, doing it themselves, or making it someone else's problem).

Good managers keep the shit away from the team somehow. They're umbrellas.

Poor managers act as simple proxies. If anyone requests anything from them, they pass it on to someone on their team, without considering if they should or could block it (or handle it themselves). They're pipes.

Really bad managers act as intensifiers of the shit. e.g. by getting multiple people on the team duplicating effort on it. Or by being the sort of corporate busybody who goes and attracts more of it. Or by having slow, talky meetings about it which add time and friction. They're funnels.

<comment><USER3> One thing I found from my experience as a team lead (and which is somewhat touched on in this article), is that sometimes, because team members never get a whiff of all of the deflected things that never reached them, the more critical will sometimes get the opinion that you're doing nothing at all other than acting as a pipe.

I vividly recall one incident where I passed along an urgent UAT issue to a self-styled "hot shot" developer, who responded (with cc's) that he was entirely too busy, and that "if I had two hands I could do it myself".. since I was "obviously not busy as I hadn't had many commits lately". Meanwhile, I was two hours into a client call negotiating turning functionality requests into deadline shifts, was simultaneously trying to triage a production issue to see if it was our problem or the client's problem, and had 50+ emails from developers and clients just from that day still un-responded to.. yeah, silent evidence is a bitch.

I do have to agree, however, that moving back to development released a lot of stress for me. It's far less stressful thinking about whether or not I can get something done as opposed to wondering whether 15 other people are going to be able to get something done..

<comment><USER2> Yes, and I didn't mean to be rude to any team leads, sorry if it came across that way.

In any role, it's important to communicate the work you're doing (ideally without bragging), up and down the hierarchy. That is hard for an umbrella to do but possible. ("Just checking folks - is anyone keen to fill in 5-min increment timesheets?" (Groans) "Thought not")

Also, changes in manager offer a natural opportunity to compare, since you can detect a difference in the kind of work the team receives.

<comment><USER3> Sorry, the muse for my post was to vent tangential memories that it recalled moreso than anything you said that seemed particularly rude or short-sighted :)

</comment></comment></comment></comment><comment><USER4> "Your job, should you accept it, is to become what I've lovingly dubbed Shit Umbrella"

So, so true. And this is an excellent article.

There's another aspect of becoming a manager that the Benjamin doesn't discuss here, but is closely related:

The best managers/leads are excellent at saying "No". They say "No" to outside (especially upward) voices as well as to the people they lead. The most important aspect of being excellent at saying "No" (as a leader) is to be able to say "No" to yourself.

I don't know Benjamin myself, but he sounds smart and probably has tons of great ideas. The team is executing against a plan and Benjamin might have a really great idea for a new feature, process, etc... To be a really great Shit Umbrella a lead like Benjamin needs to be disciplined about when to say "No" to his own ideas.

<comment><USER5> I suspect you and I agree on this, but I'd like to reframe your argument a bit. I would argue that a good manager should strive to _never_ explicitly say "no". There are plenty of ways to limit misguided ideas without explicitly saying no. For instance, you can say "Yes but...", "Perhaps, but only if...", or (my personal favorite) "Good idea, but I personally like your other idea much better". The advantage this approach has is that it makes sure that you're not shutting down a good idea that has some major (albeit fixable) flaws.

Of course, sometimes you have to just set your foot down and just say "No". But I've noticed that as managers get more experienced, they tend to rely on their ability to do so less and less.

<comment><USER4> I put "no" in parenthesis specifically for this reason.

Someone gave my wife and I advice early on to avoid explicitly saying no to our children when they were very little. It was very, very good advice.

</comment></comment></comment><comment><USER6> I used to be a developer. I now work as a team lead / client liaison. Coding is not in the top 5. My job is to anticipate what my team will need and make sure that there are no obstacles. I also help with DB design and platform choices. Strong knowledge and experience with what developers need help me a lot.

I was wondering if a person without a development background could take my role as team leader to manage 3/4 developers on a daily basis.

<comment><USER7> I think it's fairly common to see people in managerial positions without technical backgrounds. I've rarely seen it work tho.

<comment><USER8> Agreed. It happens a lot (in all my previous jobs I had mostly non-technical people as leads), but they have to work 10x harder to be effective. I think that even a limited technical background does a lot of things for you:

1) You can scope your team's features and commitments more effectively if you have some understanding of the technical complexity of each ask.

2) Understanding the technology (and the skills of your people) means you have better intuition about the right people to bring into the room when a problem arises

3) It's easier to be empathetic with your team when you have engineering experience, because you know that many times the spec is just the tip of the iceberg.

4) Credibility. A group of devs will have a lot more respect for you from the start if they know you're not just a bureaucrat and you can code (even if it's not as well as they can)

<comment><USER9> At a previous company I had a project manager who's technical background was putting up Wordpress sites. He tried really hard, but he still made mistakes in #1-3. The company's COO, however (small company, so he was just one level above my manager), used to be a coder several years ago. So he understood time commitments and could sensibly discuss software design. I think that's what really kept the development team running, because it's sure what kept me running (deflecting "shit" and making sensible management decisions). At the very least I had a lot more respect for him, just like you say in #4.

</comment></comment></comment></comment><comment><USER10> That sounds like a pretty awesome way to handle it, so props to Fog Creek.

Having said that, what happened after he stepped down? Did they hire outside of the company? Promote another senior developer?

<comment><USER11> We promoted an awesome developer who really wanted to be the Kiln Team Lead into the position.

<comment><USER12> who?

<comment><USER13> me!

<comment><USER14> Congrats, Kevin -- this sounds like a great move.

<comment><USER15> At the very least, he now gets to put "Shit Umbrella" on his business cards.

</comment></comment></comment></comment></comment></comment><comment><USER16> Holy crap, I couldn't agree more. Thank you Benjamin!

I just wrote a comment/follow-up from the flip-side perspective: someone wired to be a "Shit Umbrella" who is stuck in a world where you have to be a "rockstar coder" first – <http://levifig.com/articles/a-tale-of-priorities/>

<comment><USER17> I remember reading about Microsoft having a Program Manager job title, which sounded exactly like what you're looking for. Might be worth approaching them, or looking to see whether other companies have something similar?

<comment><USER16> Thanks for the tip! Currently, I'm working on a startup I co-founded so I got my plate full. I wrote that article knowing that there are more people like me and because I just now found myself in a position to do what I love but spent some 10 years looking for it… :(

</comment></comment></comment><comment><USER18> Wow, this article couldn't have come at a better time for me. Recently, I jumped from being a lead developer to being an architect and manager. Benjamin articulates exactly what I'm going through. Unfortunately, I don't think going _backwards_ is an option for me.

<comment><USER11> I actually did enjoy being a team lead for awhile (once I got the hang of it). If you're a people person, it can be tremendously rewarding to see your team thrive at delivering piles of awesome. I just reached a point where I wasn't learning anything anymore (Fog Creek's just not that big; you do pretty much run out of novel managey things after awhile) and wanted to do more coding again. So I guess I'd tell you to grasp on really tightly to the idea of hanging your success on your team's success, and knowing that if they're doing their job well, you're probably doing the right thing.

<comment><USER18> Great advice. Similar to you, the main vexation has been "what comes next". Being a developer, you can scale your knowledge vertically and horizontally, constantly improving yourself and growing. Being a "shit umbrella", though, doesn't seem to lend itself to such growth opportunities.

<comment><USER4> I wrote a post the other day about how to think about career trajectory/growth. In my experience people generally think about it wrong.

TL;DR: Don't think about your career as a ballistic trajectory, but more as a series of interplanetary missions.

[http://ceklog.kindel.com/2012/04/08/you-are-thinking-of- your...](http://ceklog.kindel.com/2012/04/08/you-are-thinking-of-your-career- trajectory-wrong/)

<comment><USER18> Thanks for sharing. I really like your perspective (not to mention the analogy). Would you agree, though, that part of the problem is with company's views on their own employee's trajectories?

<comment><USER4> I was fortunate enough to work at one company for 21 years (MS) that supported this model. I suspect, given my personality, passions, and style, if MS had not supported me in this way I would have just done it across many companies.

So, at my core, I believe it is up to the employee. If you are stuck, GET OUT.

</comment></comment></comment></comment></comment></comment><comment><USER19> So what were priorities #1-4?

<comment><USER11> (Not in order) PR, ensuring infrastructure was in place, working with sales/support on priorities, product direction.</comment></comment>


Ask HN: What are the risks of creating a company with a complete stranger? - <AUTHOR> Hi, I've been working with my co-founder on a startup for a while without achieving any interesting results.
Few days ago we've been approached by a person that we don't know and is not in our network. He said that he has a similar idea and proposed to help us with his contacts, network, marketing and business effort.
The main condition is that we'd have to create a new US company (we are not Americans, he is) where we would split the equity 51% (him) and 24.5% (us/each), without putting any money nor covering expenses like servers and others, but instead splitting them equally. We've done our checks and we cannot find much about this person on the web a part a couple of interviews and videos.
Since the other option is to shutdown the startup soon, we're considering this offer, and I'm interested in knowing what risks (legal and not) there could be by creating a company with a complete stranger.
I understand that it'd be better to talk with a lawyer and none of your help could be seen as a law advice, but before doing that we're trying to figure out if there is a way to protect ourselves and which kind of company would be better (a standard Inc, a LLC or something else), since we'd lose the control of our project we've been worked hard.
Anyone of you had a similar experience? What do you suggest to do? <comment><USER2> Don't do it. His terms are insane. His value is unproven. It's too risky to do this with someone you don't know at all.

If the alternative is to shut down, offer him equity in exchange for closing deals, or just offer to sell him the UP of the company and move on.

<comment><USER3> I agree.

>> _He [...] proposed to help us with his contacts, network, marketing and business effort._

Is there any reliable proof that he has contacts, a network or know something about marketing?

[In a more reasonable deal, I'd propose also fixing a sane vesting schedule. So if he decides to abandon the company next month, he can't walk out with the 51%. But this raises too many red flag for me. 51%!!!!!!!]

</comment></comment><comment><USER4> why not setup a contract where his company gets a residual 50% commission for each deal he sells. or some fixed price per mo per customer you charge him etc. so that you can remain different entities but still "partner" and put a non-compete which says he can't just get rid of you and build out the service later on.</comment>


DeVry University Agrees to Stop Ads Touting Grads' Job Success Without Proof - happy-go-lucky http://www.npr.org/sections/thetwo-way/2016/10/14/497917516/devry-university-agrees-to-stop-ads-touting-grads-job-success-without-evidence <comment><AUTHOR> It should be noted that the highlight point of what DeVry had to change was claiming "since 1975", because it's records between 1975 and 1980 were not as detailed as the records they kept after 1980. This suggests to me that, for the most part, after 1980 they probably could back what they were saying.

Glad it's resolved as I'm a DeVry alumni, and prefer if my degree is looked at as meaning something. I do feel I got a satisfactory education there, and I had great professors.

Though it's worth noting that I got a good education there mostly because my great professors pretty much ignored the corporate syllabus and taught us what they thought we'd actually need to know. The quality of education you can get at DeVry is in spite of corporate, not because of corporate.</comment>


How to Draw Animals (1930) - <AUTHOR> http://dessinoprimaire.blogspot.com/2012/02/les-animaux-tels-quils-sont.html <comment><USER3> The site is in French. It's possibly "blog spam" in that it points to another French site as the original source:

[https://bibigreycat.blogspot.com/search/label/dessiner?updat...](https://bibigreycat.blogspot.com/search/label/dessiner?updated- max=2009-06-10T02:31:00%2B02:00&max-results=20)

On both sites, the images can be clicked to enlarge them. You probably don't need to know any French to figure that out, but I thought I would mention it in case it was helpful to someone.

Edit:

This info is from the top of the article:

 _sur le site de l 'Agence Eureka_ = from the site Agence Eureka

 _(cliquez sur les images pour les agrandir)_ = click on the images to enlarge

Per another comment here, there is an English language blog it points to and Wikimedia at the bottom of the page. The other French site appears to be the original source, not Wikimedia nor the English language site.

It also says "Images on Flicker" and links to this, which some people might like better:

[https://www.flickr.com/photos/taffeta/sets/72157618009562834...](https://www.flickr.com/photos/taffeta/sets/72157618009562834/)

<comment><USER4> And the URL means "draw in elementary school" in French.

<comment><USER5> In _phonetic_ French.

</comment></comment></comment><comment><USER6> If you, like I did, wish to have all the pages as a single pdf, I grabbed them all and made one [1].

(I just googled and found a simple site to share it on, so if it doesn't work or you have a better suggestion let me know.)

[1] [https://docdro.id/FFIBIrU](https://docdro.id/FFIBIrU)

<comment><USER7> Thanks for posting this. On the last pages it is said to be licensed under Creative Comments Share alike. I'd assume that the content might still be copyright protected by the original creator? So I don't think that anyone can relicense it as simple as that.

I don't have a moral problem appropriating content that has been published 90 years ago. I don't think it is appropriate to assign it a Commons license though.

<comment><USER8> The cc-by-sa note in the pdf is presumably because that is the copyright listed on Commons and Flickr.

However, the original work appears to be in the public domain. R & L Lambry were a father (Léon) and son (Robert) who died in 1940 and 1934, respectively. French copyright, as in all of the EU, lasts for the life of the author + 70 years.

I found this fairly interesting bibliography of the Lambrys: [http://nouvellesuzette.canalblog.com/archives/2010/05/13/179...](http://nouvellesuzette.canalblog.com/archives/2010/05/13/17919647.html)

And confirmed with this information from the French national library:

[https://catalogue.bnf.fr/ark:/12148/cb32342632r](https://catalogue.bnf.fr/ark:/12148/cb32342632r)

[https://data.bnf.fr/10863941/leon_lambry/](https://data.bnf.fr/10863941/leon_lambry/)

[https://data.bnf.fr/16969919/robert_lambry/](https://data.bnf.fr/16969919/robert_lambry/)

<comment><USER6> Correct. Since i got the files from wikimedia, I wanted to adhere to their license claim and give attribution. I was pretty sure it's P.D. but didn't know if the scans themselves might have a copy right in some jurisdiction.

</comment></comment></comment></comment><comment><USER9> Couldn't help but remember Picasso's bull.

[https://www.flickr.com/photos/sorarium/8578925321/in/photoli...](https://www.flickr.com/photos/sorarium/8578925321/in/photolist-5WrLxK-6fSRMQ- dh5a6F-9mfRY-8386qy-BMa4H-e56eBx)

Also teaches you about how hard abstraction is. You really really need to understand the subject and the underlying dynamics to simplify.

<comment><USER10> Many artists aren't trying to simplify an final subject. If anything, they come from the opposite direction - they don't worry at all about the final object - just look at it. Look at its lines. Mark out the major shapes. And there you have your abstraction. Now if you want to finish it, keep adding the next layer of detail. Mark out the smaller shapes. Mark out lines and endpoints. Start filling in some shading. Then add some texture.

In other words, you start from a simple abstract and fill in. And most of the 'how to draw' sketches from the original post do exactly that.

<comment><USER11> It's interesting to compare how theatre went from scripted shows to improv. Soon painters will ask audience members to draw some random shape for them to start.

<comment><USER12> I love doing this when doodling. I can start with nothing, but often it is more interesting to start with a scribble!

</comment></comment></comment></comment><comment><USER13> This article has links to original blog post in English[0] + media folder on Wikimedia Commons[1].

Think, link to Wikimedia Commons is better as source for images.

In same time, Daddy Types has more info about other editions:

> _Lambry 's instructions were originally made for l'Echo du Noel in the > 1920's and 30's, a weekly Catholic children's paper published by Maison de > la Bonne Presse until 1936. [Bonne Presse was owned by Bayard, which is in > turn owned by the Augustines. These images come from an unsold set of 51 > editions of l'Echo du Noel from 1931 on eBay.fr_[2] _.]_

> _A Spanish translation [Los Animals tul cual] came out in 1941, but so far > the earliest French edition of Les Animaux tel qu 'ils sont I've found > mentioned is from 1949. [The authors are listed as R. y L. Lambry, so > someone--a brother or wife, perhaps--is getting shortchanged on her credit > for the book. Desole', madame.] The 1959 edition_[3] _has a whopping 200 > pages and promises to teach this "reputedly difficult subject [sujet réputé > difficile]" in just 95 simple lessons. Et voila!_

Funny, I has similar 50-page book «Noah, teach us how to draw animals»[4] (Moscow: 1990, 1992) by Zheli Terez(?) in Russian (rus. Желли Терез. Ной, научи нас рисовать животных - М.: Рудомино, Цицеро 1990; Деймос, 1992. - <USER2> с.), but not sure what used as source for this book.

[0] [http://daddytypes.com/2009/05/13/how_to_draw_animals_the_rob...](http://daddytypes.com/2009/05/13/how_to_draw_animals_the_robert_lambry_way.php)

[1] [https://commons.wikimedia.org/wiki/Category:Les_Animaux_tels...](https://commons.wikimedia.org/wiki/Category:Les_Animaux_tels_qu%27ils_sont)

[2] [http://rover.ebay.com/rover/1/709-53476-19255-0/1?icep_ff3=2...](http://rover.ebay.com/rover/1/709-53476-19255-0/1?icep_ff3=2&pub=5574636946&toolid=10001&campid=5335844480&customid=&icep_item=270369722888&ipn=psmain&icep_vectorid=229480&kwid=902099&mtid=824&kw=lg)

[3] [http://www.livre-rare-book.com/Matieres/pd/8375.html](http://www.livre- rare-book.com/Matieres/pd/8375.html)

[4] [https://www.liveinternet.ru/users/ksu11111/post414036566/](https://www.liveinternet.ru/users/ksu11111/post414036566/)

</comment><comment><USER14> We play a great party game called 'Six Second Animals.' The caller names an animal and counts down from 6. Other players draw the animal. The caller picks a favorite and that drawer becomes caller.

<comment><USER15> Neat! check out Google's Quick Draw [1] where you need to draw a given object in 20 seconds and a neural network will recognize what you're drawing.

[1] [https://quickdraw.withgoogle.com/](https://quickdraw.withgoogle.com/)

<comment><USER16> I mean it literally asks you to draw the thing to be recognized.

It would be more impressive if you were to draw freely and the neural network would recognize whatever you drew.

<comment><USER17> That game wouldn't generate labeled training data for their machine vision algorithms, which I'm sure is the whole point.

</comment></comment></comment></comment><comment><USER18> I don't know about you, but I hate this cerebral type drawing, where you take a subject, analyse, restructure and reduce it into some components, etc. It's no fun and uses faculties that I want to rest when drawing. If I draw like this, what happens in my head is pretty much the same as when I work. I'd definitely not teach kids to draw this way. If anyone is interested in alternatives, check out Drawing on the Right Side of the Brain by Betty Edwards [0][1]. First edition came out quite a long time ago, and it has some popular neuroscience sprinkled in there from that time, but if you get through that, the actual learning material is very good. You'll be surprised how effective it is.

[0] [https://www.drawright.com/](https://www.drawright.com/) [1] [https://www.amazon.com/dp/1585429201](https://www.amazon.com/dp/1585429201)

<comment><USER19> _> I'd definitely not teach kids to draw this way._

Seconded. Drawing from life is orders of magnitude easier than illustration. You can learn to draw your own hands quite realistically in a matter of hours, from a baseline of nothing. Learning to draw a realistic human hand from memory takes years of study and practice; you need to memorise every bone, muscle and tendon, you need to understand the elasticity of skin, you need a deep intuitive understanding of perspective. If you're drawing from life, you're just transcribing lines, shapes and shading - it's basically tracing with your eyes.

Our visual memory is really very poor, because it's evolutionarily tuned to remember rough silhouettes and distinguishing characteristics rather than a complete and detailed image. People who _can_ remember images in photographic detail are invariably autistic and invariably have serious difficulties in coping with normal life - the highly lossy compression most of us apply to sensory information is an essential survival skill.

Most professional artists can't draw purely from imagination - it's a highly specialised skill reserved for expert illustrators. They rely on reference photographs, models, mannequins, preparatory sketches and all sorts of other visual aids. Why would we try to teach children a skill that most working artists think is beyond their ability?

<comment><USER18> That's a good take on drawing from nature. My focal point on this subject is how good it feels. When you get over that bump, which like you say takes little time, you become so relaxed. I actually don't care about the drawings I make, it's the state of mind that I get from doing it that I like.

"That bump" I mention is something like changing gears in your head to see the pixels on the screen, instead of the text, windows, and other things that the pixels "make up", to use an analogy. It's actually hard to even describe this phenomenon; I guess that says something about how foreign it is to us. It's a bit like, when someone is talking, being able to distinguish the pure sounds you hear, and the interpretations you (involuntarily) attach to those sounds. When drawing in the "naturalistic" way, you want to suspend the interpretation or symbolisation of what you see.

The first time you make the shift, to me it feels like "wow, I don't know this feeling, it's great". Then you have to redo it every time you sit down to draw, and usually multiple times in the midst of a session too, because you loose focus and fall back to the symbolistic-perception mode.

</comment></comment></comment><comment><USER20> Reminds me of Ed Emberly books and the "draw 50" series of books I checked out of the school library as a kid. Draw a few shapes, fill in the blanks and details, erase your marks...

Or traced the second to last drawing and then fill it in by hand. I was a good "drawer" but you need a lot more practice to learn about perspective, shadows, and all the stuff that makes your drawings look _good_

</comment><comment><USER21> Some would say that is _not_ how you draw a (live) butterfly: [http://emilydamstra.com/news/please-enough-dead- butterflies/](http://emilydamstra.com/news/please-enough-dead-butterflies/)

<comment><USER22> This was very insightful. I never thought about what the natural wing position of a butterfly is like.

</comment></comment><comment><USER23> Note that the works seem to be in the Public Domain, since the author died in 1934 and the copyright law is 70 years after death in France. However, there is a co-author but no information is available on her/him which might extend the copyright duration.

Another argument for public domain is someone translated it to English and plans to sell it (at least on Amazon): [https://www.amazon.co.uk/Draw-Animal- Book-Step-Step/dp/16315...](https://www.amazon.co.uk/Draw-Animal-Book-Step- Step/dp/1631598414/ref=sr_1_1?qid=1559812155&refinements=p_27%3ARobert+Lambry&s=books&sr=1-1)

</comment><comment><USER24> Here are my personal top 5 drawings for lazy daddies:

[https://twitter.com/heinrichhartman/status/11365667071479439...](https://twitter.com/heinrichhartman/status/1136566707147943936)

</comment><comment><USER25> There's a lot of "draw the rest of the fucking owl" here. For actual step by step instructions for drawing dunces, look at Ed Emberley.

</comment><comment><USER26> Thanks a lot to whoever posted this. I have recently started my new "(at least) one drawing every day" stint and I am currently working on animals (even if I tend to copy from photos) so this is very interesting to me.

[http://pa-mar.net/Hobbies/Drawing.html](http://pa- mar.net/Hobbies/Drawing.html)

</comment><comment><USER27> I showed this to my girlfriend who is an artist, and she basically scoffed and said, "I'm not really into that. I was taught to draw what I see."

As in, don't even THINK about drawing those circles.

<comment><USER28> In my naive way I guess she has to abstract too, maybe unconsciously to keep proportions for example.

For someone learning to draw without much talent, me, it is hard to know what is important and what to focus on. To me it seems like thats what these circles and lines are there for. Look at what is important and what proportions they have.

</comment></comment><comment><USER29> Drawing like most things, you get better by training. Once you can do basic shapes and features you can also start to free draw which is fun and also still useful in this age as you can make decent looking illustrations in order to explain stuff.

</comment><comment><USER30> It was a simple book like this that I had as a boy that got me into drawing.

It taught me to see the simpler shapes that things are composed of — start there and build up.

It also caused me to begin to think about proportion when drawing — so that an animals head is properly proportioned to their body, etc.

If I were granted a wish it would be that schools had the budget to create books like this and outright give them to students to take home.

</comment><comment><USER31> I think this is actually the best book for learning to draw animals. I've had a copy for over 30 years, and I still like to go back to it sometimes.

[https://www.amazon.com/Draw-Animals-Perigee-Jack- Hamm/dp/039...](https://www.amazon.com/Draw-Animals-Perigee-Jack- Hamm/dp/0399508023)

</comment><comment><USER32> this is cool, i'm about to be doodling some animals

</comment><comment><USER33> The fundamental issue that is hardly addressed in drawing by shape recognition is that it gets the proportion right but fails to teach the inherent "3D" structure of the animal.

The litmus test for drawing is to ask someone to draw an animal. If they can, great. Follow up and see if that draw the same thing but now in isometric view or from an arbitrary viewpoint/perspective. Imagine if you have a camera with various lenses (24mm, 35mm, 50mm, 90mm, etc) which describe the amount of foreshortening you need to compensate. Now imagine taking that camera and point it to the object (animal in this case) and taking pictures from many different angles and distances. You simply cannot draw these if you haven't internalized the 3D form.

Check out Aaron Blaise (Lion King fame) who has a YT channel. His drawing skills are "3D" so to speak. He truly understands not just static anatomy, but the kinematics of how animals move and which muscles are involved. It is not by chance you get to work as an animator at Disney.

This guide fails (like 99% of the drawing guides, I've bought many books on drawing and they all sorta suck) to teach structure. It does well in teaching proportions (relative size of parts of an animal) but that's not all you need to draw. You NEED to know anatomy; even if you know anatomy, then you need to be able to internalize the 3D structure of the skeleton, muscular volume, understand foreshortening, line quality, overlap, chiascuro or shading, etc. I have mad respect for caricature artists, because they know all this and then have the license to exaggerate and modify the form.

Drawing is fucking hard, like insanely hard. I have spent more than 10 years in learning how to draw. It sounds like gatekeeping but honestly, I spent a whole year trying to draw basic shapes, doing coil exercises (See Sycra on YT), rotating objects, drawing architecture and basic geometrical scenes, etc. I would say getting an engineering degree (I have BS and MS) is wayyyy easier than learning to draw. It is one of the most difficult things I've pursued and the joy of sketching wherever I go is amazing. I still have ways to go, and I'd love to post a link to some of my drawings but I'd like to keep my account anonymous.

Also, you know why organic chemistry students have real models of molecules? Because they need to know the 3D form. Same with physicians who play around with 3D models and do real dissections.

Edit: Here is a sample of my early drawings (I did reverse google search and nothing showed up :-) ): [https://i.imgur.com/e4GgxFA.jpg](https://i.imgur.com/e4GgxFA.jpg)

<comment><USER34> Not everybody need to be able to draw things anatomically correct.

This guide IMHO serves perfectly as a material to teach children drawing as a recreational activity. There's almost no explanations, only directions. There's no exact proportion either, you choose what look good to you.

<comment><USER33> That's a fair point, I went off of on a tangential rant then :-) What I said bothers me deeply about drawing resources in general and I hope I can shed some light. I also draw recreationally, if I were to follow this guide, my animals would look horrible and rigid. Have you tried following this guide?

</comment></comment></comment><comment><USER35> It reminds me of Ed Emberley. Or Trogdor.

"S, more different S... Close it up real good for his head, then, using consummate V's, give him teeth, spinities, and angry eyebrows."

</comment><comment><USER36> A small thread from 2017: [https://news.ycombinator.com/item?id=14120920](https://news.ycombinator.com/item?id=14120920)

</comment><comment><USER37> I really like the handwriting. Both serious and playful.

<comment><USER38> It's an art-deco style, which is what the late 20s were made of. The entire book oozes that look.

</comment></comment><comment><USER39> The owl is on page 29.

</comment><comment><USER40> "Basic Bean Bodies".

<comment><USER41> Link? This sounds like it could be interesting.

<comment><USER40> Old Kliban cartoon.

</comment></comment></comment><comment><USER29> Drawing, like m

</comment><comment><USER42> This is what HN was invented for. Fuck the Silicon Valley venture capital narcissistic shite, let's just share worthwhile things like this.

<comment><USER43> You know, I was just thinking that HN is truly the last site on the web left where something cool like this would be at the top of a list, like something Jerry and David's Guide to the World Wide Web would have on it.

I'm so glad we still have this place.

<comment><USER33> I've been here for a while and I am seeing it erode slowly.

<comment><USER36> Everything is eroding slowly.

<comment><AUTHOR> You've been keeping the whole site together for years

</comment></comment></comment></comment></comment><comment> matt-attack This is literally a meme [1].

[1] [https://knowyourmeme.com/memes/how-to-draw-an- owl](https://knowyourmeme.com/memes/how-to-draw-an-owl)

<comment><USER44> True, the peacock example is very like the owl meme

[https://live.staticflickr.com/3549/3546657319_57861e46ff_b.j...](https://live.staticflickr.com/3549/3546657319_57861e46ff_b.jpg)

<comment><USER45> Not really. If you get the basic shapes and angles down, drawing the plumes is easy. Just try it! A funny thing about drawing is that some things which look simple is hard, and some things which looks impressive is really easy. Shapes, proportions, movement and perspective is generally hard. Textures, patterns, tones and shadows is relatively easy since you are just "filling in".

In the owl meme, some of the hard things (like getting the perspective and angles of the eyes and face correct) is glossed over.

</comment></comment></comment><comment><USER46> As per usual there is a subreddit for this /r/restofthefuckingowl</comment>


The Tyranny of Convenience: the future we all chose, but nobody seems to want - <AUTHOR> https://onezero.medium.com/the-tyranny-of-convenience-2e7fa145ab4 <comment><USER2> Convenience is what ultimatly will paralyze us all into eternal slavery and ownership by the happy few.</comment>


Collision Detection for dummies - <AUTHOR> http://www.wildbunny.co.uk/blog/2011/04/20/collision-detection-for-dummies/

<comment><USER2> You submitted this and 4 other articles last week, and they are clearly all your own writing. This is feeling a lot like blog spam.

<comment><AUTHOR> Sorry, I didn't realise submitting your own stuff was forbidden...?

<comment><USER3> It's not. Your post is quality original content, as far as I can tell. I'm kinda curious what the complainer's definition of "blog spam" is.

The guidelines declare your post "on topic", and also condone writing your own post and submitting that:

<http://ycombinator.com/newsguidelines.html>.</comment></comment></comment>


Why Engineers Can't Stop Los Angeles' Enormous Methane Leak - <AUTHOR> http://motherboard.vice.com/read/why-we-cant-stop-the-enormous-methane-leak-flooding-la <comment><USER2> It's weird that the writer is comparing a well leak to pipeline leaks in a city 30 miles away. Doesn't even mention the people evacuated from Porter Ranch.</comment>


Quit Current Job that Involves Work I wasn't hired to do, or Stay? - <AUTHOR>

I graduated with my BS in Computer Science around a year ago, and have been employed by my school's web development department to do PHP web dev for about a year.
The problem is that I haven't been doing much web application development, and have been pushed into doing templating for various blogging/wiki software.
The extent of my work has been basically setting up, configuring, and writing templates for the software I've been assigned to.  This has been emotionally and mentally draining for me, a person who was hired on to do web application development, and who has previously worked in mobile application development.
I've been considering quitting my current job, and focusing on finding a new job and personal projects, and I was wondering what advice the Hacker News community could provide on this situation.
Thank you in advance,
-ins0mniac <comment><USER2> The best advice I've ever received on job content, from my younger brother: "There is a support group for people who hate their job. It is called Everyone and we meet at the bars starting at about 5:30."

What is your goal for being at this job? If it is "I'd sort of prefer earning an honest living on a dependable schedule so that I don't have to return to living with Mom and Dad", then kiss your paycheck and be happy you're getting it because something like a tenth of kids your age are not. If you're prioritizing career growth and feel that this job isn't contributing to it, a) welcome to almost all employment of young people by universities and b) start pounding the pavement to find yourself another position, _then_ quit.

If you're a risk-tolerating person, I hear that contract iPhone developers are still turning down work at $100 an hour. You don't have to land many contracts to make yourself ramen profitable if you can bill $100 an hour.

</comment><comment><USER3> Any particular reason you can't find a new job before quitting the old one? That's the way it's usually done (unless you've got a big enough nest egg to take you through the transition.)

<comment><AUTHOR> I'm still looking, and the search hasn't been going on too long. There's no reason I can't find a job in a relatively short amount of time, the mobile industry is currently booming. Even if I have to settle for a short term mobile contract position until I find something long term, I should be able to find something.

As far as finding something before quitting goes, I'm still looking, and I'm still living at home being a relatively fresh graduate, and my current job is both emotionally and mentally draining which is why I want to get out.

-ins0mniac

<comment><USER4> If job is what you want to do, please find one before quitting. You may end up realizing finding a job was not trivial.

If you want to pursue entrepreneurship, I had say start working on your idea in your free time, unless you save some money and then quit.

my 2 cents.

<comment><USER5> The other trick is to take leave and use that time to look for work (depending on how long you've been there, of course). Job searching and interviewing can often be hard when you're already in a position, particularly if you're working long hours, or the work is draining.

</comment></comment></comment></comment><comment><USER6> There's something that nobody has told you yet in this forum: you don't have to do such a good job to remain employed. I agree with everyone who told you to find a job first. That is not mutually exclusive with the advice to quit. If yor job sucks you should quit, but don't underestimate the stress of being "on the beach." My point is that you can keep your job and paycheck while commiting 60-70% of your current energy to it and then devote the excess time and energy to your job search. Good luck.

</comment><comment><USER7> Your post sounds a lot like "I just graduated and I expect to be doing cool stuff and getting paid the big bucks, but I'm in an entry level position doing crap work." The good news is that you've finally reached the summit of the education mountain after a long climb. The bad news is that you've just reached the base of a new mountain, the "employment" one.

You might be in The Valley where every CS grad has a slightly better chance of becoming a millionaire, but in general the response to your inquiry would be this: Welcome to the real world.

That said, however, entry level jobs will start to shape your career, so you should make sure you are on the path you want to be on. There are certainly entry-level jobs where you would be doing more than what you are now, and you should probably seek them out.

One thing that is telling here is that you are working for your university, which tells me that you went for the easy-to-get job instead of putting yourself out there. You're going to need to take some more risks if you want to get the good opportunities and the good payoffs. You're also still living at home, which gives you the mental cushion that if you fail you won't be hurt /too/ bad, but it also removes some of the incentive to push yourself towards self-sufficiency.

As far as the situation you're in right now, update your resume and look for something _while you still have this job_. Do NOT quit until you have a new one. The economy is the worst it's been in a long time, and while you may think "there's no reason I can't find a job in a relatively short amount of time", you are wrong. That's the hubris of a recent grad who hasn't faced the real world yet talking. If you really could get a job so easily, why haven't you? (And if you could, just do it already) You work in a university which is probably the most relaxed work environment you could have, so performing a job search while in this job should be extremely easy.

The only action that would be helpful and also counter to this advice is if you were able to land an internship (paid or unpaid) at a startup in the space you definitely want to be in. In that case the support of living at home will help you, as long as you have a plan to work your ass off and get really good at whatever you want to be doing.

</comment><comment><USER8> When I was young my dad told me "never quit your job until you have another one lined up." I think that advice still holds, but I will expand it some. Get some side work lined up or something, but don't just quit without a plan. That's going to put you in a pinch and you might have to take another, even worse job because you need money.

When I've worked jobs or had lulls in jobs where I was working below my level it always led me to create new projects at home on my own time. These projects kept me learning, stimulated my desire to solve problems, and some have made me a bit of side money. Sadly none have yet taken off to the point where I work on them permanently.

</comment><comment><USER9> Practically your choice may depend on how much money you have. The answer is probably networking, if you have just graduated you are in a position where you are probably still in touch with classmates: find out what projects they are working on and whether you can help. Look through the industry and see what you would like to do and see if those projects are hiring.

Many top projects are interested in recruiting enthusiastic and motivated graduates.

With social networking it's increasingly easy to find people who you could help out/work with.

</comment><comment><USER10> I would quit simply because I would want to break away from the comfort zone of working for my school.

If you want your focus to be in mobile app development, take as many contracts as you can until it can replace your work. As a recent graduate you're likely in a lower-risk position to give up a fulltime job anyhow, take the plunge now.. you don't want to wake up in 3 years to realize you're still slicing templates for your school

</comment><comment><AUTHOR> The problem I am facing is the fact that I am both emotionally and mentally drained at my current job, but also, I am getting paid wages which are far below what I should be making if I were working full time doing the same work. I'm basically making student assistant wages, doing full time work that would in industry, make much more than I am current' making.

-ins0mniac

<comment><USER11> You are not your job. Your job pays the rent. I'm sorry you are in an unsatisfying job, I'm sure the majority of HN'ers have been there before. It sucks.

Times are tough right now. Getting your next job should be your priority, but quitting your day job to focus on the job hunt is a silly move when unemployment is over 10%. Keep your job until you secure the next one.

Until then take some solace in the knowledge that your current situation is temporary.

<comment><AUTHOR> Thank you marilyn, I must say, that out of most of the replies, your's has been the most helpful.

I must say that the other replies that I've read have also been helpful, I cannot disregard the other replies though, and I am still torn between quitting and keeping my current job which pays student assistant wages yet still, we do most of the work in the department.

-ins0mniac

<comment><USER12> If that job is so draining/soul-crushing/useless you should really plan your quit.

What i get reading the thread is that this job is also draining away the energy you need to search for another job seriously (and that lead to the desire to just quit and start searching for something else). As others have said, i don't see any particular reason to suggest you to "just quit". Why don't you simply find a temporary job somewhere just to get out of the current environment, and then start a proper next job search while still receiving a paycheck,etc...? It should not be that hard to find a temporary web dev job.My .2$.

</comment></comment></comment></comment><comment><USER13> So you got hired straight after finishing school but somehow you see yourself as a person who's into mobile application development ? I assume you worked on that mobile stuff while going to school ?

Anyhow, look for a job before quitting. It might be a stupid move to just quit and then stay unemployed.

</comment><comment><USER14> If you aren't happy, leave. If you aren't learning, leave. Remember that at the end of your life, you are going to die. There is no sense in spending your life being miserable.

<comment><USER15> +1. Just leave. Nobody ever regretted quitting a boring job.

<comment><USER16> I disagree, I've seen people quit and not find work for 12 months or more.

</comment></comment></comment><comment><USER17> No-brainer. Quit. You owe no allegiance to your current employer - or to your next one.

</comment><comment><USER16> Find a job first.

</comment><comment><USER18> I gave up a national merit scholarship when I was a teen and dropped out of college around the time I turned 20. Then began looking into going back to college in my early twenties. The scholarship landed in my lap with no effort on my part to get it and I was wooed by a number of colleges. So I was shocked by the reality that once gone, going back to college wasn't at all an easy feat. I have wrapped up an associate's degree and a certificate in GIS that is the equivalent of graduate level work. I still don't have my bachelor's and I am 44 years old.

I have no regrets. But it wasn't as easy a path as I had imagined. I really had not anticipated it would be difficult to go back to school. School had always been a breeze for me. The idea that there would be barriers to getting back to school was a completely alien concept for me.

I suggest you look before you leap. If you are okay with doing _anything_ else (flipping burgers, digging ditches) in order to get away from this job, then go. But if you have fantasies that it will be easy to land some ideal job, that you will surely be more appreciated and better paid elsewhere, and so on, be very careful to ensure that is actually true before you burn your bridges. Especially with a recession on, a job hunt can take a very long time.</comment>


Scale Fail (part 2) - <AUTHOR> http://lwn.net/Articles/443775/

<comment><AUTHOR> Part 1: <http://news.ycombinator.com/item?id=2564007>

</comment><comment><USER2> Netflix continued use of AWS would seem to argue against cloud addiction being an automatic path to scale fail.

<comment><USER3> My understanding is that they use a subset of AWS features - don't they avoid EBS and mostly just use S3?

<comment><USER4> Yep, they wrote about this on their tech blog: [http://techblog.netflix.com/2011/04/lessons-netflix- learned-...](http://techblog.netflix.com/2011/04/lessons-netflix-learned-from- aws-outage.html). It seems that they identified EBS as potentially problematic and built their system with minimal dependencies on EBS. Consequently they weathered the April AWS outage rather well.</comment></comment></comment>


Typing Is Hard - <AUTHOR> https://typing-is-hard.ch/ <comment><USER2> Pretty much any language supporting something like C++'s "template metaprogramming" will allow the programmer to perform arbitrary computation at compile time. This is, of course, "undecidable", because it's Turing complete.

This is not necessarily the end of the world. If you go out of your way to write an actual compile-time program by abusing your type system, and that program contains an endless loop, you probably shouldn't be surprised that your compiler hangs.

Unsound type systems cause more headaches in practice. For example, TypeScript types are only trustworthy if your program is careful about boundaries with the outside world. In larger, older systems, I occasionally do get bit by this.

<comment><USER3> Sure, you don't have to go out of your way to challenge your type system, but it still means that you're a single typo away from sending your compiler and yourself on a wild goose chase.

<comment><USER4> > Sure, you don't have to go out of your way to challenge your type system, > but it still means that you're a single typo away from sending your compiler > and yourself on a wild goose chase.

the alternative would be writing bash or python or ... scripts to generate the code, and for those :

\- you likely don't have any error message at all (ugh)

\- they won't have knowledge of the type system of the language you're operating.

Seriously, everyone complains about pages and pages of template errors, but if you use any decent IDE it's a two-click process to go to the part of your code where things fail. Errors will be split, then (at least with GCC & clang) you just start at the bottom of the error which is the place in your code where things go wrong 99% of the time - and if not, rarely if ever more than a couple steps above that. see e.g. : [https://streamable.com/0k6lvl](https://streamable.com/0k6lvl)

<comment><USER3> There are mainstream languages with decidable static type systems. They compile quickly and give obvious short error messages.

<comment><USER4> names ! we want names !

also, decidable likely implies total - and my experience with total languages is that more often than not you need to add another turing-complete "scripting" layer on top of it (for instance, a TC language to generate expressions in the total language) as it's so cumbersome to write otherwise when you have actually business rules and not simple math examples

</comment></comment></comment></comment></comment><comment><USER5> Correction: Java's type system has been unsound since version 5; version 8 (which TFA describes as the start of the issue) just happened to be the latest version at the time it was discovered.

<comment><USER6> Thanks, fixed!

</comment></comment><comment><USER7> If you have some form of Turing-complete macros, then macro processing might not terminate. I don't see why this is anything but trivial, _or_ a compelling argument against Turing-complete macros.

<comment><USER8> I don't think it's a compelling argument against having such a language. But you might want to know what you're up against if, say, you decide to write an autocompleter for your editor that needs to know types.

<comment><USER9> If you're writing an autocompleter, you have the bigger problem that it has to function when the program isn't valid syntax, or is valid syntax but has just plain contradictory type information and doesn't typecheck. Non-terminating typechecking seems easy to handle in comparison.

</comment></comment></comment><comment><USER10> This is great, and I'm developing a static type system for my programming language (for board games), and I've messed up the type system so many times.

The challenge beyond the math is then making the error messages useful, and also being able to make progress beyond the first error in a useful way.

</comment><comment><USER11> Reminder: strict type checking is more trouble than it's worth for some of us.

Ask yourself why dynamic type languages keep appearing, despite a fanatical resolve to purge them from the face of the earth? It's almost as if some people prefer them.

But I guess the knowledge of salvation by compile time binding must be brought to the late binding heathens, to use a poor analogy.

On the other hand, I'm willing to admit that strict Compile time type checking is what many or most people prefer.

<comment><USER12> I generally agree, except if I don't. Whether or not that is the case, I'm entirely uncertain about!

Generalizing to transportation one might ask: What is the better transportation device, a boat or a horse?

... of which one can somewhat reasonably conclude, that whether the question itself is the right question, is the real question.

Few oppose types if they don't have to do anything at all and if it doesn't take any of their time either in runtime, compile time, or otherwise. Realities being what they are, there is always at least some parts of the aforementioned that is false for any type system that is actually useful.

Because of this, and for a few other similar characteristics of types and computation, it boils down to nothing but a question of which kind of tradeoffs people find palatable.

Given that premise, there should be no surprise that the answers are subjective no matter the responder. The question of better is here nothing but an entirely subjective question veiled as an ostensibly objective one.

<comment><USER11> One thing I don't miss is C style Wild West access.

E.g., My coworker grabbed a word from somewhere, slapped a cast on it and proceeded to write into it. Hilarity ensues.

All the burden of explicit compile time checking, but no guarantees that anything is what you said it is by the time your coworker uses it. Of course, no computer Run-time is wasted on silly things like type, bounds or null checking, either.

</comment></comment></comment><comment><USER13> Wait, C#s type system is turing complete?? Does somebody have an example type that the compiler cannot check?

<comment><USER14> Me too wondering if anyone can show us a proof.

</comment></comment><comment><USER15> > There exist many type inference algorithms, the best known one is the so- > called Algorithm W.

Is this correct? I dug out Milner's paper [1] where he states that Algorithm J is more efficient (which was what I had been led to believe), but that Algorithm W is more suited to functional (as opposed to imperative) implementations.

Edit: Actually I think I'm parsing this sentence incorrectly, "best known" means literally that as opposed to "most efficient known".

[1] [https://homepages.inf.ed.ac.uk/wadler/papers/papers-we- love/...](https://homepages.inf.ed.ac.uk/wadler/papers/papers-we-love/milner- type-polymorphism.pdf)

<comment><USER6> Best known is indeed meant as "most widely known" (although that may be true for only my little bubble). I think it's taught in most type theory / formal methods courses though. If anybody has facts for/against this claim I'd be happy to update the page.

<comment><USER16> It might make sense to update to "most widely known" to avoid that source of ambiguity. You can take that sentence as ((best known) algorithm) or (best (known algorithm))

</comment></comment></comment><comment><USER17> Ah, I recently started using type hints in Python. Would've loved to see how that compares even though it's not inherently a statically typed language!

<comment><USER18> Python's type system is an instance of "gradual typing" (like e.g. TypeScript). PEP 483 is actually a nice introduction to this: [https://www.python.org/dev/peps/pep-0483/](https://www.python.org/dev/peps/pep-0483/)

<comment><USER17> Right, it should still be possible to statically type it for the purpose of testing. Wouldn't really be close to practical usage but I'd still be interested in seeing how it compares.

</comment></comment></comment><comment><USER19> The headline made me hope for an article about ergonomics.

<comment><USER5> People keep arguing for array covariance as if soundness and developer ergonomics were in conflict, but upgrading your type system from a laptop keyboard to some infamously-sound Cherry MX blues shows you indeed can have both.

With the amount of high-quality keyboard manufacturers these days, though, and the support for variance in preferred type parameters—do you need backlighting? Mac keys?—I do not blame people for asserting the problem of picking one is undecidable.

<comment><USER20> Ugh, I hate to do this, but GPT-3? Am I being paranoid?

Edit: Nevermind, I think I just missed the joke maybe

</comment></comment></comment><comment><USER21> What a cool resource. I've been meaning to finish an MVP for a programming language I've been trying to write, and it's pretty encouraging how many languages use undecidable type systems.

</comment><comment><USER22> Is the comment about zig correct about its typing? It's certainly true about _its compilation_ , but that's not the same thing. Also, if you're going to have a turing-complete compile time, you might as well have it in something that looks like a programming language, since that will fit your debugging mental model.

<comment><USER6> Since you can pass types to compile-time functions, yes that is correct. Take the example [from the 0.6.0 documentation]([https://ziglang.org/documentation/0.6.0/#comptime](https://ziglang.org/documentation/0.6.0/#comptime)) for example: At compile time the compiler has to figure out whether to type the `max` function using `u32` or `f64`. Since you can make the boolean condition arbitrarily complex the _type_ of max function called is undecidable in general.

I'm not arguing for or against undecidability in type systems, the page aims to be present the information neutrally.

<comment><USER22> Sorry, I wasn't defensive about the decidability of the type system, just curious about the analysis, which squares with my understanding of zig now! Thanks for the clarification; it might be helpful to expand on that in the doc.

</comment></comment></comment><comment><USER23> Great list!

Can anyone comment on Ada's type system?

</comment><comment><USER24> What Julia?

<comment><USER25> Julia has no (what some call "static" but that's actually the only form that matters) type system. It also has lisp-like macros.

<comment><USER26> Having no type system (e.g. Forth) is different from having dynamic checking for your types (e.g. JavaScript, Python, Julia iirc), though.

Julia also has Common Lisp-like multimethods, which are pretty nice, especially for linear algebra sorts of stuff, where you might be multiplying a scalar by a tensor, or a tensor by a tensor, and don't want to have to specify different syntax for the two operations.

<comment><USER27> I don't see how JS or Python (not so sure about Julia) meaningfully have "dynamic checking for types". If I have a function 'def foo(a): return a.startswith("foo")' and I pass an int in, Python doesn't insert something like 'if not isinstance(a, str): raise TypeError("...")', partly because Python doesn't even know that a str is expected; only that the param has a method called startswith(). And fair enough, maybe the type isn't str in a statically typed language, but a Go-like structurally typed interface with a startswith() method; however, the function also isn't inserting any meaningful check until the last possible moment when there is nothing left to do but blow up anyway, so I don't see how this can meaningfully be called "dynamic type checking" when the types are all implicit and maximally abstract and the "check" is only dynamic dispatch. Pretty sure this all applies equally to JS except that a failed dynamic dispatch doesn't raise an AttributeError but "undefined is not a function" IIRC. Not sure about Julia behavior, but I would guess that it also isn't going to be sprinkling dynamic checks all over given its aspirations toward performance.

<comment><USER26> > I don't see how JS or Python (not so sure about Julia) meaningfully have > "dynamic checking for types".

What would you describe as dynamic typechecking then? Would Scheme be a language that would fall under your definition, since it has much less dynamic dispatch?

> isn't inserting any meaningful check until the last possible moment when > there is nothing left to do but blow up anyway

I mean, inserting it earlier would require static knowledge of types, no?

> Not sure about Julia behavior, but I would guess that it also isn't going to > be sprinkling dynamic checks all over given its aspirations toward > performance.

Haven't used it since I took a linalg class in undergrad, but my understanding was that Julia does similar dynamic dispatch, but it's using a JIT, and does type propagation. As a result, once operand types are known, the compiler is free to monomorphize and inline.

A coworker wrote a thing to do this for Common Lisp, too (for some numerical code); if you're willing to give up a bit of dynamism, you can get quite a bit of performance out of this.

<comment><USER27> > What would you describe as dynamic typechecking then? Would Scheme be a > language that would fall under your definition, since it has much less > dynamic dispatch?

I'm not sure about Scheme because I'm not very familiar, but one possibility is simply that "dynamic type checking" is meaningless. In other words, one could argue that anything that blows up at runtime is "runtime type checked" but that doesn't seem meaningful. The only meaningful definition of "runtime type checking" that I can think of is explicit comparisons between a type annotation and a value's runtime type information, for example, given this Python:

        def foo(a: str) -> bool:
            return a.startswith("foo")

I would argue that this would be "type-checked at runtime" if the interpreter implicitly added this snippet at the start of the function:

        if not isinstance(a, str):
            raise TypeError("'a' is not a str")

There are other possible notions, including a program which type checks each of its functions as their definitions are evaluated by the interpreter—I would call this "just-in-time type checking" and consider it a type of runtime type checking.

But these are different IMO than just blowing up at the last possible moment because there is no reasonable way to continue the program.

> I mean, inserting it earlier would require static knowledge of types, no?

First of all, even if it did require knowledge of static types, it could still be _checked_ at runtime and thus runtime type checked. Secondly, many types aren't known statically—consider types that are programmatically generated, such as are common when using SQLAlchemy, boto, etc. The interpreter could still type check these at runtime via either the JIT type-checking method described above or the flat-footed insertion of an isinstance() check at the start of the function (but I would argue that the later the type checking happens the less useful and meaningful it becomes).

> Haven't used it since I took a linalg class in undergrad, but my > understanding was that Julia does similar dynamic dispatch, but it's using a > JIT, and does type propagation. As a result, once operand types are known, > the compiler is free to monomorphize and inline.

This sounds like the JIT type checking method that I described above, which is a concrete example of a meaningful runtime type checking example (as opposed to the notion that Python/JS does type checking at runtime which is either meaningless or incorrect IMO).

<comment><USER28> I agree with everything you say, except I have a lower bar of "meaningful".

> one possibility is simply that "dynamic type checking" is meaningless.

If I take your quotation out of context, this was the assumption of some people who separated languages into simply "strongly" vs "weakly" typed, by which they meant "checked by compiler" vs "not checked". It's incorrect though, and is the reason for separate "static" vs "dynamic" distinction.

C is a famous example of _static_ (checked at compile time) but _weak_ (≈ unsound) typing — compiler will happily accept programs that corrupt memory in all kinds of ways. mutating "const" variable, freeing used memory, crashing, remote code execution, and more... I don't think there are _any_ invariants that a C compiler can enforce.

Scheme, Python, Lua, Javascript etc. OTOH, have no static (= compile-time) type checking, yet they maintain some invariants! An object that has pointers to it will not be freed; An object's type is known, and will not change (well, some class transmutation is allowed but some not, an int will not turn into an array); Some types are immutable; You can never divide a string / string! etc...

Moreover, by maintaining _run-time metadata about object 's types_, they can tell you specifically that an operation raised a TypeError. Thus these languages are _strongly typed_ at run time.

IOW, I'm arguing that anything that blows up at run time is checked _IFF_ it tells you it was a type error. This is meaningful compared to C segfaults that tell you nothing :-)

\---

The Java paper [https://dl.acm.org/doi/pdf/10.1145/2983990.2984004](https://dl.acm.org/doi/pdf/10.1145/2983990.2984004) shows an interesting subtlety. "Fortunately, parametric polymorphism was not integrated into the Java Virtual Machine (JVM), so these examples do not demonstrate any unsoundness of the JVM" — yet they present unsound programs that "type-checks according to the Java Language Specification and is compiled by javac, version 1.8.0_25".

What gives? If a bad program compiles, how come JVM is still sound? See, Java has two type systems!

\- JVM is the runtime, intended to be capable of loading even untrusted bytecode yet still maintain some type invariants. It manages memory and type metadata, and for this bad program will correctly identify type violation at run-time: "When executed, a ClassCastExceptionis thrown inside the main method with the message "java.lang.Integer cannot be cast to java.lang.String""

\- The compilers uses a distinct more complex static type system. The question of soundness is: can any program that passed the compiler cause JVM run-time type errors?

      + Java language allows you to write type casts.  These are deliberate "trust me" holes in the *static* type system, whose specified semantics is: JVM will check type at run time and raise exception if not as programmer promised.
        As https://typing-is-hard.ch/#what-about-unsafe-casts says, since these are deliberate, and fall back to meaningful run-time type checking(!), let's ignore them — redefine "soundness" as: can a program with no exclicit casts cause a run-time type error?

      + Generics only exist in static type system!
        They are invisible to JVM (aka "type erasure"), they compile into dynamically checked casts.
        Their soundness goal was that the compiler can prove these implicit casts will never fail — e.g. you can only put candies into ArrayList<Candy>, so arr.get(0).eat() is guaranteed to give you a candy you can eat.
        That paper demonstrates a simple 17-line program with no explicit casts that compiles yet causes run time type error.

\---

If you think what type soundness means, ALL statically typed languages have 2 type systems! There are execution semantics — what it means to, say, compute number + number. And there is a static language of _talking about types_ that aims to predict / prove the types that will be involved at run time. Static checking fails if they don't match. Dynamic checking largely fails when you don't do it :-) But also when you erased info you needed to do it.

</comment></comment></comment></comment></comment></comment></comment><comment><USER29> After hearing "but Typescript is unsound!" a billion times.... kinda glad to se that being unsound is the "state of the art".

I do wonder how far you can go without letting go of unsound-ness in practice though. Convenience is nice, guarantees are very very nice

<comment><USER9> I don't see how this article supports the idea that "unsoundness" is state of the art?

<comment><USER30> It may depend on age, overall knowledge of CS (including its history) and level of experience with multiple programming languages. Maybe the article itself does not literally support the idea, but it might still be inferred from it. It might also be the resulting discussion and responses, or additional field experience, that might give rise to this conclusion.

I personally think the whole typing movement of the last decade has been mostly a red herring. What I mean with that is that it appears to try solve the "wrong" problem. While strong typing certainly can solve a whole class of bugs, my impression is that where this has been required most, ended up always situations where horrible overall design and code quality were the actual main problems (not typing).

Coming from a (embedded) assembly and C direction myself, I have nothing against strong typing. But what has consistently rubbed me the wrong way about this modern strong typing "movement", both intuitively and rationally, is how it appears to fix something that is essentially broken on a whole different level. No amount of strong typing is going to fix that.

I know, nothing much actionable or concrete here. Just my opinion. Regardless, this old geezer certainly agrees with the overall impression that "unsound" is pretty much the state of this art, these days.

<comment><USER31> Static typing takes the burden of verifying certain forms of program correctness off the programmer and puts it in the compiler where it belongs, thus expanding the space of correct code the same programmer can write per unit cognitive load. The more kinds of things you check for in the type system (static lifetimes in Rust, for instance), the more benefits you get. It doesn't serve as a substitute for good taste, because while a mediocre programmer's reach is extended, a great programmer's reach is even further extended. Mediocre programmers can thus meaningfully contribute to embedded and kernel-level code under the tutelage of a good programmer without risking blowing the whole thing up, and increase their skill.

<comment><USER30> I get you point(s) and I guess you mean well. Statically typed languages do essentially what you said. They mostly (if not only) move data validation from run time to compile time. In dynamically typed languages, this often doesn't happen in the first place, while with static typing you are pretty much forced to.

I have a little over 30 years of programming experience, the majority of it in statically typed languages (and quite a few). I have absolutely nothing against them (on the contrary).

I still remember the rise in popularity of dynamically types languages, and how/why they were promoted. Faster development and code simplification, by only doing data validation where it was really needed (at run time), among them. Whether that was a good development, depends on where you stand. Do you care about correct software? Are you a business making software for profit, minimizing development costs? Are you part of a constantly growing market, where programmers who properly understand CS fundamentals are increasingly harder to find (or just more expensive)?

Either way, to me it's no surprise that dynamically typed languages became as popular as they did, nor would I say that it is totally without merit (depending on your perspective). Sadly, it's also a heck of a lot easier to make utter garbage with dynamically typed languages. Not in the least because a programmer would no longer be confronted with their intellectual excrement at compile time. Unless all edge cases are properly tested during dev time, those usually become "user problems" during run time.

People like me have frequently warned consultancy clients about the dangers of technologies and languages based on dynamically typed data, but more often than not other factors that were deemed more important. Fair enough, at least from a business perspective. Maybe not so much from an ethic and/or legal liability standpoint, but somehow the software industry has managed to create itself a rather unique immunity from legal consequence as the result of horrendous software quality (so good luck selling a need for better software).

Sure, the contemporary static typing movement (as I like to call it) does appear to have genuine intentions to assist programmer (some of which should probably not even be allowed to code) to write substantially less buggy code. But I certainly do not agree with this idea that static typing will extend both mediocre and great programmers. In fact, if any of contemporary statically typed languages (or worse: ad-hoc extensions to dynamically typed languages) make somebody write substantially better software, then I firmly believe that this person either has fundamental CS related problems, or is being rushed/pressured too much to ever produce anything of considerable quality. I sincerely doubt that a statically typed language (or language add- on) will ever fix either of those.

Such programmers will nonetheless still be good enough for a lot of regular programming gigs though. But, for the love of the gods, please keep those people miles away from anything embedded or kernel-level code.

Again, I think you mean nothing but good. You may even know far more on the subject than I can expect, just based on your response. Either way, I certainly don't mean to offend you. Still, whenever I read a response like your's, I can't escape the feeling that it sounds more like a repeated mantra than that in comes from a deep understanding of the actual problem, including its long/complicated history.

<comment><USER31> > Faster development and code simplification, by only doing data validation > where it was really needed (at run time), among them.

This is a trap many programmers fall into. You should be parsing, not validating[0]. If you are ingesting JSON data, for instance, what you need is not a generic JSON parser but a parser that _only accepts JSON representations that map to a particular, static data type_ and throws parse errors where in a dynamic language you might find "validation errors", for example, an unknown data field or a field value of the wrong type.

Getting the types right early doesn't substantially slow you down overall, and yields a result that's much, much _easier_ to get correct. Any such slowdown is a greater "capex" in the form of initial development, that's more than offset by much, much lower "opex" in the form of maintenance.

> In fact, if any of contemporary statically typed languages (or worse: ad-hoc > extensions to dynamically typed languages) make somebody write substantially > better software, then I firmly believe that this person either has > fundamental CS related problems, or is being rushed/pressured too much to > ever produce anything of considerable quality. I sincerely doubt that a > statically typed language (or language add-on) will ever fix either of > those.

This is wrong, and it's wrong for "theory vs. reality" reasons. Take one of the languages in your background: C. What you see may be true of a hypothetical programmer who knows all the arcane rules to C and can avoid tripping one of C's many, many UB landmines the first time, every time. But most programmers in the real world are human beings who may not have had their coffee. And they are going to make mistakes and unwittingly trip UB landmines. And this is as true of great C programmers as it is of beginners. You could build some strong rules around C, such as "allocate memory as little as humanly possible" and "avoid threading unless you can justify needing the performance gains" that will help programmers stay well clear of the traps inherent to C programming. Or you can switch to Rust, and _fearlessly_ write code that allocates memory and even threaded code, because Rust's type system guarantees memory safety and a lack of data races.

[0] [https://lexi-lambda.github.io/blog/2019/11/05/parse-don-t- va...](https://lexi-lambda.github.io/blog/2019/11/05/parse-don-t-validate/)

<comment><USER30> > This is a trap many programmers fall into. You should be parsing, not > validating.

Maybe it was an unfortunate choice of words on my part. Additionally, and I only meant to indicated how it was promoted/advertised, rather than make any statement about weather it was a sound argument. Either way, at the end of the day, a parser is a validator all the same.

Sure, more (domain) specific parsers indeed make better code (duh). That's true for both compile time and run time parsing. But how often, in real life business situation, is there enough time to create a solid architecture and fully fleshed out (domain) specific (run time, or compile time) parsers?

Again, I'm not disputing that statically typed languages may have a potential for creating more structurally healthy code. However, from my experience it still takes a hell of a lot of time and effort (for which there often is no room in real life business situations). Dynamically typed languages often create seriously flawed software, no doubt about that. But I'm convinced that this is more because many programmers just don't do what they actually should be doing in any case (in any language).

Statically types language can alleviate that problem a little, by forcing programmers to think more about what they should already be thinking about in the first place. But it is not a magic bullet. I'm not even going to discuss the downsides from overly specified/specific software code.

> This is wrong, and it's wrong for "theory vs. reality" reasons.

In case you missed it: my main gripe with all of this is that I just can not find any of all these great improvements, that evangelists keep pushing, in actual real world examples (at least not within my personal experience). Yet here you try to convince me that my point it too much theory and telling me a story about how real world programming actually works. Seriously? I mentioned C to indicate from which direction in the industry I come from, nothing more. Well, maybe also to indicate that I've been doing this for some time now.

No need to tell me how programmers work (plenty of experience with that), or making excuses for how it's just human nature for them to fuck up if they aren't held by their hand. I might have bought that kind of bullshit 25 years go. There have been plenty of attempts, purporting to to give programmers better tools and assist them writing better software. Most of them with only good intentions. Nothing new about that, about as old as commercial software itself. However, I've seen a rather depressing trend how all of those hardly ever held up in reality, over time. Whether that is because the knowledge level of programmers constantly degrades, or if it is because such solutions promote laziness, that might be more of a philosophical discussion and hard to establish as fact.

I find it at least a bit ironic though, how I apparently am being schooled on how I "just don't get it right", by what to me sounds and smells a hell of a lot like theoretical evangelical drivel itself. In fact, at this point I can't help but recall an iconic argument about how plants crave Brawndo, because of the electrolytes.

Keep on programming the way you do. If you are a good programmer, it shouldn't matter which language or tools you use. I wish you nothing but the best and good luck. Time will tell if Rust will survive the hype and actually deliver what it has been promising for a while. Maybe it indeed will. I'm not holding my breath though. Especially not since (nontransparent) corporate influence/control on languages and tools in becoming an ever growing factor (with all kind of problems associated with it).

</comment></comment></comment></comment></comment></comment></comment><comment><USER32> It would be interesting to know the practical implications - given how many of these languages are very popular I'm assuming it doesn't really matter?

</comment><comment><USER33> what's the connection between being undecidable and turing complete?

<comment><USER9> If your type system is turing complete, then it's undecidable. This is easily seen through rices theorem [0] which states that all non-trivial (not always true or always false) semantic properties (i.e. about what inputs it maps to what outputs) of turing complete programs are undecidable. In particular what type something is going to be is undecidable.

Intuitively you should probably think of this as a slight extension of the halting problem, you can't always tell whether or not something (your type checking) halts. It's not that much of a leap to say that you can't tell whether it will halt after an even number or odd number of steps if it does halt (this doesn't immediately follow from the halting problem, but it is true). Imagine if you had a type that said "if it takes an even number of steps for some given computation to halt, I'm 'type A', if it takes an odd number I'm 'type B'". That's something a turing complete type system can do, and since you can't tell whether it will take an even or odd number of steps you can't tell whether or not the variable is 'type A' or 'type B'.

If it's undecidable it's not necessarily turing complete, but it's very easy to be accidentally turing complete, so it probably is.

[0] [https://en.wikipedia.org/wiki/Rice%27s_theorem](https://en.wikipedia.org/wiki/Rice%27s_theorem)

</comment></comment><comment><USER34> Plz add dart to your list :)

<comment><USER6> If you have resources for dart I'd be happy to include it :)</comment></comment>


Search is Google's castle, everything else is a moat. - <AUTHOR> http://techcrunch.com/2011/03/25/search-googles-castle-moat/

<comment><USER2> The moat and scorched-earth metaphor also describes Microsoft's development of Internet Explorer. IE was given away to protect the economic castle of desktop development. Incompatibilities delayed and added expense to web development for decades, all to defend Windows and Office sales.

<comment><USER3> That doesn't really go hand in hand with my recollection. If i remember correctly Internet Explorer actually was the far better browser then Netscape at least once IE6 got released. But it is possible that Microsoft's refusal of continuing to develop its browser has had the effect you mention and has hindered the web overall from developing into an alternative to desktop apps.

<comment><USER2> Of course! If you give a crappy browser away for free, nobody will use it. However, if you make it good but you don't support Netscape's server-side integration, you kill their server business and their browser business.

Then after they implode rewriting Netscape, you pull almost everybody off the project and rake in the billions.

Until, inexorably, people work around your cruft and release cross-browser libraries that eliminate the "lock-in effect" of websites that require IE. Now you scramble to put people back on it and start active development again.

I think the point about the moat and scorched earth stands. For a very direct comparison, consider Android. I believe Google are trying to make it superior to iOS, even through they give it away. Their plan is to scorch the earth so that neither Microsoft nor Apple can turn mobile devices into a Google-free browsing device.

<comment><USER4> >Until, inexorably, people work around your cruft and release cross-browser libraries that eliminate the "lock-in effect" of websites that require IE.

And also that they recover from the rewrite and released and marketed Firefox enough to make it real competition to IE.

</comment></comment></comment></comment><comment><USER5> A rewrite of this: [http://abovethecrowd.com/2011/03/24/freight-train-that-is- an...](http://abovethecrowd.com/2011/03/24/freight-train-that-is-android/) (he even used the same picture!)

<comment><USER6> I think "rewrite" is too gentle. this kind of plagiarism would get you kicked out of school or fired from any reputable media company...

</comment></comment><comment><USER7> "Remember, what is the default search engine of Android and Chrome? It's Google."

Actually every time I've installed Chrome it has given me a choice of search engines. Maybe he meant Chrome OS? I don't recall choosing a search engine the first time I booted up my CR-48.

Edit: Here's what it looks like for the doubters <http://imgur.com/dobse>

<comment><USER8> I don't remember Chrome giving a choice. But I guess it's possible that it _is_ one of the configuration options, and I just do what almost everyone does: click next without looking at it. The article's point still stands.

<comment><USER9> If you've been using chrome since a long time you haven't seen it. I think they introduced it right before their marketing push in Europe...

</comment></comment></comment><comment><USER10> This is almost right. Right in one sense.

But in a more expansive sense, I read a great quote from some higher-up at Google a year back that really put things in perspective..

He said, "Look, over 50% of the Internet uses Google for search, conservatively speaking. So if we make the Internet better in a general, altruistic sense, and create 2 new internet users, we just created a Google user."

So it's a more positive gesture than the denial-based moat metaphor or 'scorched earth' language imply. (The moat metaphor made me think of IE vs Netscape).

</comment><comment><USER11> _Advertising_ is Google's castle. Search is also in the moat.

Then again, the quality of Google's moat is often better than other companies' castle.

Also, Google doesn't so much 'ravage industries', it innovates in them. Which can be the same. The industrial revolution 'ravaged industries' too.

</comment><comment><USER12> This made me think of the olden days when countries waged war for natural progression of the country. I guess its a good analogy for how we progress as a life form. Instead of killing people to get what we want, companies wage war to get what they want. Same aggression and reasons, different tactic.

</comment><comment><AUTHOR> When do you think Facebook will enter search?

<comment><USER13> Not until well after their IPO and the bubble bursts on the absurd 40, 50, 75 billion-dollar valuations we're seeing now, IMO. Entering search actually brings on some risk, because if they screw it up, or if it doesn't take, a lot of Facebook's future equity goes up in smoke.

</comment></comment><comment><USER14> On the one hand, Google doesn't need to make any money from these moats. They can all be loss-leaders defending search. (Eventually this will raise antitrust issues but usually only long after the damage is done.)

On the other, perhaps once the 'scorched earth' field _is_ cleared by Google's search-revenue subsidized entries, Google's remaining entries will turn out to be capable of becoming giant profitable businesses on their own.

So there's two ways for Google to win: defending search, or discovering the next bonanza in a field where all scalable competition was decimated by search-subsidies.</comment>


UK Porn websites to be banned from showing some sex acts under proposed law - <AUTHOR> http://www.independent.co.uk/life-style/gadgets-and-tech/news/porn-websites-sites-pages-videos-internet-adult-uk-digital-economy-bill-a7433551.html <comment><USER3> Is there really any rational behind these laws? Somebody going home in the evening, thinking i made the world a better place? Or is it just there to replace the fading copyright violations as jurisdictions ammunition against every citizen. If you create laws that no one can follow because they try to fight physics and basic human nature, not taming it but erasing, than the state has given up on the fairness of law, for he or she who is called before the judge, is up to the officials selecting for punishment.

"All are equal before the law and are entitled without any discrimination to equal protection of the law." Might still hold true, but if law selects - <USER2> that process is prone to go ungoverned, then Arbitrariness is whats left.

Better sit still citizen, coiffeur Damocles has a unsteady hand.

<comment><USER4> > Is there really any rational behind these laws?

Not really. It's just people from religions that reject sexuality trying to impose their beliefs onto others. I think it's disgusting how far this has gotten in the UK.

<comment><USER5> Really? Blaming religion? Most religions I know of celebrate sex as a sort of communion with god or an act of worship.

<comment><USER3> They also celebrate it by digging holes, putting one part of the sex into it and throwing stones at it, till its gone? Sorry, but if you pick any major religious book, pick out the sex,love and relationship-related sentences, and sort them by category's such as "Endorsing", "Controlling" "Limiting" "Condemning", i bet you 10 $ that the pile of Controlling and Limiting would be higher.

</comment></comment></comment></comment><comment><USER6> Not surprised. There is already so much censorships in UK.

[https://en.wikipedia.org/wiki/Internet_censorship_in_the_Uni...](https://en.wikipedia.org/wiki/Internet_censorship_in_the_United_Kingdom)

[https://en.wikipedia.org/wiki/Obscenity#United_Kingdom](https://en.wikipedia.org/wiki/Obscenity#United_Kingdom)

</comment><comment><USER7> "In other news, VPN usage in the UK has gone up 50,000 percent"

<comment><USER8> Keep in mind a VPN is a single hop proxy, and not a multi-hop one like TOR which is a lot more rigorous than a VPN.

But if you must use a VPN:

Surf under generic domains like Reddit.com which frequently cite other domains/pages and frequently quote articles from specific resources. The VPN sees nothing as a result, just an encrypted connection to Reddit. It can't see what subreddits you peruse, and it can't see what citations / quoteables you're reading.

</comment></comment><comment><USER9> Theresa May and her team, even before she was in Number 10, consistently showed themselves to be at the same time extremely authoritarian and wilfully ignorant when it comes to technology. I'm worried about how far she'll be able to go, given how useless the opposition are, between now and 2025.

</comment><comment><USER10> Where's King Canute when you need him?</comment>


China has 'zero chance' of acquiring 'vulnerable' Europe tech firms - <AUTHOR> https://www.cnbc.com/2020/04/16/chinese-takeover-of-europe-tech-firms-face-increased-scrutiny.html <comment><USER2> > _Margrethe Vestager, the European Union's competition commissioner, > suggested that countries should consider taking stakes in companies to fend > off the threat of a Chinese takeover._

So much for "globalization".</comment>


BNY Mellon Had Some Very Special Interns - <AUTHOR> http://www.bloombergview.com/articles/2015-08-18/bny-mellon-had-some-very-special-interns

<comment><USER2> As usual Matt Levine writes great articles.

In a footnote (Matt loves footnotes) he cites one Financial Times article from 2012, regarding when a Goldman Sachs employee said that clients were referred to as "muppets". Apparently GS investigated and found:

       Goldman responded by launching an investigation
       into what was nicknamed internally "the muppet
       hunt". The investigators interviewed dozens of
       staff and sifted through millions of emails,
       finding about 4,000 "muppet" references. But
       they said 99 per cent of those referred to
       last year's movie of the same name.

To which one comment about the FT article said:

       I didn't realise the film was that popular!!
       It must have something of a cult following at GS.

Other comments were a bit more direct:

       Really…How can GS proffer this rubbish? This
       should make the public loathe them even more.
       Good job GS!

Ahhh, good times. Remember when everyone hated GS?

BTW You need a password to read the linked FT article. But when you sign up you get a small number per month for free. You then also get to read FT Alphaville for free (it has market commentary).</comment>


Ask HN: Is our universe constantly expanding or constantly shrinking? - <AUTHOR>

Just read the book Zero, does their final conclusion still hold up? They say our universe is gradually expanding, which will inevitably leave to a freeze of everything? Did anyone else read this? What did you think? <comment><USER2> The latest theories say that the rate of expansion of the universe is accelerating due to the effect of dark energy which overcomes the attractive force of gravity over cosmic distances. There are competing theories that don't involve dark energy.

</comment><comment><USER3> i'm on the side that its expanding. I reason that if big bang was an explosion that created everything, then the blastwave or whatever is still expanding indefinitely

</comment><comment><USER4> Oh, I just had another thought here. I would so very much prefer it if the Hoyle steady state theory were correct, the idea that as galaxies expand, new matter is created in the inter-galactic spaces formed by the expansions, and this new matter makes new galaxies, ad infinitum, so there would not be a big bang (a beginning) or a final state of dissolution into radiation that one finds in the eternal expansion model (an end).Also it is a clean, beautiful theory mathematically. But as Kepler found, when discovering that the planets use ellipses and not circles when orbiting the sun (circles were thought more "perfect" aesthetically at the time), the universe might not much care what we like or prefer or find to be beautiful or aesthetically pleasing. :-) In the case of steady state, it is hard to see how that can still be viable, given the microwave background radiation discovered in the early 60's, and the more recent discoveries of quantum density perturbations in the background, which is consistent with the big bang model.

</comment><comment><USER4> I did not read that book, though I do know prevailing cosmological models say that the universe is expanding continually. If it keeps it up, eventually, no galaxy will be able to see any other galaxy, because the distances between them have increased so much. Later, galaxies all collapse into mega black holes. Still later, these mega black holes all evaporate over a very long epoch (10^60 years or something like that) via the process of Hawking Radiation. Once this happens, there is nothing left in the universe except radiation, and various short-lived "quantum vacuum" particles perhaps. Nothing but a homogeneous soup of particles that are not even atoms. Penrose has recently argued that this state could trigger another big bang, and start another "cycle" but I don't know that that view is very much accepted presently. The general thinking is that this final state of scattered radiation is all the fat lady sings.</comment>


American Giant: The problems with being an overnight success - <AUTHOR> http://www.bbc.co.uk/news/business-21680884

<comment><USER2> I contributed to their problem (sorry guys!).

I ordered a long-sleeve T, and I like it a lot. For the curious, the cloth has an excellent feel to it, and it smells like the cotton it's made from, not some synthetic. It fits pretty much true-to-size -- looser than American Apparel (which is apparently designed for skinny hipster models), but tighter than other shirts in that size.</comment>


Show HN: Beam Is the Future of Playgrounds - <AUTHOR> https://joinbeam.com/ <comment><USER2> I tried their tabletop Sharks! game at a McDonalds a few years ago. It was fun and worked reasonably well although the latency was bad enough that it made the game hard to play a times.

Hopefully/likely the newer versions are more responsive but it's hard to tell from the marketing videos.

I'm also a fan of AR Sandbox which feels a bit more interactive because it involves tactile manipulation rather than just point/click/tap/jumping to trigger events.

It would be neat if a bunch of foam blocks could be tracked to allow for cooperative sorting and building games. E.g. an egg race game(or other balanced object projected on foam block).

[https://arsandbox.ucdavis.edu/](https://arsandbox.ucdavis.edu/) [https://www.youtube.com/watch?v=CE1B7tdGCw0](https://www.youtube.com/watch?v=CE1B7tdGCw0)

</comment><comment><USER3> You should add a comment to the thread giving the backstory of how you came to work on this, and explaining what's different about it. That tends to seed discussion in a good direction.

(I'm a moderator here and normally send this suggestion by email. You should put an email address in your profile in case we can help in some other way.)

</comment><comment><USER4> Interesting I've seen something like this in a shopping centre. Kids love it. Although they are kids and would get bored of it eventually especially if they see it every day. Maybe preteens and teens could get hooked if the games are really good. Could be great for adults too!</comment>


Ask HN: Intellectually-stimulating/interesting websites you recommend? - <AUTHOR> I know this question has been asked before but the results are outdated. What are some websites that pique your interests? <comment><USER2> [http://lesswrong.com/](http://lesswrong.com/) along with its wiki (especially [https://wiki.lesswrong.com/wiki/Sequences](https://wiki.lesswrong.com/wiki/Sequences))

[http://www.economist.com/](http://www.economist.com/)

</comment><comment><USER3> [http://waitbutwhy.com/](http://waitbutwhy.com/)</comment>


After Declaring Silicon Valley Over, Yammer CEO Is Backing A New Startup - <AUTHOR> http://www.sfgate.com/technology/businessinsider/article/After-Declaring-Silicon-Valley-Over-Yammer-CEO-3936734.php

<comment><USER2> Could this be more of a non-story?</comment>