Arwes – Futuristic Sci-Fi / Cyberpunk Graphical User Interface Framework - <AUTHOR> https://arwes.dev <comment><USER2> Glad to see this posted on Hacker News. I used this for our internal tool and the first time I showed it, almost the whole company were in awe. I made a kind of public version here if you're interested: [https://scan- viewer.vercel.app/scans/1](https://scan-viewer.vercel.app/scans/1)

Edit: Guess I should explain a bit more about this tool. Our main product is a handheld scanner that can take an individual's body measurements while they are fully clothed. You take a 360° body scan and get a few point clouds back. This tool is mostly for debugging 3D reconstruction issues.

Edit 2: You should open this in a desktop browser. In mobile view some widgets are not showing.

<comment><USER3> What's the elliptic, flat, angled disc near the kidney in the radar reconstruction?

<comment><USER2> Ha good catch. I think it's due to an incorrect raw radar point there. This is the reason why we need this tool: to quickly find these issues. There is actually an AR version of this where we have a human-size 3D point cloud - much easier to debug [1]

[1]: [https://photos.app.goo.gl/iTyFKrZtVDiBrNJx7](https://photos.app.goo.gl/iTyFKrZtVDiBrNJx7)

</comment></comment></comment><comment><USER4> The feel of this interface is incredible. What's most interesting is that it evokes lots of memories from the games I played more than 20 years ago, and yet it is very distinct and doesn't copy any of them. Feels almost like something very familiar, but you can't quite grasp where you saw it.

This is incredible and I'll be following this project, and probably will do something with this framework, too.

<comment><USER5> This actually shows something interesting: that there is a coherent visual language for interfaces within the sci-fi subgenre of graphic design that just kind of appeared by implicit consensus. Which I guess can be said for _many_ visual design trends - many of us can guess both when and for what purpose a product was designed based on its graphic design.

<comment><USER4> Btw, the Holo interface we saw in Android 4 was very influenced by this type of design. It was rather stylish, even if difficult to use consistently. But of course since then it was replaced by Material Design, starting with Android 5.0

<comment><USER6> God, I miss holo. It was so much nicer on the eyes. "Dark Mode" is... ugly. I'm glad it exists, but it's still uglier, than holo was.

<comment><USER4> Problem with Holo it was hard to follow this concept and create visually distinct apps. They would all be cold white and blue. Material design gives for more variability.

<comment><USER7> Some apps did change the accent color, but it was very non-trivial. Material design comes with tintable controls out of the box.

</comment></comment></comment></comment></comment></comment><comment><USER8> Based on the positive responses here, I think I might be the only one who doesn't fancy decorations, whether it's sci-fi or in any form in user interface design - victorian ornamentation, steampunk brass, vaporware aesthetics, etc - they're all artistic endeavors - I think it's fun to explore these and even use them to achieve a particular objective, but I wonder how much of it influences serious designers whose responsibility is to produce functional, objective, straight forward UI that gets the job done. For example, SpaceX cockpit design and the amount of sci-fi influence with touchscreens vs. say F-15 Cockpit ([https://news.ycombinator.com/item?id=23702560](https://news.ycombinator.com/item?id=23702560)) which I personally consider as the epitome of interface design. Not directly comparing them, but comparing the underlying philosophy and approach towards UI.

It's not to say that aesthetics itself is a problem, IMO when aesthetics emerge automatically from solving a problem (F-15 philosophy) is far more beautiful, appealing and pleasing, than aesthetics that is forced by the designer's personal taste and then trying to solve the UI problems within that framework (biting on SpaceX again).

Amazing work nevertheless in terms of its artistic appeal.

<comment><USER9> It really depends on the context and the use cases. The F-15 cockpit is an extreme example of a very complex interface that needs to be highly performant under intense life-or-death conditions. Most UIs that people design, including this library, are not meant for anything remotely similar to those situations. A lot of times it's mostly for consuming content.

That video of the F-15 actually features a lot of overlay UI elements that are very similar to this project's sci-fi style. Did you lament that, or wonder if that functional uselessness was influencing the designers of the airplane? Or did it make for a better viewing experience than barebones labels with no animations?

I can't speak to the SpaceX cockpit and how well it performs the job it was intended to, do you know of any testimony from people who have used it? I have to believe that they would put function over form for something like that, but that doesn't mean that form has no place either, they are definitely aiming for the lofty goal of achieving both.

<comment><USER10> "Most UIs that people design, including this library, are not meant for anything remotely similar to those situations."

You would think that, but that isn't necessarily the case. I worked for a Naval intelligence contractor back in 2007, and I was surprised at the amount of times there were requests at the top to "make it look cooler". War rooms at the time tended to look exactly like the Hollywood depictions. Not because Hollywood got it right, but because generals saw the movies and said, "I want one that looks like that". Even in the most functional of situations, flashy looks sell hearts.

<comment><USER11> Without getting into specifics, this is absolutely the case.

There was one instance where, when the new ops center opened, getting the tour of it was _the_ thing everyone wanted. The brass thankfully obliged. Over a period of weeks, small groups got to go over and the new center, with it's large blue display edge lighting, and electronically frosting glass. I'll never forget this bemused airman, pressing a button while a circle of us stood around in a half circle, giving a very Simpsons-esq "Oooooooooohh!" as the glass went transparent to opaque, and transparent again.

Was it necessary? Absolutely not. Was it cool? Hell yeah it was. =D

</comment></comment></comment></comment><comment><USER12> Love this stuff. I wonder what it's like for someone too young to remember the constraints that the design references.

Like the cyberpunk fast scrolling effect is a reference to 300baud terminals being dog slow, and the idea that text could zip in that fast implied something fast and powerful. The image loading screens are complex and fast, like a kind of arpeggio of the individual steps sped up. As though to say, "It's doing the thing, fast, powerful, and specific." It's like old xterm boot processes where by the time they finished, each step was confidence that things were right in the world. What I love about the whole retro cyberpunk aesthetic is it is essentially heroic, with anti-hero origins, and the symbology bundles up so much of what I hope the older generations of hackers are able to pass on.

<comment><USER13> That's an interesting point - I know I got a huge nostalgia blast looking at this. I also think it's awesome.

Do you think someone who never played video games with menus like this would feel the same? Or would it look outdated and cliché...

</comment></comment><comment><USER14> This reminds me of an older sequence of space games titled "FreeSpace" that were created by Volition. The interface components are very nice!

I might just use this for my blog...

Edit: An additional framework that may pair well with this is augmented-ui[0]. That received quite a bit of attention a year ago[1].

Putting these two together could make a pretty neat interface! I have another project (metareply.net) that I want to complete for a smaller community, Subreply[2], which might be a good candidate for this as well.

Thanks for sharing this!

[0]: [https://augmented-ui.com/](https://augmented-ui.com/)

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

[2]: [https://subreply.com/](https://subreply.com/)

<comment><USER15> Right! Freespace 2 was great and is still being worked on by a dedicated community. Here's a reddit thread with a review and more info on it: [https://www.reddit.com/r/Games/comments/9h30rn/why_you_shoul...](https://www.reddit.com/r/Games/comments/9h30rn/why_you_should_play_freespace_2_review/)

<comment><USER16> the battlestar galactica mod of Freespace2 was phenomenol, and the first immersive space game I ever played

<comment><USER17> Oh wait is it complete?! I need to check that out.

</comment></comment></comment></comment><comment><USER18> Now this is what they mean when they say "Ideas are nothing, it's all about execution".

I admire that you actually went and built a full fledged framework for this. Most people don't go that far.

<comment><AUTHOR> Just to clarify - I (link submitter) didn't make this. Just found it on the web (/r/cyberpunk, actually.)

</comment></comment><comment><USER19> The author of the project seems to have built his personal website with this framework, and it looks perfect! [https://romelperez.com/projects](https://romelperez.com/projects)

Like everyone else said, it's really one of the very few frameworks I wanted to build something on top of as soon as I saw it. Thanks for sharing!

<comment><USER20> Looks like you can even throw it on some reveal.js slides? Unless he did the slides himself.

[https://romelperez.com/talks/javascript- animations](https://romelperez.com/talks/javascript-animations)

Pretty neat.

</comment></comment><comment><USER21> This reminds me of 2advanced studios way back when. They built crazy futuristic flash GUIs like this.

Here's one from 2001: [https://www.youtube.com/watch?v=UHbQmqmmIFk](https://www.youtube.com/watch?v=UHbQmqmmIFk)

<comment><USER22> This takes me back. This was a big motivation to learn flash and web development as a whole, and spurred a lot of deep interest in programming for me.

<comment><USER23> 2advanced defined the whole generation of Flash productions done by interactive agencies. Every ambitious studio I knew admired 2advanced.

</comment></comment></comment><comment><USER24> Looks beautiful. This is probably the first time I've seen a UI framework for web that made me want to actually do something _ANYTHING_ with it (short of using it for my own site, for idealistic reasons).

Some cyberpunk sci-fi online game... now I have to make one.

<comment><USER25> Yeah, I'm getting serious Uplink vibes here: [https://en.wikipedia.org/wiki/Uplink_(video_game)](https://en.wikipedia.org/wiki/Uplink_\(video_game\))

<comment><USER26> Gameplay video for anyone who wants to see what Uplink looks like: [https://www.youtube.com/watch?v=Owa15O5OArU](https://www.youtube.com/watch?v=Owa15O5OArU)

</comment></comment></comment><comment><USER27> No joke, if your boss is not technical, I bet you could get a raise if you started using this for internal tools.

</comment><comment><USER28> I like that this is also called "futuristic".

This is the future if we projected it out in the 90s. (I think the popularity says something about the average age of HN users).

However, if we had projected the future in the 80s or 70s or 00s, we would see different interfaces.

Speaking of cyberpunk, I recommend the William Gibson short story Gernsback Continuum that explores this "projected future" concept in more detail.

<comment><USER29> >This is the future if we projected it out in the 90s.

I have to break some myths, but Mac OS9 in movies and MacOSX specially since Panther was THE dreamt interface from the 90's.

It was so sucessful that even Fluxbox nerds wrote OSX like themes. Even for FVWM!!!

Metallic themes were a thing in late 90's, among with the bloat and bling bling from E16. But OSX was a mix between art, skeumorphing and UNIX zealotism being built-in replacing the OS9 ahem... scrap.

</comment></comment><comment><USER30> I love how this channels Syndicate Wars. That game probably solidified the cyberpunk aesthetic better than any game before or after it, possibly with the exception of Shadowrun (or the upcoming cp2077).

<comment><USER31> This specifically reminded me of Syndicate Wars user interface. Partly its the sounds that make it, I guess. I applaud the author for an excellent interpretation.

</comment></comment><comment><USER32> I really like the look of this. Kudos to the creator. It's legible, fast, and doesn't make my eyes bleed from the brightness. This is excellence in proper use of contrast.

I'm tempted to use this on all my sites.

Side note: I don't get any audio in Firefox. I had to load the page in Chromium to hear audio.

<comment><USER33> > Side note: I don't get any audio in Firefox. I had to load the page in > Chromium to hear audio.

This sounds like a feature rather than a bug. Website UI should not make sounds.

<comment><USER34> > _This sounds like a feature rather than a bug. Website UI should not make > sounds._

While I usually agree, the sounds that it does make are not intrusive. They're only in response to user events (page loading/loaded, something was clicked), aren't stupid-loud (IMO), are very brief, and don't include any spoken words. Think of hearing button feedback in sci-fi videos.

For what it's worth, I'm also using Firefox 79 and the sounds _do_ work after telling NoScript to enable Media from the site. They're loaded as MP3s.

<comment><USER35> > the sounds that it does make are not intrusive

That's quite arguably false.

> Think of hearing button feedback in sci-fi videos.

Most people are in fact not actually in sci-fi videos, and are often in situations where they would not want their device to start beeping and clicking.

<comment><USER34> > That's quite arguably false.

Arguably indeed. It's an opinion.

> _Most people are in fact not actually in sci-fi videos, and are often in > situations where they would not want their device to start beeping and > clicking._

If my device started beeping and clicking when I don't want to, then I would mute the sounds. Browsers have a mute feature which allows me to mute the browser separately from other apps.

My device even has a physical mute button. If I don't want my device to start beeping and clicking then I would either not browse some random location I found on the internet (because random locations on the internet are well known for starting sounds) or I would use the device's physical mute button.

</comment></comment></comment></comment></comment><comment><USER36> This is so cool. I made a simplified version[0] of the frame component using only plain html,css,js

[0]: [https://github.com/ivanceras/futureostech](https://github.com/ivanceras/futureostech)

</comment><comment><USER37> Just FYI, played with this for a while with a screen reader, and it even seems mostly accessible. If it has issues, they seem to be fixable issues. I feared painting the whole UI with WebGL on canvas, which would kill accessibility completely, but fortunately we have none of that.

Of course, a screen reader doesn't notice the sci-fi style (except the sounds), but the framework seems usable.

<comment><USER38> Thanks for raising that. It's all too easy to get bound up in the technical aspects of building a solution without thinking of the requirements of the people that will be using it.

</comment></comment><comment><USER39> I am legit trying to get permission to use this to build internal tools.

<comment><USER17> Honestly? Given how HORRIBLE most internal tools look like, something like this would be a massive improvement.

</comment></comment><comment><USER40> It might look fun for a couple of minutes, but it's extremely annoying for the real world use.

<comment><USER41> How so? On mobile swiping between pages felt very seamless and a well executed transition. That by itself is something most appy sites barely get right.

Still checking it out, but at first glance it's obvious this person gets the details right.

<comment><USER40> It's slow. That alone is extremely annoying.

The high-pitched noise every time you click on a link will get old very fast.

</comment></comment></comment><comment><USER42> This seems to be abandoned in the middle of the alpha cycle of the very first release - [https://github.com/arwes/arwes](https://github.com/arwes/arwes)

<comment><USER43> > Since last year I have been delaying the development of the project due to > personal reasons. I plan to resume it soon.

Posted 24 days ago by the author:

[https://github.com/arwes/arwes/issues/46](https://github.com/arwes/arwes/issues/46)

<comment> 52-6F-62 > _" I like to write the technical docs...so I'd be happy to help with that > too"_

That guy just met an angel.

</comment></comment></comment><comment><USER44> I basically want this but in pure css. Highlight aesthetically pleasing!

</comment><comment> crooked-v This is nice-looking, but wow, those loading times are painful. There's also something weird going on in the transitions on the 'Play' page - seems like it's re-routing between selections.

</comment><comment><USER45> I love the nostalgic feel to it. Can't quite put my finger on it, but just reminds of me late 90's gaming. Looking forward to play around with it!

</comment><comment><USER46> Kind of reminds me of the UI for the Star Citizen website.

</comment><comment><USER47> This is super fun! I wouldn't want to see it on a serious website, but for games and such it's a really nice toolkit.

Some minor suggestions:

\- The table isn't animated. Bringing in the grid lines the same way that HRs appear to be (like in the project example) would make sense. Possibly cascading the cells like the text renderer.

\- The sounds (which are excellent and super nostalgic btw) would be better with some variation. For example the author's portfolio site plays the same chirp every time you scroll a new project in, and sounds repetitive. Games will randomly pick from a set of similar sounds, which are often just the same sound at different pitches or different envelopes. That'd help here.

</comment><comment><USER48> This makes me wish for a nextgen CSS Zen garden with modern layout, widgets, animation etc.

[http://csszengarden.com/](http://csszengarden.com/)

<comment><USER49> Ahh, I always enjoyed the Starwars and movie theatre designs. I can't seem to find them on the site right now though..

Edit: Here is the movie theatre! [0]

[0] [http://www.csszengarden.com/202/](http://www.csszengarden.com/202/)

</comment></comment><comment><USER50> That's awesome. Of course not for standard web interface, I would hate my bank to have something like this, but that would be perfect to create a text adventure or other immersive experiences!

<comment><USER51> You just reminded me of Citibank's virtual number UI. It had sound effects and would play an animation that would show you a temporary credit card number using a slot-machine-like animation. It was hilarious but I would always dread using it whenever I needed it.

<comment><USER50> Do you have a screenshot or video? That sounds nightmarish!

</comment></comment></comment><comment><USER52> For the love of God will someone think of the people that don't have fiber internet ?

The carelessness of most web devs is infuriating. Don't you care that a not insignificant portion of potential users / customers will just close your website after waiting a few seconds as nothing happens.

To the author that thinks he's making the world a better place with lines of code (written on his GitHub), then walk the walk and actually make it a better place for everybody.

Thank you.

The irony that tomorrow a technician is coming to install fiber internet to my home is not lost on me.

<comment><USER53> I'm confused - the code for the landing page is about 690k, with a 760k background image, and the code for the "Play" section is another 333k. Are those the sizes you are thinking of when you mention fiber internet? I've never had fiber internet and the site loaded very well for me. Is there something I missed?

<comment><USER54> That's 20x smaller than a modern news website :/

</comment></comment></comment><comment><USER34> Great. Now make it work without javascript and you'll have me sold.

<comment><USER55> Sure, hire him and get it done

</comment></comment><comment><USER56> Looks awesome(!) .. noted the select box doesn't style correctly in Firefox, but otherwise super slick. Definitely think it will be an interesting challenge to use this creatively / in a way that doesn't end up looking like every other use of it .. tho this comes from someone who actively notes thinly veiled css framework use and deducts 50% from an ongoing internalised competency / legitimacy monologue (for crimes towards homogeneity).

</comment><comment><USER29> This reminds me of sucky CD-ROM interfaces for software/knowledge base given for free with magazines.

Cool at first, but annoyingly slow and distracting in the next interactions.

</comment><comment><USER57> This really yanks at the human-to-computer latency. These transitions are incredibly long. Though the execution is delightful.

It's better than Deus Ex 2.

</comment><comment><USER58> Thanks for sharing. This might be a good option for building a UI for a diy home automation project I'm currently tinkering with using a raspberry pi and 7 inch lcd touch display (official raspberry pi lcd). So far I've looked at Kivy and also JavaFX for the UI. But would prefer it being a web frontend. So might have look into this.

</comment><comment><USER13> Absolutely fantastic. As a previous commented mentioned, it would be awesome to use this to build internal tools & dashboards.

I actually think it would go down well with management as it would appear 'futuristic' to those that are not tech savvy.

The fact it comes with sounds included is the cherry on the cake!

</comment><comment><USER59> I may be bad at the internet, but how do people get *.dev domains to load in their browser? Those always break in Firefox/Chrome for me. I was under the impression Google had bought the TLD. I've mostly been able to ignore it, but now I'd like to see this but can't.

<comment><USER60> You probably have an entry for *.dev; use scutil --dns Details at: [https://superuser.com/questions/1413402/i-cant-visit- website...](https://superuser.com/questions/1413402/i-cant-visit-websites- that-have-dev-domain)

<comment><USER59> Ah, you got it. Cheers!

</comment></comment></comment><comment><USER61> Posts like this make me feel envy because it's not available in <<favorite-UI- framework-here>>. People smarter than me seriously need to separate design with framework and make combining them more like changing clothes.

<comment><USER62> I started just using bootstrap css in the index.html and class names in react. Much less headache (at least in POC stage)

</comment></comment><comment><USER63> This is pretty sweet. I would of have thought something like this needed to be built using canvas or WebGL but it looks like it's all JS and CSS. Will be using this for a side project!

</comment><comment><USER64> Reminded me of the UI for the questionnaire on Spaceship Earth at Walt Disney World

[https://youtu.be/qFsd4xJKLEQ?t=702](https://youtu.be/qFsd4xJKLEQ?t=702)

Very cool!

<comment><USER65> It's very similar to the UI from the game Frozen Synapse.

</comment></comment><comment><USER66> This feels like something that I used before or it was influenced by something that I know, but for the life of me I can't point the source/reference.

Maybe the familiarity is what makes this so good.

Amazing.

</comment><comment><USER3> This is neat, although I hate how contemporary UI libraries or pages often miss basic features I had in my old favorites, such as being able to adjust splitters.

</comment><comment><USER67> I used to play this online hacking game back in high school, I think it's called "Mother"? Very similar interface. Brought good memories :)

</comment><comment><USER68> I love this. Not only does it look cool, it is actually good UX. I hope more apps would make more use of sounds to give more detailed notifications.

</comment><comment><USER69> Wow! I really want to use this! Like some other commenters have said, I finally feel inspired to work on some of my website projects!

</comment><comment><USER70> Now we're talking! Love the sound effects.

</comment><comment><USER71> I just wonder who's idea this was, its brilliant, and if you make it a browser, I will pay money! Take my money please.

</comment><comment><USER6> Absolutely love the design!... but... it's not a progressive option, which make it a big, bad nope for me.

</comment><comment><USER72> Reminds me of Ingress. Very well done.

</comment><comment><USER73> Why does the future now have a pale blue glow? We're past the pale blue glow of the CRT era.

<comment><USER74> This is influenced by the cyberpunk imagery from the 90s so it makes sense. It says "future" but the cyberpunk aesthetic is more of a Retrofuture aesthetic now.

<comment><USER73> Ah, what TVTropes calls "Zeerust".

In the mainstream, of course, we have the square corners / round corners cycle, and the grey/black/putty/chrome color cycle for appliances.

</comment></comment></comment><comment><USER75> This is blade runner. I can finally have a blade runner interface of my SF dreams. Thank you

</comment><comment><USER76> Very reminiscent of Neocron, my favourite game of all time. Anyone in HN population a fan?

</comment><comment><USER77> Shame this is light on inputs - would be great if it included text boxes, checkboxes etc.

</comment><comment><USER78> It's nice enough...but when you say GUI Framework I think of something like Qt.

</comment><comment><USER79> This looks very much like INGRESS, and it seems no due credit is assigned.

</comment><comment><USER80> To me the cyberpunk aesthetic has been and always will be geocities

</comment><comment><USER81> Why does it history jack? That makes no sense for a style browser.

</comment><comment><USER82> This looks great.

The use of React components gives a post-apocalyptic feel to it.

</comment><comment><USER83> genuinely curious for people who want to use it for their own websites: this seems like a unique UI. Why/How would you use the same thing for your own project?

</comment><comment><USER84> perfect for creating DOD dashboards to impress upper brass.

Add a sweeping crosshair reticle animation, tOp seCReT labels and a rotating bald eagle point cloud.

(I wish this comment was satire...)

<comment><USER17> How is the PLTR IPO going?

</comment></comment><comment><USER85> I wanna make my eleventy blog look like this. It's so cool

</comment><comment><USER86> I sense Sid Meier's Alpha Centauri vibes

</comment><comment><USER87> I don't want to love this... But I do.

</comment><comment> m-p-3 It feels quite smooth, that is impressive.

</comment><comment><USER88> This is great! Thanks for sharing it!

</comment><comment><USER89> Haha, very entertainingly done!

</comment><comment><USER90> Love this, thanks for sharing!!

</comment><comment><USER91> Man this gives me some feels

</comment><comment><USER92> I love this! That is all.

</comment><comment><USER93> This is just so cool!

</comment><comment><USER94> Amazing. Thank you.

</comment><comment><USER95> too bad it's abandonware

</comment><comment><USER96> Bravo

</comment><comment><USER97> I love it

</comment><comment><USER98> 2advanced making a come back!

</comment><comment><USER99> This is great if you're building a web page as marketing for some sci-fi game or movie.

Don't use this for a real application. Real as in used for making _real_ money.

<comment><USER17> Oh yeah. Let's ensure internal tools scream <HTML><TITLE>INTERNAL TOOL</TITLE></HTML></comment></comment>


Rental Glut Sends Chill Through the Hottest U.S. Housing Markets - <AUTHOR> https://www.bloomberg.com/news/articles/2018-09-07/rental-glut-sends-chill-through-the-hottest-u-s-housing-markets <comment><USER2> If you look up at all of these new luxury apartment skyscrapers they put up in downtown Seattle, they're mostly empty. They're lowering rents, offering free rent for a few months, Amazon gift cards, Amazon Echos, etc. They're noticeably having a hard time filling luxury apartments. If you want luxury and peace & quiet, one would head over to Bellevue and not Seattle. More are going up right now too.

I doubt many people want to rent a 2br downtown for $5000/mo that probably isn't going to get proper maintenance because the corporate landlord companies around here that own these truly do not give a s#%t except for money and don't care if you move out after a year so they can raise rent on the new tenant, tons of rules & regulations that make it feel like it's not really your place to live, extraordinarily expensive parking, and living among thousands of homeless people destroying the streets and doing hard drugs right outside their door. They even built one or two new skyscrapers that are right near Seattle's infamous '3rd & Pine' hellhole.

Housing that isn't luxury is unprofitable, so it's not built in or around Seattle unless federal HUD steps in for tax breaks/rent control. There is no interest in King County to build housing for lower income/lower middle class.</comment>


Ask HN: Alternative to Docker Hub - <AUTHOR> After the recent hack at Docker, what are the alternative beside hosting yourself? <comment><USER2> Azure Docker Registry from $5/mo. [https://azure.microsoft.com/en- au/pricing/details/container-...](https://azure.microsoft.com/en- au/pricing/details/container-registry/)

<comment><AUTHOR> Thanks - ironically to say for someone who wrote M$ for a long time - I trust Microsoft more than Docker.

<comment><USER2> Now THAT is a backhanded compliment!

</comment></comment></comment><comment><USER3> You can use Google Cloud Container Registry and it is basically free, you only pay for the raw Google Cloud Storage that you use. No fee for using it and limit on repos you can have.

[https://cloud.google.com/container- registry/pricing](https://cloud.google.com/container-registry/pricing)

</comment><comment><USER4> AWS ECR. [https://aws.amazon.com/ecr/pricing/](https://aws.amazon.com/ecr/pricing/)

</comment><comment><USER5> We stick to DockerHub because it's extremely low-cost and relatively reliable. I think they will learn from their mistakes tbh.</comment>


Don't name your variables after types:you wouldn't name your pets "dog" or "cat" - <AUTHOR> https://dave.cheney.net/2019/01/29/you-shouldnt-name-your-variables-after-their-types-for-the-same-reason-you-wouldnt-name-your-pets-dog-or-cat <comment><USER2> I highly disagree with this advice. I understand the intent of the advice, I just think the proposed rule (in the body of the post) is a bad implementation of the intent because it is overly general.

Name your variable in a way that makes as clear as possible what the variable is used for.

He uses the example of "userMap". I think its mistake is not saying what the mapping is for. Names to users? Phone numbers to users? Emails to users? Its mistake is not calling it a map, which tells the reader that a variable behaves as a mapping. (And if it's not actually a map, then don't call it a map.)

<comment><USER3> > Name your variable in a way that makes as clear as possible what the > variable is used for.

This is my consideration as well. It's like "documentation for free" or "commenting without comments".

When I get hit by a bus tomorrow, you will be able to look at my variables and have an easy, viable clue about what is going on. Reading my mind will be that much easier when figuring my code.

</comment></comment><comment><USER4> My first girlfriend named our cat named Kitty; my first spouse named our truck Trucky and wouldn't let me name our snake Fluffy. Sometimes my variable names reference types, but typically in dynamically typed languages. Didn't read past the title because it's wrong about me and wrong about my code

</comment><comment><USER5> I disagree. I don't want to have to hunt around for the definition of users to know how to use it. Yes the compiler will throw an error, but that doesn't help me when I'm typing code.

</comment><comment><USER6> "Users": sounds like an array to me

"UsersMap": doesn't add much value, what are you mapping?

"UsersById": now this is my style

<comment><USER7> Agreed. I think the article is wrong to imply that the type adds no value. Even if you have typechecking, the names of variables help you understand code. Also, why should we compare variables to pets versus the many other things in our life that we do refer to by their type? I don't have proper names for my filing cabinet or office chair.

</comment></comment><comment><USER8> Eh, my friend's cat name is exactly that -- cat.

My cat has a name, but I just call him "cat" most of the time.

The point being - if the name is not ambiguous, it's fine.

</comment><comment><USER9> "If there is more that one *Config in scope at any one time, calling them config1 and config2 is less descriptive than calling them original and updated ."

The correct naming is of course "originalConfig" and "updatedConfig".

<comment><USER10> I think your proposals are still missing some sort of indication or description on what type of configurations those variables might hold. After all, we don't want to have any unnecessary confusion, do we?

Yeah, just 'original' and 'updated' are probably a better choice.

</comment></comment><comment><USER11> I completely agree--having inherited a few applications worth of .NET code in which the last (younger, right out of college) developer named all the variables for things from Norse Mythologies.

I also inherited a bunch of circa-2005 ColdFusion with aptly named variables in CamelCase which are much easier to understand.

varUsersTableID > pointer*Freya any day of the week.

<comment><USER12> > developer named all the variables for things from Norse Mythologies.

this is hilarious.

</comment></comment><comment><USER13> I actually had a teacher whose cat was just "cat".

"He's the only one. He knows I'm talking to him."

</comment><comment><USER14> Horrible advice unless you use an IDE which keeps track of variable types for you.

</comment><comment><USER15> > _Don 't name your variables after types: you wouldn't name your pets "dog" > or "cat"_

I would if I could not tell just by looking at them what species they are (and thus what I can do with them, what to feed them, etc) among 200 other animals in my house.

</comment><comment><USER16> I wouldn't name my variables "Fred" or "Noodles" either.

</comment><comment><USER17> Were my domestic pets actually amorphous blobs of text, damned straight I'd prefix or suffix their names with "dog" or "cat" just so I could keep them straight. "Honey, where's the header file for the blue one? Can't remember if it gets dog food or cat food."

To torture the metaphor a bit more, of course I'd eventually remember which one is which because they live with me. A better metaphor is the feral cat that shows up on my doorstep once a week looking for a handout. I've slept since then, what are you again?

</comment><comment><USER18> Firstly, I have known several people to name their animals some variation of their type, but barring that.

I see it as a courtesy to myself than those that come after me to provide relevant context to a variable name. If the type in the scope of the variable is meaningful to its use then I will include it.

Good or bad code tells me what it does, rarely does it tell me what its supposed to do.

</comment><comment><USER19> Clearly the writer hasn't seen Tom and Jerry.

</comment><comment><USER20> Odd. I could swear I just saw a movie with a boy and girl (human children) named, respectively, Boy and Girl.

</comment><comment><USER21> Hungarian notation exists/existed for a reason: m_nWheels is still quite useful in C++ program

</comment><comment><USER22> For statically typed languages yes, but for dynamically typed languages I would say not in all scenarios.

</comment><comment><USER23> I had two mice named Mouse, and several hamsters called Hamsted, plus a guinea pig called Guinea Pig.

</comment><comment><USER24> I once had a cat named "dog".

<comment><USER25> Were I to get a cat (can't, my wife is afraid of them) I very well might name it "dog" or "doggy".

<comment><USER26> "Reward for doggy" with a picture of your cat would be a great missing pet flyer

</comment></comment></comment><comment><USER27> My Shiba Inu would beg to differ.

犬 = Inu = Dog

</comment><comment><USER28> myCat1 myDog2</comment>


Narcissism: Gen Y's Most Perilous Trait? - <AUTHOR> http://blogs.hbr.org/hbr/mcafee/2010/09/a-few-years-back-i.html

<comment><USER2> As a narcissistic Gen-Yer (jk...but seriously) I mostly just want to point out that we adapted to a system setup by Gen-Xers, who are largely in charge at this point, and still find themselves complaining. We should be responsible for our own actions, but how are we supposed to know better? We learn by example. Your generations leaders are the same: we live in a system that greatly rewards sociopathic (or narcissistic if you want) behavior, and it's absolutely not right for us to carry it on, but we CERTAINLY didn't make it like this. If Gen-Xers stopped rewarding Gen-Yers who acted like this while they were still had the power to do so they could create societal change. Instead their leadership has made America the extraordinarily successful sociopath whom everyone hates on the world stage, much like the Big 5 consulting companies continue to make these people rich.

Also, it started in 1980 with Reagan. Just throwing that out there.

<comment><USER3> I watched the movie "Babies" recently. It follows a kid from birth to about 18 months in each of SF, Tokyo, Mongolia, and Namibia.

The biggest surprise me was how self-sufficient the Mongolian and Namibian kids were. They'd play with other kids or just do their own thing.

By contrast, the SF and Tokoy kids were _always_ with a parent. One scene in particular struck me - the SF kid was peeling a banana. Instead of tossing it, she held the peel like a piece of refuse until her mom dutifully took it. Perhaps the kid was a neat freak, but compared to the Mongolian and Namibian kids, it seemed like her parent put her at the center of her world and catered to her every whim. When you've got a caretaker entertaining you, taking you places, cleaning you, feeding you, and changing their lives significantly to suit you, how do you not become entitled?

<comment><USER4> Or, as anyone with kids would tell you, it's a million times more likely that the baby used to throw the peels on the ground, until her parents taught her to give those to them instead of throwing them.

</comment></comment></comment><comment><USER5> I've seen this increasing trend of narcissism with each generation in professional settings. Usually that narcissism comes with a healthy sense of entitlement, and it is a very disturbing trend.

I've seen countless Gen Yers who work in consulting firms who have no sense to put themselves in the customer's shoes.

They think it's OK for them to be taking personal calls and browsing Facebook in front of a client who is paying their firm $200/hr ("who cares what they think, as long as I'm getting my work done" is the most popular response). When they are customers, however, they have no problem berating a Starbuck's barista for taking 30 seconds too long to make their $3 latte.

Seems like every conversation I have with my peers from GenX inevitably degrades into a rant about how annoying it is to manage this new generation of workers. Maybe we're just turning into cranky old geeks, I don't know.

<comment><USER6> Consulting clients don't give a shit about your time, they care about what you get done. Having your bum on a seat isn't worth $1 an hour, let alone $200. What is worth something is the work you deliver. That work is only loosely related to the time you spend "looking like you're working". Personally, I find that regular breaks help me focus better and be more productive, and my extensive net activities help me get the help I need when I need it, which also makes me more productive.

If you want to measure bum-on-seat-time instead, hire minimum wage workers.

<comment><USER5> If all gigs were fixed price or piece-work projects, I'd buy into your argument. In the real world, you've got to deal with timelines and time+materials budgets. Do you really expect to get repeat business if your customer perceives that they're being billed for your time on Facebook?

All I'm hearing from your comment is "You're lucky that I'm working for you. You need to work around MY work habits." The problem with that is that only 20% of the people who say that are rock stars. The other 80% only think they are.

</comment></comment></comment><comment><USER7> > A crude and uneven ability to think from the perspective of another is a > pretty good working definition of narcissism.

Sounds like a pretty good definition. Of course, the prejudice of the article's title is a loaded question* ; and the author getting his feelings off his chest instead of trying to understand Gen Y's perspective is ironic. But the definition is good, and it's something everyone could benefit from improving at. It certainly made me think.

Maybe today's incredible fees for higher ed leads students to expect some pastoral attention?

* I thought that that was a _dorothy dixer_ ; apparently not: <http://en.wikipedia.org/wiki/Dorothy_Dixer>

</comment><comment><USER8> The last psychiatrist addressed Prof. Jean Twenge's points very well. Theres nothing to worry about. Read for your self, [http://thelastpsychiatrist.com/2010/08/narcissism_run_rampan...](http://thelastpsychiatrist.com/2010/08/narcissism_run_rampant.html).

</comment><comment><USER9> I do believe that Narcissism is worse today, but I have a hard time believing that the Y'ers are any more narcissistic than the X'ers and the Boomers. If anything, society as a whole has shifted.

I have a somewhat different perspective, perhaps, because I see a lot of this is the various churches, where what is said in the pulpit is more and more about the preacher than about the message. Thing is - almost all of them are X'ers and Boomers.

<comment><USER10> I agree, young people of every generation tend to be more narcissistic than the old-fogies and genY is probably not anymore so that the last. The difference is today's kids have more tools and are savvier about managing their public image. I think this is due to technology & shift of media values. Thus, the subset of young people who are narcissist are able to amplify their presence. This create more opportunity for people like the OP to justify their own confirmation bias.

</comment></comment><comment><USER11> Stereotypes: Say more about the speaker than the subject?

<comment><USER12> Journalism isn't dead: they can just write ad nauseum about why kids today are narcissistic, marrying later, and staying at home longer.

Someone should apply to YC with an "old grump journalism" startup that just re-publishes books, articles, and studies like this every 5-10 years.

</comment></comment><comment><USER13> Maybe the reason Gen Y appears to be nakedly narcissistic is because their teachers (even MBA professors!) will let them ramble on about themselves, "at length", apparently without so much as a simple verbal stompdown.

This is how the conversation should go:

student: "I'm an MBA student. I like to play tennis in my free time..."

professor: "I don't give a fuck about tennis. Lets get down to business. Why are you here?"

<comment><USER14> I've just stolen this script for my new movie, with Samuel L. Jackson as college professor. :-)

</comment></comment><comment><USER15> Wish writers wouldn't group people by those arbitrary generation labels.

<comment><USER16> Calling them "kids these days" would be tipping his hand a little too much.

</comment></comment><comment><USER17> _A crude and uneven ability to think from the perspective of another is a pretty good working definition of narcissism._

Wow, way to take a very specific operational definition of narcissism, as measured by a psychometric instrument, and conflate it with something totally different.

</comment><comment><USER18> I wonder what <http://thelastpsychiatrist.com/> would have to say about this article.

<comment><AUTHOR> Someone already linked to one. Comment: <http://news.ycombinator.com/item?id=1690906>

Article: [http://thelastpsychiatrist.com/2010/08/narcissism_run_rampan...](http://thelastpsychiatrist.com/2010/08/narcissism_run_rampant.html)</comment></comment>


Ghost Taxis of Japan (2016) - <AUTHOR> https://hyakumonogatari.com/2016/02/18/ghost-taxis-of-japan/ <comment><USER2> Old joke: A hitchhiker, looking for a ride late at night, gets into a car that is traveling very slowly. Once in, he realizes the car has no driver! Soon, the car going very slowly up a hill, reaches a graveyard.

At this point, the hitchhiker jumps out of the car and flees in terror. He looks back and sees someone getting into the car. He yells back "Don't get in!! That car is haunted!". The person getting in replies, "It can't be, I've been pushing it uphill for the last hour".

</comment><comment><USER3> In a not too distant future, when taxis have been replaced by driverless cars these ghosts will cause a real problem. I can imagine being tasked with figuring out why we sometimes lose fares.

"Yep. Another passenger faded into nothing without paying. Resolve as 'ghost passenger.'"

<comment> yoz-y How do you not pay for an Uber right now? Your card has to be valid to be able to get a ride in the first place.

<comment><USER4> Dont have enough balance. I have a 40e uber bill to pay on my revolut but not enough balance. They keep trying to charge.

<comment><USER5> Got to have a look into revolut, my bank will charge £40 for _not_ paying a charge and as high as 300% interest if they allow the charge and it puts me past my overdraft.

</comment></comment></comment></comment><comment><USER6> It's 7th (ghost) month here in Singapore. Same thing happens here. Solution? Organize concerts (getai) for them.

[https://www.todayonline.com/8days/seeanddo/thingstodo/hungry...](https://www.todayonline.com/8days/seeanddo/thingstodo/hungry- ghost-festival-superstitions-getai-performers-follow)

</comment><comment><USER7> Probably a bit off topic, but here is voice actress Tomoko Kaneda in a "ghost taxi" skit on the Japanese TV show Monitoring[0].

[0][https://youtu.be/IdFuMsRrzj8](https://youtu.be/IdFuMsRrzj8)

(and yes just in case anyone's wondering, that reaction is completely staged...)

</comment><comment><USER8> Anyone familiar with urban legends will recognize these themes as almost identical to stories passed down through the generations in the USA for roughly 80 years. Pretty cool to learn they aren't unique to this area.

<comment><USER9> There is also a version of the vanishing hitchhiker in the bible, Acts 8:26-39.</comment></comment>


Why do so many people hate US airports? - <AUTHOR> http://www.bbc.com/news/magazine-34704775 <comment><USER2> Not only do US airports make me take my shoes off, many of them now have the "naked picture machines" instead of regular metal detectors. I was presented with those twice recently. The first time I went through it, then afterward the attendant frisked me anyway, including an incredibly awkward "search" of my hair. If they need to X-ray my shoes and search my hair by hand, what use is the naked picture machine?

So the second time I opted out. I was lucky enough to get a gentleman who was quite amicable and professional. And I served as a spectacle for the other passengers--a visible warning of what awaited them if they decided not to let the TSA see inside their clothes.

On another flight, I visited the Delta business class lounge. This was the first and only time I encountered a business class lounge with no actual food inside. British has a freaking restaurant in some of theirs. Delta had potato chips and similar stuff that nobody should eat, much less people about to sit for a dozen hours. So I went out, bought some food, and brought it back. The counter staff abruptly informed me that outside food is not allowed. Only pure junk food may be consumed in the Delta lounge!

</comment><comment><USER3> Once I arrived late at Boston Logan airport, my colleague forgot to fill out the back of the then used green "I'm a terrorist nor a Nazi between 39-45" form (the ESTA form). The guy at the desk than screamed at the top of his lungs: "The next one to forget to fill out the back of his form I'll send them back to their home country!!!"

What a warm welcome to the US :). The rest of the Americans were warm, welcoming and very helpful whenever I whipped a map out though :).

<comment><USER4> I always think that the immigration guys at airports get selected for being the most obnoxious a...holes they can find. I have seen a lot of instances of really bad behavior like berating tourists that don't speak English well for not filling out the forms perfectly right.

I remember I wanted to visit a friend who was supposed to pick me up at SFO airport. I didn't know his address so I didn't fill the destination address field. The immigration guy just sent me back in line without listening to any explanation. Luckily one of the cleaners told me to fill in "Hilton, San Francisco"and I finally got through. I can't even imagine how somebody who has traveled less and speaks English not as well could handle the situation.

It really gives the US a bad image.

</comment></comment><comment><USER5> No sterile transit [1]. That's it for me. That's why I will pay extra to get a flight that does not require changing within the US.

Everywhere else [2], if I am on my way from country A to country C and will be changing aircraft in country B, I follow the sign for "International Transfers" and effectively just walk from the gate at which I got off one aircraft to the gate at which I will get on another (an airport in Europe somewhere - can't recall which one - even managed to provide me with sterile transport to another terminal to do this; half the train was isolated by locked doors from the other half, and my side of the platform had different entrances and exits that were already within the security-checked section).

No security checks necessary because I went through them in airport A, no immigration because I'm not entering country B. To force me to go through immigration and then turn around and come back through the entire security theatre again is such a massive waste of everyone's time and resources. So painfully frustrating.

[1] I hear that a handful of US airports can actually manage this, but generally not. I recall having to go through immigration at JFK many years ago purely to be able to walk across the concourse and go back through the system again, just to change plane. What a massive waste of everyone's time and money.

[2] Not quite everywhere else. Of all airports, I had to go back around through some security in _Dubai_ just yesterday. Which is utterly ridiculous, as Dubai airport is a shiny modern airport that is in many other ways very good.

</comment><comment><USER6> Honestly, I've traveled quiet a lot the last year in Japan, China, Switzerland, Germany, Canada, USA, Sweden, London... The american airports are not always pleasant (this is especially due to over arrogant security personnel). But they are at least efficient. My worst experience in term of waiting lines (mainly at the boarder) was Montreal, Tokyo and Beijing...

</comment><comment><USER7> I really don't get the hate for the Dulles buggies. I don't find that it takes any longer for me to go between terminals at Dulles versus other airports. I think I've had to wait more than 5 minutes for one to leave once in over 100 flights in/out of Dulles.

</comment><comment><USER8> It is really a shame that American airports usually have no connection to public transport.

<comment><USER9> Where have you experienced this? Every major city I've flown to has a terminal for public transport inside the airport

<comment><USER10> San Diego, California. No connection other than cabs, limos or buses. Sure would be nice if the trolley went there. The cab companies would scream bloody murder, but they're under assault anyway.

</comment></comment></comment><comment><USER11> Airports are a good indicator of the health of the country's infrastructure. If the airports are bad, it's very likely that the country's roads and bridges are bad too.

</comment><comment><USER10> High priced food and Internet service in the terminals due to the captive audience effect. I suspect if business travel expenses were made non- deductible, this would change very quickly.

</comment><comment><USER12> It is unfair to compare the US to smaller countries that may have only 1 or 2 international airports (e.g. Singapore or Hong Kong). They can pour all of their resources into fewer airports while the US has at least 400 hundred international airports, with at least 100 of those being major airports like JFK or LAX.

<comment><USER13> I suppose it depends on your definition of 'major', but if you can name more than 20 I'd be surprised.

Also, the thing that makes US airports unpleasant is not necessarily the same as the irritant in other places. Travelling through the US gives us the indignity of the TSA's security theatre. But take a trip through a British airport and you really see capitalism tooth-and-nail. I think this the result of the sell-off of the airports to a dutch corporation several years ago, and the resulting dept-repayment load.

The only airport I've been in, that is actually a pleasant place to hang out for a couple of hours is CDG.

<comment><USER12> _I suppose it depends on your definition of 'major', but if you can name more than 20 I'd be surprised._

At least half of the states have at least 1 major international airport, with some having 2 or more. For example, Hawaii has Honolulu, Florida has Orlando and Miami. Nevada has McCarran, etc.

My point us that the US has lots of international entrypoints, so each airport has to be less grand than say a Hong Kong or Singapore, where that is the only airport where you can enter. For them that single airport has to be a flagship, so they put hotels and butterfly gardens, etc. Phoenix Sky Harbor will never get anything like that, so it can never compete.

<comment><USER5> Airports don't have to compete on butterfly gardens. They can compete on basic competence and being able to efficiently and quickly allow people to get through it, and not being a total misery to have to wait in for a few hours when transiting. Singapore beats the crap out of US airports on that _and also_ has a nice butterfly garden to look at. You could put a nice butterfly garden in JFK and JFK would still be a miserable, frustrating experience; nobody would even look at the butterfly garden because they'd burn all their time in just trying to get through the airport.</comment></comment></comment></comment>


Books Programmers Don't Really Read - <AUTHOR> http://www.billthelizard.com/2008/12/books-programmers-dont-really-read.html <comment><USER2> > _The Dragon Book covers everything you need to know to write a compiler._

No it doesn't because it only covers techniques you can use in implementing and optimizing old-school static languages.

But today a language is more than just the compiler, with modern VMs coming into play, and runtime optimizations aren't covered ... for instance if you want to implement a tracing JIT compiler, your only hope is to read the source-code of some available VM. Or if you want a precise garbage collector ... well, good luck with that.

That's one reason the implementations of dynamic languages are so shitty ... the effective techniques for doing it are yet to be explored / documented.

So if you want a book on implementing compilers, I recommend this one ... [http://pragprog.com/titles/tpdsl/language-implementation- pat...](http://pragprog.com/titles/tpdsl/language-implementation-patterns)

<comment><USER3> My problem with the Dragon Book is more fundamental: having once made a real effort to read it, almost cover to cover, I came away with a few hours less of my life remaining and some ideas about lexers and parsers and the like, but I still had _absolutely no idea_ how to sit down and write a compiler. I don't understand why anyone thinks this is a good book.

There are introductory texts that might not cover the same amount of theory, but at least get you from nowhere to being able to write a basic compiler from start to finish. If you do want some serious theory, particularly on optimizations, then _Muchnick_ blows the Dragon Book away. If you want to work with different kinds of programming language, notably functional programming with a lambda calculus foundation, then these ideas barely appear in the Dragon Book and again there are specialised texts that would serve you much better. What is the target audience for the Dragon Book actually meant to be?

<comment><USER4> The Dragon Book is supposed to be read by people taking a CS course on compilers, to fill in the gaps. I too don't believe it's a standalone work.

<comment><USER5> I found Appel's _Modern Compiler Implementation in ML_ to be better-suited to self study, and more modern. I've used OCaml but not SML, and didn't have any problem following it.

<comment><USER6> This is a wonderful book!

</comment></comment></comment></comment></comment><comment><USER7> Couldn't disagree more about TAOCP. I haven't finished any of them, but I think they recommend themselves poorly as references and are brilliant front- to-back readers. Every time I make a couple hours for them, no matter where in which book I start, I learn something new. TAOCP is in that sense more like the Bible than the dictionary.

That the examples are in "assembly language" is a red herring, since the machine the book targets is deliberately simplified. The "assembly" is just a notation. The idea, which seems to be to make the examples as concrete as possible, is beginner- _friendly_ \--- as anyone who's been tripped up by mistakes and ambiguities in older Sedgewick books can attest.

<comment><USER8> Grab the fasciscle (sp?) 1 of Volume 4; the bitmanipulation stuff reads like poetry.

<comment><USER9> (stale) Soft copy: <http://cs.utsa.edu/~wagner/knuth>

</comment></comment></comment><comment><USER10> "I've read all of these books myself, so I have no difficulty believing that many moderately competent programmers have read them as well."

What a strange thing to say.

I've read all of the books in the "Claim To Have Read" list and only a couple in the "Have Actually Read" list. So based on _my experience_ I have no problem believing that programmers at least as dumb as me have read the same.

<comment><USER11> Another data point. Of the "actually read" list I'm at 6 of 10. Of the "claim to have read", I claim 3 of 5. So an identical portion of each group.

Another opinion. If you haven't read the Go4 patterns book, you don't deserve to call yourself a real software engineer -- and it's an eminently readable book, too. And if you haven't read the "The C++ Programming Language", you should not be behind the wheel of a C++ compiler. I haven't read Knuth nor the Algorithms book, but studied the topic extensively; you really need this kind of foundation to be a full-fledged software engineer.

<comment> loup-vaillant > If you haven't read the Go4 patterns book, you don't deserve to call > yourself a real software engineer

What do you find in this book that (1) you are unlikely to find elsewhere, and (2) which are critically important to be a decent software engineer? The way I see it, we don't even need to know OO to be a good programmer. (By the way, is there a difference between "programmer" and "software engineer?)

Disclaimer: my current opinion about OO is that it mostly sucks. Alas, I don't know if it is because I know too little or too _much_ of it.

<comment><USER11> _What do you find in this book that (1) you are unlikely to find elsewhere, and (2) which are critically important to be a decent software engineer?_

I see two important benefits from Patterns:

1\. As a (partial) replacement for experience. I've been doing this for 20+ years, and I'd encountered most of it at some point before reading the book, so it's not essential in this respect. But someone just starting out could assimilate directly a chunk of what I had to figure out on my own. And even for someone with more experience, it standardizes the details of the pattern, leading to greater consistency in the software.

2\. To provide a common vocabulary amongst developers. When discussing a design with someone who's read the book, I can say "I think we can solve that by using the strategy pattern", and they'll know what I mean. Without this common vocabulary we'd spend a lot more time explaining, and at greater risk of being misunderstood.

 _is there a difference between "programmer" and "software engineer?_

This is just my philosophy, but I think that computer programming _in itself_ is a simple activity, you could teach 'most anybody to write a program -- and that's the reason that so much software sucks. When done correctly it's an engineering discipline, including analysis, modeling, planning, documenting, and a certain degree of programming. But the actual implementation of code is a minority of the job.

 _The way I see it, we don't even need to know OO to be a good programmer. ... my current opinion about OO is that it mostly sucks_

Given my definition above, I'd have to agree that you don't need to know or do OO in order to be a _programmer_. But if you aspire to the fuller job of software engineering, it would be foolish to exclude such an important tool from your repertoire.

Regardless of its actual merits, it's objectively true that a huge portion (I'd think even a majority) of development tools (including platforms, languages, IDEs, frameworks, libraries, etc.) are geared toward OO development. Eschewing those means that you're forgoing much of the foundational stuff that our predecessors have built for us (standing on the shoulders of giants and all).

I'll grant that the industry in the '90s may have been a bit manic about OO. Since then we've learned that the paradigm has weaknesses and indeed flaws. But we do generally know what those are, and have found ways to work around them. We understand now that C++ is (insanely) complex and rigid, and modern OO manages to retain most of the benefits while shedding those problems. The contemporary dynamic languages build on a foundation of OO development while avoiding many of its pitfalls (at the low level at least). And what I think of as the cutting edge, the dynamic languages, seem to have found a way to deliver their benefit while generally coexisting with the OO paradigm. Which, of course, ties back to what I said earlier about keeping your toolbox full for whatever can best solve a problem.

<comment> loup-vaillant OK, that makes sense. Thank you.

Now, there is still something that bothers me. OO is obviously very important. However, network effects look like they play a huge part. I am a perfectionist. As such, I wouldn't like to settle for a local maximum. For example I feel that IDE aside, functional programming with an advanced type system is better than OO for most purposes (ML and Haskell fit this pet paradigm of mine).

The problem is that I fail to see how OO could be important _by itself_. (Like I fail to see how Windows could survive GNU/Linux in a world where every programs and drivers ship on both.) As anecdotal evidence, I can't solve a quite universal problem: the representation of optional data. With inductive types (also called sum types, or algebraic data types), this is easy:

        -- Type definition
        data Option a = Nothing
                      | Something a

        -- Example of use
        case computation-that-may-fail
          Nothing     -> "I failed"
          Something x -> "I succeeded. Result: " ++ show x

I tried, even asked, to do this in an OO way. No luck so far. So, until I find an acceptable solution, I will doubt OO is best for, well, nearly all purposes. (Note that by "not best", I do not mean "bad". I just mean we can do better.)

<comment><USER11> It's clear that you're trying to solve the problem in a functional way, and not in the way that an alternate paradigm would lend itself to. Indeed, elsewhere you admit

 _Someone who know C, Java and Python won't be able to use much of their knowledge to learn Haskell. On the other hand, Haskell could be taught as a first programming course. (Like Ocaml was in my case)._

I think you're falling prey to the reverse of this problem: your mind is stuck in functional-land, and you need to switch your mode of thinking for success in an OO setting.

The approach to this is clunky in C++, Java, or C#. The normal approach is for the "parent" object to contain a collection of its optional attributes. One would insert new attributes into this collection, and request their values from there later. Another approach you'll see, depending on the needs, is to use generics or templates to package the attribute with sidecar information that indicates whether it's actually "there", as with C# nullable types.

In newer dynamic languages like python (which is an evolution of the OO paradigm), though, this is simplicity itself. Indeed, it's at the heart of dynamic programming, and is what I referred to in my previous post when I criticized the rigidity of C++. In python, one isn't bound by the static definitions of an interface. If you want to add an additional attribute to your object, well, what are waiting for? Just go and add that attribute to it. Later on, use duck typing to handle the presence or absence as necessary.

<comment> loup-vaillant > your mind is stuck in functional-land

Most probably. But there's a reason for that: I don't like mutable state[1]. And I'm not sure you can try to avoid mutable state and still do OO.

[1]: <http://www.loup-vaillant.fr/articles/assignment>

<comment><USER12> It depends on your definition of OO, because there isn't "a" definition of OO. Typeclasses in Haskell aren't classes, as I well know, _but_ on the other hand it is true that they do fill in for some of the roles that interfaces do in OO languages. Fundamentally, what is an object? A collection of data and associated operations as an atomic unit. Typeclasses do fit that role. Another way to do "OO" in Haskell is:

        data Animal = Animal { name :: String,
                               is_awake :: Time -> Bool,
                               lives_in :: Environment -> Bool }

and so on, with the "methods" actually being bound at the time of creation of the Animal. See: [http://lukepalmer.wordpress.com/2010/01/24/haskell- antipatte...](http://lukepalmer.wordpress.com/2010/01/24/haskell-antipattern- existential-typeclass/)

Other OO things could be built as well in a perfectly functional way, picking and choosing the bits of the definition of OO you want. What you can't do is choose exactly what C++ or Java gives you, and what you don't get is a Blessed Object Orientation Technique like you do with those languages. But you can program OO just as you can in C. (Only better in most ways. Note you don't get a BOOT in C either, but there are nevertheless OO C programs.)

Mutability is merely one dimension of OO, a term that is so flexible it basically means nothing without further qualification. OO has its place even in a functional program sometimes, as that link shows.

<comment> loup-vaillant My definition of OO is roughly the one given here: <http://www.info.ucl.ac.be/~pvr/paradigms.html> Meaning, doing OO is basically using closures and mutable state (let's say objects are a form of closure). I don't like mutable state, therefore I don't like OO as defined above.

We can also define OO as the use of inheritance. The problem with inheritance is that it spurs the violation of decoupling. More often than not, derived classes are tightly coupled to their base class. I don't like that. This paper also suggest that inheritance is not very good, because it would increase the error rate by 6: <http://www.leshatton.org/Documents/OO_IS698.pdf> (Note that I don't take this paper as a proof that OO is bad in general. Rather, it strongly suggest that C++ without templates nor the STL, used in an OO fashion, is worse than plain C).

Now, if you forbid (or severely limit) both mutable state and inheritance, I really don't see what is left to OO. We could see you `Animal` data type and the Ocaml module system as forms of OO, but at this point, "OO" would mean anything (and therefore be meaningless).

(Note: when I say "I don't like X", I mean I will avoid X as long as the resulting solution isn't demonstrably simpler.)

</comment></comment></comment></comment></comment></comment></comment></comment></comment><comment><USER3> This is an old post, and I've never quite agreed with it.

For one thing, I don't know how you can lump things like _Head First Design Patterns_ or whatever the TDD one is in with things like _Code Complete_ or _Programming Pearls_.

For another thing, I have read at least parts of all of the books that apparently programmers don't really read, and judging from the books on colleagues' desks (not the bookshelves) so have a lot of other people I've worked with. The same is certainly not true of the "books programmers do read" list.

</comment><comment><USER13> I have never claimed I read "The C++ Programming Language" ;-)

After learning OOP with Smalltalk, it seemed a step in the wrong direction.

C is fine though. And TCPL is a fine book too.

I also never managed to finish "Code Complete".

To be fair, I also had exposure to Cincom's Mantis. That further spoiled me. To the point I still want a 3278 for my living room.

The books you end up reading are consequences of the steps you take in your career.

<comment><USER14> I don't understand why Mantis isn't better known in the programming/CS world. Then again, I'm also a former Cincomer.

<comment><USER15> I never heard of it, why not write about it? Anyway, if this[0] page is related to your mantis, obscurity is surely connected to the usage of a <marquee> tag ;)

[0] <http://appdev.cincom.com/>

<comment><USER14> That's a truly ancient web page!

</comment></comment></comment></comment><comment><USER16> I have a hard time believing many people have read Code Complete cover to cover, unless perhaps they're older and it was a long time ago before that was much better to do. It's so dry that I can't get more than a couple of chapters without falling asleep.

<comment><USER17> Your comment illustrates a problem with the original submission: It's idiosyncratic. It says more about the writer than the subject.

The various books are really different, people's reading strategies are different, people's tastes are different. People who have been in the field longer tend to have read more books. Also, whether or not you have "finished" a book tends to be irrelevant in nonfiction. If you can't get through _Code Complete_ in one sitting, try reading it in bits and pieces - it shows signs of having been designed for that. If you haven't "finished" TAoCP... you and Knuth have something in common.

(For the record, I have read all of _Code Complete_ at none time or another, but I've barely touched TAoCP. Which is not a problem. It is good to have things to look forward to. As someone once said: What's the point of having a collection of nothing but things you have already read?)

</comment></comment><comment><USER18> You can safely add "Goedel, Escher and Bach" to that list.

</comment><comment><USER19> The author's point, summarized, is "Don't recommend books to new programmers that you haven't read yourself". My recommendation is to go read those books that you recommend. Even if you read them after you recommend them.

Did you ever see that stack overflow post which says in dozens of ways that you can't fully take apart (parse) HTML with regular expressions? If not, you should. It is informative and entertaining.

Don't you think that if those who attempt to separate HTML with regular expressions had read and understood either of the dragon books that they would even try the task with RE? I don't. Once you put something like parsing and code generation in your personal toolbox, you would be surprised at the tasks before you that are a lot less intimidating.

I agree with Thomas about TAOCP. I'll give you a particular example. Volume 2, "Seminumerical algorithms" has a description of how to do long division. It turns out that we needed to do that when shipping a C compiler for 8086/80286 targets that didn't have an '87. And there is a reference to it in Coders at Work about that particular rare case that turns up only seldom.

Have you read the chapter on random number generation? How he made up this convoluted procedure to use one number to go to a page in a reference book to pick another number, and eventually ended up with a cycle of numbers that was disasterously small? It is fun.

And having an original edition and the recently issued boxed set, it is fun to see some of the problems change from HM 50 to something else. For example Fermats Last Theorem.

The lesson from that is repeated in people writing and using crypto. Just ask Tom.

While there are downsides to a university education, as often pointed out here on hacker news, the experience take you, if you are willing, to places that you wouldn't have on your own.

Similarly, the problem in front of you might not automatically make you run to get the dragon book or the others on the list, perhaps a friend can twist your arm to get you to read it.

You don't always know what you need ahead of time. There is a common word for that here, I think.

</comment><comment><USER20> It doesn't matter if you don't read dense programming books straight through or do all the exercises, as long as you are using them. If you make almost any effort to flip through looking for something new to chew on, you're usually rewarded pretty quickly with the listed selections, and that's why they're good books. The practice aspect is a good pursuit as well, but not intrinsic to the value of the book.

Edit: And I should add - that's why they're still valuable even in the Internet era. The "pure compilation of awesome content" aspect is a compelling reason to have them.

</comment><comment><USER21> TC++PL _is_ written to be read cover to cover, with the exception of Part III (The Standard Library,) and even in that part, each chapter is written to be read beginning to end. C++ is a complicated and dangerous language. The complexity and length of TC++PL is dictated by the complexity of understanding required to be a decent C++ programmer. Avoiding C++ entirely is a great idea if you can manage it, but programming in C++ _without_ investing the time to read TC++PL (or another similarly detailed book) is a really bad idea.

</comment><comment><USER22> Or, _Projecting_.

</comment><comment><USER23> Whatever happened to the New Turing Omnibus?

<comment><USER24> There's one on my bookshelf, unread of course.

</comment></comment><comment><USER14> Of these, I have read, at least a significant portion of:

        - C Programming Language (2nd Edition)
        - Refactoring: Improving the Design of Existing Code
        - The Mythical Man-Month
        - Programming Pearls

The last two were due to one undergraduate CS professor assigning them.

If you feel you've almost gotten OO, but not quite, then Refactoring is a great book. That one lit up the "ah ha" lightbulb for me.

</comment><comment><USER25> I agree with the comments about GEB - I've had a battered copy for over 20 years and I still haven't made it all the way to the end.

</comment><comment><USER26> I read Design Patterns (GoF) and actually tried to write a text editor the way it describes it and found that it made selection really really difficult, so I had to find my own solution.

But I really grew fond of the Visitor Pattern, because you can do a lot with very little code.

Computer Graphics is the best school for Object Oriented thinking, I've found.

<comment><USER27> That's funny, I tried using the Visitor Pattern very heavily for a while, and ended up deciding it wasn't worth the trouble. Using it made me feel very virtuous and proper for a few years, but I've rarely if ever used it in the decade since, and never regretted not using it.

</comment></comment><comment><USER28> I don't understand this at all. To me, this reads as "Here are books that have been recommended to me that I haven't read. Nobody reads these." He implicitly says this himself, when he states "I've read all of these books myself, so I have no difficulty believing that many moderately competent programmers have read them as well."

<comment><USER29> No, that's not the same thing at all.

</comment></comment><comment><USER30> Posted more than a year ago: <http://news.ycombinator.com/item?id=397996>

(The URLs look identical... I wonder how this made it through the dupe filter?)

</comment><comment><USER31> Is it just me or has HN gotten really cynical today?

<comment><USER32> This is remarkably annoying.</comment></comment>


Apple Entrepreneur Camp - <AUTHOR> https://developer.apple.com/entrepreneur-camp/ <comment><USER2> Why is Apple burying the lede here?

Call it what it is: Apple Women Entrepreneur Camp. Seems very strange to not include any mention of gender in the title of the program but to have the program be entirely about gender.

<comment><USER3> Over thanksgiving I had a bite of a sausage stick, or so I thought, turns out it was a vegan sausage stick made with figs and other spices. I was so expecting to bite a nice meaty sausage that the fig bite was extremely offputting. After I realized what was going on I found I quite liked the taste.

<comment><USER4> I feel it's worth saying that most sausages are mostly filler.

<comment><USER3> Delicious juicy filler ;)

</comment></comment></comment></comment><comment><USER5> It seems that the HN community responds interestingly to topics of discrimination in tech (or, "lack of diversity"). It seems that there is a bit of denial in this community that there is indeed a discrimination issue. This is merely my observation, it could be skewed or entirely incorrect. Just keep in mind, that discrimination occurs whether you notice it or not. Further, you might be less likely to notice it if you are part of a group that suffers less from discriminatory practices.

Nonetheless, data and personal testimonies suggest that women and minorities have a harder time being interviewed and hired for positions at tech companies. Women and minority founders typically have a more difficult time securing funding and/or resources that will help them build a successful company. This isn't an issue that is unique to tech at all, rather this problem exists in organizations of all types.

<comment><USER6> The HN community isn't of one mind on this. Rather, it's deeply divided, just like society at large—and just like most large population samples are on most divisive topics.

</comment></comment><comment><USER7> I'm a man who was brought up in a home where I didn't gain any career advantages from my family or any connections they may have had. I've seen most of my peers at university gain entrance into their first career or internship based on such advantages, either directly or through their education at home.

There are many men who receive these advantages. There are certainly many women who receive them too. It might be the case that these advantages are chanelled more toward male children due to the prejudices of their parents, but I don't know. Nevertheless, anyone like this will have an easy time starting their career even without making use of a camp like this.

I have the feeling that camps like the one in this post will mostly be taken advantage of by the already advantaged few, and unfortunately most of its possible benefits won't be realised.

<comment><USER8> These programs are to help wealthy family's get their relatives in, with some plausible deniability by allowing a token lower class woman.

It was never for the lower classes, so don't feel too bad.

</comment></comment><comment><USER9> Interesting initiative.

Women, in my opinion (this may sound dumb, as I am a man), have sometimes a different rhythm than men, bring different interests and pay attention to different problems. So an environment more atuned to their way of thinking/being might yield great results.

<comment><USER10> I completely agree, worth a shot at least!

</comment></comment><comment><USER11> > That's why we created Apple Entrepreneur Camp, for organizations founded and > led by women.*

I had no idea what that asterisk could imply, since the statement seemed legally innocuous.

> * Apple believes that gender expression is a fundamental right. We welcome > all women to apply to this program.

There is a veiled threat implied in the structure and semantics of the second sentence.

<comment><USER12> Where do you see a threat? I see it as being explicitly inclusive of trans women.

<comment><USER4> I believe he fears the pandering of extreme SJW-type ideas.

</comment></comment></comment><comment><USER13> I think this is great!

</comment><comment><USER14> Such an efficient way to boost flagging iphone revenues. Get other people to do the work and rent seek through your walled garden.</comment>


DoorDash forced workers to arbitrate, now faces millions in fees - <AUTHOR> https://www.latimes.com/business/story/2020-02-11/doordash-arbitration-blunder <comment><USER2> Forced arbitration has long been a standard method of depriving workers of the right to redress grievances. It's really nice to see a company doing this get hoist with their own petard.</comment>


Fixing our social sharing tools - <AUTHOR> https://medium.com/i-m-h-o/c4c4074591ba <comment><USER2> There really should be a better way to subscribe to people. I don't want to miss out on major life events of old friends, but don't want to hear about their political views all the times.

</comment><comment><USER3> This is exactly what Ping.it fixes. Read this for a quick intro: <http://ping.it/press>

</comment><comment><USER4> You provide two examples of a promising change: Pinterest and Medium (I don't use either of them) but their solution appears to be as same as what Reddit provides, i.e, the sub-categories. So what is the difference?

Also, why ask for Facebook connect for Personify?

<comment><AUTHOR> The difference is that reddit crams everyone into a category, where Pinterest uses a follow model to curate your stream.

Imagine if the reddit homepage filled up with posts only from categories you explicitly followed and you might get something similar. There's still the problem of hundreds of people trying to have a discussion in one place, though.

Facebook connect is for simplicity during signup, and so you can post shared things to your Facebook timeline.

<comment><USER4> >>Imagine if the reddit homepage filled up with posts only from categories you explicitly followed and you might get something similar. <<

That's exactly how I use Reddit, and I was under the impression that pretty much all of the typical Reddit crowd does the same, no?

Reddit wasn't attractive to me unless I spent some time upfront to subscribe to bunch of sub-reddits and now I see only the categories I want to see (other than the top entry which is sort of what Reddit pushes as an Ad-posting).

Discussion at Reddit is indeed a problem, particularly for popular sub-reddit. I believe Branch is working on resolving some of the discussion issues apparent across the web.

Facebook connect for a new social service is counter intuitive. I will never sign up for a new service via FB or anything else.

</comment></comment></comment><comment><USER5> Facebook news feed is a pain nowadays with all the useless stuff my friends are sharing..

</comment><comment><USER6> very good</comment>


HeyFromTheFuture – Advice people wish they had at your age - <AUTHOR> http://heyfromthefuture.com <comment><AUTHOR> Previous discussion:

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


Show HN: FWBer – open-source Craigslist Casual Encounters replacement (NSFW) - <AUTHOR> https://fwber.com <comment><AUTHOR> Because nothing says sexy like GPL (tm)</comment>


Ask HN: How do I take a leap to Expert by writing a software myself ? - x-curiouscase-x I have been reading alot of "How to" articles regarding projects saying "stuff in 500 lines.". How should I go about writing a system from ground up , with minimalistic use of already written things. Please point me to sources I should follow in a step by step fashion to write all parts of a software from scratch. <comment><AUTHOR> [http://www.norvig.com/21-days.html](http://www.norvig.com/21-days.html)</comment>


The Manager as Debugger - <AUTHOR> http://whilefalse.blogspot.com/2015/11/the-manager-as-debugger.html <comment><USER2> I like this metaphor, it accurately captures a lot of what managing is about, though it's worth mentioning that the greatest difficulties are never, _ever_ technical, they're always about people and feelings, which can surprise a lot of new managers.

This article outlines some great first things to look for, but something important is missing: sometimes, after trying everything, it turns out that your team just has some truly terrible, morale-sucking people on it, and they need to be fired before things will pick up. That's sort of the "file a compiler bug" option of last resort, but there really are a lot of toxic people like that out there, especially amongst programmers, and as a manager you'll need to be able to pick them out and deal with them. That's almost the most important part of your job.

<comment><USER3> >>though it's worth mentioning that the greatest difficulties are never, ever technical, they're always about people and feelings, which can surprise a lot of new managers

It can also frustrate developer-turned-managers. Dealing with software is in some ways easy because, for the most part, software is predictable: you get the same output for a given input. If you open your browser console and do:

console.log("Hello")

The output is always "Hello".

But if you go to a human and say hello, depending on their mood and feelings at that moment, you can get wildly different reactions.

P.S. I oversimplified, of course. The same function can give different results based on state, data, etc. But the point is, software is rational whereas humans are not always thus.

<comment><USER4> All you need is a mood monad. That'll fix the pesky state problem.

<comment><USER5> Can you give me a quote for a hundred man-year supply of it? Preferably in a tasteless, soluble form, so I can add it to their lunch.

</comment></comment></comment></comment><comment><USER6> I'm kind of appalled by the mention of looking through the team's emails and IMs. Is this common practice?

Maybe my experience isn't representative, but everywhere I've ever worked, we've operated under the assumption emails and private IMs are, just that, private. We know that ultimately management _could_ look at those things, but the assumption has been that privilege is reserved for extreme situations (e.g. a lawsuit, an HR dispute, etc.).

Would love to know how it works elsewhere.

<comment><USER7> The author is talking about publicly viewable emails and chats (e.g. mailing lists, IRC, Slack). I think the surrounding context makes that clear:

"When talking about a team that is not producing work fast enough, look at the records. Look at the team chats and emails, look at the tickets, look at the repository code reviews and checkins."

</comment></comment><comment><USER8> Balancing the focus and solitude that programming requires with the communication skills required to be a leader can be really tough. In Boulder/Denver some friends and I started a monthly CTO lunch where we can all just chat about our shared challenges. I sent this post to the group because I think it does a great job of helping technical people approach something non- technical in a way we can understand. Awesome post!</comment>


SeL4: World's 'first hack-free' software developed - <AUTHOR> http://timesofindia.indiatimes.com/tech/personal-tech/computing/worlds-first-hack-free-software-developed/articleshow/7378403.cms

<comment><USER2> Current discussion from earlier today (including links to earlier discussions from 18 months ago on the research)

<http://news.ycombinator.com/item?id=2151464></comment>