Hacker News new | past | comments | ask | show | jobs | submit | shiredude95's favorites login

I like this quote from 'The art of Unix Programming' published in 2003

"While it still makes sense to write system programs and time-critical kernels of applications in C or C++, the world has changed a great deal since these languages came to prominence in the 1980s. In 2003, processors are a thousand times faster, memories are a thousand times larger, and disks are a factor of ten thousand larger, for roughly constant dollars.

These plunging costs change the economics of programming in a fundamental way. Under most circumstances it no longer makes sense to try to be as sparing of machine resources as C permits. Instead, the economically optimal choice is to minimize debugging time and maximize the long-term maintainability of the code by human beings. Most sorts of implementation (including application prototyping) are therefore better served by the newer generation of interpreted and scripting languages. This transition exactly parallels the conditions that, last time around the wheel, led to the rise of C/C++ and the eclipse of assembler programming."


Not so sure. On a technical level at least, everything that I have read from him has been very concise and pragmatic. His programming advice is always to be as simple as possible because simple is fast. For example, the one I always remember is that in order to optimize that you should try to remove as many "edge case optimizations" as possible, so that everything runs always the same way, and then optimize _that_.

The internet with no adblock is a little like driving through Breezewood, Pennsylvania

https://imgur.com/a/qmAxHfk


*Off-topic:* I've experimented with a new layout in Firefox, and now I can't think of going back.

I first installed Tree Style Tab. I then removed the tabs at the top of the window and added a permanent status bar to the bottom of the window using userChrome.css: https://i.imgur.com/PIONywj.png (edited to add, my userChrome.css: https://gist.github.com/anthonyclarka2/155c038de96e91894cbd4... ) (EDIT: I added some extra css to this to set the titlebar and system UI buttons - use the first revision if you don't want that)

The tree style tabs are wonderful. I can see a grouping of tabs, see which tab is the "parent" of a bunch of pages. I often have a root tab with Jira current sprint, then a ticket sub item, then branching from that I have various documentation and github pages open. All of those pages together form one mental "unit" of related information and work.

I'm sorry to post this in a somewhat unrelated thread, but I'm geeked out by how well this works! Firefox is better for my needs anyway, because I can tag bookmarks. Much easier to find saved pages through searching tags for "emacs, babel, python" for instance. Or "firefox, tabs, css"

*On-topic:* This move by Google is going to lose them a ton of browser users, I think. People love blocking ads! Especially tech-minded folk, who are often asked to recommend software or repair things for less knowledgeable or comfortable people.

I'd also like to see a Chromium fork that continues to allow the Manifest V2 API.


Subcultures have shibboleths. In the same way WallStreetBets wasn't making fun of the mentally handicapped, it would be dangerous to take any chan at face value.

Shibboleths exist to exclude people outside the subculture stereotype - and a good way of doing that is to be offensive. Some subcultures desire to remain as subcultures.

Part of why shibboleths work is because we as a species tend to stop engaging rationally the moment we feel attacked - we switch to being defensive and actually entrench our own values further.

The 4chan shibboleth attacks everyone. No matter who you are or how you identify you're going to be debased and mocked openly - that's kind of the point.


Two parts:

First, I think the ability to DO THINGS is the great equalizer at this point. Being a do-er lifts you out of poverty (or at least out of poverty's worst resting state). Being a do-er expands your network. Being a do-er prolongs your life (people with jobs/daily activities tend to live longer healthier lives). The best part about this is that technology has made it easier to become a do-er. You don't need as much specialized education or tools, and trial and error is free.

Secondly, education's place as the great economic equalizer has weakened because we have weakened the education. In public schools (the most widely used education institutions in the US), kids are just shoveled through. Why? We put an emphasis on standardized testing and graduation rates while also chronically underfunding schools. That leads us to lower quality/quantity of teachers who are told to march to the drum of hitting numbers. The emphasis on "just graduating" pushes teachers to push kids through, event when they have not actually learned anything. That same philosophy then propagates to college, where TA's want to research for their Masters/PHDs, not teach. You then get a "working class" with no real skills/education/ambition... they do not "do", which leads back to my first comment.


Former AWS dev here -- the bar is the same but the workloads can be so insane that you meet the requirements faster than anywhere else in the company (there was one engineer that made principal like 5-6 years out of undergrad, which means they would've had to have been promoted every 1-2 years assuming they were hired as an L4). I think parent comment might be referring to more lenient stack ranking policies, I never experienced any of it during my time there but then again I saw teams with 20-30% annual turnover rates so no need to force people out when they're already showing themselves the door I guess :)

There are some diagrams that I've more useful than others. My favorites:

- Sequence Diagram: great for understanding distributed workflows

- State Diagram: state machines are wonderful tools and having a standard for representing them is a win, IMHO

- Parametric Diagram[0] (SysML): feels like Class Diagrams for functional programming

[0] https://sysml.org/sysml-faq/what-is-parametric-diagram.html


"Civilization advances by extending the number of important operations which we can perform without thinking of them." --Alfred North Whitehead

Go forces writing loop for removing an element from an array even if the programmer knows it's linear time. Ruby gambles that programmer isn't ignorant - or it's not critical - but allows the convenience every time.

Designing languages is hard.


Roosevelt’s Man in the Area quote sums this up well.

> "It is not the critic who counts; not the man who points out how the strong man stumbles, or where the doer of deeds could have done them better. The credit belongs to the man who is actually in the arena, whose face is marred by dust and sweat and blood; who strives valiantly; who errs, who comes short again and again, because there is no effort without error and shortcoming; but who does actually strive to do the deeds; who knows great enthusiasms, the great devotions; who spends himself in a worthy cause; who at the best knows in the end the triumph of high achievement, and who at the worst, if he fails, at least fails while daring greatly, so that his place shall never be with those cold and timid souls who neither know victory nor defeat."

It's also a useful metric for deciding who to follow on social media. Is the person showing off their work or are they just commenting on the work of others? If the work/comment ratio drops too low, I stop following them.


Because big money will trade enough dollar value as to change the price by their action so whoever is second missed the opportunity.

Languages like python are immediately out, they make no attempt to be fast (which is fine for their niche). Even languages like Java are out, the JVM is too smart: it turns out that the algorithm needs to analyse a few thousand possible trades where the answer no trade before it gets one where the answer is yes, as a result Java will optimize for the common no path. In C++ the programmer will lie to the optimizer claiming that the yes path is the most likely even though it isn't! As a result code written in C++ will always have the yes path as most optimal: when a trade should be made the java program pays a CPU branch misprediction penalty and the C++ program will not thus C++ wins the trade. Of course for the above to work you need cleaver programmers who spend time at the profiler and know how to make the CPU work for them.

C++ has one other useful advantages over some of the competition: it won't waste CPU checking for things like dereferencing a null pointer. Speed is important, you should verify via other means (unit tests, formal methods static analysis, or have the checks that you run on dummy data and compile without them for production)

Thus C and C++ are the only useful choices: the compilers have good optimizers (this rules out a lot of other compiled languages), they don't use CPU to check for "can't happen" errors, and you can lie to the optimizer in useful ways. There are other advantages, but the rest are things that a good programmer could easily work around (ie write a new stat structure from your CS textbook)


Is there any short explanation how this works under the hood?

Does the browser maintain an open connection (like a Websocket) for each subscription, or there are some brokers, or if it can use OS facilities (like GCM/APN on mobile) when available, etc etc.

In particular, I'm curious of privacy implications. When I subscribe - what site knows of me (say, if that's a direct connections, I'm not sure I want to tell every site out there when I'm online), or if any third parties are involved - what they know and do (say, what's about sender and receiver authentication)?

From what I saw (but really not sure I got it right), it seems that I have to trust browser vendor and maintain a live connection to some Mozilla server, that'd listen for events (POSTs from sites) and aggregate them for me. But I'm not sure I understood it correctly.

I'll surely investigate this properly, but reading standards is tough, and end-user introductions written by marketing people are virtually useless. So I wonder if there's a short reading to get the overall picture quick, but still see all the important details.


Tangentially-addressed in the PS at the bottom:

> PS. My colleague Zefi Hennessy Holland raised an insightful point about hard to find market secrets that I can’t phrase better myself.

>

> He said ‘If Math Hard is finding the solution to a problem many people know about, Market Hard means finding an industry problem that few people know about through a lot of hard work… Your competition can copy your moves but not the underlying insights that made you make them.’


Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: