So you want to try switching to Ubuntu? - <AUTHOR> http://mhall119.com/2012/04/so-you-want-to-try-switching-to-ubuntu/

<comment><USER2> I feel this article doesn't really meet Hacker News quality guidelines.

-> We aren't usually stupid enough to "Google for software" and download it from shady warez sites and get viruses.

-> Of course there are Linux alternatives to Windows software.

-> Of course there are Windows programs that will not work in Windows.

On topic, the real thing to consider is whether or not core tools that you use in a day to day production environment have comparable alternatives on other platforms (Photoshop? A specific feature only in Office? Stuff dependent on Windows libraries? .NET? (Will mono work with it well?)

<comment><USER3> I need the Adobe suite to make the switch. I can't get away from that. I don't care if you can achieve similar results with other tools. Flash, Photoshop and various third party plugins are so tightly integrated into my workflow I would lose money and clients by making the switch.

</comment></comment><comment><USER4> I dual boot with Ubuntu on my Macbook. For anyone thinking about making the switch, it is really easy.

My primary tools for daily life:

-> Instant messenger.

-> Email client.

-> Web browser.

-> Text editor.

Both MacOS and Ubuntu Linux have excellent working options for each, so I don't miss MacOS when I'm in Linux. Infact, sometimes I miss Linux when I'm in MacOS.

Oh.. and if you're dual-booting, Ubuntu mounts the MacOS partition as read- only, which is great for being able to access stuff in my mac partition.

<comment><USER5> IME, you're going to want non-Nvidia graphics for Gnome3.

<comment><USER6> What is the advantage of that?

<comment><USER7> I've had varying levels of success using gnome3 with the nvidia drivers. With one install, gnome-shell would crash about every day. On another, I didn't notice any bugs other than sometimes when adding a second monitor (easily fixed with the nvidia config).

Currently I have decided not to use the nvidia drivers and haven't needed them for anything I do.

</comment></comment></comment></comment><comment><USER8> [http://webcache.googleusercontent.com/search?q=cache:http://...](http://webcache.googleusercontent.com/search?q=cache:http://mhall119.com/2012/04/so- you-want-to-try-switching-to-ubuntu/&hl=en&strip=1)

TL; DR: You're changing OSes, expect for a complete change in landscape.

</comment><comment><USER9> If, according to the author, "In the Linux ecosystems, we do things a little (ok a lot) smarter", then we shouldn't be discussing things like this: [https://plus.google.com/109922199462633401279/posts/HgdeFDfR...](https://plus.google.com/109922199462633401279/posts/HgdeFDfRzNe)

The article itself is just some basic advice for people new to linux that want to try Ubuntu.

</comment><comment><USER10> I switched from Ubuntu to Fedora for my dev machines (two thinkpad laptops). I still use Ubuntu 10.04 LTS for my servers and am considering moving to 12.04 LTS once my provider supports it.

</comment><comment><USER5> I did a year ago, then I upgraded to 11.10 and it slowed my workflow down for months. Now I'm back on 10.10, which just feels old, so now I'm considering FreeBSD once I get past my current work milestones. I'm sick of thinking about my OS.

<comment><USER11> I sorta said the same thing with 11.04 (not 11.10, I liked 11.10 quite a bit), but I've been using 12.04 as my primary system for quite some time now. I simply cannot go back to another system anymore. Ubuntu and, specifically, Unity have completely changed and improved my workflow. Unity is completely able to be keyboard driven (AWESOME!), gets out of my way (I autohide the launcher on my laptop, but keep it out on my desktop with 24" screen). Simply put, every other system feels old and dated at this point without the innovation that Unity has brought. Even OSX.

You mention "thinking about your OS". My experience is exactly opposite of this. I never think about my system with Ubuntu/Unity. Everything just works and gets out of my way, but is easily invoked when I need it (super, alt, super+<whicheverkeybinding>) and that is how I want it!

Recently I had to go back to OSX for a bit when I was doing something for a friend and, besides from some nice UI polishes that were really well done in OSX, everything else was annoying and I started to realize how bad OSX really was. Maybe "bad" is a strong term, but dated might be more appropriate.

Either way, I love Ubuntu and Unity and I won't be going anywhere anytime soon.

<comment><USER12> I have 11.10 on my work laptop right now, since we use ubuntu at work. my experiences are

2 hours battery life (with jupiter), windows on the same machine gets 6-8 hours

around 1 in 5 times it crashes when coming back from hiberation

it never shows me the login dialog after turning the monitor off, instead i get my desktop in a much lower resolution, and random artifacts of the windows that were on the screen when the machine turned off the display

fonts look like garbage compared to osx

trackpad support is a joke compared to osx.

I use the keyboard primarily, and things don't make anywhere near as much sense as osx. For example, c-c to copy test, alt-tab to switch to terminal, c-shift-t to create a new tab, and c-shift-v to paste the text. on osx, it is cmd-c, cmd-tab, cmd-t (just like every other app), cmd-v (just like every other app). I don't appreciate constantly jumping modifier keys for even the simplest workflows, and the wild inconsistencies in short cuts on ubuntu.

There is nothing that even comes close to omni-focus for gtd, photoshop for image editing, 1password for account management, colorschemer for color choice/manipulation, ia writer for creative writing, git tower for git frontends, reeder for blog aggregation, keynote for slide decks, etc etc. I have found alternatives for these things, but honestly, they all suck in comparison to what is available on osx. This is probably the biggest dissatisfaction with the os, frustration with every app I use that is not chrome or emacs.

Not saying osx is perfect (I could do a top ten list of things that annoy me there), but given a choice I would probably use windows over linux, and osx over windows. I am hoping 12.04 will at least give me battery life that will last a long meeting, but im not holding my breath.</comment></comment></comment>


SEO for Web Engineers - <AUTHOR> https://www.johnwdefeo.com/articles/seo-for-engineers <comment><USER2> The million dollar question is how to get good rankings for good keywords without having to spend too much money. This article does a good job describing how to keep a successful site optimized but actually getting the rankings is not covered much.

 _Never, ever, let marketers send newsletters and promotional e-mails from the same IPs that the websites are hosted on. A rogue employee who violates the CAN-SPAM act may result in the entire website being blacklisted._

But the problem is all someone needs to do is just get the IP for the website from the email link and blacklist that too, so a different IP will not help much. The best solution for blacklisting is cloud hosting which has many IPs , so the odds of all being blacklisted are slim. Amazon s3 servers have like 100+ ips

<comment><USER3> The key to getting good rankings for good keywords is really the same as it's always been: writing stuff people actually want to read/find useful and getting it referenced by sites and services with a large audience and a decent reputation.

That's why so many startups and agencies fail miserably with their blogs; because their content is third rate crap that no one really wants to read. They wonder why say, Moz or Sitepoint gets all the traffic, and you want to say "have you actually looked at your own work?" given that the latter two companies offer useful, actionable advice and they don't. It's like they expect the magic Google fairy to take their uninteresting work and hey presto, it suddenly appears on page 1 and get millions of views.

Okay, it's not quite that simple. Sites with a bigger marketing budget tend to do better, as do sites and companies willing to put a lot more time into getting content out on a regular basis. And yes, some people will get temporarily (or sometimes semi permanent) advantages through dodgy things like private blog networks and paid links.

But actually trying and putting in the effort/treating the SEO side as a full time job is really the minimum here, and many don't seem to even bother.

<comment><USER4> This. It's all about supply and demand, stuffing keywords to game the SERP is a short term tactic.

If you have content that people dig, Google will automatically send you more traffic.

If you have mediocre run of the mill startup content blog, you are shit out of luck because _you are doing the same thing everyone else who failed is doing_

<comment><USER5> Keyword stuffing - not any more :-)

</comment></comment></comment></comment><comment><USER3> Another one is 'use the correct status codes for page requests'. Seen far too many sites returna 200 OK status for a non existent page, which may cause havoc with search engines indexing 404 messages and what not.

Oh, and make sure you actually use heading tags properly. God, so many sites and apps seem to be designed with no thought put into heading structure, with random h2s and h3s strewn about at random. Especially don't forget the h1 tag, and try and make sure it (and the title tag for the page) are both unique on every page.

Basic I know, but come on. Too many SPAs seem to be built with no thought put into even the basics of HTML structure or on page SEO.

</comment><comment><USER6> A brisk but thorough checklist that fulfills the promise of the title.

My only objection would be this bit (below). Specifically, "demands." How many engineers are in a positiin to demand anything? The truth is, for the most part, it's not engineers who are ruining the internet with bloat and privacy infringements. It's designers and marketing. They're more likely to forget the end user and opt for so nasty excess.

> "Demand that someone take ownership of each tracking pixel and tag that's > added to a page, then, make these stakeholders justify their tags every six > months. If you don't, people will ask you to add junk to the page until your > team gets blamed for a slow site."

<comment><USER7> If a designer or marketer is forgetting the end user then they don't deserve the title "designer" or "marketer".

And to counter your point, I often see sites built by engineers that ignore the end user by not employing any of the best practices the UX/UI and marketing communities have uncovered over the years.

<comment><USER8> A designer or marketer's focus isn't ux/ui nor should it be.

A marketer is brand building. Could ux/ui be part of it sure but as long as feeling x is associated with product y they have done there job.

A design's job is to express that feeling through design.

UX/UI could be part of it depending on the group targeted. But it's like a red tie it could help but isn't required for that important business meeting.

<comment><USER9> Depends on context. There are many different types of design. A branding or marketing designer needs to trigger emotions, yes. A product designer needs to make it easy for a user to accomplish a task.

</comment></comment></comment></comment><comment><USER10> > Never, ever, let marketers send newsletters and promotional e-mails from the > same IPs that the websites are hosted on. A rogue employee who violates the > CAN-SPAM act may result in the entire website being blacklisted.

Can someone expand on that one? The blacklist would only apply to the IP address being sent from and not the domain?

<comment><USER11> Both a domain and an IP can get blacklisted, however it's typically IPs blacklists that you find yourself dealing with if you're sending emails from your webserver(s).

You can sidestep these issues by using something like Mailgun or Sendgrid as your delivery mechanism for server-generated emails (password resets, account registration confirmations, etc). And always set up your SPF records to include these services as permitted senders.

You can use the same services to send marketing emails or there are of course services like MailChimp / Constant Contact / Campaign Monitor / etc that provide all the UIs for marketers. Same thing applies though, you gotta set up SPF records.

<comment><USER10> > it's typically IPs blacklists that you find yourself dealing with if you're > sending emails from your webserver(s).

Why wouldn't they blacklist the domain if they know that IP is associated with your domain?

Would the domain blacklist only happen after you've had several IP addresses blacklisted?

<comment><USER11> All I can do is speculate as I don't know the answer to either question conclusively.

So...to speculate: I _know_ that spam email is coming from an IP; I don't necessarily know that the IP is officially associated with a given domain. Sure, I could do a dig to see if the A record matches the IP, but blacklisting an entire domain is a pretty draconian step. I need my blacklist to be accurate, with a minimum of false positives, or its market value diminishes. Adding domains based on IP association is going to be more likely to induce false positives and increase the administrative overhead involved with my blacklist, even if that overhead is mostly automated through "get me off this blacklist" forms and the like. /speculation

As an aside, I've noticed that if a cloud provider recycles IPs (Digital Ocean) the chances of pulling a blacklisted IP off the heap is pretty good. At this point, even if all the server is doing is sending the occasional password reset email to a handful of internal staffers, we run the email through Mailgun. It just isn't worth dealing with the hassle of trying to get an IP off a blacklist.

</comment></comment></comment></comment><comment><USER12> Why does the name 'Web Engineer' bother me in this context? It had taken me a while just getting used to software engineer, even having a degree. Software dev, especially application building is mostly combining pre-built libraries. A web engineer is someone I would think drafted and refined the protocols and technologies used by app devs. Anyone else have thoughts on this? Is engineer == dev, STEM == STE*M now? UX engineer, marketing/growth engineer?

</comment><comment><USER13> The interesting one for me was measuring error rates (if your JS heavy web page calls the server 100 times, if two users try to load and one gets 500 that should be 50% error rate but it looks like <1%

So it feels like a piece of JS that says I have seen everything that should load load ok, then reports home with the page seems a good idea.

Probably quite doable - can JS see the network load like web developer tools ?

<comment><USER14> JS errors, page size, HTML errors, bad web design, CSS problems, SSL and broken layout has nothing to do with organic results or SEO and it is not proved that it affects your organic result position.

Even if it does, in-page problems doesn't affect your result not even by 1%. 99% is backlinks and their quality (or course).

Example: check techcrunch.com and debug/inspect their homepage. 15 JS errors, 6mb in size, no Description/Keywords, awful <title>, bad HTML elements. Can you even remotely beat them in the keyword "startup news"? No way. No matter how hard you will try to "SEO" your website.

I will tell it again. "SEO" was always a gimmick marketing thing. It's crazy that even now ppl don't understand that the only thing that matters are quality backlinks, as a result of quality content.

<comment><USER15> Exactly! And I think the problem with an SEO guide to engineers in particular, is that it ends up being a list of technical things. Things that are easy to quantify and that are black or white. Those are marginal. Yet an engineer can increase the score in some tool from X to 1.257X so they're happy.

It's much harder to write a guide on how to engage and delight your audience, and how to get the attention of other sites and the authority and trust to get linked to.

</comment></comment></comment><comment><USER16> >A bot in Russia isn't automatically bad and a bot in the United States isn't automatically good. Plenty of bad actors deploy bots from within Amazon's U.S.-based AWS servers.

"Checked his post history. Russian bot confirmed."

</comment><comment><USER17> Don't waste your time reading this article, it just mentions random points about how to have a functional web app, plus in a perfect world SEO should not exist, it's the Search Engine's job to find the content and show the user the content he is looking for, not the developers. I shouldn't have to add "hacks" in my code for the Google Crawler to understand my site the same way users already do.

<comment><USER3> Eh, not sure I'd say SEO shouldn't exist. At least, the techniques used for it are all things that should be the expected default on every site, like having a logical HTML structure with heading tags, having a useful unique title for every page, having a description shown in listings, logically linking to relevant content, rendering the page on the server rather than the client, etc.

Maybe black hat/spammy SEO shouldn't exist, but at a certain level, good SEO is basically just about designing a good product and marketing it well.

<comment><USER18> Agreed. A lot of the "good" stuff you can do for SEO nowadays is pretty close to "stuff you should be doing anyway" for accessibility, usability, etc.

</comment></comment></comment><comment><USER19> I'm hoping my free SEO monitoring app in Cloudflare can at least help with the technical dirty work. It is powered by the Cloudflare Workers platform which allows for quick fixing from within the app [https://www.cloudflare.com/apps/ranksense](https://www.cloudflare.com/apps/ranksense)

<comment><USER20> This is an interesting use of Cloudflare Workers.

My unsolicited advice is to list some specific SEO fixes and improvements in the app description. It's not clear to me what it does and the screenshots are hard to parse.

<comment><USER19> Thanks. This is actually great feedback. I will list the issues we fix so far in the next update.

</comment></comment></comment><comment><USER21> Solid list overall.

"Consider using the "304-Not Modified" response code on large websites with lots of pages that don't change very often."

This is the only thing that, from an SEO perspective, I'd challenge. I can't even begin to see where the supposed benefit of this would be.

<comment><AUTHOR> The spirit of the idea is that Google will see the 304 status and move onto the next page more quickly than if it received a 200 status and reconciled that version of the page with the version that was previously crawled.

<comment><USER21> Thanks for clarifying. I guess that makes sense from a crawl efficient/budget standpoint, and in helping preserve server resources.

For context, I've only come across a HTTP 304 status once in 9 years of SEO and crawling websites on a daily basis. I've no first hand experience of them being deployed in this way at scale on a live website and so haven't seen any server log analysis that demonstrates the efficacy of their usage etc. But it's an interesting idea nonetheless.

<comment><USER22> 304 has a specific use case, which is that if the crawler says, I have version X of the page _already_ , give me a 304 if that's still current or a 200 with content otherwise.

With dynamically generated content you're more likely to just see 200s, but I think Nginx sets Etags automatically on static content so it's common to see 304s there.

I'm pretty surprised you haven't seen it often, but I'd guess it's more to do with whatever crawlers you're using (they'd need to be caching content and headers), rather than the scarcity of the status code.

</comment></comment></comment></comment><comment><USER23> > A complex web page might call the server 150 times as it loads to > completion.

That irked me a little. I'm assuming this includes fonts & images (not a bunch of ajax requests), but it still seems high.

</comment><comment><USER5> I would add not just rely on robots.txt - use no index and/or password protect.

Robots stops crawling not indexing

</comment><comment><USER24> SEO is extremely simple. This is all you need to know to rank top page on Google: Get lots of backlinks from sites with good Google ranking to blog articles on your site about the subject you want to rank for.

In other words, publish content people want to link to, and get big players to link to it.

That's it. Other SEO advice is usually a distraction or snake oil.

</comment><comment><USER14> there is no such thing as "SEO". Also, everything on the list has nothing to do with Search Engine Optimization.

For example "SERVER STABILITY AND DOWNTIME".

How come taking case of your server stability is SEO???

<comment><USER14> I'm writing a little more about that because it's sad to read an article like that that makes no sense.

SEO doesn't exist because the ONLY way to optimize your website is to write good content and get quality backlinks. To be precise, 99% of "SEO" is backlinks and 1% is your HTML quality (in-page SEO).

To give you an example, you can have the worst HTML, no internal linking, to Sitemap, no nothing, but have 10-20 quality backlinks and still be #1 in Google.

I'm doing internet marketing for more than 15 years now and the proof is out there. Quoting something else from the article:

"Google will try to follow relative paths inside of Javascript, even when they don't exist. This can result in polluted crawl error reports."

So he author claims that a relative path to a URL (inside a JS call) will effect your organic results. I wonder if anyone understands that this makes no sense and especially SEO-wise.

<comment><USER8> The quality score could go down which can lower rankings with too many broken links.

Google has at least 50-100 variables it checks and assigns different weights to.

<comment><USER14> quality score has nothing to do with organic results.</comment></comment></comment></comment>


A giant group canvas from Reddit - <AUTHOR> https://www.reddit.com/r/place/ <comment><USER2> Also see here: [http://sudoscript.com/reddit- place/](http://sudoscript.com/reddit-place/)

</comment><comment><USER3> A lot of people are forming factions to maintain their art. It took roughly 8 hours for the first art-botnet to be released.

<comment><USER4> Source code please

<comment><USER5> Here's the /r/Rust bot, though I think it would be unfortunate for this to turn into a war between bots.

[https://github.com/ruplace- controllers/ruplace/blob/master/s...](https://github.com/ruplace- controllers/ruplace/blob/master/src/main.rs)

</comment></comment></comment><comment><USER6> I'm guessing this is going to be an April Fool's prank tomorrow

<comment><USER7> Tomorrow? ;-)

</comment></comment><comment><USER8> I'm liking the Mona Lisa r/monalisaclan</comment>


What's the Best Cloud Provider in 2016? AWS vs. Digital Ocean vs. Google vs. OVH - <AUTHOR> https://thehftguy.com/2016/06/08/choosing-a-cloud-provider-amazon-aws-ec2-vs-google-compute-engine-vs-microsoft-azure-vs-ibm-softlayer-vs-linode-vs-digitalocean-vs-ovh-vs-hertzner/ <comment><USER2> AWS for Cloud LeaseWeb for raw IaaS</comment>


Karma hotspot broadband access: Cheap mobile data plans - <AUTHOR> http://www.slate.com/articles/technology/technology/2013/05/karma_hotspot_broadband_access_cheap_mobile_data_plans.html <comment><USER2> I'm waiting for a business with a similar business model that just sells SIM cards for pre-paid data. There are lots of great arduino shields or devices out there (GPS trackers and the like) that I would love to use and toss in a SIM card and just pay for the data used from a pool account rather than a price-per-month for every line AND data that's never used.</comment>


The Single Responsibility Principle - <AUTHOR> http://blog.8thlight.com/uncle-bob/2014/05/08/SingleReponsibilityPrinciple.html

<comment><USER2> This is nice and drives home something particularly important to me. In Parnas' quote he suggests _modularizing_ such that "things that change together stay together". I think this is highly sensible. Another way of saying it is that your _API_ s should be fixed.

But often this gets conflated in OO because objects are the hearth of modularization (via encapsulation) along with _state_ and _interaction_ and any number of other things.

\---

As a comparison point, you might examine ML modules. They look a bit like this

        module counter(X)
          count : X -> Int
          incr  : X -> X

and they specify nothing more than the fact that some unknown type X satisfies the interface `(count, incr)`. We can then create a concrete implementation of such a counter

        incCounter : counter
        incCounter = structure(Int)
          count n = n
          incr n = n + 1

The incCounter internally uses `Int` to represent `X`, but externally it's completely impossible to tell. This means that modules define exactly two things: encapsulation and interface.

\---

So why does this fall down in OO? Because objects lend themselves to being thought of as entities which move through time and space in a stateful fashion. This means you're also likely to encapsulate differences of entity without regard for how they might change together or apart.

Returning to Parnas' quote: it's a bad idea to decompose into modules based on a flowchart. Flowcharts allow you to emphasize the entities of your system, but they are not demonstrating the boundaries of change.

So you can probably get better OO design by being clear when you're using objects as entities (and thus perhaps you do not need encapsulation at all!) and when you're using them as modules. Once this distinction is made it can be clear when objects will derive from flowcharts and when objects will derive from selections of choices made by people.

</comment><comment><USER3> While he might understand what he is talking about, based on a corpus of experience, people who learn about this "principle" as they learn to program do not typically understand it and tend to draw only the wrong conclusions from it. What makes for coupling, and how to avoid it, you simply learn with a lot of practice, and there are not many clearcut guidelines you can formulate, it all varies depending on the problem. At best you can read SICP and see how they decouple everything by doing lots of data-driving and dynamic dispatch and things of this sort.

This is too vague to be a "principle", and only causes confusion. It is about as precise, and as useful, as the "write good code" principle.

<comment><USER4> A lot of people seem to chafe at these principles because they convey truths about a intangible reality they may not even be able to perceive. They only see more work for little payoff. They don't have the body of knowledge and experience (nor the intuition) to know when when to abstract more. We're also in a post-enterprise era, where any sort of deliberate design is often mocked by way of strawman AbstractComposerFactorySingleton references. Rhetoric masquerades as honest intellectual debate for self-promotional purposes.

I consider myself fortunate to have written enough C++ to learn coupling and cohesion. When you screw these up in C++, you pay for it, over and over, through increased compile times and link times.

<comment><USER5> They don't chafe because they convey truths about a intangible reality they may not even be able to perceive. They chafe because nothing is actually being conveyed. Its a bunch of words removed from any actual meaning - from the concrete problems that caused the person to arrive to the truth being "conveyed". They're like the conclusion part of an essay with all the rest left out. They tell nothing to people that don't already know, and nothing new to people that do.

Its no wonder people either tend to discard them or to apply them incorrectly.

<comment><USER4> Yeah, the actual context is rarely ever delivered. And that matters a lot. Sometimes I wonder how well it would be received, though. Not to mention many books on software engineering tend to be written in a more abstract style than most blog posts. I'm not sure of the precedent for this is there; it would certainly help.

The GoF book does a decent job balancing context with theory, IMO.

<comment><USER5> I liked the GOF book. But what I'd really _love_ to read about are the descriptions and (architectural) histories of complete, real software systems, especially about the design decisions and the reasons behind those decisions.

I think such information will be received with great interest - it would be like receiving a shot of condensed experience in readable form. Not exactly the same with actual experience of course, but way better than just abstract principles that leave me unconvinced.

<comment><USER6> Have you seen the Architecture of Open Source Applications[1]? I think it fits very well with what you just described. It explains not only the what, but also the why, with real examples of successful applications.

[1] [http://aosabook.org/en/index.html](http://aosabook.org/en/index.html)

<comment><USER5> I remember seeing it and promptly forgetting about it. Thats precisely what I needed. Thank you.

</comment></comment></comment></comment></comment></comment></comment><comment><USER7> I personally find it easier to think of it as Conway's Law:

"organizations which design systems ... are constrained to produce designs which are copies of the communication structures of these organizations" \- M. Conway

More on [http://c2.com/cgi/wiki?ConwaysLaw](http://c2.com/cgi/wiki?ConwaysLaw) and [http://en.wikipedia.org/wiki/Conway's_law](http://en.wikipedia.org/wiki/Conway's_law)

However, I also hate this mental model of software engineering because I have often found it easier to refactor the organization. Maybe because I'm a prima donna and only like working at startups.

I think it's better to require each portion of code has a narrow interface so you can reason in your mind easily about what that code segment does and should do into the future. A function or a class must promise what it should deliver given some inputs and not violate that expectation. If you ever had to reason about code using invariants, you'll grok this.

More on [http://c2.com/cgi/wiki?NarrowTheInterface](http://c2.com/cgi/wiki?NarrowTheInterface)

</comment><comment><USER8> My team and I have been working on a problem over the last week or so that screams modularity problems. Each time we think we have it solved, someone says "Wait, there's this report only 2 of us have ever heard about that doesn't work because X, Y, Z." The discussion has lasted a couple weeks and is starting to push deployment times back.

Essentially, we have a distributed set of `devices` which interact with `customers`. Each customer has a `session` with the device. During the session, the `customer` may make various types of `payments` (coin or credit card) for various types of `fees`. Additionally, the customer may receive one or more `tickets`. The data model is getting pretty big with:

* Devices

* Sessions

* Line Items

* Allocations

* Payments

* Adjustments

* Violations

* Fees

For accounting purposes, we need to be able to map our payments to the fees and violations they are paying for. Customers might make a single payment to cover multiple violations and those violations may be across multiple sessions.

The number of times I've heard "this new solution fixes X but breaks π" is frustrating, but I don't see how this could be separated out. Perhaps others have insights that would simplify all of this, but it seems to me that the essential fact of our system is that the payment/line item/allocation system is responsible for many tasks/reports. I read articles like this and pine for:

A) A project where true modularity is achievable.

B) The skills to make my current project truly modular.

<comment><USER9> I'd say code a raw draft to gain a better understanding of the problem space, then talk about it again. If you're close enought to something workable refactor iteratively and let the concepts emerge.

</comment></comment><comment><USER10> (Warning: bikeshedding/off-topic angry rant ahead. Please ignore.)

"The Single Responsibility Principle (SRP) states that each software module should have one and only one reason to change. This sounds good, and seems to align with Parnas' formulation. _However it begs the question_ : What defines a reason to change?" (emphasis added)

Ok I realize that languages evolve and all; and I see how the nearly universal appeal of using the phrase "begging the question" in this way will ensure it will soon make its way into the dictionary; but I think people should at least know the original meaning of the phrase [1] and that, in some pedantic or predominantly academic circles today, it is considered as incorrect usage. That is all.

[1] [http://begthequestion.info/](http://begthequestion.info/)

<comment><USER11> I don't think you're right here. In this case, the fact that "a reason to change" is central to the definition and itself undefined means that the definition is begging the question in the original sense.

</comment></comment><comment><USER12> The most important principle in software design. Follow SRP and so many other things just fall into place.

</comment><comment><USER13> Prior to reading this article, I always took the "single responsibility principle" literally, but largely do this in practice whenever possible.

Thank you.</comment>


Striving ... The launch mistakes I made, or lessons I learnt - <AUTHOR> http://michaelwright.me/striving

<comment><USER2> nice post :), care about revealing more info on your stack and how you went about building the site? The responsive design is really well done too.</comment>


California decided it was tired of women bleeding to death in childbirth - <AUTHOR> https://www.vox.com/science-and-health/2017/6/29/15830970/women-health-care-maternal-mortality-rate <comment><USER2> Hard to take articles from vox seriously when they put this in bold print.

>Mothers die too often because women's health isn't valued in the US

<comment><USER3> Some support for their assertion:

\- Maternal death rate is worse in the US than any other developed country, and it's _rising_ (even though health overall is getting better)

\- Until the ACA passed, insurance covered very limited birth-control options for women, but it did cover Viagra[2][3]

\- Women earn less money, which means they have more difficulty getting appropriate care in the US, where money buys access to better care[4]

\- The US is still run by old men, many of whom believe that birth control has no medical purpose and is instead a "lifestyle" drug

1\. [https://www.propublica.org/article/die-in-childbirth- materna...](https://www.propublica.org/article/die-in-childbirth-maternal- death-rate-health-care-system)

2\. [http://abcnews.go.com/US/story?id=91538](http://abcnews.go.com/US/story?id=91538)

3\. [https://daily.jstor.org/cover-viagra-but-not-birth- control/](https://daily.jstor.org/cover-viagra-but-not-birth-control/)

4\. [https://www.kff.org/womens-health-policy/fact- sheet/gender-d...](https://www.kff.org/womens-health-policy/fact-sheet/gender- differences-in-health-care-status-and-use-spotlight-on-mens-health/)

</comment></comment><comment><AUTHOR> And California's maternal death rate was cut more than in half in 5 years, and is now one-third the rate of the US as a whole. Data analysis, and developing tools and algorithms.</comment>


New Kids on the Block: Understanding Developers Entering the Workforce Today - <AUTHOR> https://stackoverflow.blog/2017/06/12/new-kids-block-understanding-developers-entering-workforce-today/ <comment><USER2> We go through this, generally, every 4 years. I don't know why it feels like 4 years is the 'period' of new-school-hacker-on-the-scene, it just feels like it from the perspective of industry/capitalism out here in the workforce.

Perhaps its because it seems like 4 years is the mean time between start and end of the new-school; i.e. it takes at least 4 years for the group who have forgotten how to do the old stuff to be replaced by the group who don't know anything about the old stuff, and just re-invent it all again, with bells and whistles, and .. y'know .. youth'y cool.

</comment><comment><USER3> Hey new developers:

A fully funded retirement = Freedom

I know it doesn't seem important now, but if you focus on this early in your career, you'll have a lot of flexibility later in your career.

<comment><USER4> The problem is that many investment products in 401ks under perform. At my last company the best fund netted on 4%. Since I now manage my own IRA, I get 15-20%.

<comment><USER5> > Since I now manage my own IRA, I get 15-20%.

I hear this a lot from people who invest and I simply don't believe it. If you are able to consistently get 15-20% you should stop your normal career and just become a investment advisor/broker as for you'll make WAY more money in life.

<comment> FLUX-YOU >you should stop your normal career and just become a investment advisor/broker as for you'll make WAY more money in life.

I don't think you can just walk into a respectable brokerage firm and just apply to be an investment adviser or broker based on how well your personal portfolio does. It's probably gated by a 4 year math/science/finance degree and other extra-academic examinations.

If you can, I'd like to know how. I'd much prefer finance over healthcare.

<comment><USER5> Just start small, do this for 1 or 2 friends for a few thousand dollars. If you can show this kind of return consistently you'll be managing a billion dollars in no time. 15-20% is a really good return, I still dont believe it, but if you can do this it'd be easy to take 1.5% and earn for clients.

<comment> FLUX-YOU I guess the onus is on the length of time he means by consistent, because yeah, that could be 10 months or 10 years.

</comment></comment></comment></comment></comment></comment><comment><USER6> They say $40k is the median salary for new developers in Canada, this is much lower than I've observed and it makes me question the quality of the entire dataset. Are these really professional software developers who answered the survey?

<comment><USER7> The salaries for the US also look weird to me.

Canadian new grads tend towards $60-70k with larger American companies paying closer to $80-90k in the same location. My sampling is heavily biased towards Ontario. I expect Greater Vancouver to be similar but perhaps the rest of Western Canada, along with Quebec and the maritimes are dragging the average down.

<comment><USER8> The US is not Silicon Valley or NYC. Between the coasts, a lot of developers get <$70k per year salaries.

Maybe it's the same for Canada?

</comment></comment></comment><comment><USER9> I graduated in May from a Big 10 college with a computer technology degree.

As much as remote work seems great, I still need a senior level developer I can walk over to and ask questions of.

As well, the program I was in was in a constant state of flux, and the incoming freshmen are able to choose a lot of targeted tracks like Cyber Security, Forensics, High Performance Computing, etc. When I started there were too options: one focused on the business side and one on the engineering side.

</comment><comment><USER10> I'm surprised to see "desktop applications developer" in front of "mobile developer". Where are these desktop jobs, and desktop applications? The work I see in the Apple world is _mainly_ iOS, with some macOS. Do Windows developers make up the difference?

<comment><USER11> Yes. There is a whole world of windows applications out there doing central line of business work for all the unsexy but more common businesses throughout the country.

</comment></comment><comment><USER12> This report (and others) suggest companies are hiring those with non-CS degrees. If this is the case, then how do self-taught or non-CS majors get hired when the bar to entry is solving medium to hard level leetcode problems?

<comment><USER13> A part of the puzzle might be that being good at solving interview questions is orthogonal to having CS coursework under your belt. I can speak anecdotally from my own experience in that I didn't get good at those types of problems until I spent my own time working on them.

</comment></comment><comment><USER14> A have worked most of my career all over the travel industry and there is a huge shift I have noticed in the past couple of years. First of all the companies in this space are massive having thousands of developers and secondly these companies typically have an old industrial mindset of never firing or retiring people and absolutely never making hard transitional decisions that impact the work force. All of these companies are shifting as much as they can, if they aren't there already, to conduct as many transactions as possible over a website.

Most of these companies have been around forever and have been engaged with selling online, in some capacity, since the 90s. The problem with that is that until about 9 years ago web technologies were slow and nobody took them seriously. Even now formal training in web technologies is rare.

This is problematic because more is continually demanded from web technologies and the majority of the work force is completely lost. The universal technology in every one of these companies is Java and it dominates nearly all aspects of development at every stage. Java isn't a web technology. The result of that problem differs by company due to internal perceptions of technology and company culture.

One company I worked with was growing its revenue and market incredibly fast outpacing their peers and historical norms. This group had the freedom to make candid decisions about their future and reality in general. They had the most bench-warmers of any group I worked with, but they also realized the future is in JavaScript instead of Java. The challenge is that legacy developers wanted to learn this "new" way, but transitioning is hard, especially if you aren't doing that work in your job. There was a lingering fear of obsolescence here.

One company I worked for refused to figure it out. They were confronted by all manners of technology decisions they could not agree upon resulting in different layers of management doing their own things without agreement. The only strong part of that business was marketing. The company folded and somebody bought the brand for super cheap with a skeleton crew.

One company I worked for waited very late to accept this reality and struggled to figure it out. There is a JavaScript layer, which is largely a vanity architectural layer over and reliant upon the legacy Java layer. This group has done well by cornering large areas of the marketing and acquiring competition. The technology is slow compared to their competitors, expensive to maintain, and very painful to work on. Many of the developers refused to abandon doing as much as possible in Java and will often block new code submissions that could be better served in Java. There was no fear of obsolescence because nobody in a decision making capacity was willing to do things in a new ways.

I cannot imagine what this industry will look like 10 years from now as the technologies and developers continue to age and new blood continues to either burn out or grudgingly conform to the old technologies.

</comment><comment><USER15> Do you have the right stuff?

<comment><USER15> Man, a tough crowd here today. So no one remembers the New Kids on the Block craze back in the late 80's? Girls writing NKOTB on their book covers?

<comment><USER16> Oh, _I_ remember.</comment></comment></comment>


Two Winning Pwn2Own JIT Vulnerabilities in Mozilla Firefox - <AUTHOR> https://www.zerodayinitiative.com/blog/2019/4/18/the-story-of-two-winning-pwn2own-jit-vulnerabilities-in-mozilla-firefox <comment><USER3> How do these competitions work? Presumably the contestants had the exploits ready to go beforehand? Or are they only told the application they need to hack on the day - that is truly impressive if so! Are there any restrictions on the tools the contestants can use (e.g. static/dynamic analysis tools)?

<comment><USER4> >Or are they only told the application they need to hack on the day - that is truly impressive if so!

No, the applications that are available to attack are known in advance - <USER2> exploits tend to involve months of work by talented researchers.

Source: I was around at MWR (purely as an uninvolved but interested spectator) when mobile & regular pwn2own 2017/2018 were taking place.

</comment></comment><comment> phoe-krk Why the hell people put screenshots of code in articles like that if they are able to put beautifully syntax-colored and copypasteable code snippets instead?

<comment><USER5> They need support from their CMS?</comment></comment>


Daily Muse, Community For Professional Women, Looks To Reinvent Company Profile - <AUTHOR> http://techcrunch.com/2012/02/22/the-daily-muse-the-community-for-professional-women-looks-to-reinvent-the-company-profile/ <comment><USER2> Reading some of their articles, I fail to see what differentiates them from say FastCompany, or Entrepreneur.com (besides targeting women) ? Or is this just a pageview machine? In any case, their best bet to growing is SEO, so maybe building a huge database of company profiles is a good way to go.</comment>


Getting Maximum From JavaScript Error Tracking - <AUTHOR> http://blog.qbaka.com/post/81596992555/getting-maximum-from-javascript-error-tracking

<comment><USER2> Really nice and new approach. I will give it a try for sure. Thanks.

</comment><comment><USER3> Best error tracking.</comment>


Men age faster 'because of Stone Age sex' - <AUTHOR> http://www.telegraph.co.uk/earth/main.jhtml?xml=/earth/2007/10/17/scisex117.xml

<comment><USER2> Not very convincing. 1\. Why do men reach puberty later than females? 2\. Men can have children even when they're very old, women can't. This should promote longer lifespans.

Here's another hypothesis. Quoting the Wikipedia article on the Medawar theory of ageing:

"Nature is a highly competitive place, and almost all animals in nature die before they attain old age. Therefore, there is not much motivation to keep the body fit for the long haul - not much selection pressure for traits that would maintain viability past the time when most animals would be dead anyway, killed by predators or disease or by accident."

This is particularly true for men, who were (and still are, to an extent) usually doing more dangerous jobs than women. Thus, they die from accidents or predation earlier, so there is less selective pressure for genes that promote healthy organs in old age.

Another possible scenario: there is more variation in male traits than in females, and age is more than linearly dependent on these traits. Thus, even if E[X] is the same for males and females, for some trait X, the average age E[X^n] will be lower for males.

Evolutionary biology is full of reasonable-sounding explanations for just about anything. As far as I can tell, Occam does not often apply, unfortunately.

<comment><USER3> Don't slight the entire field of evolutionary biology just because you don't like what you read in a tabloid newspaper. I hope you realize that there's usually a bit more to these stories than you'll find in a four-paragraph newsprint blurb.

<comment><USER4> Point of interest: The Telegraph is not a tabloid but a broadsheet.

<comment><USER5> Whatever the case, it is a rag.

</comment></comment></comment></comment><comment><USER6> Who knows what this study says, let alone how valid it is? Like just about every newspaper article about science, this Telegraph article absolutely sucks.

Here's what was the original journal article was supposedly about:

"...the difference in life span between males and females... grows in direct proportion to the degree to which an animal's society is polygynous."

Great! These folks have apparently plotted a graph, where X is an animal society's "degree of ploygyny" and Y is the lifespan difference. The shape of that graph is the entire point of this study. It would be interesting to see it.

How many of the data points from that graph made it into the newspaper? Half of one data point. We learn that the male-female lifespan difference among modern humans is 5 years out of 80. (This is, of course, probably the least useful piece of data in the entire dataset, because modern humans live a lifestyle utterly different from that of all previous _humans_ , let alone most other animals.)

The scientists might well have data about polygyny in humans, but it's not shown here. They certainly have data about polygyny and lifespans in other creatures -- but it's not shown here. If the damned reporter had just given us the numbers for _one creature_ \-- dare I suggest the chimpanzee? -- we would know a lot more about the original study and how much it applies to humans.

But no! Instead the article tells me that women live longer than men (duh!) and that modern human societies tend more toward polygyny than toward polyandry. (Double duh.) Gee, thanks.

Sorry about the rant, but this sort of thing is intensely frustrating to me. People wonder why the public doesn't understand how science works. Perhaps one reason is that _the average person never sees any actual data_.

</comment><comment><USER7> In some ways this is a chicken and egg problem, and the conclusions in this article are not satisfactory.

[http://www.hno.harvard.edu/gazette/1998/10.01/WhyWomenLiveLo...](http://www.hno.harvard.edu/gazette/1998/10.01/WhyWomenLiveLon.html) "Studying people who live 100 years and more leads Harvard researchers to conclude that menopause is a major determinant of the life spans of both women and men."

[http://www.sciencedaily.com/releases/2006/05/060526083618.ht...](http://www.sciencedaily.com/releases/2006/05/060526083618.htm) Study about birds, but interesting: "Elevated testosterone levels increased activity--possibly attracting more predators--made the male, dark-eyed juncos more susceptible to disease and shortened their lifespan."

And I won't go into estrogen.

</comment><comment><USER8> I have a totally uneducated hypothesis that women are more prone to casual bisexuality and it's inherently more acceptable because they were kept in harems in prehistoric time.

<comment><USER5> That does not make a great deal of sense from an evolutionary perspective. For bisexuality to be selected for in women, it would have to confer an evolutionary advantage. I would guess that it simply has not been selected against because it does not confer a great disadvantage.

However, tolerance for homosexual acts between men seems to be strongly selected against. Creating sperm is expensive and wasting them with a man is not to your advantage. It was also important for men to be highly focused on interfacing with females; females could be apathetic and reproduce, because they didn't really have a choice.

<comment><USER9> > _However, tolerance for homosexual acts between men seems to be strongly > selected against_

Actually historically there were numerous instances of largely-homosexual civilizations. Just look up the true story behind the movie 300.

> _Creating sperm is expensive and wasting them with a man is not to your > advantage._

I think you completely forgot about masturbation, which pretty much destroys that entire line of argument ;) Males "waste" sperm on a constant basis. :)

> _It was also important for men to be highly focused on interfacing with > females_

Actually in many societies men were NOT focused on social interaction with females, a trend that continues to this day especially in certain religious countries. Interaction was and is often limited to reproduction, with gender segregation in social roles (the men spend most of their time with other men while the women spend most of their time with other women and children).

It really doesn't take much effort at all to get a female pregnant. The _vast_ majority of effort is in child-rearing, not procreation. Homosexuality actually confers some advantages, such as:

\- Male bonding, leading to more effective teamwork, which is a huge advantage in small tribal societies;

\- Exclusively-homosexual males don't compete for females yet can still lend their muscle to protecting the tribe.

In a small tribe, competition for females can lead to infighting which will put the whole group at a disadvantage to a neighboring tribe that has the same gender split but in which most of its males are homosexual. (Effeminate homosexuals tend to be much less common than non-effeminate ones, which is why so many gay males can fly under the radar.)

<comment><USER5> >Actually historically there were numerous instances of largely-homosexual civilizations. Just look up the true story behind the movie 300.

This is anecdotal evidence. Isolated societies that practice homosexuality do not offer a sound argument against the general trend. Note that you can only think of a few examples.

>I think you completely forgot about masturbation, which pretty much destroys that entire line of argument ;) Males "waste" sperm on a constant basis. :)

Recall that is is a conversation about bisexuality and homosexual behavior, not homosexuality which is obviously not evolutionarily helpful to a homosexual man (although there are theories that account for the genes that increase the liklihood of homosexuality having an evolutionary advantage for the women that carry them). Evolution is not a boolean question, traits propagate according to their relative success. Men who only want to have sex with women are more likely to deposit more sperm into women than men who deposit sperm wherever it fits. Masturbation would work against both populations.

>Actually in many societies men were NOT focused on social interaction with females.

I did not say interacting with women. Lots of people interact with women without reproducing. I said 'interfacing,' which was meant as a euphemism for fucking. I will spare you the confusion of further euphemisms. Son, people fuck everywhere.

<comment><USER9> > _This is anecdotal evidence._

Actually it's well-established. The best-known example is ancient Greece. Here's a general roundup of some historical figures: Socrates, Alexander the Great, Lord Byron, Edward II, Hadrian, Julius Caesar, Michelangelo, Donatello and Christopher Marlowe.

> _Recall that is is a conversation about bisexuality and homosexual > behavior,_

The conversation is about whatever people discuss. Funny to see you try a dodge when I completely skewer your "sperm is expensive" faux-pas! :)

> _I said 'interfacing,' which was meant as a euphemism for fucking._

Yes, your example is incorrect, as societies in which men were _not_ "highly focused on interfacing with females" still managed to keep the birth rate up. Cf. 300.

> _not homosexuality which is obviously not evolutionarily helpful to a > homosexual man_

Sure it can be -- especially when it's the norm. It's not even disadvantageous to his genes as long as he's not _exclusively_ homosexual. Even if he were, from his genes' perspective, he can still fulfill a useful role by protecting and benefitting his close kin, who have a lot in common genetically.

Homosexuality is rampant in the animal kingdom. Numerous studies have discovered this surprising result. In humans it persists despite widespread modern cultural condemnation, so it's a bit of a sticky issue. It's not as simple as a blanket "selected for" or "selected against" situation. There's no such thing as universal fitness; just adaptations that are useful in a particular time and place.

</comment></comment></comment></comment></comment><comment><USER10> I'm not sure I buy it. Most hunter gatherer societies that still exist don't really have harems. Maybe two or three wives in some cases, but my understanding was that big harems didn't really come about until the dawn of agriculture.

<comment><USER3> The dawn of agriculture was somewhere around 10,000 years ago. Even assuming that you're right, that's (conservatively) over 300 generations of polygamy.

<comment><USER10> Sure, but their argument centers around the stone age, which _ends_ with the development of agriculture.

<comment><USER3> The only place the stone age is mentioned is in the first paragraph of the newspaper blurb. The study itself is much more limited, and says only that sex-determined differences in lifespan appear to correlate with polygyny across a large number of species.

<comment><USER10> Do you have a link to the original somewhere? What I've seen elsewhere (I think it was Jared Diamond's The Third Chimpanzee, which is probably out of date at this point) is that male/female size ratio is also an indicator of polygyny, and that in comparison with other species, yes, humans are, but not to the large degree that some other animals are. That would fit in with the 2 or 3 wives sometimes seen in the hunter/gatherer societies more than big harems.

</comment></comment></comment></comment></comment><comment><USER11> 1- This doesn't belong here.

2- Reductive, over-generalized and oversimplified.

3- Men don't age faster. They often die slightly younger (more like 3 years rather than the stated 5). Men age more slowly and gracefully (if you have to generalize). Don't believe it? Take a look around you.</comment>


Ask HN: What are the best computing-related videos you've watched recently? - <AUTHOR> Everyone talks about books and sites they read all the time, but I barely ever see videos talked about on HN, despite videos containing some of the most interesting (and, unlike text, unsearchable) bits of computing history, information and anecdotes. <comment><AUTHOR> Two of the most interesting ones I've seen this year:

Brian Kernighan (of K&R fame, and much more) interviewing Ken Thompson (initial author of UNIX, though you probably already knew both of these): lots of interesting anecdotes, like getting a chess machine seized by the US government:

[https://www.youtube.com/watch?v=EY6q5dv_B-o](https://www.youtube.com/watch?v=EY6q5dv_B-o)

Drew DeVault, (sway/sr.ht/much more author) hacking on his Wayland VR desktop inside of his Wayland VR desktop (don't believe the people who say you can't do programming inside of VR yet!):

[https://spacepub.space/videos/watch/f60bee0e-31d3-4aca-9e49-...](https://spacepub.space/videos/watch/f60bee0e-31d3-4aca-9e49-6fcdc87ad40d)

NB. the second video is on a PeerTube instance. PeerTube is a federated and decentralized YouTube alternative.

<comment><USER2> The second video is truly impressive. On the other hand I'm getting a bit scared for the expectations for the average office worker 10-20 years from now.

</comment></comment><comment><USER3> Anything by Bret Victor.

Inventing on Principle: [https://www.youtube.com/watch?v=8QiPFmIMxFc](https://www.youtube.com/watch?v=8QiPFmIMxFc)

Future of Programming: [https://www.youtube.com/watch?v=8pTEmbeENF4](https://www.youtube.com/watch?v=8pTEmbeENF4)

</comment><comment><USER4> The following documentary is an important record of the early days of the BBS/comms world of computing. Particularly as in most cases it includes interviews with the individuals responsible for creating so many of the standards used. [https://en.wikipedia.org/wiki/BBS:_The_Documentary](https://en.wikipedia.org/wiki/BBS:_The_Documentary)

<comment><USER5> I watched the old [https://archive.org/details/computerchronicles](https://archive.org/details/computerchronicles) a while back. First reactions on Windows 3.0 or the Pentium, discussing different flavors of Unix, calling anything that fits onto a desk a micro computer. And any interview with [https://en.wikipedia.org/wiki/Gary_Kildall](https://en.wikipedia.org/wiki/Gary_Kildall) may he rest in peace.

</comment></comment><comment><USER6> Good explanations of low-level computing by Ben Eater [https://m.youtube.com/user/eaterbc/playlists](https://m.youtube.com/user/eaterbc/playlists)

</comment><comment><USER7> Quantum supremacy using a programmable superconducting processor

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

<comment><USER8> Can't wait for the change Quantum computing will bring to humanity

</comment></comment><comment><USER9> [https://www.youtube.com/watch?v=Q8d77KV__gI](https://www.youtube.com/watch?v=Q8d77KV__gI) Peristent Virtual Memory in the Great New Operating System In The Sky -- probably the only video on YouTube talking about KeyKOS besides Norm Hardy's ocap talk in 2017.

[https://www.youtube.com/watch?v=hEDCXTpx0R8](https://www.youtube.com/watch?v=hEDCXTpx0R8) OCAP 2017 Keynote Norm Hardy -- Much oral history about KeyKOS and successor systems by Norm Hardy (sadly now deceased), who was one of the main originators of them.

[https://www.youtube.com/watch?v=EVm938gMWl0](https://www.youtube.com/watch?v=EVm938gMWl0) RustConf 2017 -- Closing Keynote: Safe Systems Software and the Future of Computing by Joe Duffy -- Joe Duffy's retrospective talk on the Midori project at RustConf 2017.

There's a lot of stuff out there, but I thought I would drop these three in particular because they don't have particularly high viewership compared to their historical value as anecdotes.

</comment><comment><USER10> How to be agile:

[https://www.youtube.com/watch?v=GtkouFS- GSQ](https://www.youtube.com/watch?v=GtkouFS-GSQ)

Inventing on Principle:

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

REST/GraphQL alternative:

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

</comment><comment><USER11> Not an instructional video, but I rewatch the Facemesh scene from "The Social Network" over and over:

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

IMO, everything about this scene is fantastic, starting with the fact that the bits of text are taken from actual court proceedings.

</comment><comment><USER12> Infosec CTF walkthroughs e.g. [https://youtu.be/ozqOlUVKL1s](https://youtu.be/ozqOlUVKL1s)

</comment><comment><USER13> An excellent conference video explaining the event loop in Javascript ([https://www.youtube.com/watch?v=8aGhZQkoFbQ](https://www.youtube.com/watch?v=8aGhZQkoFbQ))

</comment><comment><USER14> Lean and Functional programming.

Especially the first part where he explains history of lean during and after WW2.

[https://youtu.be/5s55LA2Renc](https://youtu.be/5s55LA2Renc)

</comment><comment><USER15> David Khourshid - The Visual Future Of Reactive Applications With Statecharts:

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

</comment><comment><USER8> [https://www.youtube.com/watch?v=fh9WXPu0hw8](https://www.youtube.com/watch?v=fh9WXPu0hw8)

</comment><comment><USER16> curiousmarc's videos on repairing an apollo guidance computer. [https://www.youtube.com/playlist?list=PL-_93BVApb59FWrLZfdli...](https://www.youtube.com/playlist?list=PL-_93BVApb59FWrLZfdlisi_x7-Ut_-w7)</comment>


Facebook is slapped with first fine for Cambridge Analytica scandal - <AUTHOR> https://www.washingtonpost.com/business/economy/2018/07/10/5c63a730-848b-11e8-8f6c-46cb43e3f306_story.html?noredirect=on&utm_term=.0b02f3870a0c <comment><USER3> Less than 1 million dollars? Is this a joke?

<comment><USER4> It was pre-GDPR so that is the max fine available

<comment><USER5> Yep. If they fuck up next time it could cost 4% of Global Revenue - <USER2> google says that's ~1.7bn dollars.</comment></comment></comment>


Want to Learn to Code? Start Small and Have Fun - <AUTHOR> http://www.fredkschott.com/post/46872399470/want-to-learn-to-code-start-small-have-fun-thats

<comment><USER2> I have been learning by myself for the past year, and if I may, let me share a few thoughts gathered along the way:

\- This will never be "2 months, and I'll build next Facebook". Consider that this is a field of knowledge that is exponentially evolving every year, and you will need years before you are comfortable with it. Learning code or computer science is a long term decision, and you should go for it if you really see yourself doing it as a hobby. If you are not up for it, better learn web design or something that relies less on programming;

\- Following my previous point, start by learning the basics of computer science. You will not understand the abstract concepts, or know what you are doing before you have the theory basis behind it – You will get unmotivated faster. How fun is it to play a guitar without knowing music theory? There are dozens of ways to learn CS, and I personally find the CS50x class from EdX the best source to start;

\- If you don't like math, well.. start liking it! Part of the enjoyment of programming is the satisfaction you get from solving problems. Read books about algorithms and/or take the online classes in Coursera or Udacity. Also make Project Euler as a daily visit, and try to solve several challenges per week;

\- Again, start small, and go small every step. Make a structured plan of what you want to learn, such as "Monday I study Python, Tuesday for Algorithms, Wednesday for CS..". Take advantage of dozens of courses available in Coursera, Udacidy and EdX.

\- Part of learning anything is making yourself motivated along the way. You should study at least 10h per week (I work full-time and I never study less than that) and make your successes visible, such as placing a post-it with every online course you completed in a wall;

Btw, I studied Economics for 5 years and I am 24. Even if you are older, never fall in the excuse that you are too old or it's too late. That's your "I am afraid to fail" thoughts. You don't have any pressure, no one is asking you to develop a whole new Microsoft.

</comment><comment><USER3> It is sad that after 20 years of MVC and the 10 years of it on the Web, we are still telling people that to start coding they need to start with HTML, CSS and JavaScript. And I agree with you, this is the place to start today. Yet it is pathetic, that is unless we want to keep the coding just to ourselves, like the doctors do with their field. I recently listened to a presentation on Grails. Honestly wanted to grok it fast. Mind you, I have been a Java developer since it first came out around 1996. No disrespect to the framework itself, but all those extra concepts you need to shove into your head before you even begin to code, this is atrocious.

Out of this resentment I and a couple friends set out to build an MVC system where newbies start with the models (backbone.js) by creating them on a smartphone using only their browser. And once you are done, the app goes live. See it at <http://urbien.com> and its open sourced client at <http://github.com/urbien/urbini>

Laying out the main concepts of your future app, and connecting them is not easy for noobs. Hack, even for developers sometimes it is a bit of a puzzle. You need to scratch your head a couple of times when you make the domain model for a new app. But at least this is all you need to do to get the app running with our system.

Afterwards you can start tinkering and tweaking, by changing themes, images, modifying the underlying templates (HTML) in-place, and connecting apps IFTTT- style, with a tiny plug script.

Would you like to review and may be even help us make the design friendly to geeks-who-can't-code?

</comment><comment><USER4> I find all of these learn to code posts very interesting. I would consider myself to be a beginner coder even though over the years I have spent time learning or trying to learn C++, HTML, CSS, Javascript, Node.js, jQuery, Objective-C, Python, Ruby and others. For each language I had a different reason for wanting to learn, generally it amounted to wanting to build something and trying my best to learn the pieces necessary to start.

The key thing that ties all of my different attempts to learn together, and why I still consider myself to be a beginner is that I always stopped short of achieving my goal. Generally this was due to hitting some sort of blockage that I couldn't figure out how to get past, or generally getting bored with the slow learning process.

Both of these recent articles have really resonated with me, as I have personally struggled with Codecademy (currently 66% done code year), and I regularly bite off more than I can chew. I like the suggestion of finding a mentor and putting my head down, as well as focusing on small projects that build off of each other.

In the end, I really want to learn how to code, but so far I haven't found a method that sticks. Maybe that says I don't really want it, but to me it says there isn't a great learning method out there for me yet. So while Codecademy is great and all, I really think there is still a hole in the market. Figuring out how to fill it is the key.

<comment><USER5> Your reply remind me of the situation I was in little over a year ago. Based on my own experiences going through trying to learn to code, a few comments:

"In the end, I really want to learn how to code"

No, in the end you want to learn how to solve problems.

If you start with a problem and try to learn the minimal of whatever coding/ language/ package/ software is required to solve the problem, you will be much further ahead. At this stage, don't worry about being efficient or writing the best code. Now, I laugh at the SQL queries that I wrote a year ago but they did solve the problem. Over time, I learnt to write much better queries.

"I always stopped short of achieving my goal"

This is because it was your goal and on not achieving the goal you gave yourself a pass. You will be better off solving a problem for someone else for whom you care and you will be embarrassed if you didn't solve the problem, like for your spouse, kids, parents, siblings, friends, coworkers, boss, neighbor. Also, achieving small victories are important for continued interest.

Little over a year ago I was jumping around between Ruby, Java, Python, HTML, CSS, JS, SQL, R never finished learning or using any of them until my wife asked me to automate a manual process for her. I started out with solving her problem and learning enough of the languages that will quickly solve the parts of the problem.

In the end, I learnt enough of mySQL, PHP, and Bootstrap to deliver a complete solution to her problem. There was enough fear of failure and being embarrassed that I delivered a complete solution, however rough, to her. Since then I have modified and extended the solution and now it is being used by another 1,000 users, still it is an ugly piece of work. But I am much more satisfied and encouraged to continue learning and improving.

</comment></comment><comment><USER6> I don't get it. What do people mean nowdays when they talk about being a "coder"?

It seems everybody want's to build stuff before understanding the fundamentals of computing. I don't see how jumping right away to trying to build stuff for the web can make it easier for someone to learn to program. No talk about algorithms, datastructures, and so on.

I'm not dimissing this approach, I just feel like it is not the most productive in the long run. It may lead to the development of bad habits, cargo cult, and stuff like that, derived from misunderstandings of how computing works.

EDIT: as an example.. i had a friend that learned to program the way you suggested, though he lacked knowledge of basic stuff like recursion, ordering and search algorithms, and so on. He sure could get things done, but not rarely the approach used had extremely bad performance or did things like modifying data shared between threads in an unsafe maner.

<comment><AUTHOR> Totally agree with you that the skills learned from messing around won't turn you into a fully skilled programmer. My argument is that if he'd learned algoritms, recursion, data structures, etc. he probably would have hated and dropped it, while instead he at least knows something, has the ability to teach himself more, and hopefully has fond memories. It's much better to foster a true interest in programming - even if they're not very good - if it will then lead them to improve themselves and enjoy doing it.

<comment><USER7> Yeah. And as a newbie, which sounds like the more plausible path to successfully becoming a real programmer?

1\. Can't do anything -> Learn to build stuff -> Learn to write good code

2\. Can't do anything -> Learn to write good code -> Learn to build stuff

Plenty of folks need the motivation of seeing what cool stuff they can build to make it through the dry parts.

<comment><USER8> My (heavily biased) recommendation - start with c++ or some other annoying, slow language. I know other people say learn python or ruby, but I think that makes for sloppy programmers and bad habits.

First, read Introduction and Basics of C++ in the link below. Then make a text based rpg with 1-2 rooms. I would have a character and two bosses each with with power, toughness, and 1-2 attacks. Then read Compound Data Types and Object Oriented Programming from the link below. Finally, revise the code of the game to use objects (don't worry, that will make sense once you finish reading). Also, to emphasize your bossness, say that are "refactoring" your code.

As a gamer, I thought it was cool that I could make a simple game like this. Maybe you won't. In which case, my suggestion probably is worthless. But, I think that learning a more systems level language will force you to think more about your code and make you write better code in the long run.

Links: tutorial - <http://www.cplusplus.com/doc/tutorial/> compiler - [http://www.microsoft.com/visualstudio/eng/products/visual- st...](http://www.microsoft.com/visualstudio/eng/products/visual-studio- express-products) \- if you are on windows. If you're on linux, install g++ (sudo apt-get install g++ for ubuntu/debian and sudo yum install gcc-c++ for Fedora). If you're on a mac, no idea, I don't use macs.

<comment><USER9> I actually agree with making game-y stuff just for fun, because it allows you to think up and build rather intricate architectures real quick. It's hard to make a game as a newbie and not have it turn into spaghetti as you keep making it more complex, but it's also no biggie, and you get to learn how to recognize those things, what to improve etc. Practice with games, when you become more confident make applications; to me that makes sense? _Playing_ games may be a shallow pastime, but _making_ one can become more hardcore than one imagined real quickly. Just about anything in programming you could mention, certainly all the "pedestrian" things, could theoretically be put in a game - but a game can also be just two rectangles and one circle, and in that spectrum, and the absence of even the pretense of being useful, lies a great opportunity for experimentation and learning.

Make a simple clone of a game or application or graphical effect you adore, and go from there. There's still plenty of opportunity to suck the fun out of it later :P

</comment></comment></comment></comment></comment><comment><USER10> Totally agree with your point. I tell almost everyone trying to learn programming to start off with Udacity CS101 with Python. I myself started with HTML/CSS a long time ago. It is not programming per say but the satisfaction of having created a simple web page is satisfying. Learning Ruby on Rails from the beginning will be too much to handle at one go without even knowing the basics of HTML/CSS/JS and not even to mention the basics of database design. It will take a long time, but it will be worth it as knowledge and experience is accumulated. Start Small, Have Fun - good advice.

</comment><comment><USER11> Don't bite off more than you can chew. Goes for a lot of things. I used to write lots of short stories, then I started working on a longer, novella length piece. After ten chapters or so I got sick of it, but didn't want to start anything else with that unfinished. Pretty much stopped writing after that.

</comment><comment><USER12> I like the comparison to sports. And, CSS/HTML and then Javascript etc, learning the fundamentals of those - is what EVERY Developer should have (or currently do). So, I'm with you on that one.

</comment><comment><USER13> Got to be the best way books can only teach you so much!

</comment><comment><USER14> dont learn how to code , but learn how to build stuffs. Coding is just a mean to an end.You need to learn how to ship products ;)

<comment><AUTHOR> Ah man... this is such a better title. What was i thinking???</comment></comment>


Ask HN: "Physical" subscription allowed in iOS? - <AUTHOR>

We operate a subscription service similar to Birchbox, Craft Coffee, Naturebox etc. for events. Would we be allowed to collect credit cards in our app. <comment><USER2> The Amazon app lets you subscribe to physical goods (just like you can on the Amazon web site).</comment>


Convox (YC S15) launches Grid service to automate code deployment - <AUTHOR> http://venturebeat.com/2015/11/20/y-combinator-backed-convox-launches-grid-service-to-automate-code-deployment/ <comment><AUTHOR> Hey this is Matt from the Convox team. I'm happy to answer any questions about Grid (what it is, why we built it), Convox, or AWS/Docker in general.

<comment><USER2> What's your feelings about cedar stack being over 1.5GB in size after building a docker image?

I came across your guys' stuff about a month ago and was intrigued by the cedar stack of heroku being dockerized and started playing with it.

Immediately stopped when my simple hello world node app was 1.5GB in size.

<comment><AUTHOR> The cedar image is admittedly pretty large. There's a lot of stuff in there.

Building a much more lightweight image for your node app shouldn't be too hard, though. Check out [https://github.com/convox- examples/express](https://github.com/convox-examples/express) for a simple example.

<comment><USER2> Yeah I was looking at kind of making a heroku setup on my servers sorta like Dokku, but I'm not a real big fan of Dokku. And I wanted to use CoreOS and Docker, but I realized that I can't just include all possible programming languages into a container to be built. So I've opted out of that and just build custom containers based on the app I am deploying.</comment></comment></comment></comment>


How do you get a job in algorithmic trading? - <AUTHOR> http://www.strategic-options.com/insight/how-do-you-get-a-job-in-algorithmic-trading/ <comment><USER2> No banks, don't want to leave Denver, hmmm... know any hedge funds in Dever? They probably "have it covered" as well. Try efinancialcareers.com. Keep in mind it's a very competitive field, so it could be hard to find something without a top CS/math degree or prior real experience.</comment>


5 Reasons Why You Should Be Looking At A Chromebook Right Now - <AUTHOR> http://blog.ditoweb.com/2011/06/5-reasons-why-you-should-be-looking-at.html#comments

<comment><USER2> I would rather have a ChromiumOS book because I don't like the idea of google gathering information on me (unless I'm interaction with goolge)

<http://www.chromium.org/chromium-os></comment>


Send Idle Words (Maciej Ceglowski/Pinboard.in) to Antarctica - <AUTHOR> https://www.kickstarter.com/projects/431908798/send-idle-words-to-antarctica

<comment><USER2> I love his writing voice! His writing at idlewords.com has appeared here a few times. (See [https://hn.algolia.com/?query=idlewords.com&sort=byPopularit...](https://hn.algolia.com/?query=idlewords.com&sort=byPopularity&prefix&page=0&dateRange=all&type=story) ). I'll miss his sarcastic tweeting though.</comment>


Where do airplanes dump their waste? - <AUTHOR> http://www.slate.com/articles/news_and_politics/explainer/2012/02/long_island_couple_pelted_with_poo_where_do_airplanes_dump_their_waste_.html <comment><USER2> TLDR: "Under normal circumstances, the ground crew disposes of the sewage after the plane lands." Sometimes it leaks though, and the story gave an example of a time when it hit someone on the ground. :|

</comment><comment><USER3> What worries me most about sewage pushed into the environment from various sources is not the viruses, bacteria, pathogens and algea blooms. Im more concerned about the heavy metals, murcury, lead, arsenic, aluminum, polonium, pharmaceuticals, cadmium, poisons, all which good human bodies throw out because they cause all sorts of problems which are hard to trace.</comment>