Is this site worth developing / promoting or too niche? - <AUTHOR> https://fixssl.com I was tired of running into problems with encrypted pages not being able to show off-site content without giving IE Mixed Content warnings, so I threw this site together in few hours to get around it.
Do you think there's enough of a market to develop it, or just leave it as a hobby site?
(I already had all the servers and ecommerce stuff setup from other projects, so it was pretty easy to just put all the pieces together)
What say the hackers? <comment><USER2> I _think_ this is meant to deal with non-SSL content hosted outside of your own domain, right? As the earlier posted pointed out, you can just get an SSL cert and DIY much cheaper. If it's to deal with non-SSL content hosted by someone else, I'm assuming you're proxying the content?

Might you still get those errors anyway if some javascript on the page makes a request for non-SSL content?

<comment><AUTHOR> Correct, it's for showing off-site content on your own secure pages, such as a portal site showing a photo-of-the-day from another site or an RSS feed containing images.

Yes, you could roll your own solution, but this is, well, easier and lots of non-programmer admins might have trouble with it. This is just a simple way to access that site without having to write or load scripts onto your server.

Right now, it's just a straight passthrough (GET/ECHO) of the requested URL, nothing fancy. If you request an HTML or RSS page it will try some basic munging of the content to change the non-SSL links to reroute them through the fixssl system. I could expand on those if there's any interest in the service.

</comment></comment><comment><USER3> Since an SSL cert costs about $20 a year, this would cost more. I don't see the point.

For $20 a month I can have my own VPS, my own IP, and my own certificate and side-step all of this.

Perhaps this is to arbitrage against people not knowing any better, or not having the expertise to implement it properly. In any case, does seem to be a small market.

<comment><AUTHOR> It's more for content you don't control that you want to include in a site. For example, if you want to show the CNN feed within a secure portal page, it will give you the mixed-content warning because of the images in the feed.

Running the RSS feed through FixSSL does some basic remapping of the links so that it routes the images through FixSSL, which prevents the mixed-content warnings from appearing.

Of course, if CNN (and other sites) offered HTTPS versions of their feeds, there would be no need for this, but until they do it serves a purpose.</comment></comment>


Commanding infinite streaming storage with Apache Kafka and Pyrostore - <AUTHOR> http://pyrostore.io/blog/2018/05/10/kafka-potential-past-present.html <comment><USER2> I like it. Personally, one of my biggest problems with Kafka is its operational complexity. I've just had one too many instances of Kafka brokers getting stuck while doing an upgrade and things like that.

Additionally, I would really, really like to be able to use it as an Event Store, easily accessible by anyone in the org with infinite data retention. I know Kafka kind-of sort-of provides this functionality, but it doesn't work in practice.

This appears to be a solution to this problem. Will be interesting to see whether it gains traction.

<comment><USER3> > I know Kafka kind-of sort-of provides this functionality, but it doesn't > work in practice.

How so?

<comment><USER2> It's difficult to search through, query, run projections. Also the API assumes you want to stream realtime data, rather than query historical data.

<comment><USER4> Use the correct tool for the job: hook an analytics DB up to the Kafka pipe and store the data for future queries. Kafka was never intended to support your use case.

If your inbound data that you'd like to put to Kafka isn't large, by the way, just write straight to the DB. It's irritating to see Kafka used where it's not necessary. It adds complexity to an infrastructure and the cost for doing so has to be justifiable.

</comment></comment></comment></comment><comment><USER5> Everything Distributed Masonry does is very interesting. Wish I had more excuses to use your stuff at work.

Storing all data forever in a single source of truth is awesome until regulation like GDPR comes along. Do you have plans to support excision or is your guidance on personal data to avoid putting it into a system like Kafka/Pyrostore?

<comment><USER6> You might enjoy reading Greg Young's [https://leanpub.com/esversioning](https://leanpub.com/esversioning), which covers this topic.

It covers several strategies, three of which are:

* Encrypt it and then throw away the key to forget it

* Store private data outside the event with the event just pointing to it

* Delete events (on systems that support this)

</comment></comment><comment><USER7> Integration with Azure Managed Disks : Due to the ingestion heavy nature, the disks attached to the nodes on the cluster often result as the bottleneck. Traditionally, to scale this bottleneck, more nodes need to be added. Azure Managed Disks is a technology that provides cheaper, scalable disks that are a fraction of the cost of a node. HDInsight Kafka has integrated with these disks to provide upto 16 TB/node instead of the traditional 1 TB. This results in an exponentially higher scale, while reducing costs in the inverse, exponential manner.

[https://azure.microsoft.com/en- us/services/hdinsight/apache-...](https://azure.microsoft.com/en- us/services/hdinsight/apache-kafka/)

Is this same approach as pyro ?

<comment><AUTHOR> Our approach archives topics to cheap, highly durable and available object stores, while keeping the data available for blending between warehoused and live data sets.

This reduces operational complexity significantly vs scaling nodes up, dealing with rebalancing, under replicated partitions, etc.

</comment></comment><comment><USER8> This is what Apache Pulsar ([https://pulsar.incubator.apache.org/](https://pulsar.incubator.apache.org/)) already provides - infinite streaming storage, with simple/flexible messaging streaming API and kafka compatible

</comment><comment><USER9> Very interesting and reminds me of Pravega ([http://pravega.io/](http://pravega.io/)). Seems like unbounded streams will be the next big step in streaming technology.

[https://www.youtube.com/watch?v=cMrTRJjwWys](https://www.youtube.com/watch?v=cMrTRJjwWys)

</comment><comment><USER10> These are the guys behind www.onyxplatform.org. That alone tells me this is legit stuff. We will give it a try.

</comment><comment><USER11> > tradeoffs in our operation of Kafka have lossy effects on stream-ability. > Balancing costs and operational feasibility, we ask Kafka to forget older > data through retention policies.

What does ' lossy effects on stream-ability. ' mean here. Stream slows down, data loss or something else?

<comment><AUTHOR> Pyrostore co-founder here. When practitioners archive their data from Kafka to other storage products (S3, SQL database, etc) today, they are giving up on the log ordered structure of the data their ability to consume their data in its original ordering, with its original offsets and timestamps. Pyrostore structures and indexes your data in S3 in order to provide a consumer that implements the Kafka consumer interfaces, ensuring you are always able to stream from hot and cold storage alike.

</comment></comment><comment> ah- I wonder if this would ever be integrated into Kafka proper. Shipping out historical chunks onto infinite storage seems like a generally sensible thing.

This would be even better if it didn't need a modified client.

<comment><USER12> I did suggest a potential solution a while ago: [https://medium.com/@rad_g/the-case-for-kafka-cold- storage-32...](https://medium.com/@rad_g/the-case-for-kafka-cold- storage-32929d0a57b2) Relevant JIRA ticket: [https://issues.apache.org/jira/plugins/servlet/mobile#issue/...](https://issues.apache.org/jira/plugins/servlet/mobile#issue/KAFKA-3726)</comment></comment>


Hackers Embed Spam Into Google Search Listings For Unsuspecting Sites - <AUTHOR> http://techcrunch.com/2010/12/21/hackers-embed-spam-into-google-search-listings-for-unsuspecting-sites/

<comment><AUTHOR> We got featured on TC :)</comment>


The New Epidemic – My Experience of Losing a Friend to Heroin - <AUTHOR> https://dormin.org/2020/01/22/the-new-epidemic-my-experience-of-losing-a-friend-to-heroin/ <comment><USER2> Opioids seem to make people feel good...at the price of addiction and draining the life out of them longer term.

People struggling with other things too... just don't have much of a chance to avoid the spiral that follows. And friends, family, everyone pays the price.</comment>


Perpetuating terrible JavaScript practices - <AUTHOR> http://christianheilmann.com/2013/10/31/perpetuating-terrible-javascript-practices/

<comment><USER2> I see <£5000 per annum, surviving on a part time job and benefits. I can't even afford a decent IT course.

My father (who used to teach IT) doesn't see the point in my learning to code, especially C.

Several of my friends work in IT. A few months ago one of them was asking me for advice on C.

Last night I started learning js. I wondered how to reverse a text string.... 60 seconds later:

      var str="supercalifragilisticexpealidotious", rts="", l=str.length;
      while(l-->0)
        rts+=str[l];
      print(rts);

Thank you very much for posting the article. I feel much better now.</comment>


RethinkDB screencast - from queries to sharding under 15 minutes - <AUTHOR> http://www.rethinkdb.com/screencast/

<comment><USER2> Would be really nice to see a demo of RethinkDB under real load. All of the RethinkDB slides and info I have seen generally have 1-4 servers and maybe 50mb of data at most. At this level, you might as well just be using textfiles...

Anybody know of any demos of RethinkDB handling, say, 100gb of data? And running decent queries on it?

<comment><AUTHOR> slava @ rethink here. Let me explain the state of affairs on this.

The underlying storage engine was tested on commodity systems _and_ super- duper enterprisy storage systems, and can do hundreds of thousands of ops/second on tens of terabytes of data (that required pretty beefy setups, though). When we added clustering on top of the storage engine, we avoided thinking of performance too much (in the interest of shipping), so everything slowed down significantly. Here's our (rough) roadmap:

      - New protocol buffer API and some more checklist features (1.4)
      - Secondary indexes, huge ReQL improvements (1.5)
      - Performance and scalability (1.6)

We'll be doing scalability and performance demos that I hope will be really impressive, but it'll take ~4 months to get there.

<comment><USER3> Does it mean that until these changes are done, you wont declare RethinkDB to be production ready? (you mentioned at 2.0)

Can you guys add a "rough roadmap overview" page to the docs, so we could have a general idea what is the status?

I like the way the RubyMine does it:

[http://confluence.jetbrains.net/display/RUBYDEV/Development+...](http://confluence.jetbrains.net/display/RUBYDEV/Development+Roadmap)

</comment></comment></comment><comment><USER4> I love the way you guys have stated the advantages and disadvantages of RethinkDB in your FAQs. Just wondering about one thing in there:

"RethinkDB is a great choice if you .... are planning to run anywhere from a single node to sixteen node clusters."

With a sharded master-slave setup with one slave each, this leaves us with a total of 8 shards. This is enough for most use cases, but is there a reason it is limited to 16 nodes?

<comment><AUTHOR> There is a bottleneck in the metadata propagation code that slows down the system after roughly 16 nodes (there is one place where we used an O(N^3) algorithm in the interest of shipping the product). This isn't an inherent limitation, just the state of affairs today. We'll resolve this in the next few releases, but we wanted to be up front about this limitation for the time being.

</comment></comment><comment><USER3> What is the state of Rethink db? Is it fit for production use?

In the website it stated as 1.3.2 (which imply production ready) but I think I saw some comments a month ago from you that it's not fit for production use yet.

What about secondary indexes?

Are the machines in the screencast are very weak? a simple query (get 2 rows of the dota table) running ~100ms is really slow- is it because you're using the web interface?

RethinkDB seems cool and I really want to try it in my next pet project :)

<comment><AUTHOR> > Is it fit for production use?

Not yet. We'll bump the release to 2.0 when it's ready for production.

> What about secondary indexes?

They're coming -- see <https://github.com/rethinkdb/rethinkdb/issues/88>

> Are the machines in the screencast are very weak?

No, the 100ms roundtrip includes the HTTP request over our admittedly very unsophisticated WiFi network.

Hope this helps!

<comment><USER5> Any reason you didn't go with the standard 1.0 is the first non-beta release?

<comment><AUTHOR> Yes -- we had an internal versioning scheme that crossed 1.0 very early on. Having different internal and external versioning schemes went against our intuition of having an open development process, so we decided to bite the bullet and keep the version post 1.0. It isn't ideal, but it's done :)

</comment></comment></comment></comment><comment><USER6> RethinkDB has been awesome to learn, I found it really easy to get up and running, install the ruby driver and just start coding! Reminds me of starting with MongoDB.

</comment><comment><USER7> [edit] I realize there is a lot of buzz around being "NoSQL", but seeing how you support similar concepts: join, count, group, where - why not provide at least a partial SQL interface for the features you do support? Even mysql originally did not provide "all" features of SQL e.g. no foreign key constraints and probably still multiple features are unsupported in mysql but at least with a sql interface it is easy for anyone to quickly pick up the DB and start integrating it... plus SQL is actually a really nice "Query language"... IMO... and perhaps many others too...

\- p.s. love the demo video looks awesome how easy it is to use and I like the query language you created looks nice too.

<comment><AUTHOR> Under the hood RethinkDB already supports multiple protocols, so from our perspective there is little difference between a SQL front-end and a ReQL front-end. Of course to users, that's the only thing that matters.

There are still many improvements we can make to the core system and an enormous number of people are already interested in it, so we decided to satisfy them first. We might add a SQL front-end at some point, but it's not very high on the priority list now.</comment></comment>


Why Silicon Valley is all wrong about Apple's AirPods - <AUTHOR> https://medium.com/chris-messina/silicon-valley-is-all-wrong-about-the-airpods-8204ede08f0f#.m4czgi1z2 <comment><USER2> Wow, this article could have be written by 12 year old after seeing too many episodes of Mad Men...

And this guy worked for Google and Uber?</comment>


Why I hate programming language flame wars? - <AUTHOR>

There are two kinds of people. The ones that code, and ones that fret about it.  Programming language flame wars have existed since time immemorial. Node.js programmers hate on PHP programmers. They claim PHP sucks because of 'xyz' reasons.
And then there are PHP programmers who hate on Java programmers because it produces long ass code. And then there are C programmers who hate all interpreted languages because they aren't real programming languages. I don't get it. Programming languages are tools people, and your users don't care.
Instead of fretting about the elegance of a programming language, it is way more wiser to use your programming language, like a freaking tool, and make a product that people, the end users, will find useful. I hate programming language flame wars. It isn't helping the community at all.
Instead of being cry babies and finding faults in programming languages, we, as software artisans, mustn't forget that our goal, as a community is to respect each other's tools and work towards creating a culture of love between the various programming communities.
Get flame wars out of your way! Okay, PHP has an inconsistent needle/haystack amongst other problems, Ruby doesn't scale and Java produces verbose code, but at the end of the day, there are systems running on all these programming languages. Don't fret, get coding. Just do it! <comment><USER2> Perhaps some of the bashing is to relieve frustration from work where we maintain a code base in a language we don't like.

In my case.. that is VB 6. And I can say plenty of things about it.

<comment><AUTHOR> What's bad about VB 6? Just curious.

<comment><USER2> Verbosity is a real nuisance. Exceptions have odd flows, you have to use `On Error GoTo SomeHandlerInFunction`. For runtime efficiency you have to work against the system to make sure things are typed and not automatically casted to `Variant` and back every operation. Events do not fire in the right order, rendering some of them useless (Context: You are in a text field, you do Alt+E to press a button with 'e' underlined on the form. Click on the command button is fired before validation of the text field). The official IDE from way back when is buggy as heck, often gets into not-sane states between debugging.

<comment><USER2> For example.. `Dim x, y as Long` results in only `y` being long. Internal functions like `InputBox` or string functions like `Left`,` Right`, `Trim`, `Mid`, and so on return variant not string. So you have to do a little extra there.

<comment><USER3> You can append a "$" to those functions (ie, Left$(), Right$(), Mid$(), etc) to use the "return a string" version of these functions.

<comment><USER2> Yes, and that's why I mention those specific functions.

</comment></comment></comment></comment></comment></comment><comment><USER4> Fortunately, we use tools, but we are not just machines.</comment>


The seductiveness of single-metric decisions - <AUTHOR> https://lorinhochstein.wordpress.com/2019/05/26/the-seductiveness-of-single-metric-decisions/ <comment><USER2> There's a lot of relevant info in economics about this. Two main things come to mind:

\- There's no way to create a single metric from different things without some sort of tradeoff curve being implied. This has all sorts of implications when you look at utility functions. You might even find that your setup violates some of the requirements (like transitivity).

\- Even if you do have one metric, you don't have one metric. Why are you making a decision in the first place? Unless it's trivial, it's because you're uncertain about the future. You are making a decision under uncertainty, which there's also a lot written about. So your high ROI might be an average with some error bars around it, while the low ROI has a different variation. Now you're back to tradeoffs again.</comment>


Robots are racist and sexist. Just like the people who created them - <AUTHOR> https://www.theguardian.com/commentisfree/2017/apr/20/robots-racist-sexist-people-machines-ai-language <comment><USER2> > Robots have been racist and sexist for as long as the people who created > them have been racist and sexist, because machines can work only from the > information given to them, usually by the white, straight men who dominate > the fields of technology and robotics.

Isn't claiming that white straight men are racist and sexist actually racist and sexist, not to mention "heterophobic" (if that's a word).

<comment><USER3> Non-ironic hypocrisy on The Guardian? I can't believe it.</comment></comment>


Comparitech shows that Github.com is blocked in China - <AUTHOR> https://www.comparitech.com/privacy-security-tools/blockedinchina/ <comment><USER2> It is not blocked use my network.

</comment><comment><USER3> I suggest let it be blocked. This partial model is killing both. Let us not let china enjoy totalitarian as well as information to build its empire.</comment>


Introducing $DEBT Coin - <AUTHOR> https://medium.com/@writerlex/introducing-dcoin-debt-53ba9e7354b3 <comment><USER2> Unoriginal, unfunny article peddling the same tired old crypto tropes.

At least put some effort into it like the "Pyramid Scheme" [1] post or similar.

[1]: [http://www.michaelburge.us/2017/11/28/write-your-next- ethere...](http://www.michaelburge.us/2017/11/28/write-your-next-ethereum- contract-in-pyramid-scheme.html)

</comment><comment><USER3> What is some moron actually sends the 1dCoin, waits and then sue them? Is the copy foolproof to avoid a problem in the court?</comment>


Show HN: Crypto Lite – A quick way to check the top-100 cryptocurrencies price - <AUTHOR> http://cryptolite.net <comment><AUTHOR> When it comes to checking cryptocurrencies prices, I usually rely on CoinMarketCap. The main problem is that the page is bloated with ads (ICOs that I don't care, etc), so I decided to create a quick & simple lo-fi solution, focused on to be easier to scan content on the go and save data consumption on mobile.

There are a lot of people who often checks CoinMarketCap so I decided to share Crypto Lite, maybe it can be useful to some :)

Any feedback is welcomed

<comment><USER2> Alphabetical order would be awesom.

<comment><AUTHOR> Thanks, that's a great suggestion</comment></comment></comment>


Low IQ & Conservative Beliefs Linked to Prejudice - <AUTHOR> http://news.yahoo.com/low-iq-conservative-beliefs-linked-prejudice-180403506.html <comment><USER2> So what if we had a study linked specific races of people to intelligence (based on the same sort of data here)? It would not be accepted, even if the proof was in the stats.

This is my problem with this entire article. It's just fine to be prejudice against conservatives/republicans. The whole thing stinks of liberal bias.</comment>


A Deep Attention-Based Reinforcement Learning Algorithm for Model-Based Control - <AUTHOR> https://arxiv.org/abs/1812.09968 <comment><USER2> If you look at the old Singularity Conference presentation of Demis Hassabis (founder of Deep Mind), his main argument for using attention, reinforcement learning and deep convolutional networks (and other known systems that were on his slides) for reaching AGI is to use only techniques that the brain uses to be able to decrease the search space for reaching AGI.

I believe his thinking was already proven, and going for emulating and integrating the known algorithms that the brain uses is the fastest way to reach AGI.

[https://youtu.be/Qgd3OK5DZWI](https://youtu.be/Qgd3OK5DZWI)

<comment><USER3> > I believe his thinking was already proven, and going for emulating and > integrating the known algorithms that the brain uses is the fastest way to > reach AGI.

That's a stretch considering AGI has not yet been created by DeepMind or anyone else. Notable is that DeepMind's most prominent successes have relied heavily on MCTS, a classical planning method that doesn't have much relation to neuroscience without a lot of caveats. Their accomplishments on Atari lean a lot more on efficient computing than biological plausibility.

I think the strategy they're actually following (and I believe they've said this more recently) is to use what works and to look to neuroscience when other methods fail. This feels more solid than looking to the brain first to narrow the search space, which is the approach Numenta has taken, and does not scale as easily.

<comment><USER2> You're right with using MCTS, but ,,Their accomplishments on Atari lean a lot more on efficient computing than biological plausibility'' is a strange thing to write.

Efficient computing is of course needed for AGI, I think that was never a question. The question is what algorithms to use on the computers, and also what computing architectures should be created for those algorithms.

Those Atari simulations were the first ones putting together reinforcement learning and deep convolutional networks AFAIK, and yes, tree search was needed (which human brains are consciously doing, but extremely bad at compared to computers).

Just looking at what works is not enough. There was a strong reason why DeepMind didn't start with modelling language or logical reasoning, like many other people, and the background was based in biology (animal behaviour).

<comment><USER3> My point is that DQN is pretty far removed from the biological equivalent. It's impressive and useful but the main reason it succeeded was not because of some deep insight from neuroscience but because it scaled well (or at least better than alternatives at the time).

EDIT: Richard Sutton (largely credited as the grandfather of RL) has written about this recently: [http://incompleteideas.net/IncIdeas/BitterLesson.html](http://incompleteideas.net/IncIdeas/BitterLesson.html)</comment></comment></comment></comment>


Alpha launch of Brit/Euro version- threadless/dbh Facebook app- feedback needed - <AUTHOR>

Yo fellow HN pals- Jay and I were sick of waiting for shipping from threadless over in the states and paying a premium for delivery that we hacked together this MVP as a Facebook app. We are London based so hoping to attract a more Brit/Euro community that should reflect in the designs that win too. Let us know what you think of the alpha site (note you have to be logged into Facebook as it brings up a Facebook app)- we thought this would be easier to share stuff/promote to pals for voting, etc.
Holla!
Jimmy and Jay, Londontown April 2012
www.designoff.com <comment><AUTHOR> be good to hear what you think</comment>


Why we are taking our startup to Tel Aviv - <AUTHOR> http://leostartsup.com/2012/06/why-we-are-taking-our-startup-to-tel-aviv/

<comment><USER2> I'm curious, what is it like living in Tel Aviv if you aren't Jewish and are from the USA? The reason I ask is this article seems to focus on the benefits of cultivating a startup in Tel Aviv. Are there cultural disadvantages to folks who are not Jewish?

This is a serious question, but I'm already feeling like I'm treading lightly on egg shells just asking this...:)

<comment><USER3> I used to fly to Tel Aviv regularly when I worked at an internet company with a big presence there.

People were almost universally warm and welcoming. It was common to get invited to weekend gatherings or to go out and get drinks at the marina after work.

I have a German last name that is similar to a common Jewish name, so people would very regularly ask if I was Jewish. I would explain that I wasn't; it could have been uncomfortable, but never was. In fact, it was nice not being Jewish because nobody ever pressured me to move there.

Jerusalem is a totally different story. I didn't get the feeling it was a friendly or safe place for outsiders. I wasn't comfortable there.

I also hated flying into or out of the country because of the security interviews; it seems very invasive to an American.

But Tel Aviv is very non-religious, open, laid-back and friendly. The technical talent is also very strong. Everyone speaks english it seems, even people working at Burger King.

In short, I never really had the desire to move there, because I'm not really a hot weather beach guy, but I could see why it would appeal to others to do so.

</comment></comment><comment><USER4> From what I understand it's impossible to immigrate there and gain citizenship unless you're Jewish.

<comment><USER5> You are wrong: [http://en.wikipedia.org/wiki/Israeli_nationality_law#Natural...](http://en.wikipedia.org/wiki/Israeli_nationality_law#Naturalization)

</comment></comment><comment><USER6> What are the practicalities immigration/visa wise of taking a business to Israel as a non-citizen?

<comment><AUTHOR> Hi Peter, we all have European passports, so we can head there for 3 months as a holiday without the need for a Visa.

<comment><USER6> Ahh, for some reason I misinterpreted it as being where you'd chosen to make a more permanent base. Bouncing around countries sounds exhausting, though probably fun for the right group :-)

<comment><AUTHOR> Ah can understand that, I think travelling the world is very powerful for us in many aspects. The most important one though being that we can discover which culture, country we feel most comfortable in, as opposed to where I'm born in, kind of related to this article: <http://sivers.org/singapore>

</comment></comment></comment></comment><comment><USER5> Am I strange that I like rain, especially with thunderstorms? I like variable weather, not sun every day.

I'd rather go to Tel Aviv in March.

</comment><comment><USER7> From past experience I know HN folks don't like to discuss the Palestinian Israeli issue but I wonder how you feel about the growing public discomfort with the Israeli states actions. Do you think it may cast a negative light on your start up? Particularly with respect to a growing call to boycott Israel as was sone in South Africa, regardless of whether you agree with such calls or not.

<comment><AUTHOR> hmm, that's interesting, I believe we aren't bothered by the conflict at all, I don't believe it's something we will have to deal with.

<comment><USER8> With all the misinformation that's out there about the conflict, living in Tel Aviv will give you an opportunity to see the reality of the situation. An yes, you should be safe in Tel Aviv unless Hamas or Fatah decide to start suicide bombings again (but they haven't in many years). If you travel to the south, you should learn what Tseva Adom means.

<comment><USER9> 60 minutes has an interesting take on the current situation in tel aviv:

<http://www.cbsnews.com/video/watch/?id=7409182n></comment></comment></comment></comment>


Clang vs. other open-source compilers - <AUTHOR> https://clang.llvm.org/comparison.html <comment><USER2> I mean this is fine for an advertisement, but it woefully oversells clang if you're trying to meaningfully compare these things. A lot of what they're saying is misleading and or false.

In the early days, clang was significantly faster in compilation than GCC. They also barely implemented any code optimization. Now that clang generates code which is about 90% as fast, generally, as C++, its compilation speeds and memory usage have understandably bloated considerably.

Note that I say 90% as fast generally. It still hasn't caught up completely.

Clang pioneered LTO, but GCC does it better now.

Other people have mentioned gcc's previously terrible error message and inability to dumb ASTs.

I don't think this is up to HN standards.

<comment><USER3> > Clang pioneered LTO, but GCC does it better now.

Sorry, what? VC++ already had link-time code generation by 2005. (No clue exactly which year it was introduced though.)

<comment><USER4> The headline is clang vs. other open-source compilers, not sure if VC++ qualifies.

<comment> compiler-guy open64 had link-time optimization in the early 2000s. (although they called it IPA for interprocedural analysis).

</comment></comment></comment></comment><comment><USER5> > GCC is licensed under the GPL license. Clang uses a BSD license ...

Looks like this hasn't been updated in a while. As of Clang 9.0 they migrated everything to the Apache 2.0 license, which is not nearly as permissive as BSD. Apache 2.0 mixes US Contract law with Copyright law, and that is considered wholly "not permissive enough" by many, most notably OpenBSD which is stuck on Clang 8.0.1. They also migrated the libc++/libc++abi C++ standard libraries from MIT to Apache 2.0 as well (which was a real dick move), but they don't care.

<comment><USER6> Interesting, I didn't know that And that after the BSDs were quite happy that a viable non-GPL compiler arrived on the market. Wasn't their final switchover just in 2017?

<comment><USER7> BSDs in general are quite happy, since Apache is pretty much just BSD with patents thing sorted out. The only unhappy ones are OpenBSD folks.

</comment></comment></comment><comment><USER8> This is staggeringly out of date (it's from around 2007) and really ought to be taken down.

<comment><USER9> Could you provide a few examples of what information is out of date?

<comment><USER10> This one is also outdated:

[https://www.phoronix.com/scan.php?page=article&item=gcc7-cla...](https://www.phoronix.com/scan.php?page=article&item=gcc7-clang4-jan&num=4)

haven't checked recently, because gcc sped up and still produces better binaries

It can dump AST and much more: [https://godbolt.org/](https://godbolt.org/)

</comment></comment></comment><comment><USER11> Clang takes up to 90GB of disk space [0]

[0] [https://lists.llvm.org/pipermail/llvm- dev/2019-April/132028....](https://lists.llvm.org/pipermail/llvm- dev/2019-April/132028.html)

<comment><USER12> The overwhelming bulk of users are going to install a binary package, not build from source.

LLVM 9.0 with Clang, a huge array of tools, etc, is 1.9GB on macOS.

<comment><USER13> The point of open source is that individuals from the community can read and modify their tools. Anything that makes that harder is a bad thing, it might be justified but it's still bad.

</comment></comment></comment><comment><USER14> As far as I can tell this page first appeared in 2008. Many of these points are outdated (some woefully so).

This shouldn't be on the frontpage of HN. If anything, Clang should take this down or revise it.

</comment><comment><USER15> As far as I know that page is many years old, from when clang was very new and comparing to e.g. Elsa made sense. The gcc comparison is probably pretty out of date.

</comment><comment><USER16> I mean Elsa and and PCC are cool, but who _actually uses_ them? Clang and GCC are pretty much all there is, but regardless it's nice to know what people have tried/are trying to do. These bullet points in particular make me want to tinker with PCC and see how much it is (and is not) capable of:

> The PCC source base is very small and builds quickly with just a C compiler.

> PCC doesn't support Objective-C or C++ and doesn't aim to support C++.

<comment><USER17> PCC was at one time basically the standard C compiler, and you can port it to just about any architecture you want in less than a day.

It also shipped with many historic operating systems, Plan 9 from Bell Laboratories being one of them, if I remember correctly.

<comment><USER18> Pcc was never used in Plan 9. The Plan 9 C compilers[1][2] were written by Ken Thompson, and later reused in the Go toolchain.

[1] [http://doc.cat-v.org/plan_9/4th_edition/papers/compiler](http://doc.cat-v.org/plan_9/4th_edition/papers/compiler)

[2] [http://doc.cat-v.org/plan_9/4th_edition/papers/comp](http://doc.cat-v.org/plan_9/4th_edition/papers/comp)

<comment><USER17> Yeah it was, you seem to be mistaken:

[http://doc.cat-v.org/plan_9/4th_edition/papers/comp](http://doc.cat-v.org/plan_9/4th_edition/papers/comp)

 _To make it easier to share code with other systems, Plan 9 has a version of the compiler, pcc, that provides the standard ANSI C preprocessor, headers, and libraries with POSIX extensions. Pcc is recommended only when broad external portability is mandated. It compiles slower, produces slower code (it takes extra work to simulate POSIX on Plan 9), eliminates those parts of the Plan 9 interface not related to POSIX, and illustrates the clumsiness of an environment designed by committee. Pcc is described in more detail in APE—The ANSI /POSIX Environment, by Howard Trickey._

I'm obviously aware that it wasn't the _main_ compiler/compiler suite for Plan 9 (of which I've submitted links to papers about quite a few times), but it was there.

<comment><USER18> No, it wasn't. Pcc is just kencc ran through a special mode and with special APE libraries. It has nothing to do with S. C. Johnson's pcc.

> The pcc command acts as a front end to the Plan 9 C compilers and loaders.

[http://man.cat-v.org/plan_9/1/pcc](http://man.cat-v.org/plan_9/1/pcc)

[http://doc.cat-v.org/plan_9/4th_edition/papers/ape](http://doc.cat-v.org/plan_9/4th_edition/papers/ape)

[https://github.com/0intro/plan9/blob/master/sys/src/cmd/pcc....](https://github.com/0intro/plan9/blob/master/sys/src/cmd/pcc.c)

<comment><USER17> Point ceded, sorry for being difficult!

</comment></comment></comment></comment></comment></comment><comment><USER19> This info is from 2007, the title should reflect that. This is not a useful post.

</comment><comment><AUTHOR> Excerpt:

" _Clang can serialize its AST out to disk and read it back into another program, which is useful for whole program analysis._

GCC does not have this. GCC's PCH mechanism (which is just a dump of the compiler memory image) is related, but is architecturally only able to read the dump back into the exact same executable as the one that produced it (it is not a structured format)."

Clang, you had me at 'hello'.

The point I outlined above is just icing on the cake!

<comment><USER20> GCC can dump it's AST [https://stackoverflow.com/questions/15800230/how-can-i- dump-...](https://stackoverflow.com/questions/15800230/how-can-i-dump-an- abstract-syntax-tree-generated-by-gcc-into-a-dot-file)

<comment><USER21> GCC can dump its internal representation at almost every stage of the compilation process.

However, it's intended for diagnosing issues in the compilers or plugins ; it's definitely not meant to be used as an interoperable format to be loaded back into a program.

gcc doesn't even provide a way to specify the output path for the dump file (too bad, as reliable AST dumping could enable implementing ast-based-ccache (instead of preprocessed-code-based-ccache, for compilation-caching of preprocessor-less languages)).</comment></comment></comment>


Show HN: REST+GraphQL API for Doctor Who episodes, actors, directors, and more - <AUTHOR> https://api.catalogopolis.xyz/docs/ <comment><AUTHOR> This is a project I've been working on in my spare time. My goal is to use it to provide the data for a little app I'm building, but I'm having too much fun just adding facts to the API.</comment>


In 2017, learn every language - <AUTHOR> https://blog.bradfieldcs.com/in-2017-learn-every-language-59b11f68eee#.oys0e7tqo <comment><USER3> I definitely agree with the article that once you learn a good set of "archetypal" languages, then most popular new languages become easier to learn. It's a worthwhile exercise.

But at the same time, there are some _deeply_ weird languages out there. These contain some absolutely fascinating ideas. And if you follow the advice in the article to learn "every" language, then these languages will still surprise and perplex you.

\- If you go deep enough in Haskell that you stop being confused by monads and start being confused by "free monad interpreters", then Haskell will provide you with a nearly endless source of complex, powerful abstractions—more than enough for any 10 other research languages.

\- Mozart ([http://mozart.github.io/](http://mozart.github.io/)) is a concurrent logic language with a constraint solver. Even if you're familiar with Prolog and Erlang, this one's going to blow your mind.

\- Coq ([https://coq.inria.fr/](https://coq.inria.fr/)) is a language for formally proving the correctness of the things you compute. (You typically also write your programs in Coq.) There are also other, newer languages in this space. These languages have a steep learning curve, and they're challenging to work in, but they're extremely interesting.

Learning exotic programming languages is fun, and it means that you'll rarely be surprised by any new popular language. But despite this article's suggestion to "learn every language", you won't run out of strange new languages any time soon.

<comment><USER4> Spending some time learning Clojure, I feel, has had a measurable positive effect on the code I write. I'm considering something even more exotic for the coming year.

<comment><USER5> Haskell or Ocaml

</comment></comment></comment><comment><USER6> I'd like to disagree with the title of this blog post.

I did something like this in 2016, learnt Clojure, OCaml, Haskell, Go and Racket. Took Dan Grossman's excellent Coursera course on learning language fundamentals and paradigms across Ruby/ML/Racket. Though I can code basic to medium level toy programs in all these languages now I wish I had followed Dave Thomas' (of Pragmatic Programmer fame) advice of concentrating on only one language a year.

My advice would be pick only one language for 2017 and then think and code only in that language for the year (for your learning projects - of course you'll be using other language for your $DAY_JOB).

In 5 years you'll know how to use 5 tools really really well and your brain will be much better aware of which of these tools is the right tool for which kinds of problems.

<comment><USER7> You obviously did not read the whole blog post. He is talking about the importance of programming paradigms and the ideas behind programming languages that could lead to a more general understanding of new languages :) .

<comment><USER6> I did read the blog post and what Im saying is that I think the end goal of being able to understand the different paradigms that different languages bring to your understand/repertoire - would be much better served by - <USER2> just sampling a whole bunch of languages in 2017 - but by thinking in just one paradigm a year and then going on to the next one the next year.

<comment><USER8> I think this really depends on what your background is and what your personal expansion of "understand" is. Assuming a cold start (which would never actually be case), with your approach it would take seven years to get through eg. Assembly, C, Java, Haskell, Prolog, Factor and and J. Obviously you would have a better understanding of each paradigm and their strengths, weaknesses and tradeoffs after seven years of study than someone who tries to get through all seven in 2017. But that person will have a much better understanding of all seven paradigms in one year, whereas you will have no basis to compare the single language you've learned in that year to anything else.

</comment></comment></comment></comment><comment><USER9> Loved this! To be honest I think the more you learn, the better for you but I would even disagree of learning everything since then you can't specialize as much as other people. I'd say, it depends on what you look for. I've seen successful people who are savvy in lots of fields but I've also came up to meet people who are really good at just a couple of things :) And I say this because I believe it's not only about the quantity of languages that you know, but also how it's gonna be implemented, a developer that knows about business is in my opinion really valuable and difficult to find.

</comment><comment><USER10> "It's about understanding the common paradigms and implementation patterns so as to be confidently language agnostic."

Essentially, which are these few common paradigm languages that teach you more than 90% of what's out there? My guess would be to include something like C and LISP, but is that enough?

<comment><USER11> Here are my recommendations, each category has a really different programming paradigm than the others:

* Procedural: c / pascal / basic / fortran

* OO: c++ / java / c#

* Dynamic: python / ruby / javascript

* Funcional: lisp / scheme / clojure / haskell

* Logic: prolog

* Query: SQL

* Assembly

Learning something of each category should prepare you for almost everything!

<comment> david-given C++, Java and C# aren't really object oriented languages --- they're scalar languages with object systems bolted on. The giveaway is that they're full of types which aren't objects; ints, pointers, floats, booleans, etc. These are handled and implemented entirely differently to the object types. e.g.: compare a Java int (a scalar type) with a Java Integer (an object type).

In a proper object-oriented language, _everything_ is an object, including these. That allows you to do some really interesting things which are at the heart of the OO mindset. e.g. Smalltalk avoids having to use conditionals almost completely via dynamic dispatch:

        b ifTrue: [ 'b is true!' print ]

b is a Boolean; ifTrue:block is an abstract method called on Boolean. But the values true and false are actually instances of subclasses of Boolean; True's implementation of ifTrue evaluates the block, and False's doesn't, and that's how you get different behaviour depending on whether b is true or false. The core language neither knows nor cares that booleans are special.

(Actually, the bytecode _does_ care, and has special accelerated opcodes to make operations of booleans fast for performance reasons, but that's just an implementation detail.)

<comment><USER12> Luckily I first encountered "OO" after having already learned the concept of structs/records in Pascal, this way I did not have to seriously entertain the idea that simple scalars oughta be anything-but..

</comment></comment></comment></comment><comment><USER13> The problem with learning numerous programming languages with the implicit hope of learning about various programming pradigms is that it's not a focussed approach. Instead explicitly set out to learn different programming paradigms and hopefully avoid languages which have an overlap of programming paradigms.

So instead of "In 2017, learn every language" I would say "In 2017, learn every programming paradigm".

<comment><USER14> While I'm ultimately not a fan of the books themselves the "Seven Languages in Seven Weeks" series tries to do exactly this.

</comment></comment><comment><USER15> I am a person who LOVES to try different, new, exotic languages whenever I can. I usually try around 5-6 new programming languages (sometimes including frameworks) in a year.

My personal strategy is to try to learn enough of a language "to be dangerous". This means you can create working code with it, probably not 100% idiomatic, and probably reinventing the wheel in many ocassions.

The good thing is that it in my opinion the 80/20 rule applies here, as it takes 20% of effort to learn 80% of a (programming) language. The largest benefit is that you are going to be able to try many different languages and decide if you want to keep digging deeper into it. Heck, maybe you love a programming language so much you would even accept a new job just because you want to program in that language.

For the record, in 2016 I tried Go, Rust, Clojure, Elixir, Crystal, Swift. My personal favorites this year are Clojure and Elixir. But all the other languages have their own niches with lots of potential. I'll be keeping an eye on them.

</comment><comment><USER16> Roughly understanding every language is admirable, but very different than being highly productive in a language. If I have to google syntax and packages to do every little thing like writing a for loop, I wont exactly be productive. He is very correct though - subtle differences in syntax often translate well to other languages and learning the general paradigms are the key point.

So yes, have a general knowledge of programming that applies to different languages with ease, but focus on getting very productive with the language that you use all the time. For me, my focus is dictated by my work: primarily VBA, Matlab.

</comment><comment><USER17> The missing puzzle piece here is that languages also imply APIs and Frameworks - which are beast in themselves. Rails is mentioned in the article. Understanding Rails, in context of a serious application, is a huge piece of work... And in many ways very different from knowing Ruby as a language.

If you're going to learn a language you probably want to learn a canonical framework for that language... which can be a much bigger (and maybe rewarding) process.

</comment><comment><USER18> Likewise I've learned to use every carpentry tool. Unfortunately many of 'em tend to shatter when I hammer a nail with it...

</comment><comment><USER19> So funny anecdote, I once asked a candidate which programming languages he knew and he replied "All of them, BASIC, FORTRAN, and COBOL." :-)

More seriously though the point in the article is solid, all computers have broadly similar architectures and the number of concepts needed to express computation on those architectures is finite, so starting with a language in each "category" of expression and and then adding additional languages in each category can quickly teach you the essence of computing. At that point a new language can be quickly picked up and mastered once you've mapped the essential concepts to the idioms of the new language.

</comment><comment><USER20> Love it. Many years ago I read some advice somewhere to "learn a new language each year". And while I'm something of a language junkie, I never actually stuck to that. But lately I've been getting more aggressive again about adding new languages to my repertoire. In 2016 I spent a lot of time with R and Octave, and started brushing up on Python again.

Going into 2017, I've started spending a lot of time on Prolog just recently, and am hoping to spend some serious time on Scala and Figaro soon.

How valuable all this is from a career standpoint can be hard to quantify, but if nothing else it's just plain fun to learn new approaches and new languages.

</comment><comment><USER21> On top of this one, there's another discussion of this article on Lobsters that the author is participating in:

[https://lobste.rs/s/peldje/2017_learn_every_language](https://lobste.rs/s/peldje/2017_learn_every_language)

Has some recommendations, reviews, & critiques on various books & learning strategies people here might be interested in. Here's a repost of my comment on the article:

"Consider a Scheme resource like How to Design Programs for its combination of easy modification of syntax and DSL's. Additionally, OMeta, TXL, or the original paper on Meta II for transformation-based languages. Paul Morrison's stuff on flow-based programming. Hit them with Datalog or Mercury on declarative side on top of whatever foundational logic they learn so they see its practical power. Formal language like Coq with Chlipala's Programming with Proofs might be icing on the cake so they can see programs get engineered from precise specifications with provable correctness. Should come in handy in debates on whether programming is engineering or not. ;) Lightweight version of that would be SPARK Ada that can automatically prove aspects of imperative programs due to clean design. Or design by contract with that, Ada 2012, or originator Eiffel. If doing parallelism, show them an inherently parallel language like X10, Chapel, or ParaSail. Erlang should come up if we're talking high concurrency and reliability in same sentence."

</comment><comment><USER22> Being pedantic, what does he mean by "learn"?

I'm sure I could look at Go code and roughly explain what it does, or take a problem and roughly explain how to do it in Go.

I'm sure it would take 3 months of misery or 3 months of practice for me to be able to write Go from scratch as quickly as Python.

And there's really no reason to learn 500 languages. There's barely reason to learn 10.

</comment><comment><USER23> similar HN discussion: 27 languages to improve Python[1]

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

</comment><comment><USER24> I noticed that we have

\- class abstraction

\- functional abstraction

\- syntactic abstraction

\- declarative specifications

\- parallelism

Where is _architectural abstraction_?

</comment><comment><USER25> nim-lang is my language to concentrate on in 2017

</comment><comment><USER26> I sort of did this a couple of years ago without exactly realizing what I was doing. I learned a bunch of languages and played around with them for fun. Many were functional, many were not. I deliberately tried to learn languages I felt would be different from what I already knew, so I didn't even touch languages like C# or Ruby. It was a fun few weeks, and I got a better mental idea of a general framework of thinking about languages. It was effectively the "go meta" thing (the wording of that section of the post really resonated with me) -- I stopped thinking of languages as their own special snowflakes to be learned, and instead each language was a cocktail of features I already understood, wrapped in their own special-snowflake syntax (which doesn't take long to pick up). At some point I implicitly understood that it wouldn't be much effort to be useful a new language if I wanted to. I was an idiot student back then, so I never consciously realized this I think -- it just affected my decision making (e.g. "I need to code in perl to add this feature to my irc client? Doesn't sound too hard.")

This exercise became immensely useful, because while it doesn't give you the ability to write new codebases from scratch in $randomlanguage without needing to put effort into learning it, it does give you the ability to make nontrivial changes to codebases in $randomlanguage by looking at the context.

An explicit realization of exactly what skill I'd gained came a few years later at one of my internships. My own project was in Java/C++ with some GLSL, all languages I had used before. The project itself was very interesting, but my manager was super busy and I was finishing work pretty quickly so I'd often have nothing to do. A fellow intern had a very large C# project that I found pretty interesting. Involved a server-side backend, client-side app, phone app, and a lot of communication between them all. This intern was very smart, but had never had the chance to learn new languages or the general concepts used in building such things. He was learning, but would often ask us (me + another somewhat-bored intern) for help. Now, I didn't actually _know_ C# at this point (none of us did). Never coded a line of it in my life. But I was able to pattern-match the code I saw with concepts I already understood and explain things. At some point I realized that I was _teaching_ my friend a language that I didn't know in the first place. This blew my mind, and I gradually had a conscious realization that I could do this with most languages provided they didn't bring something too radical to the table.

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

My personal list of languages I tell folks to learn are:

\- C++ because it has so many unique features. This usually covers for C as well. D may be a decent substitute since it has a lot of overlap with C++s features, but they're designed to better work together. I suspect that learning D will not let you automatically hack on C++ code without learning C++ first, but the reverse would be easier.

\- assembly

\- A GCd OOP language like Java or C#

\- Haskell

\- Lisp

\- Some flavor of ML. Rust or Swift can substitute here, but it's better to just pick up an ML.

\- Something for the GPU (GLSL)

\- Something with affine/linear types (Rust?)

\- Something with dependent types (Idris -- I have yet to properly dig into this one myself)

\- Javascript. Also has a lot of interesting bits.

\- Some dynamically typed scripting lang like Python or Ruby.

It's important that you cover programming styles, not just features -- e.g. Lisp is there not because of its features, but because of the way you program in it.

</comment><comment><USER27> _" After learning a few more languages myself, I came to realize that they were all less diverse than I had anticipated. After some more study, I started appreciating some of the underlying models of computation and programming language theory that make most languages look like different versions of the same basic ideas."_

Yep despite all these language wars, they all really are the same ~10 ideas shuffled around in a different priority queue (type safety over dynamic, camel case over snake case, AOT over interpreted etc).

I'm surprised the author advocates learning new languages after this insight, especially Rust and Go which are again just a reshuffle of the status quo (followed by the need to re-create everything in said language once again).

Instead of just re-learning the same ideas over and over under different names, how about do something actually productive in 2017...

<comment><USER28> There's no way you can maintain that when you compare very different languages to one another, e.g. Scheme, APL, Haskell, Smalltalk, Go, Forth and Prolog. They're all such different ways of telling the computer to do something, that it isn't just the same 10 ideas being shuffled around.

<comment><USER27> Starting from a C# background:

Scheme - prioritized a 1:1 between syntax and the AST. Reshuffle the syntax, remove the explicit type system.

APL - prioritized arrays.

Haskell - prioritized FP. Also introduced primitives to make things possible with FP that you could do with OOP already (Monads etc).

Smalltalk - prioritized OOP.

Go - prioritized Concurrency.

Forth - prioritized Stack based.

Prolog - prioritized Stack based.

Really isn't that much insightful difference between these languages as you'd think. Not taking away from their history, but you gain nothing from learning them.

<comment><USER28> That's a really simplistic way of thinking about language differences. Saying that Smalltalk prioritized OOP is saying nothing about how Smalltalk is different in all sorts of ways from Java, or how Self and IO are different from both by doing away with classes, but closer to Smalltalk than C++. An important addition with Smalltalk and Self are the environments they live in, which are very different from most programming environments. Smalltalk was designed to be part of an image-based GUI, with modification of live objects, which includes the entire image, instead of text in files and folders, which are separate from whatever editor is being used. That's a huge difference (whether one prefers it or not).

And with APL, you leave it the not-so insignificant ability to use any character one wishes, which is again very different from most programming languages (whether one prefers it or not). It's not insignificant that an APL program looks nothing like a program in most mainstream programming languages.

<comment><USER29> I recommend an APL offspring to someone who wants to expand their horizons, rather than APL itself: K (or a variant thereof), or J. No special chars needed.

J used to be the only freely available, and with better documentation -- however, it is also a larger language. It seems that recently the K dialects (oK, klong, kuc, kerf, xxl) are plentiful, freely available and well documented.

It is also my experience that K is less frightening to most people - J uses e.g. curly braces independently as operators, which looks a-priori broken to most people (rather than just unintelligible like K does).</comment></comment></comment></comment></comment>


Ask HN: How do I dress better? - <AUTHOR> I have been a hoodie and jeans kind of guy for a long time.
But now that I graduated and started working as a developer, I feel that my attire might be getting in the way of being taken seriously.
Do you have advice (or service) that would help me up "my game" without seeming that I try too hard? <comment><USER4> I would recommend keeping your current style if you don't want to try to hard, and simply tweaking it with new items.

For example -- keep wearing jeans, but buy a couple pairs of nice, dark/black well-cut jeans.

Instead of wearing a sweatshirt hoodie, wear a nice pullover sweater (H&M sells a nice waffle-texture sweater for fairly cheap, I got mine on clearance for $5 and I've worn it for years now).

Button-ups can easily look too formal, but flannel is a good middle ground.

Some nice-fabric solid-tone tshirts are a good basic, as well.

Now that you have a few pieces, you can mix-and-match as well. Sweater + flannel underneath, unbuttoned flannel with tshirt underneath, etc.

For shoes, instead of wearing cheap running shoes, find some nicer-looking neutral-color sneakers (might be worth looking thru [https://www.reddit.com/r/Sneakers/comments/2e9b1o/we_should_...](https://www.reddit.com/r/Sneakers/comments/2e9b1o/we_should_create_a_guide_to_buying_casual/), but I can't vouch too hard for it). Depending on your style, you might also want some boots -- I have some big black Doc-esque boots that I love, but brown is a less-punk choice that's a classic.

FWIW: I'm not a guy, but this advice is pretty gender-neutral.

Good luck!

<comment><USER5> Same thing, I'm a TShirt + Jeans type person and didn't understand this at first.

Make sure the jeans you have don't have holes / rips in them. Get some new TShirts - don't wear older / faded ones.

Make sure what you wear is in good condition, and you should be good.

If you're not happy in boring shirts, then there are some that have prints that are a bit more interesting. Similarly for shoes; I tend to really not be keen on average brown / black - but blue suede was OK.

Obv not saying to wear those exact things, but if you have a look around you can find stuff you like a little even in styles you might not like over all.

</comment></comment><comment><USER6> \- Start with the philosophy of having a few clothes of high quality rather than a lot of clothes of low quality.

\- Fit is the most important thing. Get a few shirts and a basic suit made to measure. You can do this fairly inexpensively via sites like [https://www.indochino.com/](https://www.indochino.com/). I charcoal grey suit, a white shirt, and a light blue shirt are a great way to start.

\- Understand the differences between style and fashion. Fashion is a never ending treadmill of mindless consumerism, constantly prompting you to buy new clothes. Style is about dressing timelessly.

\- It's hard or go wrong with a nice pair of brown, leather soles shoes. I like Allen Edmunds: [http://www.allenedmonds.com/](http://www.allenedmonds.com/).

\- Read PutThisOn: [http://putthison.com/tagged/Best_Of](http://putthison.com/tagged/Best_Of)

<comment><USER7> >You can do this fairly inexpensively via sites like [https://www.indochino.com/](https://www.indochino.com/).

Are there similar shops but EU-based?

</comment></comment><comment><USER8> Girls have always said to me that the key thing is to get clothes that fit properly - this means asking help from fitters at the clothes shops and trying on LOTS of stuff till it looks and feels right. Take alot friends who are girls who are interested in fashion.

Find "your colors" \- i.e. general color directions that look good on you. Ask people (typically women because they tend to be interested in such topics) what colors they think would suit you.

I made a decision a long while back to never wear tshirts again. After a certain age they look sloppy, not cool. I always wear a collared shirt. Equally I never wear short sleeved shirts - I roll up the sleeves of long sleeved shirts on hot days.

Get some nice brown leather shoes and some nice black leather shoes.

If you live in a cold climate buy several smart jackets including some leather jackets.

Other people here have suggest flicking through mens fashion magazines like GQ for ideas.

Start noticing what smart looking men are wearing.

Get several high quality white collared shirts and several high quality black collared shirts, these will go with a nice pair of slacks.

Buy a suit and not a cheap one - get it properly fitted and try on at least six suits before you buy one - wear it without a tie when you are going out with one of the white or black shorts mentioned above.

Accessorize - get a nice watch and belt.

Keep your hair regularly cut.

Don't buy cheap clothes - this is important. Having said that, do buy quality clothes that are on sale, or find factory outlets that sell the high quality brands at lower cost.

<comment><USER9> WRT short sleeved shirts: The Apollo-era NASA engineers pretty much all wore short-sleeved white shirts, black slacks, and a black tie. The image has stuck in many people's heads as what a professional engineer should look like, even younger people who've seen movies about the era like Apollo 13. It's also still a popular style at NASA for looking professional (photo ops and such).

Of course the reasoning for short sleeves is that graphite dust would stain long sleeves. Likewise for a black tie. Since drafting using pencils is pretty much nonexistent these days the need for the style is gone. Now it's just used to project an image of competent professional engineering.

It's also much more common among engineers in disciplines where they could get a PE than among programmers. Code monkeys don't match, sparkies and gearheads do.

</comment></comment><comment><USER10> This worked like a charm for a friend of mine in college: Go to a clothing store and buy exact sets of clothing off of the mannequins that you see.

He knew literally nothing about fashion, but was consistently complimented on his clothing.

<comment><USER11> This is a surprisingly good approach especially at stores where the person dressing the mannequins has some sort of clue.

The only downside is you will often end up with sets of clothes that can't be mixed and matched well.

<comment><USER12> Another downside is that you will mostly buy the most expensive clothes in the shop.

Yet another one is that you will often buy clothes very specific to that year's collection and will look outdated soon.

Mannequins rarely are with the cheaper and/or classic clothes.

<comment><USER11> Yes this is true, but neither of these are a huge problem if you just want to look fashionable and have the money.

My actual advice is buy the clothes with the best quality fabric.

</comment></comment></comment></comment><comment><USER13> It really depends on your office environment. In most companies in the bay, a hoodie and jeans are completely fine and it will likely be distracting if you dress 'too nice'.

Take cues from how most people dress in the office and target that level of formality. If most people are t-shirt and jeans, just stick with what you're comfortable in. If most are jeans and a button-up shirt, do that.

Yeah, it's conformity, but if you're concerned your attire is affecting your perception, the easiest way to fix it is to match everyone else.

<comment><AUTHOR> I work in the south of France and not in the bay. Here everyone looks like they work part-time model.

</comment></comment><comment><USER14> Caveat: I'm currently in the process of losing a lot of weight and really looking forward to hitting target weight and then getting a new wardrobe of good fitting stuff. It should be an adventure, and you don't need to do anything that other people tell you, but do take advice. That said, I dress like a sack of potatoes right now, so take this with a pinch of salt:

Lots of good advice here, and basically buying more expensive jeans and hoodies that fit you better is going to be a start. Dark/black jeans and a really good hoodie that fits you well is not a terrible idea. Pair it with great sneakers. Then, start to expand into other clothes _if you want to_.

I'd also suggest taking a look at [https://www.reddit.com/r/malefashionadvice](https://www.reddit.com/r/malefashionadvice) \- particularly the advice linked in the sidebar starting with the "Step by step intro".

They will suggest: really think about your style and realise dressing well != dressing formally and vice versa; wear stuff that fits properly; buy one really, really good foundational item (like a really good pair of jeans), and build from there; colo[u]r matters; learn what clashes and what doesn't; try things and see if you like it or not.

To get to the next step from where you are, there is nothing wrong with sticking with hoodies and jeans, but you could consider chinos, semi-casual shirts, polo shirts, jumpers or sweatshirts. Try new things, figure out what you like and don't like.

<comment><USER15> Typo should be [https://www.reddit.com/r/malefashionadvice/](https://www.reddit.com/r/malefashionadvice/) ;)

</comment></comment><comment><USER16> [https://www.reddit.com/r/malefashionadvice/](https://www.reddit.com/r/malefashionadvice/)

</comment><comment><USER17> "Nerds don't just happen to dress informally. They do it too consistently. Consciously or not, they dress informally as a prophylactic measure against stupidity." \- Paul Graham

<comment><USER18> That quote may make sense in context, but dressing informally will certainly not prevent stupidity.

<comment><USER19> Indeed, and it could be seen as a form of conformity.

"Look at me. I'm not conforming. Just like everyone else."

</comment></comment></comment><comment><USER20> This is hacker news so take it all with a grain of salt but I found that buying clothes that fit, and just buying and trying a lot of stuff to see what worked over a few years led to a massive improvement. I think if you just follow a guide that tells you specific things you will feel weird and get stuck. I'm not saying you should ignore the "rules". I just mean you have to put in some effort and try a lot of stuff. Imitating people you think look cool is an easy way to start and will get you half way there

<comment><USER20> Don't overdo the Reddit male fashion advice

<comment><USER21> Take this advice over anything. I'd rather work with a hoodie and jeans kid than someone who buys into 80% of the trends they get into over there.

</comment></comment></comment><comment><USER22> A friend of mine is running this: [https://lookastic.com](https://lookastic.com) play around a little with it.

You can also get inspired by celeb's styles: [https://lookastic.com/men/celebrities](https://lookastic.com/men/celebrities)

And don't get shy to ask some fashion lover girl to escort you on a shopping spree. But why stop here, you can hire a stylist and figure out what fits your personality.

</comment><comment><USER12> Emulate the style of someone on your work environment you consider is taken seriously _and_ with a style that you personally like.

Fashion changes a lot from one group of people to another. That's why it is important to emulate someone from the same group.

Emulate is important, as you don't want to copy and look exactly the same.

That you like is important, because it shows when you are not comfortable on some clothes. Wearing something you don't personally like would be "trying too hard".

</comment><comment><USER23> Thread (YC12): "Let one of our stylists help you find clothes you'll love. All online and completely free. ". [https://www.thread.com/](https://www.thread.com/)

</comment><comment><USER24> What I found helpful was watching videos by Antonio Centano [https://www.youtube.com/user/RealMenRealStyle](https://www.youtube.com/user/RealMenRealStyle)

I'm going to presume you are male... not trying to be sexist, it's just a guess. If you are female I don't think this advice will be helpful (women seem to have it a lot harder when it comes to these choices, esp. with what is suggested by Antonio, which is largely ignoring current fashion).

He teaches the difference between classic style and fashion, and focuses on the former. While many of his community are probably interested in dressing way more formally than you are (and frankly seem to long for time when it was more socially acceptable for men to wear suits everywhere), he teaches principles, which can be applied to many different styles of dress.

The older videos are more fundamental and tend to be better IMO.

</comment><comment><USER25> It sounds like you don't have a particular style in mind, so based on that assumption:

(1) If you go to a nice department store like Nordstrom, I believe you can still make an appointment with a personal shopper. That might be the best way for you to try new styles while also getting to feel the fabric in advance and get clothes that fit you well.

(2) If there are people you think dress nicely in a way you'd like to emulate, compliment them! They'll appreciate it. They might tell you where they got the outfit. And if not, you can ask.

(3) If you go to a clothing company's website like JCrew.com, they'll have a lot of pictures of people wearing full, stylish outfits, that might start to give you ideas about how to put your own outfits together. On JCrew I believe they even have a page called "What to wear" with links to all the items in each picture.

Good luck out there!

</comment><comment><USER11> Unless you want to put a lot of effort into this then just buy clothes with the best quality fabric you can find (you can tell quality fabric just by feel).

Not only will your clothes feel great, as a side effect you will be stylish without being fashionable. Quality never goes out of style.

Edit. I should add that top quality fabric is never wasted on "fast fashion" so the clothes will always be a bit more conservative and so will remain stylish for longer.

This is one area where men have a massive advantage over women. As a man you can buy well made clothes with quality fabric for less than women pay for wear-once garbage.

<comment><USER26> How do you define best quality fabric?

<comment><USER11> Feel. Really all you have to do is go around and feel the fabric from a range of stores (from cheap to outrageously expensive) and you will quickly learn to be able to tell good from bad fabric. Once you know this go back through the stores and find the high- to mid-priced clothes with high quality fabric.

Edit. A lot of designers will make a limited number of items with fabric that is much better than the pricing point would suggest. My guess is they have dreams of being in Paris or Milan and so sneak in more quality than the collection calls for on a few items - the "yes most of my designs are compromised by commercial concerns, but look at this one shirt" effect.

<comment><USER26> Gotcha, but I believe from personal experience that there are tons of fabric blends that are cheap yet feel fantastic, how not to get tricked?

<comment><USER11> Well with experience you can tell the difference, but you can always look at the label if in doubt.

</comment></comment></comment></comment></comment><comment><USER27> I think it largely depends on context.

Then, clothing is a form of expression. It expresses an intention on how you want to be perceived (at a superficial level at least).

Regardless of style:

\- Pick clothes that fit your size well.

\- Some clothes may require some extensive ironing, especially shirts. If ironing is not for you, our you want to minimize your time ironing, have this in mind.

\- Some clothes may not be able to be washed using home appliances and may require dry cleaning, etc.

\- Colors and patterns matter can affect your perceived weight.

</comment><comment><USER28> I'm a Fashion Stylist who works in Silicon Valley and help a lot of guys in tech up their fashion game. Love some of the advice I'm seeing on this thread! Since I don't want to be repetitive, here are some other pointers to help give you some direction:

1\. Create a Pinterest board and pin some looks you like. This will help you get a general sense of what style you are into (here are some boards that I made for reference, first 9 are all menswear related: [https://www.pinterest.com/SupreetChahal/](https://www.pinterest.com/SupreetChahal/))

2\. Make a list of what you need based off the looks you pinned. For the modern guy look, your list will most likely consist of: jeans, button ups, chinos, t-shirts, polos, shorts, street shoes, dressier shoes; Fall/Winter or SF year round: sweaters, sweatshirts, jackets, boots

3\. Pick a color palette so you can mix and match your clothes. Your jeans and jackets will be neutral colors (navy, green, black etc.), but your shirts can have more color

4\. Make sure things fit you nicely (nothing worse than a guy wearing something too tight or too loose). Some stores offer free hemming for pants, take advantage!

5\. Find a good tailor (especially important for guys on the shorter side)

If this all seems like it's not worth your time, check Yelp for a Fashion Stylist/Image Consultant. We'll build you a wardrobe in a couple of hours and make sure you spend wisely. Most of my clients hate wasting time shopping, so I set up a change room full of outfits for them and all they do is try them on and buy what they love. Shameless plug, but if you want to read more about the process, check it out: www.stylebysupreet.com

Hope this was helpful!

</comment><comment><USER29> If you have any friends who routinely dress well, ask them to take you shopping. In my experience, they really enjoy it (that's why they dress well themselves), and would appreciate the challenge of helping you to look and feel your best.

Another approach is to go to a store that sells the kinds of attire you'd generally be comfortable in (i.e., the kind of store that sells attire for _people like you_ , and ask a shop attendant to dress you. Obviously there's a risk there that they'll just try and sell you overpriced stuff that doesn't suit you, so you have to be confident enough in your own judgement about what you'll feel good in, and be assertive enough to not let yourself spend more than you're comfortable with.

You could also just try browsing fashion sites online to find outfits that you like. But don't feel like you need to get fancy and complicated (and expensive). Just go for simple outfits made of good fabric and that fit your body shape well.

</comment><comment><USER30> I've been a Trunk Club customer for ~3 years. Expensive but worth it.

</comment><comment><USER31> If someone won't hire you to _write code_ based on how you _dress_ (assuming you aren't breaking any obscenity laws or wearing hate speech shirts etc) I would look elsewhere for work.

If you want to change your "look" that's up to you, but doing it just for a job is among the most depressing things I can imagine.

</comment><comment> dorian-graph \- Get the basics/staples.

\- Don't get any fad/trend items—i.e. ripped jeans are in (again) right now, but don't bother, just get a good pair.

\- Fit means everything.

\- Go for the 'uniforms' in the style you like (prep, street, or whatever).

\- Quality over quantity (this is often related to fit).

\- Dress to your body (not too tight or too loose).

\- Honestly, just go to [https://www.reddit.com/r/malefashionadvice/](https://www.reddit.com/r/malefashionadvice/) and go through the sidebar.

\- You can be incremental. Jeans are fine, just get ones that fit well, and get a pair in black. Swap the hoodie for bomber jacket or denim jacket. Get rid of your graphic t's and t's with slogans and 'funny' things.

\- It doesn't have to be expensive at all. You can go to H&M or J.Crew for your basics (white/black/grey t's), maybe a button-down (oxford) or two, and a pair of navy chinos. Don't ever get jeans from brands that do lots of things (like H&M, Zara, etc.). Even if you do this, jeans don't have to be super expensive—Levi's have good fits, then there's other ones like Nudie's, Cheap Mondays, etc.

\- Have some fun and experiment a little, but often you need to know the basics first to do this well (same for everything whether it be fashion, programming, art, or writing).

\- You can completely skip getting someone who dresses well to help you out if you just aim to build a solid, basic wardrobe, and can shop by yourself.

\- Always wear a belt. Get a simple tan leather one—you can wear it with navy chinos and shorts, black and dark blue jeans, etc. Get a simple watch. Go digital with a cheap Casio or analog.

\- Don't overthink it. Just go for solid basics.

<comment><USER32> \- Dress to your body (not too tight or too loose).

This also goes to things like stripes. If you're chubby, don't wear horizontal stripes. If you're short, wear vertical stripes to elongate you. If you're short wear waist or butt length jackets not long trenches. If you're tall, don't wear things that would elongate your lines, like wearing the exact same color through your shoes and pants. Silhouette is the term you're going to want to looking for in discussions.

\- Honestly, just go to [https://www.reddit.com/r/malefashionadvice/](https://www.reddit.com/r/malefashionadvice/) and go through the sidebar.

+1 at MFA, but take it as a getting started guide on fits, and then once you get fits down, explore your own style. Check their WAYWT threads for lots of pictures of fits. You want to have a versatile wardrobe, not one with a ton of clothes that you can only wear with one or two things. I'm a huge fan of /r/streetwear personally with a touch of the flavoring of MFA (like collared shirts, polos, non perfecto leather jackets) and a bit of Americana like flannels and boots.

Also SHOES! Shoes are super important. I'm a sneakerhead, but if you're into more officey/professional vibe, Allen Edmonds makes some terrific shoes. Broguing on a shoe is more informal than not, a good cap toe in black and brown will serve you for a very long time. For boots, the MFA recommended Wolverine 1000 Mile and Redwing Beckmans are fantastic and can be dressed up or down.

</comment></comment><comment><USER33> Man or woman, I'd ask a female friend for help. In my experience women have much better eyes for dress than men, for either men or women actually. See if you can't convince someone to come along shopping with you, the second opinion is very valuable.

<comment><USER11> Looking at most husbands I would disagree with this statement :p

<comment><USER34> One of the usual complaints women have about their husbands is that men don't take their fashion advice into account. Sometimes this gets to the level of women dragging their husbands into clothing stores to buy new clothes that are presentable.

</comment></comment></comment><comment><USER35> This sub helped me loads: [https://reddit.com/r/malefashionadvice](https://reddit.com/r/malefashionadvice). Thrift shops and eBay will get you quite far too.

Above all else, fit is the #1 thing that can make or break your look. Know your measurements. You can take them yourself with a measuring band from Michael's: [http://m.wikihow.com/Measure-for-a- Suit](http://m.wikihow.com/Measure-for-a-Suit). Proper fit can make off the rack clothes from Target look amazing and bespoke clothes from top clothiers look like shit.

Tailoring clothes is much less expensive than people think.

</comment><comment><USER36> This is an awesome question :)

Maybe I can offer some tips.

\- If you get leather shoes, I can recommend Cole Haan Zero Grand - [http://bit.ly/2sQPdMe](http://bit.ly/2sQPdMe) .. they are really comfortable.

\- For collared shirts, get the no iron ones and save yourself some trouble in the morning.

\- Stretch jeans can be a nice compromise between slacks and jeans and look something in between.

\- The last one may be seen as shallow.. but invest in a nice, timeless but not blingy dress watch (and a matching belt).. It pays over time and shows discernment

\- especially if its a corp job. You can buy vintage watches for pretty cheap.

\- Last tip.. (edit): go shopping with somebody else to challenge your own preferences and conventions.

</comment><comment><USER37> Much the same as any creative activity, thoughtful study and deliberate practice will take you a long way.

\- Look at what people wear when you walk around the street. Who dresses well? What do you like about their style?

\- Try on lots of different clothes, including stuff that you wouldn't normally wear. What works? What doesn't? Why?

\- Get a full length mirror. Look at yourself before you leave the house everyday. Take some time to try on outfits, how can you combine clothes you already have into new outfits.

\- Most important -> Have fun, and dress for your taste not what you think others want to see.

</comment><comment> bn-usd-mistake It was the same for me when I started my internship and now transitioned to full time. I found [Ashley Weston]([https://ashleyweston.com/](https://ashleyweston.com/)), who is according to herself a celebrity mens' wear stylist. She has a good set of essentials which I basically all bought (except for the suits due to monetary reasons) and I think this has really helped me.

I am not affiliated with her or whatever, just follow her advice myself and enjoy her content.

</comment><comment><USER38> Here's what have been working well for me. I wear dress pants (not jeans, not chino - Izod for example), colorful shirts (Nautica are my favorite) - <USER2> tucked in, good looking but comfortable shoes (not sneakers). I make sure they are always reasonably ironed. And silly socks - Happy Socks are the best. During the summer I use short sleeves, long sleeves in the winter if I feel like. I never use a tie, but you may if you feel like.

</comment><comment><USER39> I wouldn't worry too much about not being taken seriously in a hoodie and jeans as a software developer unless you're working at an extremely traditional company that doesn't have much of a focus on the dev org. Hoodie and jeans is pretty much standard.

If you'd still like to dress "better" in general, the /r/malefashionadvice subreddit has some solid resources on the sidebar that you should check out.

</comment><comment><USER40> Aside from what you wear, consider a tailor. It's a reasonably low cost, and a shirt tailored to fit you makes a huge difference in appearance.

</comment><comment><USER41> If youre getting a nice suit or a jacket, splurge and get a good one. I good fitted Ted Baker jacket and a custom tailored suit from JHilburn and they made a big difference in the looks vs say loose fitting clothes or off the rack one. I'd recommend JHilburn even for shirts if you can spend a little.

Also Nordstrom has a free stylist service if you want some advice.

</comment><comment><USER42> I sense an opportunity to build an AI generating clothing lines. At least for the buzz.

<comment><USER19> Try a clothing store with _exact_ color hex codes on the tags of all garments, and, software in which someone's skin tone and eye color are matched with one's appropriate seasonal color. Such a store would diagnose/prescribe a shopper's acceptable colors and said shopper would choose items using the color hex code on the tags.

This could be an entirely online operation, too, given a smartphone app and a web store which provided access to the color codes for each of the garments.

See the book "Color for Men" by Carol Jackson for more details on seasonal color theory.

Send me a couple hundred if it ever gets off the ground.

</comment></comment><comment><USER43> My SVP wears ratty t-shirts from high school and cargo shorts. 5000 person organization. Your wardrobe is not necessarily a limiting factor. Attitude and confidence goes a lot farther.

</comment><comment><USER44> There's an echo for that

</comment><comment><USER45> Added an up-vote for previous comments about quality and fit. Both points are absolutely critical. To expand on those points:

1\. Dress for who you want to be (and what you stand for) - I've found it helps to approach fashion the way you do your career. It's all about investing in where you're headed next. Your clothes are the first layer of who you are and if you think about it, it's awesome that you get to invent that every day. Pick a few things that feel like they reflect your identity (both current and aspiring) and go all out. Even if you don't dress like anyone else, you'll dress like you and more likely than not, that level of comfort will evoke a sexy kind of confidence.

2\. Gather top-notch basics first - Grab yourself a nice pair of jeans and a white t-shirt that fits just right. Do a good job on this and already, you'll look better than most people.

3\. Those basics will take you a long way - Stepping up your style game isn't about volume, it's about quality. Unless you're going for a dandy look or something to that effect, your approach to fashion should be aligned with the owner of a minimalist Tiny House. Everything you buy, from basics to accessories, should be beautiful, functional, comfortable and long-lasting (e.g. quality).

4\. A versatile blazer or good looking jacket will take you everywhere - <USER3> one or two that look sharp and feel comfortable. You want something that's as easy to turn to as your favorite hoodie. Speaking of hoodies, grab a nice sweater or two.

5\. Eliminate barriers - Everything you buy should be as easy as possible. For example, buy non-iron dress shirts. That way you don't have the "I don't have time to iron" excuse for not dressing up.

6\. Shoes maketh the man - Someone once told me every good man needs two things. An excellent bed and an excellent pair of shoes. If you're not in one you're in the other. Get some good comfortable oxfords and a pair of nice leather low-top sneakers (think Common Projects) for the weekends. Keep them clean, unless you're specifically going for a worn look.

7\. Nice workout clothes make a difference - Odds are, you'll go somewhere before or after the gym. Invest in nice workout clothes. I spent years wearing my college athletic gear to the gym and thought it made me an "authentic athlete." Really it just made me messy, and the second I started investing in good-looking athletic clothes I realized it makes a difference. My new gear made me realize I should invest thoughtfully and opt for quality in everything I do.

If you're interested in learning more and want to talk menswear, message me. I'm obsessed with men's fashion and have done some makeovers for friends. Not selling anything here, just happy to help a fellow person who wants to be better.

</comment><comment><USER19> Try this recipe:

6 Brooks Brothers 100%-cotton oxford cloth button down (OCBD) traditional fit shirts in blue (always tucked in). 2 pair Wested Indiana Jones calvary twill wool trousers hemmed to your length at the local dry cleaner. 1 pair Alden 405 boots in the standard brickish red. 7 pair Merino wool socks. 1 Brown canvas web belt. 1 AO Optics original pilot sunglasses. 1 JPress, Southwick, or Samuelsohn tweed "sack coat" in brown for cooler weather (should be natural "soft" shouldered, understated pattern, and without aggressive, sleazy Italian styling in the midsection).

Replace shirts as needed (~every two years). Dry clean trousers _only_ when needed (each pair can last ~5 years). Boots should last >10 years with heel savers and ~1 resoling per decade by Alden. Good brand of merino socks can last upwards of three years, possibly five. Sport coats will last indefinitely (leather patch on the elbows if they get thin).

Wear the above (or your own variation) until it becomes a second skin, and, learn to enjoy the patina that comes with better made clothing which ages gracefully.

</comment><comment><USER46> Just replacing your hoodie with a tahirt would do a lot. The next steps are replace sneakers with more adult shoes (Eccos for example, or another brown shoe) and replace the t-shirts with button shirts and undershirts.

Honestly though I'm 40 and I wear jeans and a t-shirt. I've been working as a developer for 20 years. When I started the jeans and a t-shirt thing was not accepted like it is now.

</comment><comment><USER47> Buy nicer jeans and designer hoodies.</comment>


Ask HN: Why do I have to type print "x: "+str(x) in Python? - <AUTHOR>

Why can't Python just be smart enough to cast x automatically (like every other language I work with)?<p>I imagine there is a not-bad reason, as Guido is pretty damn smart, but it's beyond me. <comment><USER2>
        >>> x = 1234
        >>> print "x:", x
        x: 1234

<comment><USER3>
      >>> print "x: "+x
      Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
      TypeError: cannot concatenate 'str' and 'int' objects

To my mind, "x: "+x is ugly. Perl style "x: $x" makes more sense. But I don't speak python, so my opinion is meaningless.

<comment><USER4> It works if you use a comma, like the comment you replied to.

Python 2.6 introduces string interpolation like Ruby/Perl. (Older versions used printf-style format strings.)

      print "x: {x}".format(x=1234)  # New in 2.6

      print "x: %d" % x              # Old

[http://docs.python.org/tutorial/inputoutput.html#fancier- out...](http://docs.python.org/tutorial/inputoutput.html#fancier-output- formatting)

<comment><USER5> To be fair, that's not quite the same as perl/shell-style interpolation.

In perl, "$x" pulls the value of $x from the variable namespace. In your Py2.6 example, the "{x}" format in the string has nothing to do with a variable named x; rather it references the keyword args supplied to format.

To simulate perl's

      print "x: $x";

you would

      print "x: {x}".format(x=x)

</comment></comment></comment></comment><comment><USER6> You haven't work with that many languages, have you :)

>>> x = 3 + "7"

What type should be x now: int or str ?

Also: "10" is lesser than "2" but 10 is greater 2.

Should (3 + "7") > 2 return true ?

Such automatic conversions forces you to remember many arbitrary rules, and when you forget it, you have bug that shows later.

It's easier to just write that str() (or use operator %).

<comment><USER7> He converted to string before he attempted the add so it isn't a strong type vs weak type issue. It is a they haven't overloaded the + operator to perform string append. Which may or may not be logical.

<comment><USER6> Poster asked why he has to type print "x="+str(x). I assumed he would like to just type print "x="+x.

For that code to work str.__add__(self,x) should accept int as parameter x.

If that was the case, then "3" + 7 would return "37" (ok, I've thought it will be "10", my bad :)), but 7 + "3" would still cast exception. So + would be not symmetric.

<comment><USER4> Of course, str.__add__ is already asymmetric, since "3"+"7" != "7"+"3"

</comment></comment></comment></comment><comment><USER8> If you want Python to "be smart enough to cast x automatically", then you want a weakly typed language. Weakly typed languages are difficult to reason about.

For example, should "3" == 3? Should 3 automatically be converted to "3" in that instance, or vice-versa?

Anyway, a better solution is: print "x: %s" % x

</comment><comment><USER9> See <http://www.python.org/dev/peps/pep-0020/>:

      Explicit is better than implicit.

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