hacker news with inline top comments    .. more ..    18 May 2017 News
home   ask   best   10 months ago   
Learn Kotlin in Y Minutes learnxinyminutes.com
133 points by jakub_g  1 hour ago   75 comments top 14
jorgemf 32 minutes ago 2 replies      
I like kotlin a lot, but suddenly there are a lot of articles in the front page about it. Kotlin isn't more cool because Google announced yesterday it is going to use it in Android. Kotlin is the same good language it was 2 days ago! (rant over)

If you want to learn kotlin go to the official docs and tutorial, they are as good as the language:


And you don't need to install anything as you can try it in the browser:


coldpizza 49 minutes ago 10 replies      
> Declaring values is done using either "var" or "val". "val" declarations cannot be reassigned, whereas "vars" can.

I wonder why they decided on these very mistakable names. Why not const/constant/cons/whatever else just as long it's distinguishable from each other?

grabcocque 1 hour ago 0 replies      
It looks like there's been a very conscious effort to strike a midpoint between Java's familiar clunkiness and Scala's hipster experimental side.

I think that's a good thing, you end up with a language that feels pragmatic and powerfully practical.

shubb 1 hour ago 3 replies      
In terms of why we'd want to, there is this note here:https://kotlinlang.org/docs/reference/comparison-to-java.htm...

Other factors to consider are tools support, how often interoprability with java libraries causes problems. Would be nice to hear from someone who has used it a bit about what the state of these is?

eranation 29 minutes ago 0 replies      
Been watching Kotlin for a long time. Usually it pops out when I talk about how great Scala is, and I get Kotlin as "what Scala should have been". I have been avoiding using it at work instead of Java/Scala just because Scala had more "buy in" and it was easier to convince people to try it. Now with the new Google/Android (and HN) love, this is the perfect time to give it another try.
notamy 1 hour ago 1 reply      
Honestly I could never really get into Kotlin. I like the features of the language - and would love to have many of them in plain ol' Java - but the syntax just feels wrong to me and I've not been able to get over it.
subsidd 1 hour ago 3 replies      
Kotlin's taken over HN.
skdotdan 1 hour ago 0 replies      
Kotlin is the new Swift/Golang #hype
seanalltogether 55 minutes ago 2 replies      
Does it have an equivalent to Swifts if let clause?

 if let person = selection?.organization?.owner { setTitle(person.name) setImage(person.image) }

leshow 35 minutes ago 1 reply      
Does Kotlin have algebraic types? Possibly via sealed traits or the like, similar to Scala?
maaaats 1 hour ago 1 reply      
Kotlin is more than just simpler java-syntax, though. If you want to really take advantage of it, there's new idioms, you can use it as a typesafe dsl etc.
k__ 43 minutes ago 0 replies      
I have to damit, I wish Ceylon would have won, hehe.
_pmf_ 51 minutes ago 1 reply      
I'm a bit disappointed that there's no metaprogramming support in Kotlin. Even Groovy had some AST-level transformators. Maybe we'll get some high-level API for writing APT-level tools in Kotlin itself ...
alexfi 1 hour ago 1 reply      
Kotlin - The Force Awakens
One Step Closer to a Closed Internet mozilla.org
24 points by Vinnl  1 hour ago   2 comments top
AndyMcConachie 6 minutes ago 1 reply      
"this decision leads to an internet that benefits Internet Service Providers"

I would correct this to:"this decision leads to an American internet that benefits Internet Service Providers"

The FCC can really only screw up the Internet for Americans. If you're an Internet user not in North America there's very little reason for you to care about the decision the FCC made today.

Flang A Fortran compiler targeting LLVM github.com
92 points by swills  4 hours ago   72 comments top 9
kxyvr 3 hours ago 2 replies      
One other nice benefit to this project is determining name mangling schemes when linking to other Fortran projects using a pure LLVM toolchain.

Say we want to use BLAS and LAPACK in a C/C++ project that uses clang as the compiler. All we have to do is write the appropriate prototype for the LAPACK function in C and then link to BLAS/LAPACK. That said, there are four different name mangling schemes that the BLAS/LAPACK could use, which are combinations of upper case or with trailing underscores, e.g. gemm, GEMM, gemm_, and GEMM_. Both Autotools and CMake will determine the mangling scheme for us, but they need a Fortran compiler to determine that. Right now, that's almost always GFortran. With this project, it could ostensibly be Flang, which would eliminate the need for GCC to determine the mangling if a pure LLVM toolchain is desired.

neurostimulant 3 hours ago 6 replies      
Can we use it along with emscripten to compile fortran programs to js?
ch_123 2 hours ago 0 replies      
Judging by the copyright notices in the files, this is probably the PGI-Fortran-on-LLVM compiler that was announced a year or two ago - https://www.llnl.gov/news/nnsa-national-labs-team-nvidia-dev...

EDIT: Confirmed - https://developer.arm.com/-/media/developer/developers/hpc/f...

nonsince 3 hours ago 1 reply      
Ok, so the only reason anyone's using Fortran is for crazy speeds, what's the codegen like compared to gfortran?
santaclaus 48 minutes ago 0 replies      
How easy is it to do OpenMP from LLVM front-ends, at the moment? Fortran without OpenMP would be a bit limiting.

Edit: It looks like Clang 3.8.0 supports OpenMP, so this should be doable.

rhabarba 16 minutes ago 0 replies      
Now how about a COBOL version? :-)
tachyonbeam 3 hours ago 1 reply      
Am I the only one who thinks that Forlang would have been a better name? ;)
hawski 3 hours ago 2 replies      
Is it sensible to implement math heavy part of C application in Fortran and call it via FFI? Or is -Ofast enough in most cases without the costs (multiple, because performance may be one of them) of FFI?
walshemj 2 hours ago 4 replies      
what advantages over gfortran does this have and if its performance why not just pony up for the intel fortran
Microsoft to Deliver Microsoft Cloud from Datacenters in Africa microsoft.com
90 points by el_duderino  5 hours ago   48 comments top 10
madiathomas 2 hours ago 1 reply      
I am hosting my SaaS site using Google Cloud. All my clients are based in SA. I chose Google Cloud after experiencing very bad service from Azure. I won't go back to Azure, even if they build the datacenter behind my yard. I love the pricing and simplicity of Google Cloud. Ironically, my site is on Microsoft .NET stack, but I still don't trust Microsoft with hosting my site.

I hope Google and AWS will follow suite and build datacenter in SA.

niftich 1 hour ago 2 replies      
A month ago on the thread about AWS opening up a region in Sweden, a discussion ensued [1] about the lack of major cloud provider datacenters in Africa.

I wrote [2] that a good site in Africa would be challenging, because one would have to "pick a spot touched by more than one thick pipe, in jurisdiction known for political and civic stability and a regime with rough compatibility to the ideology and national security apparatus of western allies -- their home base and primary source of customers; receptive and promoting of foreign investment, and having access to multiple reliable, redundant power sources from which to draw energy."

While South Africa ranks high on stability and ideological compatibility, and reasonably on fiber [3], my understanding was that reliable and redundant utility power supply is a significant issue [4][5]. I'd be curious to see whether co-generation will be used to overcome these limitations.

[1] https://news.ycombinator.com/item?id=14031565[2] https://news.ycombinator.com/item?id=14035251[3] https://upload.wikimedia.org/wikipedia/commons/d/d4/Cable_ma...[4] http://www.fin24.com/Economy/SA-fears-dark-days-ahead-as-pow...[4] http://www.aljazeera.com/indepth/features/2015/03/crippling-...[5] http://www.aljazeera.com/indepth/features/2015/03/crippling-...

staticelf 4 hours ago 6 replies      
Cool. From what I know Africa is like the only continent so far without any datacenters from the major players. Correct me if I am wrong.

Glad to see things change and a small step into a more connected and peaceful world.

mozey 3 hours ago 1 reply      
I've never seriously considered using Azure, I'm quite happy with AWS. Problem is the closest zone to South Africa is EU. This might make me consider using Azure. I hope Amazon has similar plans in the works.
John23832 3 hours ago 0 replies      
I was just in a comment thread here where someone describe Africa as "a shithole" (their exact words ) when it came to hosting data centers. Glad to see that the people actual making decisions in tech have some rational ability.
outside1234 2 hours ago 1 reply      
What's hilarious is that Amazon's S3 service is literally developed in Cape Town. Amazing that they weren't first with this.
skc 3 hours ago 7 replies      
South Africa is pretty much the only country where this was ever going to be possible.

Perhaps Rwanda as well.

Uninterrupted power is a major challenge here on the continent.

jksmith 56 minutes ago 0 replies      
MSFT is starting to get it. Many startups are being funded for stupid projects that target the US and are based in SF. The future belongs to markets like Africa and S. America. They currently take about 6% each of world's total software market.
ramshanker 3 hours ago 0 replies      
No developer goes back to higher latency once you have tasted the smaller one !
Etsy is under pressure to start acting more like a conventional company bloomberg.com
150 points by marvinpinto  5 hours ago   139 comments top 19
MichaelGG 4 hours ago 13 replies      
Bizarre. I've only tried to use Etsy once, figuring it'd be a great place to get some sort of unique jewellery as a gift. It's filled with junk, both of the super-manufactured kind and of the "modern art" kind (someone glues 2 pieces of crap together and wants $500.) I haven't gone back, though I did enjoy the Regretsy blog while it was up.

>Etsys insistence on running its own servers rather than using cloud-based services and software offered by companies such as Google and Amazonan emphasis that was known, under Dickerson, as code as craft

That reminds me of the silly StackOverflow "if you are a real <hacker/programmer/developer/whatever> you must setup your own servers". There are certain benefits of cloud or not, but this kind of thinking confuses me. Why stop there? Do they build their own Ethernet cables? Racks? Make their own distros, compilers, etc.? Build their own network -- after all, your network is critical in delivering pages to your users, why outsource this to XO and Cogent and so on?

Edit: Yes, I understand the pricing differences of cloud. So just say "it's cheaper to run our own stuff", don't pretend its due to some desire for "craft".

>food scraps were packed onto a Dutch cargo bike, which an office ecologist would pedal several miles to a Brooklyn farm

It's like they want to parody themselves?

>Senior Engineer..."Im just allergic to capitalism"

But presumably not allergic to using capitalists money to hire people to bike your leftovers around town.

cowpewter 5 hours ago 2 replies      
Etsy first started losing their appeal when they gave up even pretending to not allow Alibaba resellers, and lost the "hand-made" distinction that made their site unique.

Currently they're going through a round of "let's alienate all the small unique sellers that are still using our service" by changing their payment policies. Sellers are being required to accept Etsy's payment processing, where before accepting Paypal was sufficient. Signing up for Etsy's payment processing requires giving Etsy a whole bunch of private information that a lot of sellers (at least in the internet circles I run in) are not comfortable giving out to Etsy, especially sellers that do not live in the US.

Etsy is quickly losing the sellers that make their site worth visiting to Storenvy.

jorblumesea 18 minutes ago 0 replies      
Completely anecdotal, but I worked for a company that was a vendor to Etsy and working with them was really difficult due to internal organizational problems. The teams I interacted with were somewhat dysfunctional, with lots competing interests and directions. Definitely got the vibe that they didn't have a good sense of company direction.

My guess is Etsy hit it big on the niche craft market but didn't know where to go from there.

wgyn 4 hours ago 6 replies      
> There is one and only one social responsibility of business, the economist Milton Friedman famously wrote in 1962. And that is to use its resources and engage in activities designed to increase its profits.

It's strange to me that Friedman is viewed (at least by economists and "business" folk) as a paragon of logical reasoning and empiricism, all the while his views reek so strongly of ideology. There are tons of reasons why the quoted statement might be false whether you're a policy maker (negative externalities) or even the most cold-hearted capitalist (short-term incentives).

Perhaps relatedly, it's actually not true that corporate responsibility to profit is codified in the law. See e.g. https://en.wikipedia.org/wiki/Shlensky_v._Wrigley (discussed further in https://www.amazon.co.uk/Shareholder-Value-Myth-Shareholders...)

ClearAsMud 1 hour ago 0 replies      
To bad they don't sell hand made, home grown artist stuff anymore. The Chinese knock-off Gucci "authentic" syndication machine took over under many names / masks / illusions. It's more the Walmart Hobby Lobby .. where it all looks good on the way or on your back (shirt/whatever) .. it's still most likely made in China. #fact. The revenue is more about the fees and clear profit machine that is required to run a profitable business on their side. The problem? The sellers - the "real" ones like myself and my wife. We sell authenticate stuff with pottery and photography made locally here in Buffalo. However, I find more and more #buffalo search related material are major hub outlets of people I don't know. I've been doing this for almost 7 years now - I know people here and the artists specifically OF Buffalo. It's the trend that then started to go up in margin % and no return. Only recently have I seen an overhaul to the interface for the Store, but it runs like a sweatshop with minimal tools that any of us were accustomed to online. I wish it was better, but we are leaving and concentrating on real world sales.
shawnbaden 4 hours ago 1 reply      
This applies to any job: work where what you do is the core discipline. At a law firm, be a lawyer. At a medical practice, be a doctor. As a software engineer, work at a company where software is the product. Dont write software at an insurance company and expect job satisfaction. At such companies software engineers are seen as replaceable.

Another option: work where what you do is largely represented by upper management. They make the decisions and if they worked in your discipline they will empathize with you, defend you, and promote you.

sciurus 2 hours ago 0 replies      
Black-and-white Capital's press releasing calling for changes at Etsy is at http://www.businesswire.com/news/home/20170502005999/en/blac...

To me it's fascinating how deep in the technical weeds it is. For example, suggesting changes to their search ranking algorithms.

Some of it strikes me as likely inaccurate. E.G.

"It is black-and-whites understanding that more than 50% of the approximately 450 people on the R&D team focus on maintaining the Companys costly internal infrastructure. A shift to the public cloud would provide long-term cost savings while also establishing a more flexible infrastructure to support future growth."

I doubt that Etsy can significantly reduce headcount by moving their servers from on-prem to public cloud.

jly 4 hours ago 1 reply      
They made a deal with the devil (went public) that made many of the employees and shareholders wealthy, and now the price is being paid. The rules have changed and the primary goal now is maximum profit above everything else, no matter how many speeches about "social responsibility" they may deliver internally or externally. The opening quote by Friedman tells you everything you need to know.
skizm 3 hours ago 0 replies      
Opportunities created by Etsy's shortcomings:

1) Create an Etsy review site/blog/mailing list that points to the "good" merchants.

2) IndieHackers for Etsy. Do some interviews with legit Etsy owners who sell quality stuff and make a living on Etsy.

3) Independent review company that rates etsy sellers.

4) Hard mode: compete directly with Etsy and have some sort of verification process that you're not drop-shipping crap from China.

dkarapetyan 2 hours ago 2 replies      
I've lost count now of how many companies have started unconventional and then migrated to just being another regular old corporation with all the usual corporate problems.

Investors are regular people and like regular people they like being around the devil they know vs the one they don't.

socrates1998 1 hour ago 0 replies      
I thought Etsy already sold out? Everything I hear from people who sell on there is that it is loaded with Chinese mass produced crap?

I am not sure if people see the contradiction of the platform, create a massive global online market place for handmade, unique expensive items. I mean, how could those two things every come into conflict with each other?

bognition 5 hours ago 1 reply      
I can't help but think that the buyer appeal just isn't there. Looking back at the last couple of years I've bought a handful of items off of etsy. Come to think of it I probably buy more from EBay that from etsy, which is totally weird because I hate buying things on ebay.
etsythrowaway 3 hours ago 0 replies      
As someone who has been here for >= 6 months, I welcome this change. There's an incredible amount of bloat here, including the datacenter we run to the managers we have. I'm hoping these top level changes can help bring a more accountable culture. Btw, people make fun of #blameless internally now because it literally means you can be sloppy and get away with it.
Exuma 4 hours ago 4 replies      
The entitled employee comments at the bottom made me literally groan. Everyone bemoaning facts of life, it's not like what they did was a surprise or unjust. If your job title is "Senior internal paper waste management analysis director" then you shouldn't be surprised when you get canned.
dominotw 5 hours ago 3 replies      
Why is ETSY stock soaring? I don't get it. Are they doing something to get rid of crap on their site?

Edit: sorry, I meant soaring this week.

ClearAsMud 1 hour ago 0 replies      
Second constructive comment I hope - but welcome to the online Strip Mall 2.0
wslh 3 hours ago 0 replies      
I am wondering if, indeed, there are only a few real unicorns: Google, Microsoft, Amazon, and Facebook. Other companies are having a hard time: Twitter, Zynga (remember it?), Etsy, etc.
SomeStupidPoint 5 hours ago 1 reply      
The focus on eternally positive second derivatives is the cancer of American capitalism.
FussyZeus 5 hours ago 4 replies      
> A similar model had worked spectacularly well for EBay Inc., which had made money for 21 straight years...How, Wunder asked, was Etsy not making more money?

Because EBAY was already in that market! It's really no wonder Etsy has tanked as a community, sellers fleeing in droves, as the company works hard to destroy what it was, something unique, successful (even if it wasn't eating the world) and highly responsive to user's needs, into YET ANOTHER EBAY CLONE full of sweatshop manufactured crap.

Hooray for Capitalism! Race to the bottom!


PostgreSQL 10 Beta 1 Released postgresql.org
317 points by ahachete  4 hours ago   71 comments top 14
pilif 4 hours ago 2 replies      
While everybody is going to be rightfully excited about the logical replication, for me personally, CREATE STATISTICS and the new ROW syntax for UPDATE amount to the additions that have the probably biggest effect on me ever since I moved to postgres exclusively when 7.1 was released.

Especially CREATE STATISTICS (wonderful explanation here https://www.postgresql.org/docs/10.0/static/multivariate-sta...) is the one single knob I wanted to be able to turn so many times in the past now (especially the n-distinct counts).

Most of the time, the planner does an ok job, but sometimes you have tables in a peculiar shape and if you're unlucky, the planner will opt into horribly bad plans. Whenever this happened for me, it was due to one of the two things CREATE STATISTICS allows me to tune in the future.

Thank you, thank you, thank you to whoever gave us this wonderful feature

jph 4 hours ago 2 replies      
Congratulations to the team. The replication/partition improvements are significant and much appreciated.

My favorite improvements are full text search of JSON & JSONB; this makes pg a full replacement for Mongo for my use cases.

paukiatwee 4 hours ago 0 replies      
Important features:

Native Table Partitioning - https://www.keithf4.com/postgresql-10-built-in-partitioning/Logical Replication - https://blog.2ndquadrant.com/logical-replication-postgresql-...

or what is new in PG 10 https://wiki.postgresql.org/wiki/New_in_postgres_10

Postgresql really awesome!

jakobegger 1 hour ago 0 replies      
If you're looking for a quick way to try PostgreSQL 10 on a Macbook, we made a special build of Postgres.app that includes PostgreSQL 10beta1.

You can download it from Github:https://github.com/PostgresApp/PostgresApp/releases

ilanco 3 hours ago 2 replies      
PostgreSQL is an amazing project. A no-nonsense database that delivers what it promises. I'm amazed at what a talented group of people can accomplish when they are driven and put their mind to it.Thanks for a wonderful product.
cygned 4 hours ago 1 reply      
I wished they would implement more from SQL:2011. I have a lot of applications that would benefit from system versioned tables.

This is a good sum up of useful modern SQL features: https://www.slideshare.net/MarkusWinand/modern-sql

crgwbr 2 hours ago 2 replies      
Will having logical replication make doing a DB version upgrade in production easier? We're using Postgres 9.4 on RDS right now, and there doesn't seem to be an upgrade path that doesn't involve some downtime.
jakobegger 1 hour ago 1 reply      
The biggest news for me is ICU support for collations (text sorting).

Previous versions of PostgreSQL relied only on strcoll, which is horribly broken on BSD and macOS. On platforms where it wasn't completely broken, it had the potential for subtle data corruption bugs (eg. an update to glibc might change sort order, causing indexes to become corrupt).

Now, you can optionally use ICU for collations, which gives you reliable, versioned collations. This is a big step forward!

ICU collations are not the default, you need to add them with CREATE COLLATION. You have a lot more collations available to choose from, but I think it's not yet possible to change any of the advanced settings that ICU provides.

(Also, when I tried it, it seems that the ICU collations are case insensitive -- but I think case insensitive collations aren't fully supported yet.)

alfalfasprout 4 hours ago 2 replies      
The native table partitioning makes me so happy. I'd been doing this for years with really hacky external modules and tons of triggers. Sadly, even then there were always weird edge cases.

Postgres really has become the most versatile database out there. I cringe whenever I have to work with MySQL again...

zitterbewegung 4 hours ago 0 replies      
The new features related to clustering looks exciting. Also SCRAM support and Full text search for JSON and JSONB . Postgres is cementing itself as not only the safe choice for Databases but also the Swiss Army knife .
snuxoll 2 hours ago 1 reply      
I know this sounds icky to some, but what I really want from Postgres is a proper equivalent to MSSQL's FILESTREAM.

I know, I know, "databases are bad for files" - but let's take something like an ECM suite where images and documents are literally part of a transaction, having to synchronize those between filesystem and database breaks the Atomic constraint in so many ways. PostgreSQL has LOB support, but oid's being 32-bits severely limits the usefulness of the feature without using convoluted workarounds (multiple databases).

qeternity 4 hours ago 1 reply      
As someone with little to no Postgres experience, it seems like they are heading in the direction of providing the type of massively parallel, scale out features that Citus provides.

Would love to hear thoughts from someone with real expertise.

Tostino 2 hours ago 1 reply      
So glad that GiST indexes now support UUID and ENUM data types. That was a big wart for me due to needing exclusion constraints.
milquetoastaf 4 hours ago 0 replies      
Postgres is awesome and thankfully is much easier to get set up with high availability and replication baked-in (remember pgpool anyone?). AWS Cloud Formation Docker Swarm stack + postgres primary/replica compose file + datadog and you're good to go.
An Indian village addicted to chess bbc.com
52 points by sonabinu  2 hours ago   18 comments top 7
kadabra9 56 minutes ago 4 replies      
I can relate to this. Chess is a beautiful game, but for certain people it isnt just addictive; its a complete escape, a way to tune out the world and just get lost in a game.

I was going through some personal problems a year back and found myself constantly just staying up into the night, playing game after game of 5/0 or 3/2 blitz chess. I couldn't stop. It was therapeutic, but also a way of sort of avoiding the problems I had going in my life. I know it wasnt the best use of my time, but man it felt good to tune out for a while and in a weird way I think it helped me get through some of the problems I was facing.

theprop 43 minutes ago 2 replies      
Everything "bad" eventually becomes "good" for you.

150 years ago Scientific American bemoaned the "chess phenomenon" that was spreading quickly across the country. They wrote that chess was a trivial game that rotted the mind or something to that extent...

malikNF 1 hour ago 0 replies      
Was wondering where I had seen this before. Here's a history TV bit they did on this village.

https://youtu.be/hK0_QfZyiWI?t=14m22s (from 14:22 - 18:25) its in Hindi, but there are English subtitles.

neduma 1 hour ago 0 replies      
>> Here 4,000 of the 6,000 population are playing chess, almost daily

Really? I wish to go there for vacation. Great subject for Documentary. Anyone?

superasn 10 minutes ago 0 replies      
How is it different from being addicted to a video game in an urban setting?
MichaelGG 1 hour ago 1 reply      
It'd be interesting to know what their rankings are. Is it just to pass the time at a weak level or do a lot of them become quite strong?
vagarwal 46 minutes ago 0 replies      
No women in the photos?
Breaking a large AWS spend into understandable pieces segment.com
123 points by fullung  5 hours ago   31 comments top 13
siliconc0w 2 hours ago 1 reply      
Sounds about right, this is really a hidden 'extra cost' with AWS. Once you get to a certain size, you really need to spend dedicated engineering resources to build extra tooling like this or do other 'cost engineering' like RI capacity planning - which you totally thought you didn't need to do anymore right?

You can offload some of that to paid services like cloud-health but it still takes engineering resources to manage the costs you find out about. I.e You may want a 'fully immutable' data pipeline (i.e DPL) - with each job running on a fresh instance each time but that usually means getting hit with a full billing hour even if the job takes <1 minute. So you have to use schedulers/containers but then you're working outside the 'instance' paradigm and get hit with the problems segment talks about.

To control costs and provide good UX for end users we eventually started regressing to mainframe-style computing with the ridiculous X1 RIs which was an interesting experiment. These take like a house down-payment but on the plus side users are really pleased when they see 128 cpus in htop.

dberg 2 hours ago 1 reply      
We are about to open source our tool that consumes the billing files from S3 (via SQS notification) and then loads them into redshift auto handling the purging/updating.

Dealing with Amazon billing is absolutely infuriating. We are also on their EDP (Enterprise Discount) program and all of it is done MANUALLY. There is literally NO way i can check hundreds if not thousands of instance hours to ensure there was no error in their processing. Its complete madness. We use a dozen services and EBS, Bandwidth, inter-AZ bandwidth is impossible to audit.

That being said we have Looker sitting on top of Redshift, we make sure each "team" has a tag (infra wont spin up without it) and then we can easily set budgets, watch trends in Looker and track spend by team and by product name. Our finance team loves it.

The data is there, but Amazon REALLY makes you do the work. Their default billing reporting is useless.

Will publish on HN when our tool is open sourced.

natekupp 5 hours ago 4 replies      
I'm constantly surprised by how much work Amazon expects its customers to do themselves. The work that Segment has done here should be a service provided by AWS directly, continuously updating cost data in a Redshift database without any customer work required.

We just migrated our data infrastructure to GCP. One of the big motivators was experiences like this with AWS. We've got near-realtime GCP cost dashboards in BigQuery, and the only meaningful work on our end to make that happen was writing the SQL queries.

23david 3 hours ago 0 replies      
I've been working with a client in a similar situation recently, but instead of building a custom solution we went with customizing cloudhealth (https://www.cloudhealthtech.com).

It's a complicated tool for sure, but once it was all set up we finally had visibility into a complex multi-account AWS spend, and could start generating automated cost reports for each company business unit and major customer.

I wouldn't recommend going to the effort of building a custom setup... AWS billing is just too complicated and it changes frequently to add even more layers of complexity. As one example, the recent change to add RI size flexibility completely changed the calculations for RI costs and recommendations.

I've also used cloudability and cloudcheckr in the past, but both systems had serious drawbacks. In my opinion cloudhealth is a much more advanced/professional system at this point.

jakozaur 3 hours ago 0 replies      
I use SaaS CloudHealth. We tag all resources once and never change tags. Than we have late binding all those tags into useful groups (called perspective in CloudHealth).

We tried initially building it on our own, but the engineering cost was way too high. Especially given all quirks and changes in AWS.

x_foo_x 19 minutes ago 0 replies      
Just use more than one AWS account!!!! Use Roles to manage any cross-account dependencies.
hnov 1 hour ago 0 replies      
This is exactly what our team has been working on[0] for over a year now. Beyond running a simple, 2-3 component service on AWS, it's pretty hard to actually know what's going on with your billing. Tagging and cost allocation reports help, but you do quickly run into a wall with shared resources like segment did.

We don't yet introspect ECS clusters to assign a portion of spend to tasks, but we do breakdowns of services, tags, instances, ELBs etc across 1-N accounts. For S3 we can actually introspect buckets and produce rollups by object metadata as well as heat maps (which objects are being accessed a lot)


napsterbr 2 hours ago 2 replies      
Honest question: when you get anywhere near six figure monthly bills, isn't it the time to migrate to your own hardware?

Sure, there are several pros and cons to weigh, but if the application isn't locked in, a migration to metal could make sense. Anyone went through this?

smurfy 2 hours ago 0 replies      
Great article. Here at Expedia we are building something very similar for our AWS spend as we are migrating. Since our spend is multi-million per month (and we have barely started migrating), it's even more difficult. Hopefully, we will have a blog post in the coming months as well detailing it.
LeicaLatte 33 minutes ago 0 replies      
Very nice and detailed.
skwashd 3 hours ago 0 replies      
Our spend is anything like Segment, but we've been using stax.io for tracking our AWS spend. Stax doesn't currently support all AWS services, but they're got the key ones. There are some nice auditing tools in stax for ensuring service config meets corporate standards.

It picks up on your AWS tags and then lets you allocate that to projects/departments/cost centres. Reporting on untagged service is available OOTB.

The business model is a 30 day trial and then you're charged a percentage of your AWS monthly spend. It worked out cheaper than building something ourselves.

Sujan 4 hours ago 2 replies      
Would using something like http://cloudcheckr.com/ or https://www.cloudability.com/ have worked, too?
yawgmoth 5 hours ago 2 replies      
For comparison, the invoice provided by Azure is inherently itemized. "X hours of Compute at Y rate", "X units of storage on PREMIUM/STANDARD storage type", etc.

Edit: Sample invoice: https://www.microsoft.com/en-us/download/details.aspx?id=388...

Using GraphQL to manage open source repositories netlify.com
52 points by gk1  3 hours ago   3 comments top 2
schickling 1 hour ago 0 replies      
Really cool demo of using GraphQL!
dreamcompiler 1 hour ago 1 reply      
What problem does this solve?
Top 20 Most Sold and Most Read Books of the Week amazon.com
182 points by happy-go-lucky  4 hours ago   82 comments top 28
oneeyedpigeon 3 hours ago 8 replies      
It says something about how my impression of Amazon has changed over the years, but when I first saw that headline, I thought this was going to be a competitor for Google Charts.
MattSayar 3 hours ago 3 replies      
"Oh, the Places You Go" being in the top twenty sold reminded me that it's graduation season.

I feel silly for initially underestimating the amount of overlap between the Most Sold books and Most Read books. I assumed the Most Sold would be more pretentious than the Most Read books. Still surprised there's not at least one Danielle Steele (or equivalent) in Most Read

1wheel 2 hours ago 0 replies      
Amazon tracks what & when you read on kindle but doesn't share that information with you. I wrote a little script that extracts and visualizes your reading history:

- http://roadtolarissa.com/kindle-tracker/

- https://github.com/1wheel/kindle-tracker

petra 3 hours ago 3 replies      
Why is this so highly upvoted ? this is just a standard best seller list, for books. What's so interesting about it ?
dmix 2 hours ago 1 reply      
Having done analysis on Amazon books sales I'm very surprised they decided to filter out harlequin style romance novels. They are easily the top selling Kindle category.
johnchristopher 5 minutes ago 0 replies      
That's funny how the titles aren't actual links. Oh, well.
VuWall-Matt 3 hours ago 3 replies      
Wow, I guess I'm both surprised and not surprised to see the Harry Potter series in 5 of the 20 top read fiction spots.
thr0waway1239 2 hours ago 0 replies      
Love the title of Neil Degrasse Tyson's book "Astrophysics for People in a Hurry". So apt for today's readers.

Maybe "for people in a hurry" will become the new "for dummies" franchise? I did a quick search on Amazon for the quoted phrase, there are very few books with that title (although someone called Lynda Hudson seems to have cashed in on the phrase).

dxbydt 1 hour ago 0 replies      
So "most read" doesn't include people who actually read physical books! Just people who listen to books via audible, and people who swipe pages via kindle ( ok that still counts as reading, but real reading in my books ahem...would definitely count people reading a real book).

"most sold" is problematic as well - everytime you download a free sample, it is counted as sold?!!! I probably download 10 free samples every month, end up actually buying very few. Yet I have been "sold" all these books ?!! Come on.

That said, as a newly naturalized citizen who is still trying to find his bearings in this country, the taste of the public fills me with despair - same formulaic Baldacci James Patterson Stephen King on every list. Even the nonfiction isn't much better. Maybe HN should do one of these charts - you can at least get a few books actually worth reading.

inputcoffee 3 hours ago 2 replies      
Every new iteration of book charts completely mixes up my intuitions on which books are there, how long they stay, and how contemporary they are.

For instance, I thought after Bill Gates tweeted his regard for Pinker's Better Angels book, that would be in the top. I would not have expected "Nudge" to be there, but not (for instance) one of Gladwell's books or Freakonomics.

Fiction wise, I can see the effect that TV and movies exert but, with the exception of Potter, it seems they have to be on the air now. (Q: Will Game of Thrones show up when the show starts?)

dsjoerg 2 hours ago 0 replies      
I found the prominence of the agent's name noteworthy. Compare to the NYT Bestsellers list where the agent name is missing: https://www.nytimes.com/books/best-sellers/?_r=0

Is Amazon doing this because Amazon envisions a future where publishers aren't important but agents still are?

coryfklein 1 hour ago 0 replies      
Really? The data is only grouped by week? Despite how much I'd love to read 52 books a year, the actual number is closer to 10.

Best books of the month/year is an order of magnitude more useful to me than what people are reading this week.

abhinavk 26 minutes ago 0 replies      
And how many of them are available in Kindle Unlimited?
patja 2 hours ago 1 reply      
Amazon continues to underwhelm with their lack of delivery on the potential presented by their vast store of purchase history. In some ways, this justifies their high stock price as they have this valuable asset they have yet to tap. Some day they will turn their gaze towards unlocking its potential. In the meantime, it reeks of incompetence at worst or a puzzling lack of focus at best when they keep urging me on my Kindle lock screen to buy a self-published bodice-ripper or diapers when nothing in my purchasing history could possibly suggest this as a good use of advertising effort.
djsumdog 2 hours ago 1 reply      
What people are reading ... makes me want to rip all my Kindle/Google/Nook books using DRM removal tools and read them in a reader app that doesn't report all my metrics back.
otto_ortega 2 hours ago 1 reply      
The moral of the story is that if you want a book to become popular and go mainstream you need to make a movie or tv show about it first...

It doesn't matter if the cinematic version is good or not, a lot of people will read the book only to be able to complaint about how they screwed it with the script and be that one friend that is the authority about X or Y show, because you know... he read the book...

Up Next: Harry Poter And The Bayesian Statistics

atotic 2 hours ago 0 replies      
Amazon used to have "what people in your city are buying?" charts when it was still a bookstore. I loved it, so much more useful than generic bestseller list. I think privacy concerns killed it....
jonknee 3 hours ago 1 reply      
Having most read vs most sold is an interesting delta that only Amazon can really do. It would be interesting if they publicized other stats like "most/least completed"...
djrogers 2 hours ago 0 replies      
Says something that my immediate reaction was that this would be a web service to create charts. And my next thought was that they'd all probably default to not having a Y-axis ;-)
pythonistic 3 hours ago 1 reply      
It looks like a new front-end on Zeitgeist (which looks like it's completely disappeared from the category pages).
erickhill 3 hours ago 0 replies      
The alternating binary star colors on the hover state almost create a strobe effect. For a moment, I thought the rating reversed on hover and I had to pause and analyse what was going on.
corpMaverick 1 hour ago 0 replies      
Anyone has any recommendations on the top non-fictions books on this list?
GlobalServices 2 hours ago 0 replies      
I like the idea of seeing books people actually read. There are some notable cases of books that sell but are never read...
degenerate 3 hours ago 2 replies      
Very strange UX, too much whitespace, too much info hidden behind non-obvious clickable regions. Rating stars too small. Doesn't feel like Amazon.
danchristian 2 hours ago 0 replies      
Maybe one of the first pieces of non-shit UI work I have seen from Amazon
nichochar 2 hours ago 1 reply      
SO much harry potter.
ben_jones 3 hours ago 0 replies      
Did anyone else think this would be a javascript library?
meesterdude 3 hours ago 0 replies      
Lots of confusion if this is a JS charting library.

Mods, Please expand on title and add - The Top 20 Most Sold & Most Read Books of the Week

Let them paste passwords ncsc.gov.uk
442 points by matthewbadeau  5 hours ago   261 comments top 40
artursapek 5 hours ago 11 replies      
Of course it reduces security. It makes you resort to either

1.) typing it out manually while you can't see if you made a mistake

2.) using developer tools to set the 'value' attribute directly

"SPP" discourages use of a password manager. End of story. I also see this pattern used on banking websites for inputs like an account number. This drives me crazy as well for the same reason. The computer can get it right more reliably than my eyes and fingers.

Whenever I see a website that blocks paste I immediately assume it's built by incompetent people and trust it with as little as possible.

discreditable 5 hours ago 3 replies      
On Chrome you can use "Don't Fuck With Paste" to override these bad forms: https://chrome.google.com/webstore/detail/dont-fuck-with-pas...
_jal 4 hours ago 3 replies      
In general, more and more sites encourage me to just leave Javascript turned off all the time. If they break, screw them, I'll go elsewhere. The only sites "sticky" enough to make me put up with it are financial, and that's only because they all suck so changing solves nothing. 'Missing out' on Angular sites hasn't left me feel like I'm missing anything in my life.

This ties in to the discussion of Craig's List the other day. It is so refreshing to use a site that doesn't try to be clever. I understand if people find it ugly, but I don't - simple is good, and I don't care if sites follow whatever design trend is hot this week. Usability is far more important.

mderazon 1 hour ago 1 reply      
I don't care much when it happens on a website, because I can bypass that easily, but it's enraging when I see this practice in mobile apps.

For example, my bank's app don't let you paste passwords. I have a strong random password which basically means I can't access it from my phone...

dmh2000 5 hours ago 4 replies      
"Justification 2: 'Pasting passwords makes them easier to forget, because you have fewer chances to practise them'."

if you can remember your password, its probably too weak

phkahler 1 hour ago 0 replies      
I find the issue around clipboard security a bit disturbing. No program should be able to access the clipboard at will, it should only get the data there if the user pastes it in the application. This is a bit harder at the API level, but I think a good environment would do this right. It's like the security holes in X that are being closed with Wayland.
pc2g4d 49 minutes ago 0 replies      
Here's another weird restriction: password length limits. I've had websites tell me I can't use more than 8 or 16 characters. Even if they let me use a thousand characters that's just going to get hashed to the same length anyway, right?

Even worse: sites that silently truncate your pasted password to the maximum length. When all you see is those little dots and the password is wider than the text field, it's very difficult or perhaps even impossible to tell how many characters were successfully pasted. And obviously truncation sets you up for disaster when you try to log in using your saved password and it just doesn't work.

agentgt 30 minutes ago 0 replies      
I'm somewhat guilty of pushing the don't copy'n paste passwords (not the actual input limitation) and the reason why is because several of our guys at work have actually accidentally pasted passwords into Slack/Skype windows.

For what its worth I did write a small utility to make it easy to create memorable passwords using a master password:


It uses the Emoji word database to help you remember passwords.

rcthompson 5 hours ago 0 replies      
If you're on Mac OS, there's a nice little app I use to bypass almost any mechanism of preventing pasting. It simply uses a virtual keyboard to type out the contents of your clipboard. http://dae.me/blog/1741/
coldpizza 4 hours ago 1 reply      
So the main complaint about SPP is that it screws password managers, but then there's this:

> Most password managers erase the clipboard as soon as they have pasted your password into the website, and some avoid the clipboard completely by typing in the password with a 'virtual keyboard' instead.

Isn't the latter approach much safer? If so, shouldn't it be the de facto standard since it prevents "clipboard stealing" and also removes the issue of not being able to paste content into an SPP form input?

majewsky 4 hours ago 0 replies      
My mind, upon reading the submission title: "Your majesty! The country people don't have any usernames!" - "Then let them paste passwords!"


defined 1 hour ago 0 replies      
If it didn't point crackers to these sites, I would love to call out all the sites that do incredibly misguided things such as:

- Allow you to paste passwords into their smartphone app, but not into their web site being accessed from the same device.

- When entering new passwords, limit the password length but not tell you what the limit is ("password is too long"), so you have to reduce it 1 character at a time and keep trying.

- (Mentioned elsewhere in this post) Limit the special characters to some inexplicable subset like !@#$, so you have to edit your generated random password and replace the non-compliant characters with ones from their subset.

- Limit password lengths to (say) 20 characters, allow you to enter a new 20 character password, but only store the first 19 characters so you get an invalid password error when you subsequently log in! I figured it out because I knew I was pasting the correct password, so I just thought, "Hmm, UI team != DB team..." and tried one less character. Bingo.

This happened to me with an old version of (IIRC) a Bank of America iOS online banking app (I am not concerned about mentioning a name here because it's been fixed since then).

- Limit your password to something really short like 10 alphanumerics.

- Require password entry for (say) iCloud before you can get into your password manager, forcing you either to pull up the password on another device and painstakingly enter by hand a 30 character random string, including many special characters, and not letting you see the password (only the last character, for a second). This is so unpleasant that I am sure many people would just change the password to their dog's name or something.

Khol 5 hours ago 2 replies      
As irritating as this is my bank's app which implements its own soft keyboard, so not only can I not paste my (complex) banking password, the password manager doesn't recognise it as an input.

Since I can't have the password visible in the password manager on the phone at the same time as the login prompt in the app, this means that I can only use the bank app if I'm 1) next to another device I can get that password on or 2) if I write the password down on something.

jomkr 4 hours ago 7 replies      
There is a subtle valid use-case.

On "change your password" screens, you don't want the second "confirm password" field to be pastle-able to stop this scenario.

1) User tries to type "mypassword" but enters "mypasswor" instead.

2) User copy-pastes "mypasswor" into "confirm password field"

3) User hits "submit".

Now when the user tries to login with "mypassword" it fails.

tibbon 5 hours ago 1 reply      
As someone who has used password managers and exceedingly long, impossible to remember and cryptic passwords for years; this quite upsets me when sites prevent it
deathanatos 1 hour ago 0 replies      
> Justification 3: 'Passwords would hang around in the clipboard'

Password managers could wipe the clipboard, if it still contains the password, after a defined amount of time, such as 60 seconds.

(If you think that's "confusing", show a notification that explains the behavior; "clipboard wiped" or something.)

alvarosevilla95 5 hours ago 3 replies      
Please correct me if I'm wrong, as this is all conjecture.

I feel passwords used to be thought of as a combination of characters that you keep in your head, and should only leave your head when being entered in a password field. Preventing paste discourages storing your password in a file called passwords.txt, and accidentally pasting it somewhere else as well.

Of course, we now understand passwords should have some qualities (larger alphabet, avoid common words/phrases as your passwords) which go against ease of remembering, so we now use passwords managers and other tools.

So this behaviour is probably and old common practice that most people used without knowing why and that's why we still see it even if its outdated and harms security in the end

sowbug 5 hours ago 4 replies      
Slightly off-topic: why didn't client-side certificates ever become a thing?
inian 3 hours ago 0 replies      
I had filed an intervention to prevent websites from disabling the paste functionality in password fields - https://github.com/WICG/interventions/issues/41
raesene6 4 hours ago 0 replies      
I'm very glad to see this advice for the NCSC, they have been taking a good practical stance on many security issues and helping to provide weight to more pragmatic approaches.

I've never actually managed to find out where the idea of websites banning copy/paste came from. Presumably it's been as a result of security audits, but I can't find any security people who would argue that it's a good idea...

jcoffland 3 hours ago 1 reply      
The Wells Fargo CEO portal makes me change my password every 90 days, won't let me paste and accepts some special characters but not others. How is it that a bank can get it so wrong?
jwl 5 hours ago 1 reply      
I can see some logic behind number 3 of having your password in the clipboard. It could lead to users pasting their password somewhere else where it was not intended. However, if you have malware on your machine that can read your clipboard, it can also simply read your keystrokes anyway.
arunc 4 hours ago 0 replies      
All I can say is use keepass. Just remember one crazy long master password for the database and change it regularly. Or use a combination of password and key file.

> Justification 2: 'Pasting passwords makes them easier to forget, because you have fewer chances to practise them'.

Difficult to remember and easy to forget passwords will be auto generated. In fact I encountered few websites that didn't accept long passwords.

> Justification 3: 'Passwords would hang around in the clipboard'

Only for 12 seconds after which keepass will clear the clipboard.

hobarrera 2 hours ago 0 replies      
FWIW, middle-click pasting (PRIMARY) doesn't seem to be inhibited anywhere (maybe this technique only invalidates the CLIPBOARD pasting?).
probablycarrots 3 hours ago 0 replies      
There is another version of SPP being done by the Wells Fargo Commercial Electronic Office site, and probably others. https://wellsoffice.wellsfargo.com

It does allow you to paste into the login fields, but you cannot submit your login credentials this way because the "Sign On" button is greyed out until you've actually typed in each field. I let my password manager fill the fields, then I manually delete and re-type the last character from each of the 3 fields.

hammock 5 hours ago 1 reply      
Everyone's talking about password at sign-in or credit card numbers but that's not the only use case for paste restriction.

The more common place I've seen it is email address confirmation (or PW confirmation), which while probably unnecessary, is not the worst thing in the world. You are retyping an address that's displayed in the field above. Less intrusive than a captcha.

davotoula 3 hours ago 0 replies      
Preventing copy/paste is a pet peeve of mine. Hey websites, you are breaking the browser/os functionality!

Another annoyance is having to enter 2nd,4th,7th etc letter of the password using a dropdown. ARrrgh.

EdgarVerona 5 hours ago 0 replies      
Just yesterday, I ran into a site that was doing this for the first time in years. It annoyed me to the point where I used the console to override it and allow pasting again.

Password managers are a thing. Please don't force me to type out 32 random symbols twice while I sign up for your service.

nathancahill 2 hours ago 0 replies      
If you use Quicksilver on Mac, you can virtually type the text to get around the paste limitation. [text input] -> [Type Text]
xir78 5 hours ago 0 replies      
Only argument I can think of for preventing it in is maybe it makes it harder for bots in some cases.

The QQ messenger blocks pasting passwords on iOS I suspect for this reason, perhaps there are teams of people guessing passwords and manually typing them in like gold farming.

bikamonki 5 hours ago 1 reply      
I've pasted my ultra long pwd in the username field and hit enter. It happened more than once on logins where the form is split into two steps (I am talking to you Google). Why do they split the u/p fields into two steps? Does it add security? Better UX?
liveoneggs 4 hours ago 1 reply      
I see passwords pasted into chatrooms constantly and they are often of randomly-generated form. Password manages are also, apparently, not immune to their own security issues.
graton 5 hours ago 0 replies      
I know that Battle.net does this :( I went to change my password and I couldn't paste the new one I had generated. Motivated me to install a simple Greasemonkey script to override that.
hashkb 5 hours ago 0 replies      
Bank info pasting is more annoying, more common, and just as stupid.
SurrealSoul 5 hours ago 3 replies      
Assuming you are creating an account, UN: Hello PW: World123

My largest issue is that its extremely possible to fat-finger your UN to be Hellow, and its extremely easy to see and fix that mistake.

However since passwords are hidden its hard to see ######## is actually Worls123. Now your new account has essentially a one-time login because you have no idea what your password is. Typing it out again, ensures you catch your mistake

ytch 5 hours ago 1 reply      
I also hate websites that force users use virtual keyboard to enter password.
nofunsir 2 hours ago 0 replies      
yubikeys help here a little bit.
toyg 5 hours ago 0 replies      
Forbidding copypaste is equivalent to forcing one to recite his address and credit card details loudly in public every time he wants to enter his own house. In an age where videosurveillance is trivial to set up, it's just stupid; there is a reason every cash machine/atm asks you to cover the number pad as you type your PIN.

If the problem is the risk posed by password vaults and clipboard managers, promote better vaults and better utilities. Personally, I'd love a password vault that could check which application or website I'm pasting to, blocking transmission if it looks wrong. But it's not the website's job to tell me how to manage my secrets.

maxxxxx 5 hours ago 2 replies      
This whole discussion is a good example for everything that's wrong with computer security. Instead of coming up with solutions that make it easy for people to follow good practices the "experts" make it even more cumbersome. Most people just want to use the computer and not think about security.
dragonwriter 4 hours ago 3 replies      
If you are pasting passwords, you are really using an ad hoc third-party SSO authentication provider (which may or may not also use the equivalent of 2FA) via a manual token-exhange mechanism. Better than allowing pasting passwords, just support OpenID or some similar federated authentication solution, which does the same thing without manual token exchange and the attendant opportunities for errors.

You might want to allow paste, too, but it's the clumsy solution.

Heroku CI Is Now Generally Available heroku.com
18 points by petercooper  2 hours ago   1 comment top
obiefernandez 0 minutes ago 0 replies      
We've been using Heroku CI on Kickass projects and we like it. Reliable, cheap and fairly easy to setup. However, still seems to be missing some basic functionality like notifications when the build breaks and stuff like that. Looking forward to continued evolution of the product and not having to rely on third party providers.
Interview with Ed McManus, Technical Advisor for HBOs Silicon Valley [audio] ycombinator.com
164 points by gibbiv  9 hours ago   88 comments top 11
apeace 7 hours ago 3 replies      
> I remember watching Season 1 and Season 2, and thinking, why are these guys building their own servers? It doesnt make sense. No one in this sort of world does this.

I didn't react that way. I imagined that their workload was extremely CPU-intensive, and (due to their incredible compression) did not require a datacenter-grade network connection. So it makes financial sense to invest in your own hardware. Amortizing the cost of that hardware, a company like that could be saving tens of thousands per month versus AWS.

But of course, you need an expert "systems architect" like Gilfoyle on your team ;)

Also, the scene at the end of season 2 where all the servers catch on fire was an incredibly memorable moment. I got emotional, being so invested in the characters and having my own memories of "putting out fires", and it was cathartic to see that team succeed and win the day.

bko 6 hours ago 8 replies      
Wish he was in charge of some of the on screen code. One of the most cringe worthy screenshots from the show: Richard using a Sony running osx writing Python in a Java file with in a variable with font


11thEarlOfMar 5 hours ago 1 reply      
True story: My HR manager came in and said he finally understood what Scrum was after watching Silicon Valley.
gibbiv 9 hours ago 2 replies      
I think this is a story about working really fucking hard and then naturally having cool things come your way as a payoff. What you want might be 4 years away, but opportunities you don't think a lot about like this can be yet another motivator.
henrik_w 6 hours ago 1 reply      
Interesting story on the making of Silicon Valley (the show) from the New Yorker: http://www.newyorker.com/culture/culture-desk/how-silicon-va...
SippinLean 6 hours ago 2 replies      
I was hoping they would speak to the inspiration for Richard's "decentralized internet" plot this season; if it was Ethereum or something similar.
lllllll 5 hours ago 1 reply      
Really funny "interview" of the actress/actors @GoogleHQ https://youtu.be/QOXup8chEoY
svantana 6 hours ago 9 replies      
As someone with PhD studies in Information Theory, I always found the whole "compression breakthrough" very far-fetched, I wish they had chosen another technical basis for the show. Never mind that compression of any and all files is impossible (see pigeon hole principle) -- while it could theoretically be done for "normal" files (video etc), it's extremely unlikely that a black-box method such as theirs (as in, they don't have any prior knowledge of the files' structures) would beat out white-box methods (such as video compression) by such a large margin.

It's a bit like writing a best selling novel in a language you don't speak: theoretically possible, but just so far from normal reality that it's hard to suspend disbelief.

minimaxir 3 hours ago 0 replies      
A television first was McManus's use of a real GitHub account/repo on the show, which also accepted pull requests after it aired: https://github.com/Stitchpunk/atari-ai
salemh 3 hours ago 1 reply      
Fun interview! Remember in the future to ask your guests to get closer to the mic. Perhaps their was noone listening to audio, but he got pretty soft ~15:00 and on.

In the immortal words of Joe Rogan during his podcast, "pretend your eating the microphone."

systemtest 6 hours ago 1 reply      
I really hope they bring back HBO in my country so I can start watching this show. I hear it's awesome.
Writing a Lisp: Continuations reinvanderwoerd.nl
9 points by reinvdwoerd  1 hour ago   2 comments top
pmoriarty 17 minutes ago 1 reply      
Do any non-Lisp/Scheme languages have continuations?
To Become a Better Investor, Think Like Darwin nautil.us
27 points by t23  2 hours ago   1 comment top
acconrad 2 minutes ago 0 replies      
None of this is new news, this is exactly what The Intelligent Investor and Margin of Safety are based on: that the market is irrational.
Lockheed Knee-Stress Relief Device breakingdefense.com
67 points by smacktoward  4 hours ago   33 comments top 6
AndrewOMartin 4 hours ago 6 replies      
I have a friend who would basically get his life back if he could use something like this to allow him to walk normally.

I'm all for superhuman enhancements, and I know that defence leads research in many areas, but I can't help feeling a bit disappointed that my friend will likely never have access to anything like this.

agentgt 2 hours ago 2 replies      
I'm curious what takes up the majority of the weight in terms of what a typical soldier carries?

I'm guessing after some quick math that its not the water like I originally suspected but perhaps the armor and ammo but maybe not?

mrfusion 2 hours ago 2 replies      
How hard is it for a hoobiest to build something like this?

What's the hard part? Aligning to your leg? Powerful enough motors? Software?

smacktoward 2 hours ago 1 reply      
I see the original headline on this piece ("Lockheed Exoskeleton Gives Troops A Leg Up, Literally") has been neutered, one more casualty in HN's ongoing War On Good Headlines. Sigh.

The original one actually sounded like something that would be interesting to read, unlike the neutered version ("Lockheed Knee-Stress Relief Device", as of this writing), which sounds like a page out of an ergonomic supply catalog.

I know how sensitive HN is to clickbait, but it does a disservice to interesting articles to hide them behind labels that sound deeply, profoundly uninteresting.

virtuexru 4 hours ago 1 reply      
gadders 3 hours ago 1 reply      
>> So if you cant lighten the soldiers load, and you cant take it off him, can you make him stronger? Nowadays, the answer is yes: We have the technology.

Yeah, it's called a squat rack.

Recent Graduates Are Most Likely to Work in Sales, Making around $40K bloomberg.com
38 points by pdog  4 hours ago   27 comments top 6
simonsarris 1 hour ago 2 replies      
I'm not sure we should expect anything differently, if recent graduates are less intelligent (as a cohort) than ever. [Difficult degree] enrollment is relatively flat because aptitude is flat, and grad jobs will reflect this.

I wrote a little about this framing it as a CS degree problem, but it seems true for a lot more than just CS.

> Can we prove aptitude is flat? Kinda. In 1970s 1-in-2 college grads aced Wordsum test. Today 1-in-6 do.[2] Using that as a proxy for IQ of the median college grad, in the 70s it was ~112, now its ~100.

> In other words we have more people going to college than ever, but the average grad is less intelligent than ever. Degrees are increasingly diluted yet expensive. You can pay more money than ever to show that you are of average intelligence.

From: https://medium.com/@simon.sarris/why-is-computer-science-enr...

EternalData 1 hour ago 1 reply      
I feel like an apt title for a book about late-stage capitalism would be "A Society of Salespeople".

With that said, I'm not exactly sure what type of career path somebody studying, say, political science could embark on -- it seems to me that there's a lot more demand for accreditation in certain fields than there is demand for actual practitioners.

seibelj 1 hour ago 4 replies      
Good salesmen in high-commission industries like software, pharma, high-end real estate, etc. will make much more than a good engineer will over their career. I had a buddy in sales who closed an enterprise software deal and made $80k from that alone. He had a lot of deals cooking.
josephjrobison 58 minutes ago 1 reply      
Is it just me or does it seem like $40k has been the default for far too long. I believe (anecdotally) that it's been the average white-collar entry-level salary since the late 90s/early 2000's.

Seems that the number isn't adjusted for inflation and should be closer to $45 or $50k in 2017+

Animats 33 minutes ago 1 reply      
This is why we've probably passed "peak school". For many new graduates, ROI for college is negative. About half of new college graduates end up working in a job that doesn't require a college education.

(It's even worse in some third world countries on the way down. In Egypt, unemployment of college graduates is higher than for non-college graduates.)

fnbr 1 hour ago 1 reply      
It's crazy how accurate that is. I'm lucky enough to be working as a data scientist, but almost all of my friends are either working in sales or in grad school.
History of Emacs and vi Keys (2010) xahlee.info
55 points by McMini  5 hours ago   32 comments top 5
tetraodonpuffer 3 minutes ago 0 replies      
what is the difference between "backspace" and "rubout"? the emacs keyboard had both it seems, but wouldn't they be doing the same operation?
submeta 1 hour ago 1 reply      
Interesting to see the Symbolics keyboard. As an Emacs user I had reprogrammed my ThinkPad keyboard (Windows) so that

Alt -> Control

Windows-key and Menu Key -> Alt

Control keys -> Windows key

So without having ever seen a Symbolics keyboard and without knowing the history behind emacs keyboard layout I remapped my keyboard so that I had very quick access to Control and Alt (= Meta) keys.

On my Macbook it's not that easy. I could remap the Command key to become a Control key, but many Mac shortcuts heavily rely on the Command key. So that's no option.

soperj 24 minutes ago 0 replies      
Any idea why the period became repeat in VIM? I've checked through old manuals, and can't quite figure out where it came from.
pvg 2 hours ago 0 replies      
atemerev 2 hours ago 5 replies      
tl;dr Emacs and vi keybindings are a product of inferior keyboards used at the time of their inception and not (I repeat, NOT) a superior way of text editing which philistines can't comprehend.

Programmers are the worst cargo cultists.

Launchpad: JSFiddle for GraphQL servers graphql.com
55 points by jellekralt  5 hours ago   3 comments top
djmashko2 3 hours ago 2 replies      
One of the creators of Launchpad here, happy to answer any questions! If you're looking for some examples to get started with, you can find those here: https://github.com/apollographql/awesome-launchpad

Please add your own if you build something cool!

Why Harvard Business School Is Under Fire economist.com
127 points by dpflan  4 hours ago   58 comments top 13
chx 2 hours ago 4 replies      
So HBS, I believe, is responsible for spreading a strange phenomenon: that management is a separate craft and someone who can manage a company selling beverages can sell computers just as well. We know how that worked out.

There's also the case when a private equity firm takes over a company and in the name of profit makes it hell on earth.

l5870uoo9y 3 hours ago 3 replies      
Here is a more informative article on the subject; https://www.nytimes.com/2017/04/24/books/review/golden-passp...

The critique of the moral underpinnings of the faculty, teachers and students seems legit and a a noticeable break off from earlier times, like when Harvard Business School (HBS) was founded. The critique in its essens is basically accusations of decadece. This "post-modern decadence" is in reality a much wider phenomenon that not only has affected the globalised business schools, but also the humanities and social sciences. If business schools have contributed to the weakening of business morals, then humanities and social sciences have weaken the social cohesion by pursuing cultural nihilism that rejects the national community and responsibility that for long was an essential part of citizenship. I hope these new realisations critiques will be used constructively.

chollida1 3 hours ago 11 replies      
Regardless of what you think of HBS, I find this to be impressive....

> Even in Silicon Valley, where HBS is relatively weak, about 10% of Unicornsprivate startups worth over $1bnhave at least one HBS MBA as a founder.

As to the article, Not really sure what the content is. Evidently HBS has

> become a breeding ground for toxic behaviour, with conflicts of interests rife within the school, and its alumni responsible for pushing a rapacious form of capitalism that explains many of the ills of the worlds biggest economy.

but they don't really provide any evidence to back up that claim or to disprove it.

meesterdude 3 hours ago 2 replies      
This is great, and confirms a lot of what i've seen.

Some of the best content I've read has come from HBR. Articles on leadership, communication, resiliency... some really great stuff. I was getting close to a membership because of how frequent I visited.

But that was a bit ago. Now... it's definitely gone downhill. I made the mistake of following them on twitter, and WOW do they peddle some bullshit.

> its alumni responsible for pushing a rapacious form of capitalism that explains many of the ills of the worlds biggest economy

Yup. One I saw recently was on why companies should defer profits till next year and focus on growth instead. Straight out of SV playbook.

abandonliberty 1 hour ago 1 reply      
Don't have the player, hate the game. If a system provides net rewards for bad behavior, you will get bad behavior.

Blaming Harvard for this enables us to ignore that there is a fundamental issue with the structure of our society.

jonbarker 1 hour ago 0 replies      
A great Steve Ballmer quote comes to mind (paraphrased from memory): "Business school is the reset button for when you hate what you are doing, but you can only push the button once."
mixmastamyk 1 hour ago 0 replies      
Ben Rich (of Lockheed fame) on HBS:

 2/3 of HBS = BS

k2enemy 3 hours ago 3 replies      
I wonder how much of the issue is an admissions problem and not a curricular problem. By virtue of HBS "being the best" they are going to select people that will do what it takes to get into "the best". This trait will continue right into a business world where "the best" is measured by short-term quarterly earnings.
cosinetau 1 hour ago 0 replies      
Is that a legitimate call for HBS to do an IPO? How would that work? Would the market seriously invest in an academic institution? Even with it's quality/legitimacy in question now?

There were concerns in the article about companies having some control over which case studies HBS taught from. Wouldn't making the school public in this way hand industry even more control over these things? Who would control it? Who are the Harvard board of regents, and would the public be able to hold them accountable for their decisions?

ouid 1 hour ago 0 replies      
When was the last time an HBR story showed up on HN which stood up to the slightest academic scrutiny?
mtzaldo 1 hour ago 0 replies      
Is the book worth reading? I was reading some reviews and I'm not convinced at all...
bsg75 45 minutes ago 0 replies      
zachmax 3 hours ago 2 replies      
Iron Nitride Permanent Magnets An Alternative to Rare Earth Magnets (2014) umn.edu
147 points by peter_d_sherman  11 hours ago   97 comments top 16
leggomylibro 2 hours ago 1 reply      
Thank christ, have you tried to source NdB magnets at quantity lately? I hope these get to be produced at scale soon, although unfortunately it sounds like the technology has been "exclusively licensed," which in my experience means a 500% markup from whatever its aiming to supplant once it finally hits production. The price of progress, I guess.

But yeah, I tried to order a few hundred rare earth magnets from China (where almost all of the world's rare earth metals come from) and got told that they can't export "pill-shaped" objects...bullshit, that's the same mealy-mouthed politically-backed excuse that they gave for not shipping a few dozen CCP badges through customs.

Anyways, the patent application doesn't make it sound THAT hard. Maybe it's something you could DIY for personal use: https://google.com/patents/US20140299810

Maybe someone who knows more about...all of this...can correct me, but tl;dr: Take an iron wire or sheet of diameter/thickness ~10m-1mm. Strain it by pulling it in opposite directions, e.g. using two rollers pulling in opposite directions. While the iron is strained, heat it to ~125-600C in an atmosphere of N2 or N2+inert gas at ~0.15-1.5 Pascals for 2-10 hours. You actually need atomic Nitrogen and this part of the patent is vague, but I think ~500C might be enough to break the N2 bonds? They also describe a urea infusion process, but that sounds more difficult for a garage effort. Anyways, if that all works, it sounds like you can stack 'em to make larger and more powerful magnets. Anyone up for it?

jwr 10 hours ago 5 replies      
This is important, much more than most people think. You don't realize how many things around you need strong magnets.

> This technology for producing iron nitride permanent magnets has been exclusively licensed.

Interesting I wonder to whom.

sliken 9 hours ago 4 replies      
"Theoretical limit of its magnetic properties are more than twice the maximum reported magnetic energy product for a rare earth magnet"

Call me a pessimist, but if the theoretical is more than twice the actual for rare earths that means the new magnet might well be weaker than the old ... in reality.

It's doubly suspicious that they don't mention the theoretical vs reality for the rare earths.

markvdb 7 hours ago 0 replies      
http://www.designworldonline.com/coming-revolution-high-stre... (December 2014) seems to give a wider overview of non-rare earth magnet development: FeN, MnBi, Ce and exchange spring magnets.
ridgeguy 3 hours ago 0 replies      
Some important applications properties I didn't see listed in the brief UofM blurb:

Curie temperature: - at what temperature do these magnets start to lose their magnetic energy?

Coercivity: - how easily are these magnets demagnetized by external energy input (vibration, inductive kickback from motor windings, transformers, etc.)?

batushka 10 hours ago 1 reply      
I love how US beats foreign cartels or shortages by true technology (fracking, magnets).
creeble 2 hours ago 0 replies      
Interesting to note that this[0] article from Magnetics Magazine in 2016 has exactly zero mention of FeN magnets.


[0] http://www.magneticsmagazine.com/main/articles/permanent-mag...

nickcw 9 hours ago 1 reply      
Here is an article with a bit more info about Iron Nitride (it has quotes from Professor Jian-Ping Wang who is cited in the original link).


Looks like there is a way to go before commercialization, but then that article was written in May 2016 so maybe they've improved the process since then.

> It is only a tiny sample, a film 500nm thick, but it is the real thing.

raverbashing 9 hours ago 1 reply      
Science beats scarce natural resources. Again
zeristor 9 hours ago 1 reply      
This looks to be up an update from several months ago, with graphs and data.

However the text is very domain specific, I can't follow it myself:


novalis78 9 hours ago 1 reply      
First thought 'no way!' - neodymium magnets had a huge impact on electronics and mechanical systems... and then twice the strength? Incredible!
usmeteora 7 hours ago 3 replies      
This is interesting. I am an Electrical Power Engineer, and at my tech school, our Senior Thesis projects are essentially real Engineering firms coming to the school and assigning a group of engineers to work on a project they are actually working on in real life.

The company I worked under makes electric motors for navy ships and other government contracts. There are enormous machines in side of these things, but rare earth metals are economically volatile, on a scale unlike most other industries.

China and Malaysia have most of the rare earth metal mines (we had a bastanite mine in CA where you can mine for rare most of the rare earth metals, but the liberals did not want the pollution in California, so as a result, they closed down the mine (before it reopened for a bit and then went into Chapter 11 bankruptcy last year) and made America dependent on rare earth metals from Asia, where for a long time, and probably still now, they have zero emissions policies so we are effectively polluting the planet more (but not in my backyard so it feels good to feel clean and drive a prius as long as all the rare earth metals and pollution caused mining it are done by people working 1/26th the pay in China breathing in that air in not me, it makes me feel green), until Elon Musk has recently come and been working with mining companies in the U.S. for his operations.

At the time in 2011 when I was a senior working on this project and the explicit motivation for investing in research for this, China had overnight banned global trade on rare earth metals with 24hrs notice for 6months, to focus on their internal development, skyrocketing the price of 90% of the worlds rare earth metal production by over 9000%

At that time, my engineering group was contracted to come up do motor design and look for utilizing either less rare earth metals while meeting the same specifications for output or looking up for alternative metals.

We ended with a form of a Halbach array, which arranges rotor and stator magnets in a permutation of an orientation where the magnetic field is increased on one side and cancelled on the other, reducing the amount of loss not going into the relationship between the stator and the rotor and increasing the magnetic field where it did.

There is still a lot of need for this kind of design and optimization, and I ended up in a different niche of Electrical Power but, people were and are dishing out alot of money around this kind of work for good reason.

I looked up patents a few years after I graduated around this kind of thing and they have spiked up significantly in the passed few years, particularly with halbach arrays.

And you are right, most people don't realize rare earth metals are required in electric motors, wind turbines, inverters for solar panels and most movements we associate with sustainable energy, despite the fundamental components being extremely rare economically volatile, and relatively no innovation going on in the space of addressing these issues.

stillhere 5 hours ago 0 replies      
It's a miracle. How do they work?
panzer_wyrm 9 hours ago 1 reply      
As a bonus - this is as environmentally friendly and cheap as they come.

We have a lot of both fe an ni.

MertsA 9 hours ago 1 reply      
Can we get a [2012] on the title?
oldandtired 10 hours ago 4 replies      
Goes to show that stupidity isn't dead. I wonder what kind of "licensing fees" will they require? I also wonder how much of this research was paid for by public money?

Instead of making this available to everyone so that these kinds of magnets can get out there, they want to scrooge first. If I recall correctly, universities that have gone down this path have simply stalled the progress of mankind instead of pushing it forward.

Voice in the Wilderness: On Douglas Copeland slate.com
9 points by lermontov  1 hour ago   5 comments top 3
blakesterz 46 minutes ago 0 replies      
" Not surprisingly, everything in Bit Rot has the half-baked texture of a Facebook post (I sometimes wonder what selfies would look like in North Korea), because nearly everything that Coupland has ever written settles at about that level. Fortunately for him, Thought Catalog wasnt around to compete with him in 1991."

OUCH! I have to admit I LOVED Generation X when it came out. I just recently read it again for the first time since the 90s and I must admit, it has not aged well for me.

I reread Microserfs too, and that wasn't so bad. Seems like a great read for the HN crowd.

mturmon 24 minutes ago 1 reply      
I read Generation X when it came out, and certainly enjoyed it. As a couple more years went past, it's age-based politics began to wear thin.

There were people my own age whom I disagreed with, politically and culturally. And there were boomers whose accomplishments and risk-taking I had to admire, even though culturally we came from different places.

Ultimately, that was the lesson I took away: that age-based cultural/political affinity is really quite empty. A dead end and a distraction.

b1gnasty 30 minutes ago 1 reply      
Startup School 13: Product/Market Fit startupschool.org
17 points by sama  2 hours ago   1 comment top
a_d 17 minutes ago 0 replies      
Very important talk. Not sure when the phrase was popularized, but my introduction to it was in Marc Andreessen's blog post [1]. This entire series of posts in his blog are worth reading, by the way. Marc calls this "The only thing that matters", and it is definitely true.

I like this video because of the emphasis on the role our psychology plays in the search for product-market fit. Understanding people/users well - what they mean when they say "this is interesting" is really important. Systematic de-biasing of our own mind is an important idea in this talk.

Richard Feynman's famous conclusion to his report on the shuttle Challenger accident said "Nature cannot be fooled"-similarly, markets/users cannot be fooled. Either a product or service solves their problem or it doesn't. Anything in between needs to questioned carefully and observed (in an unbiased way) closely. Feynman also says "The first principle is that you must not fool yourself and you are the easiest person to fool". Same idea as Peter's -- and a very important one!

I wish more founders talked about "what product-market fit feels like" (once they found it) - because only with enough samples, new startup founders can better understand whether they have achieved pm-fit. However, I wish video shouldn't be mistaken for thinking: "my Show HN post tanked, so I don't have pm-fit". I think it is worthwhile trying to understand what he means. It is quite clear when you really solve a problem that someone else has. It is also a great feeling.

One of the reasons why finding pm-fit is hard is because there are too many variables. Peter simplifies it to some extent when he says that while searching, one must be clear if you are changing the market or the product. This is correct, but in reality, these adjustments are quite subtle. So paying close attention to these constant/rapid adjustments (stepping back and thinking about them) is quite important.

I like the conclusion of his talk: you will know when you find it.

[1] http://pmarchive.com/guide_to_startups_part4.html

Disclosure of a Major Bug in CryptoNote Based Currencies getmonero.org
48 points by mike-cardwell  7 hours ago   17 comments top 6
runeks 2 hours ago 2 replies      
> The so-called "key image" as used in CryptoNote coins utilising elliptic curve ed25519 can be modified in a special way, allowing double-spends. This effectively allows someone to create an infinite amount of coins in a way that is impossible to detect without knowing about the exploit and explicitly writing code to check for it.

Ouch. I guess we're now seeing the value in having a crypto-currency depend on as few (well-tested) cryptographic primitives as possible.

It always strikes me as a bit overzealous when blockchain-based currencies add exotic cryptographic primitives to improve on the properties of Bitcoin a little bit, while at the same time risking complete destruction in case just the tiniest detail has gone unnoticed.

I feel like crypto-money must rely on cryptographic primitives whose subversion would cause great harm elsewhere, too. If not, the financial incentive to expose flaws isn't present until it's already too late (the currency is very valuable). If this isn't the case, the crypto-currency becomes a somewhat meaningless research project, as the financial incentive to reveal weaknesses just isn't there.

jstanley 3 hours ago 1 reply      
I find it interesting that the price of ByteCoin hasn't crashed yet.


aeleos 3 hours ago 3 replies      
I find it really interesting that they snuck the patch in to a commit months ago. Are there any other examples of something like this happening where maintainers had to obscure changes to the software?
vosper 3 hours ago 0 replies      
If the main website isn't working for you (wasn't for me), here's a link to Google's cache:


zenlikethat 2 hours ago 0 replies      
Nice work team and thanks for the responsible disclosure. Vulnerabilities are inevitable and it's how you handle them that counts.
candl 3 hours ago 2 replies      
This is why absolute anonymous crypto-currencies will never catch on. Too much trust must be put into the hands of the developers. How do we know this vurnerability (and maybe others yet to be discovered) were not exploited for months? They didn't even share the methodology and tools they used to check the blockchain for this particular exploit. I can understand their assurance that everything is fine, because otherwise any coin on this list gets basically useless overnight, but that's not how it should be handled.
The FCC voted to start the process of eliminating net neutrality rules arstechnica.com
157 points by Santosh83  2 hours ago   66 comments top 14
kem 2 hours ago 5 replies      
Is this a surprise? Pai has made it abundantly clear he doesn't care what consumers think. Maybe I'm being too cynical, but the idea he would respond to their concerns always seemed naive to me.
blackflame7000 57 minutes ago 1 reply      
Zero-Rating has always struck me as a blatant loophole in net neutrality. If an ISP throttles bandwidth on resources that are not zero rated due to overages, aren't they effectively skirting the core principle of net-neutrality? Bigger companies can buy more media and thus zero-rate more content than the little guys. This was the driving force between the AT&T/Time-Warner merger.
zerocrates 2 hours ago 1 reply      
> But Chairman Ajit Pai is making no promises about reinstating the two-year-old net neutrality rules that forbid ISPs from blocking or throttling lawful Internet content, or prioritizing content in exchange for payment.

Well, that's good, because it would make no sense if he was promising that. The current net neutrality rules from 2015 only work in the context of Title II classification; that's why they went together. The FCC already tried to do net neutrality under some more tenuous authority it had back in 2010, and it lost at the D.C. Circuit. This is why we got reclassification in the first place.

jsat 1 hour ago 5 replies      
My hope is that the highly tech dependent area I live in (Seattle) will force the market to keep an open internet. We have enough competition to ensure that, I think. However, that won't be the case for millions of Americans across the country. This is awful, but I think the outrage will eventually remedy the problem if telecoms overstep. Though telecoms may try more subtle means of manipulating traffic, which could be worse. Ugh.
iamleppert 15 minutes ago 0 replies      
Do we really think that huge tech companies like Amazon, Apple, Netflix, Microsoft, Google and Facebook, whom are not ISPs, but could be significantly impacted by a less open Internet will let this happen?

These companies have collectively far more power than Comcast, Time Warner, AT&T and Verizon, who really have been reduced to a bunch of "dumb pipes".

These companies have proven time and time again they are incapable of creating either consumer services, content, applications, ecosystems, or hardware.

And as new wireless standards take hold that are far more powerful and easy to deploy, their control will be greatly weakening. When you no longer need to lay significant fiber or have a lot of last-mile infrastructure to consumers, what value or leverage could they possibly have?

rc_kas 1 hour ago 0 replies      
R.I.P. Internet. It was great while it lasted. I did love you.
ape4 1 hour ago 0 replies      
I would actually go to a live protest about this.
Pica_soO 35 minutes ago 0 replies      
The invisible hand can not fix this. Its currently busy repairing a chinese ventilator i bought to fight the heat. Ran for five minutes, then the hand got stuck in it, loosing several fingertips and burning itself on the e-motor.

Its a horrible sight, invisible blood, invisible bone pieces everywhere, and this small thing in the cage i wont let out until it gets that damned thing fixed.

Seems the market radialinzkis are desperately trying to create good points for the socialism of tomorrow.

rocky1138 38 minutes ago 0 replies      
How does this affect the rest of the world?
Pharylon 1 hour ago 0 replies      
When this kind of thing happens it's important to remember that both sides are exactly the same.
doubt_me 1 hour ago 0 replies      
Oh cool another discussion Hacker News can censor with flags.
joeblow9999 2 hours ago 2 replies      
"The Internet was not broken in 2015" before the rules were imposed, Pai said today before the vote. "We were not living in a digital dystopia. Nonetheless, the FCC that year succumbed to partisan pressure from the White House and changed course."

100% accurate

ph0rd 2 hours ago 4 replies      
The Problem: Regulatory agencies not directly beholden to anyone. The FCC, EPA, OSHA, etc. act essentially unilaterally. This is a huge overreach. Second, regional monopolies on telecom services granted by the state. Third, the fact that people don't recognize the first two as a problem.

The solution: Break up regulatory agencies, do away with regional monopolies, and deregulate telecoms. Let the market sort it out, because the market is more beholden to consumer interests than the state ever will or can be.

Not the solution: more regulation on top of other regulations to prevent the problems caused by regulation.

natermer 1 hour ago 1 reply      
Red herring.

Title II is how the FCC protected the AT&T monopoly.

Due to various regulatory goals (such as controlling telecommunications for cold war purposes) FCC found it much easier to deal with and regulate one corporate entity then a wide variety of different corporations.

Title II gives the FCC authority to regulate pricing in peering agreements and because of this they were able to essentially price AT&T's competitors out of the market and prevent new companies from being created.

There is no reason to believe that Title II common carrier rules would improve competition or prevent companies like Comcast from continuing to own huge government-protected regional monopolies.

More bad regulation is the wrong answer to the problem of bad regulation.

Dwelling in Possibility srconstantin.wordpress.com
26 points by ivank  5 hours ago   6 comments top 5
eli_gottlieb 38 minutes ago 0 replies      
>All of them share a view that the principled or systematic person the person who believes in one truth according to one set of principles is weaker or less spiritually advanced than the person who sees things through multiple points of view.

If your own principles and views are coherent, tied down to observations and causal mechanisms, then you can imagine counterfactuals. If you can't imagine counterfactuals, and what would draw other people to believe those counterfactuals hold in real life, you don't fully understand your own point of view.

>Is it possible to love something, or pursue something, without freaking out about it?

Ever been married? You can't stay married if you're freaking out about your spouse, nor if you can't acknowledge flaws. You don't keep your cool about your spouse. You commit to loving them as the person they really are, rather than as your fantasy of them.

>Ive had occasions myself when I deliberately took myself out of the picture in order to hold space for others and it worked pretty well, and was fun in its own way, and people responded well to it, but I had a strong intuition that this wasnt what I wanted to spend the majority of my life doing. I have a self, and its not going to like being cooped up forever.

Yeaaaah... I've definitely been in this situation. It's kinda been boiling at the back of my mind whenever I have to do work with a strictly political group rather than a technical one, or with technical ones where I want to work on some other problem.

These kinds of things take long-term planning to fix. It's not just a matter of working "on your own": you need to get in the right environment where your self can come out.

leggomylibro 2 hours ago 0 replies      
I think this makes a lot of sense if you tilt your head a little and look at "business-ing" as a creative position. What the author describes sounds a lot like an ordinary iterative design process.

You have some idea of what you want to do/make, but you aren't completely clear on 100% of the nitty-gritty specifics. You don't necessarily know if every little bit of your plan will work from the get-go, but you'll learn more as you move forwards and ferret out those loose ends. If your original idea does turn out to be untenable, there are likely going to be changes that you can make in order to take things in a new, more plausible direction.

The author says that they have trouble thinking like this, but I wouldn't be surprised if they did so naturally with their hobbies; writing, learning to play an instrument, software projects, hardware hacking...you face the same sort of cycle of vague direction, experimentation, validation or failure, and repeat. Ultimately, it comes down to confidence in your ability to be able to find a path forward and keep moving when you do run into issues; I think that just sort of comes naturally when you're doing something for fun.

One of my favorite quotes springs to mind, by Bill Gates: "We always overestimate the change that will occur in the next two years and underestimate the change that will occur in the next ten. Don't let yourself be lulled into inaction."

abandonliberty 55 minutes ago 1 reply      
Many people have a need to be right all the time. This leads to very low comfort with a risk. Moving up the chain requires facing greater uncertainty, ambiguity, and chance of failure.

A very easy test: How do you feel when you get something wrong or make a mistake?

smacktoward 5 minutes ago 0 replies      

 The ancient Masters were profound and subtle. Their wisdom was unfathomable. There is no way to describe it; all we can describe is their appearance. They were careful as someone crossing an iced-over stream. Alert as a warrior in enemy territory. Courteous as a guest. Fluid as melting ice. Shapable as a block of wood. Receptive as a valley. Clear as a glass of water. Do you have the patience to wait till your mud settles and the water is clear? Can you remain unmoving till the right action arises by itself? The Master doesn't seek fulfillment. Not seeking, not expecting, she is present, and can welcome all things.
-- Tao Te Ching, Stephen Mitchell translation. http://acc6.its.brooklyn.cuny.edu/~phalsall/texts/taote-v3.h...

draw_down 3 hours ago 0 replies      
If a car almost hits me and I feel scared, that's an understandable reaction. But if I'm scared by the idea of thinking a different way than I'm used to, or doing something differently than I've always done it, that's less likely to be an understandable reaction, therefore worth interrogating.

If we stop at "it makes me scared", without asking why, how can we grow? If we don't know what part of ourselves we are protecting by avoiding change, how do we change?

Ask HN: For those programming 10+ years, what do you wish you knew 4 years in?
217 points by dhruvkar  8 hours ago   364 comments top 138
ravenstine 2 hours ago 9 replies      
Everyone's code basically sucks, including yours. The boundary between a beginner and a coding rockstar really isn't very great unless you are getting into the realm of computer sciences, like machine learning. Learn from your seemingly smarter peers, but don't idolize them. Chances are they will leave the company long before you do, and you will figure out that their coding skills aren't all they are cracked up to be, especially if their code is poorly documented. You will soon understand that they were focusing on getting the job done, while you were expending all that effort to be clever. In that sense, they were totally right.

Don't overwork. Seems obvious, though it's not only still prevalent in America, but more important for our field. Working extra hours has rarely benefitted me either in quality of work or in company treatment. Nobody cares that you put in extra hours. In fact, don't expect your boss to care about anything you are doing even if they are generally benevolent.

Your success is mostly dependent on your personality with appearance as a close second. That's not to say you won't have big wins with the projects you work on, but a lousy programmer won't get fired if they are charming and everyone likes them. The more I refined my social skills, as well as my grooming, the more my minor achievements would get overinflated by my peers and the more they would overlook my mistakes. It's just a cruel fact of life, but at least it's something most people can actually address.

maxxxxx 4 hours ago 8 replies      
Work somewhere where software is the main product and not just a cost center. You can learn a lot quickly if you do cutting edge things with people who care about technology and not just cost.

Solve real world problems. Doing elegant thingsis very difficult because the real world is much more convoluted than theory.

Do a few things in depth. Don't jump at the latest thing every few months.

rhubarbcustard 7 hours ago 5 replies      
That shipping stable software that works and meets requirements is what people really want. In other words, what the non-tech business people want, or your customers want, is software that fixes their problems, makes their lives easier or makes them more money.

It's easy for us programmers to become fixated on using a newer JS framework, a slightly tighter Java loop or the latest cool language. Took me a few years to realise that even though I care a lot about those things, other people do not. They are interested in the outcomes, not how it got built.

I'm running my own business and building things for myself these days. I use vannilla JS on the front-end and Java 8 on the back. Since I gave up chasing the new cool tech I have built a bunch of stable systems that have been great, well received, products.

If you become someone who has a history of shipping things that work, you will do a lot better than someone who knows how to write hello world in every JS framework.

scarface74 6 hours ago 6 replies      
I have been developing professionally for 20 years and I'm in my early 40s. What I've learned:

* Salary compression is real: most companies are not going to keep giving you raises to match what the market would give you for your skills. They would rather you leave and take all of the institutional knowledge with you than pay you the amount you could get elsewhere. Even if that means hiring someone else at market value.

* Don't get comfortable at a company to the point you're not getting new experiences and learning new skills. Don't become a dinosaur.

* Even if you don't want to become a manager, when the time is right and you have the right skill set, demand a title with "architect" or equivalent in it. Titles are B.S. but people listen to developers with "architect" as part of their title. I insisted on the title and now I'm being recruited for much higher salaries even though I had the same responsibilities as a "senior".

* Good local recruiters are your friends. They can tell you salary ranges for a job and they do a lot of the hard work for you.

* know how to calculate your contract rate if you're doing contract work. Your rate will be different if you are a W2 contractor vs a 1099 contractor. Take into account self employment taxes (1099), the lack of PTO, the time between contracts etc.

* Whether you are a contract or perm, realize that you are still your own company. Your employer is your customer. Do you your best work but never feel a sense of loyalty that keeps you from jumping ship for higher pay. They don't have any loyalty to you.

bitL 7 hours ago 10 replies      
There is no future in software development as a job. Move to a management position quickly, network, make friends with decision makers, don't spend too much time on crafting your skills, your reward for perfection will be more insane work and crazy interviews where one part not 100% done kicks you out. Work on your appearance, kiss up, lift, dress properly, use anti-aging cosmetics, make cool looking hairstyle, wear objects of power (like rings), work on your voice, make yourself seen by making presentations, even if pointless and/or stupid, do some trendy thing on a side and show everyone, appear confident at all times even if you have no clue what is going on. Demonstrate your skills by getting an MBA, PhD (even if from a crappy university, it doesn't matter) or a respected certificate. Basically, don't hack computers but people around you. Our field has shifted from meritocracy to over-politicized field, if you are a male you'd in addition face 50/50 gender ratio split pressure and given how few women are in our field, you'd compete for less than a half the available spots as everyone now wants to compensate this ratio in their mostly male teams.

If you really need to make software (like I do), make your own company and license/sell your work instead for >500% more than what would be your salary.

kobigurk 1 minute ago 0 replies      
Enthusiasm is great, but over-working and burning out is easy to get too - so make sure you take care of yourself.

Be delivery-oriented and don't be afraid to make design mistakes - it won't be perfect on the first time anyway.

Know more than your niche, get out of your comfort zone once in a while.

Respect your co-workers - even if they make mistakes, it's OK, you will too at some point.

falcolas 5 hours ago 5 replies      
You're going to read your code 100x more than you're going to write it. Optimize the code you write for reading.

Your code will be in production either much longer or much shorter than you think it will. The 5 lines of code you spend three days perfecting will be replaced in a week, and that one-line 3am hack will be out there for ten years.

A good walk around the block will help you solve a problem faster than staring at code.

Find someone smarter than you and learn from them. The corollary is if you're the smartest person in your area, you're more likely to stop learning.

What the customer needs is rarely what they say they want.

You will derive more long-term benefit from finding an answer yourself than finding that answer on Stack Overflow, at the cost of time. When time matters, at least try and understand why the Stack Overflow answer is right.

Don't be afraid to question a decision you don't understand, or don't like. At best, you'll get either your mind or the decision changed. At worst, you will learn something about your co-workers.

There's never enough money, time, or domain specific knowledge.

Office politics matter, regardless of how much you wish they didn't.

jmcgough 7 minutes ago 0 replies      
(Not at 10 years, but...)

Take care of yourself. You are not a robot. Showering, skin care, hair care and sleep are important. It's worth it to go to a good stylist regularly. If you're happy, you're doing better work, and most importantly you're more approachable to your coworkers.

Don't ignore mental illness. It needs to be dealt with aggressively, on multiple fronts, until you've figured out the right ways to cope and be functional.

You can't just code alone in a corner. You need to socialize with your team, or you'll miss out on the meta knowledge (patterns, styling) that's being passed around the team.

You are smart. Give it a few years, and those impossibly talented and brilliant senior programmers will be your peers.

Don't be afraid to refactor and change code. The person who wrote it didn't know what you do now, because business requirements are constantly changing. Be aggressive - sticking TODO statements in code isn't going to fix technical debt.

KirinDave 4 hours ago 0 replies      
5 things:

1. That statistics and metrics collection is incredibly important even if you only ever use it via libraries.

2. That code performance doesn't matter if the code is incorrect or insecure. So much of my life in industry has been tainted with an influence to conform to the cultural norm of "fast is best." This influence and culture is one of the most counterproductive parts of our industry.

3. The industry is actually full of great people, but those people avoid most of the media hubs that projects have access to because a tiny slice of terrible people dominate discourse. These assholes set the tone for the entire industry, and should be ostracized and punished. It's not everyone, it's a thin coating of hate.

4. Corollary to 2 and 3, I wish I learned to ask for help earlier in my career. I wish I could go back to my younger self and take the chip I'd acquired working with government contractors.

5. Corollary to 4, I wish I realized that I should be reading academic papers and that the people writing them weren't wasting time. Much of what's considered modern state of the art is in fact 5-10 year old work out of universities and MSR.

root_axis 2 hours ago 2 replies      
If you're self taught, get a degree as soon as you can, even if you take night classes over an extended period. No matter how good you are, a large portion of companies and recruiters will autotrash your resume without an education section.

If you're not a founder, NEVER take equity in leu of salary. If they offer a competitive salary and equity, that's a significant plus, but equity as a portion of your compensation value is essentially a scam. if the company goes under or you're let go before the cliff (which is usually two years or more, a lifetime in this industry), all that money disappears: not true of salary. If a founder or officer alludes to houses, cars or other riches as a pitch to join their company run. Seriously.

Take the time to understand systems and infrastructure. Not every dev needs to be a kubernetes expert, but the big difference between a code monkey and a code assassin is that the assassin can deploy their own code to production if necessary. If you're a web dev and you can't configure nginx or apache, you have a gaping hole in your skillset.

Launching off the last point: learn to be competent with linux. Linux is the preeminent environment of the software world and it pays huge career dividends to be able to script, configure, compile, install and maintain linux software and systems.

RTFM. This is a big one. Don't skim. Relax and dedicate some time to a thorough understanding of details. You can save yourself an immense amount of time when working with a new library/framework/language if you actually read the manuals and understand what your tools are capable of, otherwise, you end up wasting tons of time brute forcing your way into a crude solution that may have been trivially and correctly solved by utilizing the tool's strengths and features where appropriate.

mattlondon 10 minutes ago 0 replies      
Most important: don't try and be clever when solving a problem. Simple & readable code is typically better than clever-tricks or one-line unreadable-solutions.

Almost-as-important: stay curious.

Apart from that:

- experiment, make mistakes, screw-up, accidentally do rm -rf / etc etc. Just make sure you learn from them :-)

- look at how other people have solved similar problems, perhaps what your colleagues have done at your job rather than just random github stuff so that it has more context. See if they did anything that you didn't think of (... or not!)

- learn the basics of key data structures and how/why they work (graphs, trees, hashmaps etc). Learn why they are cool, what the benefits are and where they could be useful, but remember the most important point and try not to be too clever and force them in where a loop would do!

- try to keep your interests/skills/knowledge fairly broad. I've interviewed people who seemed really good, but turned out to really only know about one specific narrow field (e.g. they knew everything about ReactJS/Angular/VueJS (for example), but did not know even the basics of how HTTP works or how to do a SQL join) so I've had to reject them. As well as programming, learn a "enough to be dangerous" in unix CLI, networks, databases, web stuff, basic OS stuff, storage etc.

- similar to above, try and learn another programming language after you are competent in one. The learning experience and different perspective will make you a better programmer in both languages.

- finally in a slightly more negative vein, the company you work for might be nice and might be friendly, but the company will have zero loyalty to you if it comes to layoffs/re-orgs etc. Don't stick around at a company longer than you know you should just because you feel like you "owe it" to them.

Have fun and good luck!

ZoFreX 7 hours ago 1 reply      
If I could go back in time and give myself advice it would be:

0) Nothing is too hard to do, no matter how much those doing it might seem like towering titans many levels above you, or how out of your reach it may seem. Nothing is too hard, there are only things that take time, and things that take more time. If you put in the work, those titans will be your peers before you realise it. Of course, you can't do everything. If you want to put in the amount of work needed for some things, you need to focus. That means deciding to not do some things that you want to do.

1) No-one who is serious about programming gives a shit about language wars, they're for fanboys and spectators. People who get shit done are too busy to spend time on that. So don't sweat what language you choose (too much there is still such a thing as the right/wrong tool for the job) and especially don't worry about the people insulting it.

2) If it's not constructive practice, you're wasting your time. I spent too much time - literally years - spinning my wheels, writing code but not getting any better at it. Make sure you're reflecting, make sure you're improving.

3) (related to #1) seriously stop worrying about choices and just get something done. You don't get things completed by worrying if you're using the right language/framework/library.

Unfortunately I worry that this advice would send me down another bad path and I'd probably need to add on something like:

4) All that said, some languages really are limiting, either in what you can do, the level of concepts you will learn, or straight up teaching you bad habits. Likewise some libraries / tools / frameworks are actually bad. While you should definitely avoid trying to optimise the last % of productivity, you should spend some time to make sure you're not using something highly suboptimal. If after reflection you believe you are using such a language/framework/etc, then broaden your horizons. That doesn't necessarily mean rewriting your current project, maybe do a toy project or some exercises in something else.

eranation 15 minutes ago 0 replies      
Few things come to mind

1. To not worry about my code being judged too much. Everyone's code can be improved. The real art is to know the balance between good enough, and not contributing obvious technical debt.

2. Not being afraid to break things. (unit testing helps lower that fear, so is documentation, single responsibility principle, open closed principle etc)

3. Assume you will probably never have time to rewrite it.

4. Assume you will probably never have time to do a major refactoring on it either.

5. Boy scouts rule. Due to the above, just gradually make the code a little better everytime you touch it. You see something bad in the neighboring method? cleanup, even if you didn't write it, and make sure the unit test covers that (shows how unit tests are important. It's not just to test your code, it's to allow people to feel comfortable changing your code when you are not there)

6. Unit test (almost) everything on one hand, but feel ok to skip testing a function that does something so trivial that the test itself is just repeating the same logic. Also consider mutation testing over code coverage as a metric.

7. The obligatory - check your own code first before blaming others, Google everything, if something looks WTF, then you are either looking at the wrong server, have cache issues, wrong git branch etc... (9/10 of the times)

8. Use other people's code, avoid NIH syndrome, use open source (with the right attribution) and don't be afraid to try and contributing back to the community. Best code is code you never had to write.

tchaffee 13 minutes ago 0 replies      
1) Wherever you work, find at least one good mentor who is better at coding than you, and who can hopefully teach you a little about soft skills too: negotiating, company politics, making presentations, and so on.

2) Most companies have zero loyalty to you. They will fire you and thousands of others the minute they are in trouble, and without hesitation. If you're loyal to a company it's a one-sided relationship. Take care of yourself, the company will be fine without you.

3) Age discrimination exists, and it is VERY harsh. And your brain will eventually slow down while technology ruthlessly and quickly marches on. You might find it tough to keep up due to either or both of those factors. Save up early. Be able to retire by 45. Keep working if you still love it.

EDIT 4) Get EVERYTHING in writing. Happened in a conversation? Follow up with a simple email "Just so there are no misunderstandings, I wanted to confirm that..."

cbanek 10 minutes ago 0 replies      
Learn how to test your code. I'm not just talking about unit tests either, or TDD, which I find are nothing more than buzzword bingo.

Take your testing as seriously as your development. Not just in the details of the implementation, but understand your user and your use cases. Write end-to-end test suites, integration tests, and unit test complex logic.

Don't be one of those "unit testing is enough" or "I TDD all my code." I find the more time people spend on little testing, the bigger problems seem to fly through to prod.

ransom1538 2 hours ago 1 reply      
13 years.

0) Money. the big money is in projects that need help. E.g. CEO during your interview: "The last lead programmer flipped me off and our accounting system in small talk is broken." That's hard. But that is where money is.

2) errors happen. Do tdd - so you can go to that concert.

2) Be the go to guy. If someone needs something you better be able to help. Brushing someone off creates office enemies and will remove any hopes of promotion.

3) any idiot can write code. I can with one hand tell you the names of people that can take over a system with 500k of mangled code.

4) think win/win. If you are doing a project - work hard -win for the company, but also put it docker so you learn something too.

5) launch side projects. You should release something large every year.

ams6110 28 minutes ago 0 replies      
- Many things that seem new and innovative today (virtualization, containers are two examples) were actually invented in the 1970s. Learn some history.

- Don't get caught up in hype. Technologies go in and out of favor. Not long ago the idea of writing a application in JavaScript would have been laughed out of the room. Today the idea of building applications in Perl seems antiquated. The truth is it doesn't make a lot of difference which language you use, and no matter what you pick it will probably be less popular in 5-10 years if not virtually abandoned.

krylon 3 hours ago 1 reply      
I was kind of shocked at the discrepancy between the reality of working as a programmer at a small company and what one learns about how to "do things right the right way" - version control system? What is that? Automated testing? Or even systematic testing? No time, we have to ship the next release! Using global variables sparingly? - Hysterical laughter

The important lesson for me was not to despair and not to get all preachy on the other programmers, but to see how to make the best of that situation. And while it was a real pain at times, I was able to be productive and get some real work done.

Also, if the only tool you have is a hammer, every problem starts to look like a sore thumb eventually. Do not stop learning new things. Both for pragmatic reasons, and because it helps keeping it fun. It doesn't mean one should use every shiny new thing out there just because. But without knowing what options you have, making the right choice is not trivial.

agentgt 2 hours ago 2 replies      
What I have learned is:

* Typed languages while more complex are worth it (circa 12 years ago I was a heavy scripting language fan)

* Unit tests that heavily use Mocks are almost always a bad sign. Brittle tests suck. Don't increase coverage for the sake of it.

* Get it done and move on. Try not to obsess on little details that add no value.

* "It depends"

* NIH (not invented here) is not always bad. In general it actually is often better (ie invented here). Respect the previous engineers when you move to a new company. There is a reason why things were built the way they are.

* Almost everything can be done in Bash :)

baccredited 3 hours ago 2 replies      
I wish I knew I could save aggressively and achieve financial independence in a relatively short time frame. Even medium salary programmers in the US can save the bulk of their income and retire early (if they so choose). I'm on track to retire in about 4 yrs but wish I had done so quicker.


robotpony 1 hour ago 0 replies      
Side projects and life-long learning are the only way to stay relevant.

Stop feeling guilty for not finishing side projects (only finish the good ones).

Adapt not just your skills, but your learning techniques (you're not in college any more, and the learning landscape is evolving quickly).

Don't be overly loyal to your company, at least more than is rational (their loyalty to you is limited to shareholder return and their basic humanity). This isn't to say you should bail early (as you won't learn or ship anything real), but value your own career over the number of years you stay with one company.

Look ahead regularly: where do you want to be in 5 years? It takes 5 years to get somewhere (like front-end, back-end, kernel dev, UI designer, etc.). As this question EVERY WEEK, and do something about it.

Make good habits: your habits are your learning and productivity, this includes the wetware (i.e., you).

pjmlp 2 hours ago 0 replies      
Make sure you get to learn a bit of everything, don't become too focused only in tech.

Yes, it is cool to know all latest features from language X or framework Y, but real work on a company is not only typing code.

Learn to get overview of how software architecture and development processes work.

Build your social skills to be able to bridge between technical audience and those not so technical.

Do not work in silos, make sure you get an overview of what everyone is doing, get domain skills on the business areas the product is targeted for, learn what customers actually do and want from the product.

yonah 5 hours ago 3 replies      
I've been coding professionally for 20 years, a lot of the comments below are legit, but I figured I'd add one or two more:

- As many people point out, the languages don't matter - something better and newer will come along, and you'll need to adapt, but that's not where programmers provide value - they provide value in understanding how to solve the problems that the business side is facing. It's easy to find someone who codes better than you - new grads, offshore devs, but it's harder to find someone who understands your business well and can solve the problems that it's facing.

- Always be learning, always be reading, always be innovating.

- If you can, contribute to Open Source and/or stack overflow, etc. People who interview you will do their homework, and you want to have a public presence that will help sell you.

- To me, the most important thing, is to try to work for an organization where you are the dumbest person in the room. It might sound counter intuitive, but if you are the smartest person there, who are you going to grow from? At the very least, when you look for a job, the people should matter the most. Obviously, pay, technology, commute, etc. all matter, but if you surround yourself with a good group of people, it makes work easier. The jobs where I was by far the most skilled and the most talented wound up being the jobs where the less-qualified people on my team became the biggest drain on my attitude and time.

- If you are going to go the management route - make sure that you get training. Can't emphasize this enough. Just because someone is a good engineer, and is able to self-manage and prioritize well, doesn't mean that he or she is good at managing other people. Just like you didn't learn to code overnight, you won't be able to learn to manage overnight. (That advice alone 15 years ago could have put me in a different trajectory).

zubat 1 hour ago 0 replies      
My number one piece of programming advice is that you can always find a simpler way - and if you have R&D time to sink into simplifying your problem, doing so is a good idea - but actually simplifying is a very hard task and there is no blogpost tip or design pattern that will do it: it requires knowing your problem very deeply and being willing to shave a few yaks and reinvent a few wheels and generally grind away at something that was already solved, but in a way you find dissatisfying.

If the problem is genuinely original to you, your best bet is to find the biggest leveraging factors(language, tools, libraries, etc.) and consistently lean on those to arrive at a solution fast, then pay down the resulting debt in dependencies, performance and gaps in UX later. This can actually aid in an R&D effort because reaching a clunky solution quickly will lend a certain maturity to the codebase and the problem you're addressing. But it means being willing to read and reuse code that you are personally uncomfortable with and know does not really solve the specified problem exactly. This is a revision-heavy process and it's antithetical to what many programmers are inclined to do - which is to get everything finalized in one shot, drawing on all the stuff they know is the "best practice" even if it's tangential to shipping.

The more you're willing to allow your code to be "knowingly wrong" in ways that are easy to call out and to return to later, the faster you can get to the stage when actually revising it has value. This is why everyone writes bad code yet some code looks better than others: the good code was bad code that solved the right problem, then revised.

jackmott 3 hours ago 3 replies      
I spent a long time never bothering to master semi-advanced text editor or ide features. Like really simple stuff like moving forward/back by a word at a time, deleting a word at a time, hopping to next/prev brace/paren, renaming globally, doing everything without needing the mouse, multi-select etc.

You can go even deeper and get into deep VIM style skills but there are many very easy things to learn that let you do stuff so much faster. Whatever editor your use, learn to use it.

avaer 7 hours ago 1 reply      
- Keep it simple, stupid. Advanced is not a compliment.

- Languages and frameworks don't matter. There's a closed set of concepts they're all reusing. Especially if it's hot shit: that means someone mined ideas from 30 years ago.

- Most problems tend to fall not to cleverness, but to compute power and the right glue. See previous two points.

- Everything is a tradeoff, everything is a moving target. Programming is about the battles you choose.

nilkn 24 minutes ago 0 replies      
Don't give up a job you love, where you're treated well, you're paid well, and you get along well with all your coworkers, just because the conventional wisdom is that you should switch jobs every few years to increase your income or avoid stagnating.

Conventional wisdom exists for a reason. Most companies won't give you appropriate raises, and most companies won't treat you all that well. That's why, if you find one that actually does, you shouldn't take it for granted. When you have it good, you tend to get comfortable and underestimate the risk that you won't have it nearly so good at the next job.

chubot 3 hours ago 1 reply      
Shell scripting (which will lead into Unix internals). A lot of programming is automation and yak shaving, and shell is often the quickest tool to get past that. It lets you get to the meat of the problem you're actually solving.

Using the same tool for build, test automation, deployment, sys admin, refactoring, etc. is valuable. Otherwise you are stuck with frothy and immature domain-specific tools that clutter your brain.

Shell is sort of universal in that C/C++, Go, Python/Ruby/JavaScript, etc. programmers all use it.

It's sort of like the idea of mastering a single editor. You wouldn't want to switch editors every year. Likewise I think knowing shell and Unix really well pays off over the long haul.

mnm1 2 hours ago 0 replies      
Be skeptical of all the advice and best practices you read about online. It's mostly fads and fashion with a few useful gems that might not be so obvious. Implement what measurably works not what some blog or news link aggregator site thinks should work. Shoot for simple over complex.
patio11 7 hours ago 2 replies      
~13 years in:

Spend your early career, to the maximum extent possible, in well-run organizations surrounded by supportive, skilled teams, so that you can optimize for skill growth and (secondarily at first, but growing over time) for individually attributable impact/ownership.

Honorable mention: AppAmaGooBookSoft hire mere mortals, too, and mid-career salary expectations at them are $300k.

wccrawford 3 hours ago 1 reply      
My wife hates it when I say this. (She's QA, I'm dev.)

One of my best skills is assuming. I have to make tons of assumptions, and if I stopped working whenever I didn't know the answer for sure, I'd never get anything done.

Instead, I make my best guess. If I'm unsure enough, I'll also send off an email stating my assumption and asking for direction, but I'll still keep coding based on that assumption.

I am almost always right, and I get a lot more done because of it. Even if I'm wrong, it's going to be a lot quicker to rewrite what I've done than to have done nothing and have to do it all after I get the reply.

I'll answer a question you didn't ask, too: What do my bosses wish I'd known when I started?

That saying, "no," isn't a good answer. Never just reply "no" when someone asks if something can be done. Find out what they're actually trying to do, or suggest an alternate way to accomplish it that can be done.

Xeoncross 17 minutes ago 0 replies      
Pick the language and tools everyone is using. They will improve quickly and where least expected simply because so many people are using them. A great mind will think "Hey! I could ...." (and do it).
mysterydip 7 hours ago 1 reply      
You don't have to design the whole thing before you implement. This applies more easily to smaller teams but there's a continuum between rapid dev and thinking everything out.

In my game dev it took me a long time to let go of "but I need to create an elegant/clever solution that covers all my planned features rather than just what I'm implementing now". What that got me was a lot of unfinished projects with elegant solutions. When you have time to code, code. Not necessarily the first solution that comes to mind, but maybe the second. Now you can keep coding instead of being stuck. Let your mind percolate on the solution in the background while you code, and while you're doing other things later. It's amazing how many times the solution will present itself after you implement a couple different pieces that now need to tie together. Use the power of your brain's pattern recognition.

Yes, you will "lose" some time in refactoring, but the truth is every project I've worked on, one-man hobby up to multibusiness teams, has had refactoring due to scope creep or "we didn't realize this would be an issue until we implemented it."

It will take time to learn how much thinking vs coding to do (both extremes are bad).

Final bit of advice: don't listen to the opinions of people as to what is a good or bad language. Try them out, use the right tool for the job.

willwagner 1 hour ago 0 replies      
Here are a couple things that have served me well:

* Own what you own 100%. Be proactive, ask questions so you understand context, and raise concerns along with possible solutions when they pop up.

* Help others when you can. If you are going to be in this industry a long time, your network of colleagues and friends will help you long past your current gig. They can help you solve problems and avoid bad technical choices and when you are ready to move on, they can help you find a new job. The kindness you show others pays off in many ways.

* It's easy to get emotional when you are passionate about a job or a project and that passion can quickly turn into anger. Before sending an inflammatory email, sleep on it.

* Learn the tools of your trade well. Know your editor, debugger, devstack, monitoring tools, deployment tools, etc. I'm a bit hyperbolic but the single best thing I did in the last 20yrs was learn vim well.

* Work hard but pace yourself. Put aside time for yourself to stay healthy.

* Enjoy the moment even when it's stressful. You'll eventually look back on your career and see that the highlight reel features some "against all odds" moments and battle scars.

* Keep learning

AldousHaxley 2 hours ago 0 replies      
I wish I knew earlier that I had enough knowledge to build production quality applications. I had this idea early on that I had to attain some level of mastery that was always just outside of my reach, and that the only remedy to that was learning everything possible under the sun. But after spending years trying to get to that point, I realized that I could have been building and shipping products that whole time. If I could do the last decade over, that realization would have the most profound impact.
Jeaye 1 hour ago 0 replies      
To myself, 4 years in, I would say:

OOP is just a sliver of it and the typical ALGOL-based languages you're learning are a small piece of what programming can be. Learn functional programming now. Learn about immutability, referential transparency, and data-oriented programming. Even if you continue down the imperative, OOP path afterward, this knowledge will change the way you approach every design.

There is so much more to learn, and so much more I could reveal; you'll get there, though, and it'll mean more because you did it yourself. Keep at it.

MichaelMoser123 51 minutes ago 0 replies      
In order to get somewhere you have to commit yourself and invest a lot of time and effort; however if you overcommit then burnout and disenchantment will follow... Now finding the right balance is hard, if you know some good advice then let me know (I still haven't found it after 20+ years in the profession).

It is important to meet the right people that one can learn from (who are ready and able to share their knowledge).

Spending too much on sites like HN/slashdot/reddit is a bad idea. Again one has to find the right balance (and the right sources of information that do not turn into time sinks), balance is important like with the other stuff ...

sebringj 1 hour ago 0 replies      
By the sheer number of responses here, this is a testament to how personal each coder's experience is and how much they value it unto itself. Coders care about the work they do and especially in the beginning find their choices to equate to who they are, tending to find unwanted changes or revisions to their code by others' hands as annoying or encroaching upon their precious domain, at least for me.

To this day, I still get very annoyed when someone takes what I have done, completely reworks it or even throws it away, doing something else that IMO is more complex and difficult to work with. My values have shifted from doing the quick and custom style to moving more toward standards and TDD in a style that everyone can pickup easily and understand.

This has made my work so much more productive in getting to the final production quality by a factor of not less than 2. In my youth, I spent 99% of my time fixing code as it broke. Now, I unit test and in many cases, end-to-end test with TDD frameworks providing myself with a much higher probability of success when pushing to production.

nf05papsjfVbc 7 hours ago 0 replies      
I was working hard to learn more about the language I was using then.

When I look back at that period, I think I enjoyed what I was doing but in terms of technical knowhow, I wouldn't change much. Of course I know more now than then but I walked a certain path and I enjoyed it. The process was part of being where I am now. So, I think I'm happy with it so far.

What, I would like to have had since then: A good perspective on how the business functions. More empathy.

I've learnt these over time and even in this case, I think learning these was part of life. I don't really feel like "I wish I had the chance to go back and change things". I just feel foolish about some things I did then but I acknowledge that at that time my level of maturity was different from now and even if I had more (relevant) information or ideas, I'd not have been ready to use them.

Finally, I'd say that as long as you tend to reflect on what you do and where you want to go, you'll do fine. Conscious and intentional incremental improvements take you quite far on the long run.

Good luck!

novaleaf 3 hours ago 1 reply      
I started off in .net, where historically all functionality not provided by the .net framework is offered at a financial cost.

if you don't have a large team (who can help with bouncing ideas, etc), the benefits you get from using module ecosystems like npm or pip can not be understated.

oxryly1 55 minutes ago 0 replies      
Most programmers (you included) will tend to build things not because they are the correct solution for the problems at hand, but because they are interesting and just happen to solve at least some aspect of the problem.

When this happens repeatedly over time in an organization you wind up with a large, complex codebase that tends to solve problems in pieces and at scales other than the correct level (i.e. as the user experiences it).

Usually, the best approach to solving the largest portion of the problem at hand does not involve writing code, and if it does, it won't be code you are interested in. Such is life as a programmer.

david-gpu 7 hours ago 0 replies      
Most companies seem to prefer folks who have a broad base of general computing knowledge plus one specific area of expertise. This is sometimes called a "T-shaped programmer". There are definitely exceptions, but is a good place to start.

Other than that, practice, practice, practice. And get out of your comfort zone when you practice, don't just do things that are easy for you. You are only learning when it is hard and it makes you wonder if you might be stupid.

intrasight 3 hours ago 0 replies      
Find another profession. Unless you really love programming (I do). I am well compensated, but my contemporaries in other professions are better compensated - from two-fold to ten-fold.
ensiferum 55 minutes ago 0 replies      
- That it's a dead beat job. Get into something with more money like finance sales or management. There's no real money except for the few rare top 10% performers at Google,Facebook etc.

- software is just pure crap. Tools are crap environments are crap libraries and frameworks are crap. Nothing ever just works but endless nonsense and meta problems.

- career progression is shit unless you're really few of those superstars at an organisation that appreciates technical skills. Or unless you have other skills such as bullying ass kissing or office politics

giberson 3 hours ago 0 replies      
The company (any company and or manager) will try to get away with paying you as little money as possible. Even if it's below industry/region average, even if they know you're worth a hell of a lot more. They will offer the lowest pay bumps they think they can get away with.

You have to ask for more to get what you're worth. And it doesn't hurt to ask, worst case is they will say it's not in the budget (even then it's usually not a firm no).

The trick is during your review you have to say you want more. You have to present a case that you're worth more. And it's not even a hard or complicated case to make.

If you know what the industry standard is in your area and you're underpaid say "I think I deserve a pay bump of <gap + 5k>. The average rate for programmers here is <x> so I should be at least making <gap> and you just told me I'm doing a great job, so I think I deserve a little more than average."

In all seriousness I'm basing this on past experiences (both myself and colleagues). You probably deserve more than you're being paid. The company will easily pay more than they offer by a little and most likely by a lot (if you're a good negotiator and make a good case).

The key is: ask for more, justify by reminding them you do a good job.

kitd 4 hours ago 1 reply      
A reliable build pipeline is your most valuable asset. It could even be argued that what you build should be determined by whether your build pipeline can build it. Tinker with the pipeline at your peril. Be very careful what you do with it. Only when you are sure it works, submit new capabilities to it.
porker 2 hours ago 0 replies      
People who shout in your programming community that there's "one true way" to do something and gain 'guru' status will either disappear or be telling your/a different community a different "one true way" in 4 years's time.

I wasted years trying to do things "properly" (completely pure OO in my case) when I could've been releasing software, and wasting effort anguishing over why I thought differently to the gurus.

Now I have no time for programming fads. But try not to go too far this way - it's easy to be too late an adopter too.

runeks 3 hours ago 0 replies      

I spent at least five years chasing down "AttributeError: X has no attribute 'Blah'"-errors in Python at runtime, and came to think that this was what programming was. Three-or-so years ago I discovered Haskell, which transforms these types of errors into compile-time errors, preventing me from building the program as opposed to a sudden runtime crash.

I wonder just how many hours I've wasted doing this completely meaningless task. It's not really a problem while your programs stay small but, as they grow, I found it became the main source of time spent programming, taking away precious time defining the actual application logic.

Mind you, Haskell is fairly extreme in this regard, and I'm sure there are languages which take a similar approach, without the mathematical certainty of Haskell. But, as I've become used to the precision offered by Haskell, settling for something with fewer guarantees -- but more libraries and easier-to-digest documentation -- would feel like a great loss to me.

jargnar 1 hour ago 0 replies      
Lots, but these 3 points stand out for me:

* that there are too many things to build and too little time, so don't code for the sake of coding, but solve problems and touch more lives

* that I could have supplemented my coding skills with business skills, and built something that made me money

* that life is short, and coding isn't the only thing to do


Bonus tip: strong CS fundamentals, math > new hip language, new framework

qdev 1 hour ago 0 replies      
Been a developer for over 15 years in the Vancouver area.

Various bits of advice:

1) Pay attention to the severance package when you sign your contract. When you join a company, you probably aren't thinking about what happens if things don't work out. But let's say you end up working there for 10 years, bad times hit, and you get laid off. You don't want to be surprised to find that you only get the minimal statutory limit. Some companies, I conjecture the larger ones, will have more generous severance packages.

2) Be cautious about choosing to work in "branch offices" which aren't involved in key decisions in products/features. You may find yourself limited in how you can grow, both in terms of scope of technical projects and scope of career path. This is probably a bigger issue if the region that you live in is not a tech hub like silicon valley.

3) When I was younger, I was completely focused on programming and "software craftsmanship". In fact, many of the problems in commercial software development are people problems -- team co-ordination, process improvement, empowerment, motivation, etc.

GrinningFool 3 hours ago 0 replies      
* When troubleshooting and hitting a wall, there is always sanity in checking the obvious thing that you assume always works. Not a cursory check, but an actual look without assumptions.

* What customers and clients _need_ isn't always what they say they need. Learn to drive at the underlying problem in your discussions with them, and don't focus on what they think the solution should be. While you should always accept their input for the latter as well, keep in mind that most of the time it will address a symptom and not an underlying problem.

* What a customer wants may be related to what they need, but this varies.

* Don't solve problems prematurely. Even simple bug fixes - what is the impact? Are you changing something used downstream?

* Don't assume good tests will always catch all breakages. If they did that, we'd never have to fix bugs.

* Don't trust your dependencies, vendors, platforms, or anything else to reliably inform you of breakages and incompatibilities. They're all run by humans and humans make mistakes.

* You are responsible for shipping working products. If you include a dependency and it breaks, you are responsible for finding that out before your customers do.

jaylynch 7 hours ago 0 replies      
Learning new things is great but don't be afraid to reach for familiar tools.

Using one or two new things on a project rather than 10 you'll be both more likely to get somewhere, and more likely to pick up the newer elements well.

mattkenefick 2 hours ago 1 reply      
Read more into things than you need to given the opportunity.

Let's say you need an icon for something, but don't know much about design. Once in a while, try making it on your own. Learn about the pen tool, image formats, etc.

Let's say you need a simple SELECT from MySQL. Read more into how they actually work under the covers, in large-scale environments, or how they change for MSSQL / Postgres.

Let's say you need a particular jQuery function.. take a few minutes to read the source and see what it's actually doing.

If you take a few minutes each time you do something unfamiliar, you'll gradually build up a better understanding and larger skillset without having to put in too much effort.

dom0 7 hours ago 0 replies      
That it's not a competition on writing dense code.

People tend to not say what they really want. Become good at finding the actual requirements. As a CS student, if there are requirements engineering courses, do take them.

For many projects implementation is the least important part of the project.

Professional conduct is worth a lot.

mmphosis 2 hours ago 1 reply      
"4 years in" I am not sure what "in" means, but I started getting paid for programming in 1984. So, what do I wish I knew in 1988?

I think you already said it: "I'm also realizing there's SO much more to learn."

Don't stop learning. It was probably around 1988 when someone suggested I look into Lisp and I dismissed the comment at the time, although I did look into AI. I do wish I had known more about Lisp, not necessarily programming in Lisp, but just the knowledge of the concepts that come out of learning Lisp: garbage collection, stacks, lists, trees, macros (not the terrible C macros I was using at the time but Lisp macros), parsing, code generation, profiling, the benefit of programming in a more functional way, and I am probably missing a lot of things here I take for granted. Don't stop learning.

bflesch 7 hours ago 1 reply      
- Don't stress about code coverage metrics.

- Don't use the next big thing before actually understanding the benefits only because someone else tells you to. (Looking at you, Angular and Docker!)

- Stay away from programmers who have strong opinions about certain things. Most of them can't back them up with skill.

bartwe 54 minutes ago 0 replies      
That making a lot of crappy stuff is a much better way to learn than making one thing perfectly.
DanielShir 6 hours ago 0 replies      
Been doing software for 20 years now, and I think the best advice would be to keep things simple.

Keep your software design simple, your code simple, your tools simple. Sure, it's nice to use new and shiny tech for your side projects, but real software should be done simply and efficiently.

Simple trumps everything else, but it takes a real master to know how to pull it off. Especially in the context of complicated software requirements.

During my career I've met very few programmers who are capable of doing this well. It's the true art of the profession IMO.

Malice 7 hours ago 1 reply      
* Functional is generally better but don't be crazy about it.

* Have tests but don't be crazy about it.

* Keep your development process as streamlined as possible.

* New languages generally aren't as hard as you might think and they might be the right tool.

* The right tool for the right job can make a huge difference.

agentultra 3 hours ago 0 replies      
> What advice do you have for programmers just hitting their stride?

Stop calling errors, bugs. They're not cute things that just happen because all software has bugs. Software has errors. Trust your instinct to leverage tools to manage complexity and reduce the likelihood of introducing errors. Lean on sound typing, formal specifications, invariants and property-based testing. Learn to love restrictions.

Remember: tests prove the presence of errors, not their absence. It's much more powerful to state, formally, what your software will not do.

Also be creative and play. Take an idea to its extremes and let the haters hate.

Programming is beautiful!

flavio81 1 hour ago 0 replies      
After about 26 years programming -- that is, since i was a little kid, this is what i wish i would knew, not only 4 years in, but also on my 1st year at doing actual paid work:

-1. That I should have jumped in straight into Lisp from day one.

0. That popular technology does not mean that said stuff is the best, great, good, or even acceptable. Example: PHP 4.

1. That the industry raves about a seriously, seriously crippled and flawed language (Java)

2. That "Design Patterns" are mostly workarounds for the problems introduced by flawed languages (again, Java and friends); not great ideas to be proselytized.

3. That Object-Oriented-Programming is not only done in the way of C++ or Java, but that there are much superior ways to do OOP. (i.e. Smalltalk, CLOS)

4. That if you want to solve complex problems in a productive way, you need a multi-paradigm language. Strict-OOP languages or Strictly-Functional languages will limit you, unless the problem is really suited to it.

5. That the "Blub paradox" is real. Programming languages are not equal.

6. Real world (i.e. commercial, production) software should always be done by experienced people, not by juniors.

7. A seasoned (say, 8+ experience) programmer can done things 8 times as fast as a junior (graduate) programmer. I've seen this firsthand.

8. Dilbert -as others have pointed out- is a documentary.8.1 Corollary: Pointy-haired bosses are real.

9. The customers will always think everything has been done using Excel Macros.

10. The salesmen are very important to the health of the company, so don't make fun of them; rather, make friends with them and help them get aligned to what the technical team is able to do.

Joeri 2 hours ago 0 replies      
- If you haven't done so, learn functional programming properly, it changes the way you think about code. The coursera scala funprog course is a good way in.

- Design for maintainability, not ability. Code should be simple, maybe even a bit boring, and not trying to be too many things. YAGNI and KISS. This gets rid of a ton of time wasting down the road.

- When faced with a standard problem, use standard solutions. Use popular proven languages, libraries and frameworks, instead of the hip new thing. This saves time which you can invest in the parts that are novel and require novel solutions.

- Understand the business value of the code you write, and the political process that produces its requirements. This knowledge will create opportunities to earn more, do more interesting work, and have happier users.

Clanan 2 hours ago 0 replies      
I've only developed professionally for ~6 years but here's the mandatory non-answer: make sure you prioritize "life" things too, especially when doing full-time plus side projects. My kids are still young but I already wish I had spent even more time with them when they were teeny.
jecxjo 2 hours ago 0 replies      
Everything should be done in moderation. Eventually you learn how to only put forth the amount of energy required of a task. While it is fun to do things in new and interesting ways, the name of the game is least time spent.

This also applies to how much energy you put into your work. I started out trying to meet crazy timelines and for the most part I did it. But eventually it became the norm and I couldn't keep up. It took a lot longer to get managers to understand that nights and weekends are not sustainable.

Lastly I would have jumped ship sooner. I've been working for the same company for 11 years and now that I'm in the market for a new job, no matter how much I tried to diversify myself within the company, I don't always have specific skill sets these new positions are looking for.

Udo 7 hours ago 0 replies      
I'm in my fourties now, started programming when I my parents finally relented and bought me a Commodore at age 10. My point is, when I was 14, things were quite different - mainly because information was hard to come by and it all depended a lot on what the people in your vicinity could teach you. However, I found one similarity to modern programmers starting out:

I wish I had known more about what was actually going on behind the scenes as my code executes.

In my time, I knew my knowledge was lacking, but being poor and relatively isolated I had few options. Today, factors conspire to leave new programmers largely unaware there might be problems in the first place.

Nowadays, we have way better tutorials that teach people how to use effective programming methods, but we're still failing when it comes to imparting the understanding necessary for programmers to make mindful decisions about trade-offs.

I also wish I knew more about persistence and communicating what I'm working on, it's something I'm still trying to improve. When I was just starting out, I was working on a text editor, but gave up because I thought it was superfluous. When I was about 16, I had made a pretty good game (in hindsight), but gave up on it because I thought it wasn't good enough. My life might have turned out differently if I hadn't been so shy and uncommunicative at certain points.

kenshi 7 hours ago 0 replies      
Separate the code you do for work (delivering a product/service) from the code you use for learning and experimenting.

Keep your work code as simple as humanly possible.

Do your experimentation elsewhere (using the time gained by keeping your work code simple).

Your future-self, your co-workers, and your client will be grateful.

blinks 1 hour ago 0 replies      
It's more important to make code readable than clever, and more important to be simple than fast.

It tends to be pretty easy to speed up readable+simple code when you need to do so, but fixing broken fast+clever code is much more difficult.

kabdib 3 hours ago 0 replies      
Learn how to work with other people effectively (not just programmers, but PMs, finance types, legal experts, etc.) Took me like 15 years to be any good at this at all.

Get exposure to customers. Try to get involved with decisions involving them. Many companies actively discourage engineers from having customer contact; this is bad, IMHO.

Get exposure to the financial side of whatever industry you're in. You don't need to do official work, but definitely make sure you understand how your company makes money and what its risks are. (Do a start-up or two; this will give you a visceral feel for what money is worth assuming the places you work at are run well).

Read a paper a week (e.g., something from usenix or the ACM, or whereever). Sites like The Morning Paper (https://blog.acolyer.org/) are pretty good; the thing is not to get caught in a rut.

If you're doing IT work, get involved in dev work. If you're doing dev work, get involved in IT. These feed pretty heavily off of each other and operational background will boost your engineering skills as much as coding skills will help your IT work.

Things I wish I'd studied harder, earlier: Statistics, practical aspects of databases and SQL, at-scale networking [didn't exist when I was a sprout], practical aspects of operating systems implementation (the stuff they didn't teach you in your course at school), maybe the first six months of an EE course . . . I could go on for quite a while. The good news is that there's no way you'll run out of stuff to learn, not in your entire career, and it's all (usually) applicable at some point.

dahart 3 hours ago 0 replies      
In retrospect, I wish I had spent half as much time learning how to be better at social and team-building skills as I did learning programming. Both as a team member, and as a manager.

During my career I've spent a lot of time resisting and rejecting the overhead of time spent reporting what I'm working on and to some degree careful planning for the future. Like a lot of programmers, it only takes one or two short meetings a week before I feel like it's too much and meetings are a massive waste of time.

My first real job coding CG effects at DreamWorks, I got a black mark in my personnel file in my first 6 months for complaining about being asked to show my progress once or twice a day. It was during a 3-4 week coding project, and it took about and hour to prepare for dailies, so it seemed to me like I was being asked to sacrifice 25% of my productivity, to the detriment of both me and the company.

A few years later I'd been working on a shot for a month, thought it was exactly what they had described, and pretty good and close to done. But it kept not being finaled. Three months later when the director approved it, I looked back at what I thought was near done month 1, and it was crap. I realized that we sit in meetings and describe in articulate detail what we want to achieve for hours, everyone agrees vigorously, and people still walk out of the room having completely different ideas. I realized I need the overhead for course corrections for what I'm doing -- I will veer too far away from what others want without fairly continuous feedback. After seeing that in myself, I see it everywhere with others, programmers working too long by themselves will make what they want and not what the team needs.

Communication is what I want to improve. Not more of it, but how can we make it better?

I also wish I'd gotten out of C++ and into web earlier. ;)

quantumhobbit 1 hour ago 0 replies      
There are sexy tasks and unsexy tasks. Don't be a hero and do the unsexy tasks for the good of the team or company. You will become typecast and soon won't be able to get any of the sexy tasks. Your boss will stop investing in your career and you won't be competitive when you try to get a new job.

You actually have to play politics to be allowed to do your job to the full extent of your abilities.

caleblloyd 7 hours ago 1 reply      
Use strongly typed languages for large projects
tekstar 1 hour ago 0 replies      
To really understand what's going on you, learn your tech stack at least 1 layer of abstraction lower than the layer you typically work in.

The biggest wins are where you make a good decision that avoids an entire class of bugs or an avoid having to write an entire layer of software. These are also the hardest wins to measure.

Pick something you are genuinely interested in and learn it very, very deeply. Don't jump around constantly or you won't have insight.

One thing I wish school taught was code maintenance. Most of the code you write has a shelf life of a few weeks as you fulfill your assignments. Bad decisions only come to haunt you after months.

You need to watch for new technologies that matter, but 90% of what is new will not matter. One technique I've seen work is to build a list of people in the industry you respect and watch what they're interested in.

Kequc 7 hours ago 0 replies      
I wish I had learned to keep my head down and code without the expectation to release. Because nothing I released in the first 4 years of programming professionally was good, at least not by my standards today. Try telling me that 6 years ago.

I was dead set on building entire products, it's why I loved programming. It was why I love lego. But in hindsight it would have been a better use of my time to work on smaller projects and ideas. As almost nothing ever got finished before I was working on something new. I have very little in terms of a tangible outcome from that time period, and it extended beyond those first 4 years.

Now I wouldn't want to work on a full product before I knew I had all the larger parts finished first. I wouldn't want to work on those larger parts before I knew I had the smaller parts those larger parts depend on first.

Programming with this mindset has provided me not only with endless work to do. But less stressful, more satisfying, easily digestible work with semi regular tangible outcomes.

Dzugaru 8 hours ago 2 replies      
I wish I knew the Functional Way :)
sgt101 1 hour ago 0 replies      
Your code should not be optimised to execute algorithms, it should be optimized to communicate intent. You write code so other people can read and understand it. Most other people are you, in six months.

You will thank me.

cdicelico 2 hours ago 0 replies      
I wish I had known that programming was something I wanted to know how to do, not something I want to do with my life. :P
pawadu 7 hours ago 0 replies      
Don't be a snowflake.

If everyone are using X, don't go with just Y because it is slightly more elegant or efficient.

tjansen 4 hours ago 1 reply      
Make sure you're not the only person who can work with your code. Make yourself easily replaceable, on a project level.

Otherwise you will get calls during your vacation; you may not be able to work on other projects, switch teams or even get promoted - or if you do, you will still be supporting the code you wrote years ago on the side.

yamalight 7 hours ago 1 reply      
That nobody cares which language/stack/libs you use as long as it works.
jbpetersen 2 hours ago 0 replies      
If you dig into the origins of a buzzword, it's highly likely there's a very valuable concept hiding underneath the accumulated cruft.

Had I known this sooner it would've sped me along considerably towards finding a lot of cool things that give me more motivation to program.

catwell 6 hours ago 0 replies      
- What rhubarbcustard said: get interested in the business. This is especially important if you work at the bottom of the stack. You must understand what you users (higher-level developers) want, what the company's customers want, and what the company itself want.

- You must decide where you want to go next. The first thing you should think about is: three years from now, will you take the Manager path (lead a team) or the Individual Contributor path. If you choose IC, do you want to specialize, or you want to broaden your skillset and become more of a generalist? In any case, I would say work on soft skills, broaden your horizon (e.g. learn new languages, write front-end code if you do backend and vice-versa, etc) and learn one to three domains very well (look up "T-shaped", this is where you want to go). But focus on the part you will need the most for your next step.

- If you go for the generalist IC route, try to work as close to production as possible. That means: deploy your code, monitor what it does to the servers (or machines) it runs on in the wild, watch how real users use it. Also, it is time to learn how your tools (build system, programming language, OS...) work.

- If you specialize, pick something with a future, engage with the community, and if possible with Academia. Sometimes when I talk to engineers and mention I read research papers they think I'm crazy, but there is no way you'll be good at an R&D topic if all you do to keep up with research is watch videos and read popular science blog posts.

- Have fun. Don't burn yourself out working too much. Keep doing fun side projects, they teach you things you don't learn in a professional setting.

1001101 3 hours ago 0 replies      
- Find the tools that work with you to improve quality and productivity, for me that's: Syntastic Vim plugin (with 4x C/C++ linters), cscope, valgrind, asan

- If you do something more than once, automate it. Create a script, write a bash alias, something

- Keep reading; Go to conferences; Get a subscription to O'Reilly Safari - worth every penny; It's easy to become a dinosaur as a programmer

- Step through every line in your code - TDD is a good way to do this (corollary: figure out a good TDD methodology for your workflow).

Good luck!

eggie5 1 hour ago 0 replies      
Cracking the coding interview will get you a job at any tech company for pretty much any position.
rcarmo 51 minutes ago 0 replies      
Python. I started out with LISP, C/C++ and Perl.
f1gm3nt 3 hours ago 0 replies      
Learn soft skills such as communication with different stake holders. You'll need to be very good at explaining tech concepts to non technical people.
tpae 2 hours ago 0 replies      
Be nice to the people that's taking their time to teach you. Don't take their time for granted.

Throughout my career, programming mentors have shaped me to be who I am. I've learned most of best practices through code reviews and from my mentors.

kenshi 7 hours ago 0 replies      
Write some documentation.

A high-level design document of any significant system and subsystem is worth its weight in gold (or: programmer hourly rate * time to get up to speed on system).

This documentation will also help you in a years time when you need to either maintain that system, or need to remember how you built it so you can build something that is 90% similar to it for another project.

gits1225 3 hours ago 0 replies      
I wish I knew the importance of working on an idea that is mine. You'll not be influenced by external pressure or constrains. You can build it how it should be built according to you. Along with following the right people and working with smart people, this habit has helped me improve my skills across different domains.
twsted 7 hours ago 0 replies      
As in all the disciplines, the most important 'tool' is the experience, and that - a va sans dire - needs time.

That said, I think the best advice I can suggest is Divide et impera, https://en.wikipedia.org/wiki/Divide_and_conquer_algorithm

strictnein 4 hours ago 0 replies      
This is more true now than it was back 10 years ago, but there is simply too much tech out there to have a solid understanding of it all. Be okay with not understanding the latest thing or cool new field because many times they fade away, no matter how popular they seem to be, and you simply can't understand all of it.

On this and other forums it seems like everyone knows everything, but that's only because there's a lot of people here.

davotoula 3 hours ago 0 replies      
Test driven development.

Continuous integration first - first line of code second.

Understanding that writing code is a small percentage of my day - then there is testing, designing, writing docs, deploying, automating, infrastructure configuring, discussing with stakeholders,

Learning multiple languages - especially from different families (procedural, functional, scripting, low level, etc).

Zelphyr 4 hours ago 0 replies      
How much you can learn, and how fast you can learn when debugging. Now, whenever I start with a new company, I make it known during the interview process that I expect to spend at least the first 2-3 weeks (preferably more) doing nothing but fixing bugs. That's the best way I've found to get a solid understanding of the codebase.
annnnd 7 hours ago 0 replies      
That you can learn anything the way you are learning programming - by reading, trying, failing, trying again, debugging, trying again... You want to have a successful software business? Learn business, not just programming! You want to grow your business? Learn marketing / growth hacking!
ainiriand 7 hours ago 0 replies      
Leadership and conflict solving through empathy. Also public speaking.
czue 7 hours ago 0 replies      
This might sound cheesy but mine is to pay attention to your inner state of mind. If you love coding then don't let yourself get drawn into management just because it's "advancing your career", and likewise if you find you enjoy making a broader impact through managing a team or expanding your skillset then do that and be okay giving up code.

If you start going down a path that makes you feel less happy, take a moment to ask yourself why that is, and what you're getting from that tradeoff. If you can't answer that question in a way that makes your inner mind happy then figure out a way to change course. And a slightly higher salary is not a good reason.

giancarlostoro 7 hours ago 0 replies      
I'm more or less on the same boat. My advise is, don't let it overwhelm you, learn as the need arises (or you have a burning interest in something). At work I've done a handful of languages (web development can do that quite quickly these days) and I've not been here a year. On my own time I experiment with D and Rust, and maybe soon Kotlin. Those are my languages of interest, I don't do something every single day for hours on end, but now and then I open up an editor and play around with one of those till I find something to build on my spare time. Chances are as you get new jobs you'll learn new languages and stacks, so don't be overwhelmed. How many co workers do you see doing 50 projects in 50 different languages and stacks all at once? ;)
royjacobs 7 hours ago 1 reply      
That while C# is probably a better language than Java, the Java ecosystem is so much more innovative and open.
andyjohnson0 5 hours ago 0 replies      
Most of the code you write will probably be dead and gone within a few years. Get used to not being able to point at something and say "I did that."
michaelchisari 1 hour ago 0 replies      
Study the abstract stuff. You'll never use it, until you do.
nils-m-holm 7 hours ago 0 replies      
Before becoming a professional programmer, be sure you understand that programming for recreation and for money are two completely different things, otherwise the latter has a big potential to take all the joy out of the former.
grandalf 3 hours ago 0 replies      
Maintain a perspective of openness about the state of what you've built. At any moment you might realize that a smarter person could build it in a few hours using a better abstraction. That smarter person might be you.
kevrone 4 hours ago 0 replies      
I wish I had more systems knowledge (ie: better command prompt skills) and I wish I had spent more time learning about networks and ssh. Some of those concepts are really not that complicated but just _seemed_ impenetrable at the time.
Nursie 7 hours ago 0 replies      
If you're any good, and confident in your abilities, you can go contracting for the (comparatively) big bucks without needing over a decade's experience.

Most people are not that good, or confident, even among higher earners.

tapatio 1 hour ago 0 replies      
You have to switch companies to get a large pay bump.
solomatov 3 hours ago 0 replies      
Focus on learning fundamentals, i.e. things which will be useful in 10 or 20 years, like math, machine learning, algorithms, different programming paradigms, etc, instead of pursuing a fancy framework of the day.
sidcool 3 hours ago 0 replies      
I wish I put more time in thinking about the problem rather than jumping on solution.

I wish I designed a testing strategy for the feature I am developing.

I wish I learnt and embraced good engineering practices and spread those in the organization.

skynode 7 hours ago 0 replies      
Expand your experience with C#, Python and JavaScript. Nothing gets past those three (you could add SQL to the mix). Take on as many projects as possible, preferably with increasing technical (not business) difficulty. If you plan on starting your own company, get in bed with someone with stellar business development/marketing skills, while you focus on developing/maintaining the product/service. Under this scenario, also retain the services of a good lawyer. You'll be happy you did.
yehohanan7 6 hours ago 1 reply      

- "how to solve it" by george poyla

- asking more "why"s to problems

tonescience 3 hours ago 1 reply      
Sitting in front of a computer 60+ hours a week is not great for your body. Take the time to understand good ergonomics, buy yourself a great keyboard (like the Kinesis Advantage), and ditch QWERTY.
legohead 3 hours ago 0 replies      
Don't become a language elitist. Love all the languages -- there is something to learn from each...except Objective-C.
sevensor 5 hours ago 0 replies      
Hopefully you're three years into the "Teach Yourself Programming in Ten Years" program (http://norvig.com/21-days.html). If not, Norvig's advice is short and to the point, and well worth following.
saw-lau 2 hours ago 0 replies      
Shipping is a Feature. The most important lesson I've learnt without a shadow of doubt.
arnoooooo 7 hours ago 1 reply      
I wish I had taken the time to understand LISP earlier.
iamleppert 36 minutes ago 0 replies      
1. Use programming and software as a tool to accomplish your goals, and build a domain expertise in one or more industries.

2. Pick a programming language and/or ecosystem and stick to it. That's not to say there isn't power in being a polyglot, but in order to get really good you need to pick one thing and practice it. It's that simple. That said, do not brand yourself as any one thing or be too specific. The key is to both specialize and generalize. You need to be malleable enough as things change, but at the same time not constantly chasing your tail with the latest thing. This fine balance comes with experience, as most new technologies and techniques you will find are the result of someone rediscovering something. I can't count the number of times I've seen something rebranded as new or revolutionary that was originally published as a paper in the 50's or 60's.

3. Own what you do. Don't wait for others to come to you with problems, think about ways in which you should be improving your software via instrumentation and closed loop controls. Try to understand the users of your software and what they really want and need. Sometimes little things and details that are seemingly unimportant are very important indeed. Software is a way for you to directly influence and collect information about the world, so you can be constantly testing your assumptions and refining your model.

4. Do personal projects. It's the only way to avoid burn-out and to keep yourself interested. And in many cases, personal projects can shine the light for you on where to go next or what to do next.

5. Get good at interviewing others on a team and make yourself part of the interview process. Real team building is a far more valuable skill in accomplishing your goals as an engineer than becoming a manager.

6. Stay close to the tech. At a certain point you may find yourself in a position where you aren't coding or creating every day. Avoid this at all costs. It doesn't matter if you have a team, or if you're in an architect role, or whatever, you should have the code checked out at all times on your computer, have it working, and be able to contribute at a moment's notice. If at any time any of this isn't true for you, stop what you're doing right now and make it true.

7. Don't be afraid to throw out huge legacy code bases and start over from scratch. Nature does this all the time; it's called trial by fire. The second time you do something is always easier than the first and you can really eliminate a lot of debt for you and your team.

8. The first time you do something, if its not messy and weird you aren't trying hard enough or pushing yourself hard enough. The code will be awful. Don't strive for perfection in the code the first time, if it sticks you and others will have plenty of time to refactor and make it better later. I've seen tons of "perfect", unused code that has never seen the light of day again and its really sad.

9. Work for a variety of companies, small and large, startups, mid-size, big tech, and do freelance at various parts of your career. Different size companies have different goals, needs and problems and it will help you understand what is applicable to a Google does not matter at all to a startup or mid-size company.

10. Work for companies that are actually doing something, preferably new work, and try to match that to your interests at the time. Avoid places and people that are toxic and do not have a deep love of technology and do not identify as "nerd"/"hacker"/"geek" etc (unless you yourself do not identify this way..)

epaga 7 hours ago 0 replies      
"Clever" usually ends up being a negative word when it comes to programming solutions. "Elegant" and "simple" are far more important. Keep searching until you find a solution that feels elegant and simple. If you're sure there is none, only then write clever solutions.

I also wish I had known to buy some Bitcoin.

joeblau 7 hours ago 0 replies      
More respect for testing on larger teams. Code regressions cost teams I've worked on 1000's of hours of debugging.
JohnDeHope 5 hours ago 0 replies      
I was hired into my first cubicle around 1999, doing asp classic web dev. I've gone off on some side tangents here and there, but have more or less been building web apps using MS technologies to this day.

It's not them, it's you. Any problem you have is your problem and the solution is something you're going to have to do. Be it a compiler bug, deadlines blown through by partying interns, shoddy code written by contractors, insane deadlines imposed by self righteous VPs, etc. All of these problems are caused by you. You took these jobs. You fed the mice cookies. You didn't say no. You didn't spruce up your resume and blog on LinkedIn. You are the only person that is ever going to try to help yourself, so if you don't like what's going on, there is no where to look but inwards.

Every line of code is a devil, waiting to bait you. Every curious syntax, handy shortcut, convenient convention that only you and the few who read the docs will know about, is bait in a trap. It's better to write less code, simpler code, and code that eschews advanced features in favor of being obvious. Imagine yourself having not slept for 24hrs, being drunk, with a CRT monitor at 640x480, typing on a keyboard covered in elmer's gluge, and then write code you could debug that way.

In about 20yrs on the job I don't think I've ever seen a situation that truly called for more performance. I've seen bad processes that were too slow because they were bad, and I've seen inner loops that needed to be unrolled, and I've seen (written) code that was hitting the database in ways that were totally bonkers. Slowness is mostly about bad decisions earlier up in the decision tree. Unless you're writing trading algorithms or video games, you likely have no use for your program to run any faster.

Prefer bad working code over good code that still isn't producing any useful output.

Your choice and relationship with your spouse will have more of an impact on your career and long term happiness than anything in technology. Take care of home first. Then go to work.

You are going to need a few key side skills: public speaking, making small talk at parties, presenting to people above your pay grade, technical writing, etc. These are key differentiators that are more valuable than being able to write more or better code.

When you're feeling burned out, take a day or two off. If you aren't able to, or you do and it still doesn't help, then something deeper is wrong.

Cutting down on the drama of deploying and maintaining production software is just as important, maybe more, than fun during development. Yeah some languages are excrutiating to code in, but they run smooth, and that's worth a lot. And some languages are a lot of fun in the editor but a bitch on the server, avoid those.

Steal ruthlessly. Anybody who is doing anything cooler or better or faster than you, buy them lunch and ask them what they're up to. You don't have to follow in their footsteps, necessarily. But at least being familiar with other ways of accomplishing things really helps broaden your horizons when brainstorming or thinking about problems.

It's okay to take long breaks to do something else. You can always come back.

Make friends and stay connected. Your rolodex is your escape hatch if things get ugly.

You are a business. The product is yourself. You're the founder, CEO, president, etc. When you answer the phone, do so as the CEO of You, Inc. Ask yourself: if I was a business person, and one of my employees was representing my business to my customers the way I am doing now, would I fire that person, or promote them?

Knowing which rules are actually enforced and which rules are just for keeping chumps corralled can really help your navigate a bureaucracy.

Making friends with people who make and enforce rules can get you out of following a lot of those rules, or just provide back doors into the processes.

You pick your boss and at work that is likely one of the most important decisions you'll make. If you don't like them, find a new one.

weego 7 hours ago 1 reply      
That almost every job you get will highly prize pragmatism and general problem solving skills over pure technical know-how
velebak 6 hours ago 0 replies      
Software Development as a career requires a commitment to a continuous cycle of learning (and teaching.)

Your skills will grow, but the churn of tools and techniques will have you relearning things on a regular basis.

awjr 7 hours ago 0 replies      
To have read Code Complete (now edition 2). I'd add Clean Code to that list as well.

Looking back 24 years, I'd also add, to be more involved in the local hacking community and participate in hackathons.

Anybody can code, but to make a difference, you need to network ;)

NicoJuicy 7 hours ago 0 replies      
Except for using what you know, and that tech doesn't really matter.

I would add that you shouldn't be afraid to use new tools is they get you to the end faster. Common case for me: I use c# for almost everything, but nodejs wrapped in an API for crawling

killin_dan 52 minutes ago 0 replies      
Python is going to fuck shit up like you wouldn't believe. Jump ship asap
madiathomas 7 hours ago 0 replies      
- Use stable tools(language, IDE, frameworks etc) with proven track record

- Use tools and programming language that you personally enjoy, not the one trending on tech sites like Hacker News

- Focus on mastering at least one programming language

anovikov 7 hours ago 0 replies      
The world of coding is cynical and this is a much dirtier business than it sounds, you can get away with almost everything.

Apart from startups: in startup, technical bullshit is replaced with business bullshit.

crdoconnor 7 hours ago 1 reply      
* Develop a good eye for hype and real trends. Try to follow the real trends and avoid the hype-fests. Avoid investing time learning fly-by-night technologies, but when something new and genuinely better comes along, jump on it.

* Listen to developers who have deep and abiding hatred for some technology that they can argue coherently (with a range of deep technical details, links to bug trackers, etc.). These rants are a gold mine can save you a universe of pain.

* Almost all good coding boils down to three things - choosing a less powerful language/approach, writing less code to do the same thing and looser coupling.

* All things being equal, take the job with the higher pay. It almost always means you're treated better in other ways, you work with better people, you work with better tech and on better code.

gry 3 hours ago 0 replies      
It's never a technology problem. It's always a people problem.
beaconstudios 7 hours ago 1 reply      
build it to work first, then refactor the code to be pleasant. You often learn so much about the problem while getting even a rudimentary spaghetti code implementation working that you couldn't possibly have designed a comprehensive set of objects/interfaces up front, so get it running first, take what you learned about the problem and update the code to be readable and well-designed.
AnimalMuppet 1 hour ago 0 replies      
Learn how to evaluate trade-offs. Not everything is black and white. Given two alternatives, both of which have advantages and flaws, learn how to decide which one is better (and why).

Learn a sense of... I want to say "taste", but it's more concrete than that. Learn what the bad ideas are, and why they're bad. Learn a sense of "that doesn't feel right" that's technical, not just aesthetic.

Learn what it's like to maintain a two-decade-old code base of a million lines or more. See what the problems are. Think about what you're doing when writing new code that's going to create some of those problems.

Learn to document what you're doing to an appropriate level of detail. Take the time to do so.

gcp 1 hour ago 0 replies      
scalatohaskell 7 hours ago 1 reply      
one of most important:

- get a mentor. Some chilled senior guy with lots of experience. Speak to him regularly to fish for knowledge. But don't get hung up on everything s/he says. Programming is huge field with lots of parts.


- there is no silver bullet

- simple is not easy (search Simple Made Easy by Rich Hickey)

- always be pragmatic

- there are indeed better approaches than OOP, which differ greatly in long run of project, and pay back (FP) later, and it matters

- avoid "the chase" of latest best-good thing, get productive in something that matures well

- don't ignore latest practices and latest progress just because of the above mentioned things. Keep learning and try to reapply new stuff (at least in your head) to range of problems you solved, and think if pro-s and con-s.

- avoid any heated discussions about languages

- keep your ego out of work

- the less you need to code, the better. You are paid to solve problems, not to churn code.

- finished is better than perfect. Don't gold plate your solution. On flip side, don't code shit and try to excuse it with above-mentioned sentence. Be pragmatic.

- types are your friends (and friends of your colleagues that have to work with your code), take time to learn how to leverage them

- unless you're working on life critical software, don't stress (even then don't, but...). If you feel pressure and stress, work on handling that. There is no point in being miserable because someone needs ability to put dog face onto a photo.

- you'll be programming for a lot more years to come. You may genuinely like and enjoy it throughout that period, or hate it. If you hate it, it doesn't mean you're not suited for programming, maybe you're not using language that suits you or allows you to express yourself clearly. Yes, people say languages don't matter. From your perspective as programmer, they do (they don't for business as long as it gets job done etc.).

- learn new language at least once per 1-2 years. No need to use it, just get familiar with it, it's design choices, it's public APIs, some internals. Language creators are generally very smart and you can learn from them a lot.

- Once you're a bit more senior learn from other (junior) devs. They're the ones usually chasing latest hot frameworks. They have time for that. Be appreciative about that, and take your time to listen to what they have to say, and what excites them, and how it relates to your experiences. It is also opportunity to grow.

- Try to contribute to open source projects. Not to build portfolio, github or whatever. But to give back some of the service. You'll be paid back by learning a lot.

thomk 1 hour ago 0 replies      
You are going to learn cool new things along the way: just remember though, when you only know how to use a hammer everything looks like a nail. A better way to think of it is "Do not be clever". Write code in the most obvious possible way so you and everyone else that looks at it in 6 months can understand it.

Early on I was always tempted to prove how smart I was by writing very neat code that nobody could understand because I was using some esoteric library or a weird pattern that only kind of fit (although it worked). Don't do that. Try to be very VERY obvious and you'll thank yourself later.

Its easy to over-engineer any project, but I find OOP especially easy to screw up with outsmarting yourself. You've heard of "spaghetti code"? Well with OOP the dreaded paradigm is 'ravioli code' which is tiny little classes all over the fcking place.

Find a better way.

Another rule of thumb someone told me once is that your classes should not be longer than about 1 page of text. Now, before I get yelled at, yes, its very subjective. You could have 100 lines on one page and I could have 30, I get it. But I think the idea is at least it is some* point of reference so you yourself can judge if a class is trying doing too much.

I worked with an "Architecture Astronaut" (see: https://www.joelonsoftware.com/2001/04/21/dont-let-architect...) one time who was supposed to be giving me a way to access a flag in the database. Just a simple boolean that let me set something to, obviously, true or false.

This guy checked in a 200 line class and walked down to my office to teach me how to use it. Finally I said "can I just set the value manually?" "Sure" he says, "Just use this function" and he showed me a 3 line function buried in there somewhere. Last I heard he is still confusing everyone with his overly complex solutions to simple problems for Ford.

Programing is FUN, but it's also a profession. Don't get too lost in the fun of the moment. Write clean, obvious code and you'll see that you don't have to make things complex to have fun. You'll have more fun solving those big problems now because you made everything nice and neat and clean along the way.

I'll end on a quote from Blaise Pascal, Winston Churchill or Mark Twain (depending on how you google it) that I think applies here as well:

"If I had more time I would have written you a short letter, instead I have written you a long one."

This could be rewritten like this:

"If I had more time I would have refactored you a short class, instead I have coded you a long one"

Its a comment about editing (obviously). yes, write long classes then delete all you can to make them simple like I have explained above.


I should make this comment short, but I do not have the time.

frobware 7 hours ago 2 replies      
If you think you are in for the long haul then please buy a standing desk!
yuchi 7 hours ago 0 replies      
Discipline: using, creating and sharing (among the team) checklists.
bbcbasic 5 hours ago 0 replies      
Work for profitable companies. The company that can barely afford you won't give good pay raises and will have lousy practices borne from the need to make ends meet at any cost to technical debt.

Also some aspect of your job will always suck. Even if you find the perfect job the manager can change or even company gets taken over. For control you need to run your own biz.

logfromblammo 2 hours ago 0 replies      
Don't get so involved in technical details that you don't pay attention to the business.

Your company will try to stab you in the back one day, so you have to keep an eye open for it. Always reserve 1% of your career energy towards looking for a new job greater than or equal to your current job. Whenever you find one, take it, and just keep on looking. (If you do contracting, never let any single client represent more than 50% of your total income.)

It's harder for them to hit a moving target. And even if they do get you, they're more likely to just wing you instead of hitting something vital.

koolba 3 hours ago 0 replies      
I wish I knew about FOSS earlier. After becoming involved in a number of projects I had the happy realization that there are many smart/crazy/fun people just like me.
fb03 7 hours ago 1 reply      
Unit testing.
brango 3 hours ago 0 replies      
That chicks love older guys.
Nasas Van Allen Probes Find Human-Made Bubble Shrouding Earth vice.com
135 points by rbanffy  5 hours ago   45 comments top 17
nonbel 0 minutes ago 0 replies      
There are apparently other ways humans have done this as well:

>"The Cold War tests, which detonated explosives at heights from 16 to 250 miles above the surface, mimicked some of these natural effects. Upon detonation, a first blast wave expelled an expanding fireball of plasma, a hot gas of electrically charged particles. This created a geomagnetic disturbance, which distorted Earth's magnetic field lines and induced an electric field on the surface.

Some of the tests even created artificial radiation belts, akin to the natural Van Allen radiation belts, a layer of charged particles held in place by Earth's magnetic fields. The artificially trapped charged particles remained in significant numbers for weeks, and in one case, years. These particles, natural and artificial, can affect electronics on high-flying satellitesin fact some failed as a result of the tests."https://phys.org/news/2017-05-space-weather-events-linked-hu...

imron 4 hours ago 0 replies      
The most exciting phrase to hear in science, the one that heralds new discoveries, is not, 'Eureka! I've found it,' but, 'That's funny!' -- Asimov
ChuckMcM 1 hour ago 1 reply      
Clearly one of Elon's Red Dragon missions should deploy a VLF antenna and measure cockpit radiation with and without the antenna broadcasting. It would be a real breakthrough if we could deploy 'shields' in this way that would protect interplanetary travel.
ozim 29 minutes ago 0 replies      
If they have 1MW VLF antenna that can take down planes, I can imagine it can also protect from cosmic rays.


ethbro 4 hours ago 0 replies      
pc2g4d 54 minutes ago 0 replies      
Potential downsides of shielding the earth like this?

If life has evolved over billions of years with the assumption that such this radiation would be present, it may be disruptive for it be removed suddenly.

mrfusion 5 hours ago 3 replies      
Would this be useful on mars to protect colonists?
awinter-py 4 hours ago 5 replies      

1. Is this the reason moon missions got a lower dose from the VA belt than expected?

2. Are we concerned about the long term decrease in genetic change from filtering out charged particles? Or it it only relevant to solar particles, not cosmic?

3. Would this substantially reduce cancer rates?

Freestyler_3 13 minutes ago 0 replies      
Does it have any effect on the auroras?
mrfusion 5 hours ago 0 replies      
Do you have to keep producing these waves to get the protection or does the shield somehow linger in space?
mr_overalls 3 hours ago 0 replies      
So would this be protection against a massive solar storm, aka a Carrington Event?
jschwartzi 5 hours ago 1 reply      
Could we use this somehow to deflect cosmic rays in spacecraft?
tomtomistaken 4 hours ago 1 reply      
Can such radio bubbles influence the navigation ability of animals?
b3lvedere 5 hours ago 0 replies      
Thanks submarines! :)
hashkb 5 hours ago 1 reply      
Exception proves the rule! Humans have positive effect on environment. Deregulate it all!
futun 4 hours ago 1 reply      
Time for some climate science recalculations?
billiam 3 hours ago 2 replies      
My first thought: maybe we will live longer because of less cancer from those charged particles? Our nuclear subs are helping us live longer!

My second thought: those particles are essential for mutagenesis, which is a primary driver of evolution, not just in us but everything. The sixth great species extinction we are causing is not enough, we're literally living in an evolutionary bubble, decreasing the likelihood that whatever survives us will be able to adapt over millions of years.

       cached 18 May 2017 19:02:02 GMT