The boring front-end developer - <AUTHOR> http://thebfed.com/ <comment><USER2> I worked for a few years at an agency that adhered very closely to these principles, and you know what? When things started to rapidly change around 2013 everyone was consumed and overwhelmed, and when it came time to _necessarily_ onboard them on new technologies such as build systems, css preprocessors and the like, the skepticism was so profound, and caused such a problem for those of us looking to make everyones life easier, that the process took way longer than it should have taken with loops and hoops that I hope to never have to repeat.

After that experience, I fully equate the BFED with someone not ready to handle the incredible momentum of the industry and, for better or for worse, would never consider hiring them. There are too many good ideas being born right now to risk falling into rigid patterns of thinking.

<comment><USER3> > There are too many good ideas being born right now to risk falling into > rigid patterns of thinking.

The problem is that there are too many ideas out there, period. It's almost impossible to separate the wheat from the chaff. See: JavaScript libraries.

<comment><USER4> Definitely an issue but it shouldn't prevent you from using some tools. For example, I've mostly stayed away from compile to JS languages except for ClojureScript (for personal project) and TypeScript because I see real value in both of them. TypeScript has been a massive boon to help with the largish client side app I work on professionally. Helps keeps the code base somewhat sane and easy to develop in.

CSS preprocessors have been similar, cutting down on duplication that leads to potential bugs is hugely useful.

Obviously taking small steps and sticking to things as long as there is no major benefit from switching helps. No reason to jump from Angular to React or whatever is new if it's fulfilling your needs.

<comment><USER5> I wish I was using TypeScript right now; we're using babel for ES6 transpiling and I've found a situation where a particular importing of a module doesn't work correctly. It appears correctly when I run it through the eslint tool and babel/webpack don't seem to complain when compiling, but in the browser it doesn't work.

When trying TypeScript and CoffeeScript I never ran into issues like that.

<comment><USER2> OMG, Webpack... you love it and you hate it.... and it never gets easier!

</comment></comment></comment></comment></comment><comment><USER6> Blah. Yet another "new-fangled technologies have no place" post. Granted, there's a grain of truth to the core thought. As I've become more experienced, I've seen more frameworks and libraries that re-invent the wheel and solve problems that have already been solved long ago, albeit in a trendier manner.

But at the end of the day, software engineers are technologists. Our job is to create and consume technology. Being afraid of new technology is counter- productive.

<comment><USER7> I didn't read that in the article. Being a technologist means know when NOT to use a technology as much as knowing when to use it. There're way too many developers who read links from HN and try and push the javascript framework of the weak on everyone at their job without fully comprehending the consequences of their decision. That's not being a technologits, that's being stupid.

<comment><USER8> > and push the javascript framework of the _weak_

(emphasis added)

<comment><USER9> freudian typo, is there such a thing?

<comment><USER7> Haha, maybe...

That was bad. Normally I try not to have such typos, but it is Monday.

<comment><USER8> It was brilliant!

</comment></comment></comment></comment></comment></comment><comment><USER10> _> "As a Lead JavaScript Engineer, I try to get my team to write as little JavaScript as possible."_

I would argue that the wisdom of this goes beyond JavaScript to all programming.

Or, to put it slightly differently: how can you tell the difference between an inexperienced programmer and an experienced one? The inexperienced programmer thinks of every line of code as an _asset._ The experienced one thinks of every line of code as a _liability._

<comment><USER11> double edged sword though right?

we should be striving to write the most readable and easily understandable code. neither the most lines or the fewest but what can be easily proven and reasoned about.

<comment><USER12> Yes, ok. Some lines are more of a liability than others.

</comment></comment></comment><comment><USER13> Good article, I agree with a lot of this, but I can't help myself from commenting.

>>> When given the choice to add a preprocessor (e.g. LESS, SASS, CoffeeScript etc) to the technology stack, the BFED realises there is a deeper impact beyond just "writing less code". Will it be harder to onboard developers? Will debugging code be more difficult? If the answer to any of these questions is yes then the BFED will say no to preprocessors.

Really? You will ignore the many many advantages of pre-processors because it will be harder to train new people? Come on...

>>> Furthermore, the BFED realises that Single Page Applications cause severe problems and that by avoiding them and leaning on the server appropriately provides a better experience and reach.

That's a bit one sided. There's a time and place for SPAs, you can't just dismiss it entirely. Every web app today should be an SPA.

Edit: I should clarify that by webapp I don't mean website. There seems to be some confusion.

<comment> vezzy-fnord Controversial opinion, but I myself use CSS preprocessors quite sparingly. I actually see nothing wrong with the CSS syntax. I _like_ the fact that CSS is (almost) nothing but a bunch of named key-value pairs. The real issues have always been semantic, in the subtleties of the box model, which Flexbox is addressing somewhat, though more daring ideas like constraint-based styling are still niche.

Just look at the LESS example on the front page. The compiled output is simpler than the source you're writing. I find having some code duplication to be an acceptable trade-off for turning a basic declarative configuration language into a chimera DSL that must be incorporated into the build process.

The more a configuration language strays away from being declarative, the less desirable this becomes.

<comment><USER14> I think "some code duplication" massively understates it. Being able to use named variables for colors is on its own enough of a win to make up for whatever truth there is in the "harder to train developers" downside. The many other wins make it a no-brainer.

<comment><USER15> It's not the only downside to consider. [http://adamsilver.io/articles/the- disadvantages-of-css-prepr...](http://adamsilver.io/articles/the- disadvantages-of-css-preprocessors/)

There are a lot of advantages to them that need consideration too granted.

<comment><USER14> Certainly, everything has trade-offs, but CSS pre-processors are more heavily weighted toward the positive side of the trade-off calculation than pretty much anything else I can think of, especially in the "web technologies" space. I found lots of the arguments in the OP to ring true – things often feel far too fancy, and the more "boring" stuff has major appeal – but I found the arguments against CSS pre-processors there and in the article you linked _very_ thin relative to my experience with them after years of using raw CSS.

</comment></comment></comment></comment></comment><comment><USER16> Boring has its place, and certainly can add a lot of value to a project. If everyones goals are aligned in creating a rock solid web site or app that never needs refactoring and has 100% legacy browser support, then boring is great.

Some of us are attracted to new technologies, and appreciate learning the lessons of what advantages or disadvantages come from building the same type of site or app with a different framework or technology stack. Especially those of us who aren't yet mature enough to write our own apps without the guidance of frameworks, and have not had a chance to work with all of the different possible approaches.

I think a healthy balance can be struck between the type of stability gained from the 'boring' approach, and the types of gains that can be realized from newer 'non-boring' technologies. Sometimes supporting IE6 is not a concern at all, and learning new language features from ES6 is an attractive proposition.

If doing front-end development were boring, I don't think I'd be as interested in doing it.

</comment><comment><USER17> First things first: This article presents a lovely sentiment — although any argument against CSS preprocessors is a losing one — and is a timely reminder to focus on the things that matter.

However…

When was this published? There's no date anywhere on the page or even in its source code, but he mentions supporting "IE6 and below". This is actually no longer possible if "HTTPS" is a requirement, as the best version of SSL supported by IE6 is SSL v.3 which suffers from a fatal vulnerability and supporting it on your servers puts your users at risk.

There's also no need to support IE6. Now that XP is this-time-we-mean-it officially dead and unsupported, you can't even run a fully patched OS with IE6 on it.

 _Edit:_ Via another page on the author's site, I was able to find a publication date of 1 October 2014 for this article. (This just barely gets Mr. Silver off the hook, as the final-nail-in-IE6's-coffin SSLv3 bug POODLE was announced a mere 2 weeks later. That is, if we ignore the "and below" remark. No one has tested their site in IE5.5 in damn near a decade now.) Please, authors: Include the full date with your written works. (Leaving off the year is a shamefully common anti-pattern, as it's the most important part!)

<comment><USER18> This makes me wonder if there is a SEO bump/penalty associated with article dates.

<comment><USER17> Doubtful – i think it's mostly oversight, but I'd be curious to hear from those perpetrating the trend!

</comment></comment></comment><comment><USER19> While interesting, we cannot _all_ be BFEDs. The reason the BFED exists is because the non-BFEDs pushed the envelope years ago to make what the BFED now relies on _standard_.

</comment><comment><USER20> A nice thought, but front-end tools are not really mature enough to be boring, sorry. I mean one could credibly say "oh I'm so boring, I use jQuery everywhere" but... that's not actually going to be a boring development experience. It will be exciting, in the bad way.

<comment><USER21> The problem with jQuery is not so much jQuery itself, it's the architecture of sites/apps written with many jQuery plugins and no code organization. I wrote many apps using simple JS modules (with browserify) using jQuery for DOM manipulation and the approach worked great. While I don't really use jQuery anymore, it's great for what it aims to do: DOM manipulation.

The point is that exciting development experiences (in the bad way) are usually due to developers not really not knowing what they're doing. Picking your tools is part of that and no tool will, inherently, provide a bad development experience.

<comment><USER20> > The problem with jQuery is not so much jQuery itself, it's the architecture > of sites/apps written with many jQuery plugins and no code organization.

Yes, precisely. But you could conceivably call such a ball of mud "boring" because there's nothing cutting edge about it.

</comment></comment></comment><comment><USER22> "The BFED will carefully select third party code based on the quality of the code itself by reviewing source code, not based on the popularity of said code. He/she favours reliability over popularity every time."

The power of popularity should not be underestimated, there are very large and powerful network effects that popularity brings to the table.

Popular code

      -has more tutorials/blog/books written about it

      -has more Q & A on Stackoverflow

      -is easier to hire for

All frameworks have problems with better designed frameworks having less. For popular frameworks you're in luck, because somebody has already figured out all the work-arounds to common problems. But on an unpopular one you have to figure out all those work-arounds yourself.

<comment><USER15> McDonalds and Coca Cola is very popular - is it good for you?

</comment></comment><comment><USER5> Boring front-end developers also aren't involved in the project planning or design process so they're low-status. Of course I expect them to follow the spec and do things the boring way, because that's what they're paid to do. New tech? That's a new risk, better find someone else who will do exactly what we ask and not try to "improve" things.

What I see from the frontend developer community with all these new frameworks and tools is a rebellion against project managers and clients and the whole agency model which makes creating websites the most bland process imaginable.

Every single thing listed in the article is _more fun_. Being boring is fine but you better be paying the dev either very little because you don't really value them, they're simply a machine for turning your ideas into code; or you pay them a lot because you know if you don't they'll leave and take their great ideas and work for a competitor or start consulting and stealing clients.

</comment><comment><USER23> > The BFED realises that while not all experiences will be identical, all > browsers can be used to consume a website, even gasp, IE6 and below.

Where would we be if we supported all legacy software? Does there not come a point where cutting support for a class of platforms is a good thing? This article makes some good points, and I think a lot of frontenders (myself included) would benefit from being a bit more "boring", but this article is going a little too far the other way.

<comment><USER24> It's not so much about supporting legacy software as having something that's likely to show something in any browser, from Firefox to IE6 to Dillo to Lynx.

<comment><USER11> Am I supposed to worry about IE6 when Microsoft doesn't? Can we draw the line at supporting things when their creators give up on them?

<comment><USER24> The point of my comment was to say you don't have to support old or obscure browsers specifically; just have proper content in your HTML and everyone will be satisfied without additional effort on your part.

</comment></comment></comment></comment><comment><USER25> _"As a Lead JavaScript Engineer, I try to get my team to write as little JavaScript as possible."_

Yes.

Let me show you mine: [http://intercoolerjs.org/](http://intercoolerjs.org/)

Not mature enough yet to be completely BFED, but that's the goal.

<comment><USER20> So you move the JS into the markup, with special attributes. Hmmph.

<comment><USER25> Hmmph, indeed.

However, it is a much simpler conceptual model than doing it w/ javascript off in some jQuery onLoad function: web requests just hit URLs like they always have, download HTML content like they always have and swap it into a rectangle, like they always have. It's just that the rectangle doesn't necessarily have to be the entire screen like it always has.

The behavior of a given bit of HTML is fairly localized, which makes it easy enough to understand what, say, a button does, and the server side controllers and templating work like they always have.

So, all in all, I'd call it maybe a 7/10 on the curmudgeon scale.

<comment><USER26> I think you will like Angular.

<comment><USER27> I think that OP likely knows angular and dislikes it.

</comment></comment></comment></comment></comment><comment><USER28> The boring front-end developer doesn't get paid very much.

<comment><USER29> Neither does the exciting front-end developer.

<comment> atinoda-kestrel Oh he does. Just only while the VCs are writing checks. ;)

</comment></comment></comment><comment><USER30> I don't see the need to be so one-sided. You can be "boring" in some ways and still use new technologies when it's appropriate.

</comment><comment><USER31> This article is terrible. It argues for awful web and UI development, and seems to be doing it entirely out of some kind of perverse pride.

The first item in this list recommends support for IE6 or below, a decision which will massively balloon your project budget for a shot at roughly %1 of the total browser market. Microsoft itself has launched multiple campaigns to get developers to stop supporting IE6.

Charitably, I'll assume the author doesn't want to lump javascript compilers in with preprocessors, although his arguments against seem like they might suggest he does.

Following that, he recommends development using progressive enhancement, which was developed as a best practice largely to wiggle out from the constraints imposed by IE 6 during the eight years where it was crushing the shit out of the web industry.

As a closer, he suggest that you not learn "buzzword" technologies in order to increase your day rate.

In summary, he wants you to target ancient technology, eschew any front end build process, live in fear of the ancient technology you've agreed to support, and then not get paid for it.

<comment><USER32> Yeahhh, you've not written a very good summary of what he wrote. But I hope it felt good to get a word in at least.

<comment><USER31> Acceptable risk levels vary from project to project, and often it is a good choice to de-risk your UI so that you can budget risk to something more important to project success. I am currently working on a manufacturing support project that uses jquery in a progressive enhancement style, for instance, because that's the most comfortable level for the team, and we prefer to have the risk in the part of the code that gets into the business processes. This means we use a framework, LESS (for bootstrap UI) and we support web standards. We do not support IE6 because one cannot legally purchase a computer that runs IE6 in 2015.

The article is making statements that claim to be conservative, but were too conservative for businesses supporting them to survive. In 2006.

This is a bad article. I had trouble finding the date on it, but on the site's index it states that it was written in 2014. This makes it violently out of date at the time of it's writing. You should not treat it like a good article because it flatters your prejudices about new-fangled web development, because most of the content of the article is flattery. Not only that, it flatters you for not paying attention to what is going on. That should be a bad sign.

</comment></comment></comment><comment><USER33> Anyone who's ever actually written a website using vanilla CSS and then gotten to write a site with Sass knows that not using a preprocessor in this day and age is insane. It makes things 1000x easier to write and more importantly to maintain.

Writing vanilla CSS after using a preprocessor is torture.

</comment><comment><USER34> For those of us that work on bog-standard websites for clients, I definitely agree with some of the points. I've worked on numerous projects where the latest and greatest tools at that time were used wherever they could have been used, and more often than not six tools are being abused to do the work that a reasonably simple build script would have achieved.

With that being said, all tools have their place, and it's all about realising what that place is. For example, using Foundation when your client has expressed a desire for their site to work in IE6 because their clients all work in large law firms and are limited to XP and IE6 (a genuine use-case I've had to build for about three years ago) your tool will probably fail you.

For me, it's less about being a "BFED", and more about planning your solution before you build it, something that increasingly few people seem to do. In a lot of cases where people do plan or spec work before they start it, it's done in a tool-oriented fashion. A developer will tell the client that they will build their site using AngularJS, but when the client says "I've tested this page in IE7 and it doesn't work. Please fix." they realise that a task they thought about take n hours will actually take a fair bit longer.

A boring developer gets the information they require first and picks a suitable tool for the job. If the requirements change, so be it. A boring developer will get the new requirements, and will adjust their solution accordingly. This is the kind of boring developer to be, not the kind that doesn't pick a tool because it's new.

</comment><comment><USER35> When I teach HTML/CSS/JS, I tell my students this: "put as much functionality into HTML/CSS as you can, and use JS as a frequent, but last resort". I think that sums up the benefits of this article without carrying along any of the needles anachronisms (use pre-processors, they're great). With animations, transforms and html5 form validations, you can avoid JS for longer than you think.

</comment><comment><USER36> Front-end is crazy, so I can sympathize with the author's desire to use it minimally.

I think if this really is your perspective, and you are waiting for the front- end chaos to settle before investing heavily in front-end development, you should just stick to server side pages and use jQuery to sprinkle in some JS sugar.

>>> Be a great front-end developer. Be boring.

I think you could rephrase this to...

Be a great front-end developer by being a server side developer.

His arguments:

Browser support - me: situational but makes very good points.

Preprocessors - me: completely disagree

Accessibility - me: very good points but not restricted to any one type of developer (web apps, spa, server side templates, native mobile, native desktop)

UI design - me: totally agree with his point on browser sniffing, a dangerous game

Third party CSS and Javascript libraries and frameworks - me: seems like he should avoid these altogether

UI architecture - me: this really seems like an opinion that is easily debatable

CV - me: a good voice to have on your team regardless of tech / project requirements.

</comment><comment><USER37> There are times when you need heavy machinery running in the browser. It's impressive to see a water surface simulator or some live graph running in the browser. That's rare, though. Many sites that would work perfectly in HTML 3.2 have way too much machinery behind them.

Much of the heavy machinery is there to support two simple functions - adapting to screen size, and scrolling. That's because the HTML5/CSS model does not natively do either very well. Other machinery is there for form input validation, which HTML does not support directly.

There is, of course, the other major use of Javascript - silently obtaining information about the user and sending it somewhere to be "monetized".

</comment><comment><USER38> Hmm. There is truth to some of this, but like everything moderation is key. Use your experience to pick new tech that meaningfully improves UX, DX, maintainability or some other metric without creating problems. It does exist. Likewise, don't be the boringest of boring developers because you'll miss out on key innovations and your product will suffer. Unless, that is, you want to make a name for yourself as Supreme Leader of BFEDs for career advancement purposes, in which case host a clickbaity blog about it and argue from a highly polarized position ... oh, wait

</comment><comment><USER39> The irony is implementing progressive enhancement and accessibility is anything but simple, and probably just as big a maintenance burden as custom form controls, and comes with debatable gain.

Each project and team and project is different, there's no constant requirements in frontend, in tools or features. Some teams may be super unproductive without Sass. This post is very much written from the bias of older trends, and from a time when the frontend had fewer real concerns other than styling a document.

</comment><comment><USER40> In my experience, any learning curve for the popular CSS preprocessors (SASS, LESS) is dwarfed by the maintenance and productivity gains. The only downside to them is that thoughtless use of them can lead to very bloated CSS builds. But onboarding? LESS and SASS, fundamentally, provide what CSS should have provided from day one: nestable rules/statements, macros, and variables.

Other than that, +1, good read, will share.

</comment><comment><USER41> Hmm pretty broad strokes. I think its constantly important to scrutinize ourselves and our tech decisions like this though.

I don't think I'd ever take a front end job that doesn't use a CSS preprocessor, though I understand it was part of a larger example.

It seems like the best product might come out when a BFED and CED need to work together and have the appropriate chemistry not to kill each other.

</comment><comment> at-fates-hands The debate on preprocessors should be moot. As an agency, you can hire people who already know and use it everyday - thus the onboarding and debugging costs become irrelevant.

If you're not learning or using preprocessors, the only person you're hurting is yourself. You're just self selecting yourself from future work considering so many places use these now as a standard.

</comment><comment><USER42> Moderation in all things. Don't be boring, don't be trendy.

</comment><comment><USER43> reminds me of [http://motherfuckingwebsite.com/](http://motherfuckingwebsite.com/) (NSFW language)

<comment><USER44> I always hear that page in Gil Scott-Heron's voice. But then he was very sparing with the bad language indeed so that when used it meant something.

I do miss the fast-web (you know, text and pictures)

</comment></comment><comment> atom-morgan This may all be true but at the end of the day a lot of companies aren't looking to hire a BFED.

<comment><USER32> yes they are, all over the place.

<comment> atom-morgan My own experience on the job market is largely the opposite even if they say otherwise.

<comment><USER45> I am hiring. [http://interana.com/](http://interana.com/)

<comment> atom-morgan Unfortunately I just accepted a job offer about a week ago. Thank you though :)

</comment></comment></comment></comment></comment><comment><USER46> >The BFED realises that while not all experiences will be identical, all browsers can be used to consume a website, even gasp, IE6 and below.

I don't understand this point. He must be speaking of degrees, not a binary decision, right? Surely he wouldn't advocate supporting Netscape 1.0?

>When given the choice to add a preprocessor (e.g. LESS, SASS, CoffeeScript etc) to the technology stack, the BFED realises there is a deeper impact beyond just "writing less code". Will it be harder to onboard developers? Will debugging code be more difficult? If the answer to any of these questions is yes then the BFED will say no to preprocessors.

Covered by another commenter, this is way too simplistic. There's a tradeoff between the benefits of a technology and the increased complexity of your app and increased training time for new hires. I highly doubt a great BFED would refuse to make any tradeoffs that might increase complexity or require more training. We are professionals after all, some learning of tools is expected of us!

>The BFED realises that users have different abilities and preferred ways of using a device, whether its a mouse, finger, thumb, screen reader, keyboard or a combination of all, websites should be consumable no matter the audience, screen size or capability of the browser.

Yep, though this seems more like a point in the cool front end developer's camp. A healthy percentage of the huge amount of JS libraries that are released all the time these days (and bemoaned on HN and blog posts like this one) have to do with accessibility and responsive design for multiple interfaces.

>The BFED embraces the constraints and limitations of the browser so that he/she doesn't find him/herself in a world of Adaptive Design and UA sniffing because that world is horrible, ill-advised and costly.

Due to my own inexperience I'm not quite sure what they're on about.

>The BFED will also suggest the use of native form controls realising that browsers will enhance the experience where possible, particularly on mobile, and doesn't try to control the look and feel too much as he/she knows that the brand will not suffer because of that decision.

A good point, and I tend to advocate for those too. But it's sort of a call that gets made above the code monkey's pay grade in my experience.

>The BFED will also suggest that links are styled as such, and with underlines, so that users can identify them within copy.

Subjective. Seems like engineers tend to prefer this style and assume everyone else does too.

>The BFED will carefully select third party code based on the quality of the code itself by reviewing source code, not based on the popularity of said code. He/she favours reliability over popularity every time.

Fair enough.

>The BFED will adhere to the following quote (by Anon): "As a Lead JavaScript Engineer, I try to get my team to write as little JavaScript as possible."

I agree.

>Furthermore, the BFED realises that Single Page Applications cause severe problems and that by avoiding them and leaning on the server appropriately provides a better experience and reach.

Definitely disagree, but to even start on that discussion is way beyond the scope.

<comment><USER47> This "manifesto" doesn't even try to consider tradeoffs. There is no analysis of stakeholder preferences or path-dependent UX/UI evolution or personal projects for fun and learning. It doesn't consider neither business requirements nor developer satisfaction.

However, the article is quite good at hipster shaming, so it gets upvoted to HN front page. A classic example of link bait tailored for its audience.

It's telling that your comment with point by point discussion of BFED propositions is at the very bottom, btw.

>He/she will not just use [insert buzz word here] to improve his/her chances of finding another job based on the current technology fad in order to increase their day rate.

And this quote is just... wow.

<comment><USER32> what is "path-dependent UX/UI evolution" ?

</comment></comment></comment><comment><USER48> I always tell my guys that I don't want them to think outside of the box. We should be firmly inside the box. (This is our inside joke, but there's also truth to it).

</comment><comment><USER49> WISYWIG UI builders that are slowly picking up momentum will eventually end up commoditizing this role. There will come a day when a product designer can just create the UI from mockups, generate tested, clean plumbing code much faster and more reliable than getting a front-end developer to do it. I would start learning to get proficient with upcoming UI builders and whichever framework it ends up supporting (most likely React).

<comment><USER24> Yes, I remember when FrontPage achieved this very same revolution.</comment></comment>


Is it OK to copy terms of service/privacy policy from another site? - <AUTHOR> What do you think?  I see it done all over the place... <comment><USER2> What is your alternative; get a lawyer to draw them up? Where do you think they get them from? Only 10% of legal documents are drawn up from scratch. Lawyers have a service called Westlaw. This service allows them to copy entire briefs/submissions made to the court by a lawyer in the past. They don't even need to come up with what to say in court, they just copy the person who was successful in the past. I spent 18 months in a NY law firm cutting and pasting.

IF IT AIN'T BROKE.....

My advice, take it from many websites, piece together the bits you want and use examples from other sites for different ways of saying the same thing. Change its wording slightly and put the sentences back to front sometimes. If it's altered, not in the same format and slightly different it's ok.

</comment><comment><USER3> If your lawyer okays it, then it's fine. If you don't have a lawyer, why are you asking us? Ask your lawyer.

Honestly, the questin is like asking "Is it okay to copy code from another project?" And the answer is the same: if it works the way you want it to work, and you won't get in trouble for using it, then go for it. The way to determine if it works the way you want it to work is to consult a lawyer.

Don't think of legalese as if it were just marketing BS; think of it as an odd programming language for the legal system. When you need Python code written or evaluated, you become or hire a Python programmer; when you need legalese written or evalauted, you become or hire a lawyer. It's as simple as that.

</comment><comment><USER4> Just steal some free (= Creative Commons licensed) documents:

<http://wordpress.com/tos/> <http://automattic.com/privacy/>

<comment><USER5> Here's another alternative: <http://www.ownterms.org/>

creative commons too

</comment></comment><comment><USER6> I don't see any issue with copying the terms. Most of all End-user agreements and service policy are similar. Pay attention to substituting your company's name :)

</comment><comment><USER7> That sounds like copyright violation. See if you can find a legit free source instead.

<comment><USER6> I disagree on copyright part. Two reasons: 1) You are not selling the agreement 2) It is impossible to find out from where or whose agreement (most of them are generic). Moreover, who the heck reads those!!! I am tempted to write in my ToS - that the users hereby agree to sell their soul for using my website :)

I agree on finding a legit free source.

<comment><USER7> > _Two reasons: 1) You are not selling the agreement 2) It is impossible to > find out from where or whose agreement (most of them are generic). Moreover, > who the heck reads those!!!_

How does selling it, whether it can be found that you copied it, or whether people read them affect that it's a copyright violation? It's a copyright violation if you publish it as your own, irrespective of whether people read it or find out that you plagiarized it.

<comment><USER6> jey: thats a valid point. I totally agree with your argument as it being a copyright violation too.

</comment></comment></comment></comment><comment><USER8> It depends on their terms of service.

Seriously, though, we wrote ours ourselves, but we did heavily use info we gleaned from other peoples' ToS. If you're just a generic web 2.0 site you can probably get away with using someone else's generic ToS, but if you're doing anything slightly different, you'll have to tailor it anyway.

FWIW, for microPledge we ended up with <http://micropledge.com/conditions> \-- we got a lawyer friend to look over it briefly, and he gave us a few good pointers.

</comment><comment><USER9> If you decide to copy, double check your punctuation. [http://www.theglobeandmail.com/servlet/story/RTGAM.20060806....](http://www.theglobeandmail.com/servlet/story/RTGAM.20060806.wr- rogers07/BNStory/Business/home)

</comment><comment><USER10> MySpace did it: <http://news.ycombinator.com/item?id=3775>

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

</comment><comment><USER12> f??k yeah it is.</comment>


What the hell does ≡ do, anyway? - <AUTHOR> http://ada.mbecker.cc/post/25113870928/goddamn-three-bars-icon <comment><USER2> Context matters. I think it's acceptable for that icon to mean 'list' in one context, and 'justify' in another. Using it to mean 'menu' is a little confusing though. Sure, there's a list of menu items, but in the context of Facebook it looks a lot more like a list of posts – i.e., newsfeed.

<comment><USER3> Both Justify and List make sense in context of their neighbors. All the other uses are by themselves and they don't mean "menu" they mean "drag from here". The icon is called a "drag handle".

See, for example, the four little lines on the bottom right key on the iPad keyboard: [http://ipadinsight.com/wp- content/uploads/2011/06/iPadKeyboa...](http://ipadinsight.com/wp- content/uploads/2011/06/iPadKeyboardMovedUpTop.jpg)

Or the three little lines in the bottom right corner (drag diagonally) of pre- Lion OSX (drag from any edge): <http://www.cs.williams.edu/~freund/cs136-073/unix/window.jpg>

<comment><USER4> I kind of agree for the "drag to reorder" in the stocks apps, but this doesn't work for Facebook and Bootstrap.

For Facebook, it doesn't work because the grip is not the in the correct direction. The grip is a skeuomorphism for real grips that go perpendicular to the movement you want to stop. Here you move your finger horizontally and the lines are horizontal too.

For Bootstrap, it doesn't work either because the button stays where it is, whereas the grip should follow your finger or mouse. (see for example, the grip on the notification center on iOS: [http://iphoneism.com/wp- content/uploads/2011/06/notification...](http://iphoneism.com/wp- content/uploads/2011/06/notification-center-ios5-333x500.png))

That being said, I think in both Bootstrap and Facebook, the icon represents a list: the list of things in the menu and the list of settings (or views) in Facebook. Even in the iOS stock app, I think it's probably a list too. It can be interpreted as a grip, but only in the Android version do the graphics imply it more strongly.

<comment><USER5> I see twitter bootstrap, facebook, and the sparrow app to all mean the same thing: view a list of options.

Bootstrap: list of pages

Facebook: list of feeds

Sparrow: list of folders

It makes total sense to me.

</comment></comment></comment></comment><comment><USER6> Has the author never heard of context sensitivity before? Somehow I've never had this problem understanding what that button would do in a given context.

<comment><USER7> Yeah, I suspect that the other doesn't have this problem either.

</comment></comment><comment><USER8> In the title, I though it was going to be a math post on congruences. It kinda lends itself it his point though

</comment><comment><USER9> This is exactly the way language works: words can have multiple senses, from which the context should pick out the one intended. If you look up common words, you'll find they have a multitude of different senses (sometimes unrelated). In fact, the more frequent a word is, the more senses it is likely to have.

<comment><USER10> The other side of recognizing that this is a language issue is recognizing that we're raising the bar for computer literacy. My mother isn't likely to figure out what the three lines mean in any context, because she simply isn't all that computer literate.

Now, in the mid-late 90s she would have had no trouble recognizing the save icon—the floppy disk was what she was probably saving to anyway, and there it is on the icon. People 20 and under are unlikely to have had real experiences with floppy disks, so to them, the floppy icon is just what the save icon happens to look like, for no ideographic reason at all. That's just what save icons look like, and they recognize it, because it's part of basic computer literacy.

I think it's healthy of people on HN to recognize this as a language issue, because that's what it is, but there should be some corresponding philosophy: do we want to keep moving towards digital hieroglyphics or do we want to strive to retain representativeness in icon imagery? More meanings and context sensitivity for differentiation, as is the case with the three lines, is certainly the abstract direction.

</comment></comment><comment><USER11> My Algorithms lecturer called it the "equivils" symbol, as in "like equals but meaning exactly equivalent to".

I thought that was a standard name until I tried to use it around someone from a different university. I had to google it to prove I wasn't crazy, and when google came up with only four random hits, I was forced to concede that I may well in fact be crazy after all.

I can't decide if he thought equivils was the best name for it, or if he was just trying to make it so we couldn't google solutions to his assignments...

<comment><USER12> I call it the 'ideq' (pronounced _eye-deck_ ), a portmanteau of 'identity equals' because in my scheme background, _equivalent_ (eqv?) is less strict than _equal_ (eq?). The 'identity' part of the name, in programming context, means the address of the item.

So in order of strictness: equivalent < equal < ideq

</comment></comment><comment><USER13> No, you do not have OCD. Having an interest in icons does not mean you have OCD.

</comment><comment><USER14> It seems that some people use it to represent something that you can have traction on, like for dragable items (the slide to open camera on the iphone lock screen and the dragable reording from the writer's example).

</comment><comment><USER15> Three things means "many". In this case three lines means "many lines".

In view as list, the files are displayed as each file on a line. In justify the text goes from being snippets of various sizes to being a bunch of full lines. In drag to reorder the many lines make you think of ribbed texture of that thing you can drag against. In settings when you tap on many lines, you arrive at a screen that has many lines of settings.

</comment><comment><USER16> Then there's also the potential confusion with 三 (the Chinese character for "three").

<comment><USER17> No there isn't. I'm Japanese, 三 is indeed used as three, but is almost always written with the three lines having varying lengths, in the order of of longer-shortest-longest. I can't speak for the Chinese but it will, at the least, require a huge amount of contextual suggestion for a Japanese to interpret three lines of equal length as a Kanji 三.

</comment></comment><comment><USER18> Congruence relation!

<comment><USER19> That's certainly what I see it as!

However the other people are right, it's highly context dependant.

</comment></comment><comment><USER20> It's fairly clear in most cases, except Facebook's usage. It took me forever to figure out what was going on in Facebook's app.

The much worse icon-fail imho is the "share" concept. <http://cl.ly/2j1a40461E1B2U0X2W2q> <\-- Apple's version is ok, but doesn't seem like "share" and there are many much worse.

</comment><comment><USER21> Forgot about the one in Google Docs at the bottom of a Spreadsheet that means "View all sheets"

[http://f.cl.ly/items/0d3o3R0n3z2n2D3P250G/Screen%20Shot%2020...](http://f.cl.ly/items/0d3o3R0n3z2n2D3P250G/Screen%20Shot%202012-06-15%20at%2010.59.08%20AM.png)

</comment><comment><USER22> As with everything else in UI and interface design.

What is learned is what is intuitive. There are no silver bullets, no objective meaning of things. Only an acquired understanding.

All attempts to use metaphors to make understanding of functionality easier are basically in a war for acceptance and adoption.

It is perfectly reasonable to us it to mean those things if that becomes the standard.

</comment><comment><USER23> Context matters.

Also, there's also the simple "If Apple, Twitter and Facebook do it, bad luck, we gotta play along" rule.

P.S. Starting with "While I may be far from a UX guy" doesn't seem like the most positive way to start an article.

P.P.S. Somewhat flattered that oursay.org was used - somewhat badly - in the final example.

</comment><comment><USER24> The use as a menu button dates back at least to the Sidekick II: <http://en.wikipedia.org/wiki/File:SidekickII.jpg> (though that has one long and 2 short lines).

<comment><USER25> It was used long time before that. Many TUI DOS aplications (especially Turbo Vision based or copying Turbo Vision UI style) use this character for leftmost item of menubar with "system" things and utilities like calculator (obviously inspired by Mac OS's Apple menu).

</comment></comment><comment><USER26> Those rag icons, while common, are just oversimplified. It's good enough for word processing, but ideally your set would be something more like:

|≡| (justify full)

While it _could_ still be a list, it associates much better with alignment.

<comment><USER27> You're right that it's oversimplified, but your alternative isn't better. Horizontal lines are lines of type, but vertical lines are container borders? Simply using 4 or 5 rather than 3 horizontal lines would be best.

Also, FTA "Twitter Bootstrap refers to it as "icon-align-justify"

Actually the latest version of Font Awesome has three line icon for "icon- reorder" and four line icon for "icon-align-justify"

</comment></comment><comment><USER28> Interesting post, and I think the Bootstrap example might be the least reasonable of the bunch, but certainly as a "list", "justify", or "vertical drag" icon I have never found it confusing.

<comment><USER5> He got the Bootstrap usage completely wrong. The icon gives you access to the top-level menu items on smaller screens. Nothing to do with "settings".

</comment></comment><comment><USER29> I would argue the OS X, Twitter and Facebook examples all have the same meaning - "click me to see a list of items".

</comment><comment><USER30> The example really made me laugh out loud.

</comment><comment><USER31> What does "minute" mean, anyway?

Somehow it all works out.

<comment><USER32> This is the second comment related to a point of trivia about the English language. A lot of words have related noun and verb forms distinguished in speech only by the emphasis being placed at the end in the verb form.

Off the top of my head: desert, refuse, construct. You start noticing them all the time after you see the pattern.

</comment></comment><comment><USER33> What the hell does λ mean? I keep seeing it in all my classes and just can't get a grip on it.

</comment><comment><USER34> There's a couple of multi-purpose, kitchen sink icons. You have the lines, the cog, the star, the plus, the dot and maybe a few others. What they mean is "I wasn't creative enough to come up with a better icon so I'm just going to dump the kitchen sink of miscellany behind this vague and non-specific icon and let context do the rest".

</comment><comment><USER35> I've really only seen the 'triple bar' used outside of facebook for meaning 'if and only if' in symbolic logic.

</comment><comment><USER36> I would have googled "three horizontal lines" but interesting post nevertheless. From the maths prospective;

" A symbol with three horizontal line segments ( ) resembling the equals sign is used to denote both equality by definition (e.g., means is defined to be equal to ) and congruence (e.g., means 13 divided by 12 leaves a remainder of 1--a fact known to all readers of analog clocks)."

<http://mathworld.wolfram.com/Equal.html>

</comment><comment><USER37> > _Even worse is when the offending design is completely out of your control, > like the kerning on the sign at the Court st. subway station._

Don't see anything wrong with the kerning. It's not a typeset document, anyway, it's made by some craftman and/or artist as tiles, and this is the placement that he picked.

It's not like a bad poster made in Word with letter clinging together or something...

</comment><comment><USER38> The root problem is that there's no central authority from which all wisdom and official validity flows. There's just a bunch of people. Anyone's free to scribble out whatever and then decide it means whatever. This is just a case of a collision between two or more domain-specific symbol paradigms in a single UX space.

</comment><comment><USER39> Has meant lots of things for a very long time.

乾 (qián), creative force, heaven & sky, northwest, father, head, strong, creative, horse

</comment><comment><USER40> Wow, never noticed.

Looks like a "wildcard" icon/character.</comment>


Study HN: Linear Algebra 1, fortnight 2 - <AUTHOR>

A bunch of us are learning Linear Algebra together (previously at http://news.ycombinator.com/item?id=3060521) by working through one of Strang's textbooks. Here's a new post to kick off the next two weeks.  Will two weeks be enough to finish Chapter 1?
Most of us are squeezing this into limited spare time - a packing problem in its own right - and several are working through all the exercises, so our pace has proven slower than a typical course would go. At this point, though, we should at least declare 1.2 and 1.3 done. Less than that is just embarrassing. If you made it past 1.4 long ago, good for you; please post some comments to goad the rest of us forward. If you're not on 1.4 yet, get your ass in gear! Here are a couple observations to entice you.
1.4 is about matrix multiplication, which would seem to be about as mechanical and shallow a topic as you could get. I was surprised at how deep Strang was able to make it. (But be aware that we're not reading Standard Strang, we're reading Hippie Strang. That's ISBN 0030105676.) I thought that mastering the element-wise way of multiplying two matrices was all you needed to have it down. But Strang doesn't want you to think of it that way; he even impedes that view. Instead, 1.4 takes the earlier theme of the "row picture" and "column picture" and develops it further by teaching the matrix product AB as a combination of the columns of A or (alternatively) the rows of B. This is the book's bias in general, to de-emphasize formal representations and focus on the meaning of the constructs instead.
The other point concerns the exercises for 1.4. I put them off for a while because I thought they would be rote. They're not. They're designed to trigger insights that don't come automatically from reading the text, and turn out to be surprisingly satisfying. I found myself alternating between "aha!" and "doh!" when completing them. Yeah, that says something about the obtuseness of the student, but more about the skill of the teacher. Clearly a lot of love was put into crafting those exercises. So so far, I'd say we lucked out in picking this book.
p.s. If this sounds like fun, you should join us. All you have to do is learn. And it would still be pretty easy to catch up. <comment><USER3> So as a data point:

I found 1.2 remarkably painful. Here's why: my math sucks, and I didn't have basic algebra internalized (I flunked algebra in high school and so while I can reason my way through a system of equations, I couldn't do it instantly).

On top of that, I was _way_ overthinking the problems. The sense I got of the 1.2 problems is that they're largely refresher stuff; that is, when given a system of 2 equations in 2 variables, they just want you to go ahead and solve it, not graph it in row and column view.

I grabbed an algebra cheat sheet and breezed through it once I realized that.

1.3 went much faster for me; it was clear what the "new" material was, and Gaussian elimination is straightforward. This was material I really just wanted to go ahead and code up in Ruby (I wound up using a spreadsheet instead).

Incidentally, I've found spreadsheets extremely useful for these early exercises.

I'm hoping to be done with 1.4 tomorrow night.

By far the biggest issue I'm having is finding time to spend on this, so I'm really only a couple (literally) hours into this so far.

<comment><AUTHOR> What exercises in 1.4 have stood out for you?

Here are some that evoked insight for me (or made me go "doh"): 3, 4, 5, 8, 10, 12, 13. I'll do some more tonight.

(#5 was particularly "doh".)

</comment></comment><comment><USER4> I just had a look at the first thread and this looks like an excellent project. I won't be following along since I did maths as an undergrad and am now doing a phd, but I'd be happy to lend an experienced hand if anyone is having trouble. I'm not sure what is the best format to offer my help, so please reply if I can be of assistance in some way. I've done some tutoring of similar subjects before.

<comment><AUTHOR> Cool. Want to be our TA? :)

I think the best format to offer help would just be to post comments here. Explanations of subtleties, additional insights, suggestions for further thinking, reminiscences of your own encounters with the material, or mentions of how this stuff comes in handy in other contexts would all be of interest. And it would help the discussion flow more. One lesson from the first thread might be that we were holding back a bit too much.

</comment></comment><comment><USER5> After doing nearly all the exercises through 1.3 I did approximately 1/4 (randomly selected) through 1.5. I agree that the exercises generate good insights not in the text, but 1/4 might still be a good amount for me to do, given time constraints.

I just noticed that odd exercises helpfully have solutions in the back. So moving forward, I'm planning to do all exercises marked recommended/important, all numbered 1 mod 4, and a few others that seem helpful.

For the exercises which don't have solutions, it would be nice to have a place where we can compare answers yet not post them to the public internet. Would anyone else find that useful?

<comment><USER3> Holy I didn't realize the odd answers were in the back. Best comment ever. Thanks!

The gap between what I think I understand after reading the text and what I find I really understand when I hit problem 1-2 in each section is immense, so I'm going to stick with the problem sets.

You can just ROT13 the answers you don't want to make public.

<comment><AUTHOR> What the hell is wrong with you two? I thought the first thing _every_ student did was check if there were answers in the back.

Just think of how much harder you made college for yourself.

Edit: to be serious, the solutions at the back (which I look forward to flipping to after every other exercise, kind of like a rat getting a food pellet in an experiment) are interesting in their own right. He plants little clues in there, to hint at what was important or why he asked the question.

<comment><USER3> I made college pretty easy for myself by not going there. :)

<comment><AUTHOR> Oops. :) Well, I forgot everything. Not sure which is better.

</comment></comment></comment></comment></comment><comment><AUTHOR> Consider 1.4.13c:

      Find 2x2 matrices such that CD = -DC, not allowing the case CD = 0.

Of course one can just take a shotgun approach, i.e. come up with some arbitrary possibilities and then manipulate their elements individually until the equation holds. But what's more interesting is to view the matrices as operations on columns or rows, come up with operations that have the desired effect, then encode them as matrices to answer the question. What such ways are there to look at this little problem?

<comment><USER6> One way is to view this as a geometry problem, 2d for convenience: a column represents a point in the plane, and matrices are transformations that can be applied to that point. Then the problem becomes, find a pair of transformations such that the point ends up in two opposite locations if the transformations are applied in different order.

a solution, under rot13: n ersyrpgvba naq ebgngvba jbexf, V guvax ol naq nobhg nal natyr gung vfa'g avargl qrterrf be nal nkvf gung vfa'g gur k be l nkvf.

I'd be interested in an explanation for exactly why the exceptions to my solution don't work, I don't really understand why they shouldn't.

I read this this morning and haven't been able to get the problem out of my head since, glad this thread exists :)

<comment><AUTHOR> That's exactly the sort of interpretation I was looking for. I don't remember how to represent geometrical transformations as matrices, but that's really just a technical detail; one can understand your solution without it. That being said, I still don't understand your solution. Are you saying that _any_ such pair of transformations as you describe has the desired anticommutative property, except for the exceptions? I don't see either part of that - <USER2> general claim or the exceptions.

My solution exploits the fact that in CD, C combines the rows of D, while in DC, C combines the columns of D. Here's the rest:

Yrg P or gur vqragvgl zngevk rkprcg jvgu -1 nf vgf obggbz-evtug ryrzrag. Gura PQ vf Q jvgu vgf obggbz ebj artngrq. Fvzvyneyl, QP vf Q jvgu vgf evtug pbyhza artngrq naq -QP vf Q jvgu vgf yrsg pbyhza artngrq. Fb gb trg PQ = -QP, jr whfg arrq gb svaq n Q fhpu gung artngvat vgf obggbz ebj unf gur fnzr rssrpg nf artngvat vgf yrsg pbyhza. Sbe 2k2 zngevprf, guvf vf nal Q jvgu mreb va gur gbc-yrsg naq obggbz-evtug cbfvgvbaf.

Rot13 don't work so good for specifying matrices!

<comment><USER6> I apparently entered my test cases wrong in lots of interesting ways. I think I've actually found essentially the same solution you have, it turns out I had the exceptions and the actual solution backwards:

n avargl qrterr ebgngvba naq n ersyrpgvba nobhg, nf sne nf V pna gryy nal, yvar guebhtu gur bevtva frrzf gb tvir gur evtug erfhyg.

Are we sure this is the correct meaning for "A = -B", where A and B are matrices? Some things I've read seem to be saying that that should be equivalent to A _B = identity matrix, rather than A_ v = -1 _(B_ v), where v is some vector.

<comment><AUTHOR> It's the correct meaning, as indicated by the solution on p. 430. You're thinking not of -B but of the inverse of B, which is denoted B^-1 ("B to the power of -1") and when multiplied by B gives I.

</comment></comment></comment></comment></comment><comment><AUTHOR> It's been a few days. Anybody care to report where you are? I'm happy to say I'm still doing all the exercises, not so happy to say I've only just finished the ones for 1.4. I thought exercises 29, 52, and 54 were interesting, among others.

Finding time continues to be an issue, but actually working through the material is fine. Many of the exercises are rather fun, as they mostly have some non-mechanical twist. Occasionally (as in 1.4.23) Strang's informality goes a little too far and I have no idea what he's asking.

<comment><USER7> Trying to catch up; just starting the exercises to 1.4.

Keep going and I'll catch up someday!

<comment><AUTHOR> I'm going to be offline for a few days this week, and might not be able to work on exercises. Will post when back. Keep going you guys!

<comment><AUTHOR> I'm back and will get back into the exercises and post as soon as I can. What's others' status?

<comment><AUTHOR> I have found 1.5 harder to follow, but pretty interesting once you figure it out. The heart of it is the proof (if you can call it that!) of A = LU on pp. 34-35. It is quite beautiful - just one simple idea. But I have a question. From p. 35:

      Both sides of (7) end up equal to the same matrix U,
      and the steps to get there are all reversible.

What is the importance of "and the steps to get there are all reversible"? I don't see how the argument uses this fact.

(On a practical note, I suppose a new thread is in order as we can no longer post top-level comments on this one. If no one else creates one, I'll do so after I've worked through the exercises in 1.5.)

<comment><AUTHOR> The answer to my question is that the proof derives an identity, so you need to reverse the steps to get back from there.

</comment></comment></comment></comment></comment></comment><comment><USER8> I'm full up with taking the AI and ML courses from Stanford. Both courses provide background material in linear algebra, so I guess I'll make do with that for awhile. Two notes, though: The book is rather expensive (over $100USD) and, notwithstanding the glowing comments here, has some pretty scathing negative comments on Amazon. The question that comes to my mind is: If a book is going to reach an internet audience, is it still appropriate to charge classroom prices?

<comment><AUTHOR> No argument on the price; it amounts to assault. But the reviews on Amazon are interesting. Most love it, some hate it. The first thing I noticed is that the reviewers who love the book are the ones who take pleasure in the material. There are two kinds of negative reviewer: students who found it confusing (I suspect because it didn't hold their hand in the usual way - its focus is on developing intuition, something no one who just-wants-to-get-this-over-with could care less about) and mathematically more sophisticated readers who don't like its informality and gushiness. In other words, the negative reviews pretty much sum up what's good about the book. Of course, we're barely into it. I'm assuming the rest is like the first.

Here's a litmus test for whether you would like it. This is how Strang introduces Gaussian elimination:

 _The problem is to find the unknown values of u, v, and w, and we shall apply Gaussian elimination. (Gauss is recognized as the greatest of all mathematicians, but certainly not because of this invention, which probably took him ten minutes. Ironically, it is the most frequently used of all the ideas that bear his name.) The method starts by subtracting multiples of the first equation from the other equations. The goal is to eliminate u from the last two equations._

That colloquial aside is irrelevant and would drive readers who are gritting their teeth to begin with crazy. I love it. It reminds me of my favorite old math prof to whom Euler was a close personal friend. If you find such a style delightful, this is the book for you.

Strang's goal in this book seems to be to get you as excited about the subject as he is, and share how he really thinks about it, convention be damned. That's why it's Hippie Strang!

<comment><USER9> Based from your excerpt, that's basically the type of book I would want to read. Reading a math book without having any background with what the heck I was grinding numbers for would just bore me to tears. I might have an ebook on that lying somewhere...

</comment></comment></comment><comment><USER10> Sorry, kind of OT: I'm working through Arora & Barak's "Computation Complexity" textbook and would love some company. Get in touch if you're interested.

<comment><AUTHOR> Hope you find someone. There should be a startup for this!

</comment></comment><comment><USER11> I took linear algebra a couple semesters ago in college, and have some matlab/octave scripts that solve linear systems using gaussian elimination, guass-jordan, etc. If you want I can email them to you guys if it would help you guys.

</comment><comment><USER12> This is a great idea! I'm so happy people are getting together in virtual classrooms! I would join but I'm currently doing linear algebra in college. Hopefully, when I graduate I can join/start something similar on another topic :)</comment>


Apple went No. 1 in PC sales - <AUTHOR> http://www.insidermonkey.com/blog/hewlett-packard-nasdaqhpq-now-no-2-to-apple-in-pc-sales-15845/

<comment><USER2> "Includes all desktops, netbooks, notebooks and pads"

Out of the 21 million "PCs" for Apple in this list, 17 million are iPads. So Apple really sold 4 million PCs compared to HP's 13 million.

Definitely an interesting trend but nowhere near the "No. 1 in PC sales", at least according to what most people would think of as a PC.

<comment><USER3> I'd just like to add that Apple makes more profit from an iPad in dollar terms than HP makes from a typical desktop/notebook.

<comment><USER4> That's really not interesting for anyone except Apple and its shareholders though.

I fail to see why people keep bringing it up as if it was relevant to anything.

<comment><USER5> They also make more fanboys per sale than any other retailer!

</comment></comment></comment></comment><comment><USER6> I hate this kind of bullshit. Please, US of A: remember there's are almost two hundred countries in the world besides you. In most of those countries Apple products are prohibitively expensive.

Please keep that in mind when some Apple fanboi publishes an article saying "Apple biggest seller of X". You are probably referring to just _one_ market. As big as that market is, it's _not_ the total of sales worldwide.

Thank you very much.

EDIT: stupid mistake.

</comment><comment><USER4> Misleading headline. iPad sales are included as "PCs", while at the same time iPads are counted as tablets when Apple is cited as the mobile-leader everywhere.

Enough with the Apple-kissing please. Both Dell and HP sells more PCs. Samsung sells more phones. Yes Apple sells most iDevices, but that is pretty much a given.

</comment><comment><USER7> in a Post PC world , Apple is the leading PC maker, interesting.

last years "hp pc business spin off" rumours was a major reason for this shift.

</comment><comment><USER8> If your going to include iPad's why not phones as well?

</comment><comment><USER9> As tallanvor already alluded to, Microsoft has shown that there is a consistency problem.

Take two Surfaces. One x86 and the other ARM. Add a keyboard and mouse. Now the x86 version is in every respect a PC. The ARM version would be considered today as a tablet. So are we saying that the distinction between tablet and PC is CPU architecture ? Because that is ridiculous given that x86 is moving to the low end for tablets and today we have desktop ARM CPUs.

Hence tablets NEED to be classed as a PC.</comment>


Visit the skeletal remains of a cold war weapon - <AUTHOR> http://triggur.org/silo/

<comment> josh-skidmore The navigation was a bit difficult, but the site is interesting. Going "to the map" ([http://triggur.org/silo/map.html](http://triggur.org/silo/map.html)) makes it a little easier to navigate.

<comment><USER2> That's how things were designed back then. Its more of a choose your own adventure layout.

</comment></comment><comment><USER3> More like visit the skeletal remains of teh late 90's internet...

<comment><USER4> Hey, the FONT tag and TABLE-based layout was good enough for his site, it should be good enough for you! :)

<comment> jack-r-abbit I'll happily overlook the font tag and tables. But for the love of all things holy... that background image.</comment></comment></comment>


Looking for programmers - <AUTHOR>

I am an entrepreneur and Co-Founder of a German based start-up and we are looking for some programmers. Interested ? please come back to me firstname.lastname@example.com <comment><USER2> Care to share anything about your technology stack, or what /type/ of programmers you are looking for?

<comment><USER3> In particular, are these telecommute jobs or are you looking for someone based in Germany? And is your company language German or English?</comment></comment>


Where to learn Ruby on Rails - <AUTHOR>

I have no technical or programming background/education.
Where's the best & quickest place for me to go to learn Ruby on Rails?
Thanks in advance. <comment><USER2> Your first step should actually be to learn Sinatra (<http://sinatrarb.com>). It's less "magic", and will help you get your head around what's going on. Then, after that, Michael Hartl's free online Rails Tutorial (<http://railstutorial.org>). Also, although some of the older ones are dated, the screencasts at <http://railscasts.com> are great.

</comment><comment><USER3> Why do you want to learn RoR?

If this is for a single project that you have in mind...better off to outsource the development or partner with a developer & focus on marketing, sales and other revenue generating

If you want to become a programmer, check out book "Learn to Program" by Chris Pine. Be warned though, its not just RoR you will need to learn but also database design, HTML, CSS, JavaScript at the very minimum before you will really be able to do anything.

<comment><AUTHOR> I'm outsourcing my current project... at least to get the prototype.

I want to learn it for long-term rewards. It all sounds a little daunting though..

<comment><USER3> Like any crafts person be it a carpenter or indeed a surgeon, even once you learn the tools of your trade & fill your head with all of the theory and academic knowledge required - learning how to apply this, to actually create a great product takes practice & experience.

If you are aiming to quickly develop and bring an idea to market, I would recommend hiring or partnering with a developer with a solid background, maybe reduce the feature set you intend to develop for version 1 to the bare minimum. Try and use the best resources you can within your budget.

While non-developers do learn to code & launch applications in short periods of time, these cases tend to be the exception, I've seen people with sales & marketing backgrounds struggle for years to code products and never get them launched.

I don't want to sound negative, but taking a product through the entire lifecycle yourself, while also trying to drum up sales, with no technical background....it's going to be tough going.

<comment><AUTHOR> I would plan to learn it, while at the same time have someone else develop this project. So I'm not delaying my work, I'm just learning while the work is going on.</comment></comment></comment></comment>


Feds spend billions to run museum-ready computer systems - <AUTHOR> http://bigstory.ap.org/54fb0c2ad1e249658cde51c3c6380252 <comment><USER2> Using floppy disks and old hardware and software doesn't sound like a problem if it still runs and does what it's supposed to do. I'm skeptical that building a modern system would really save money since the temptation for feature creep is too great.

<comment><USER3> > Using floppy disks and old hardware and software doesn't sound like a > problem if it still runs and does what it's supposed to do.

It sounds like a problem to me for the simple fact that replacement parts are near impossible to find, and it's clearly costing the taxpayer a lot of money. That alone should be reason enough to upgrade.

It's also a huge security problem because many of these machines were designed before modern security procedures were invented. How am I supposed to maintain a cryptographically secure password system on a machine with a processor too slow to run a hashing algorithm?

> I'm skeptical that building a modern system would really save money since > the temptation for feature creep is too great.

So, because we might be tempted to add a few features, we shouldn't upgrade technology? I don't understand where this weird pseudo-luddite mentality in the tech world comes from. I see it all the time in tech forums, and I just don't get it.

"If it's not broke, don't fix it" is a fun, catchy phrase, but it really breaks down as soon as you try to apply it anywhere. "Hey, you should really change the oil in your car." "If it's not broke, don't fix it."

<comment><USER4> That's because a lot of time the suggestion is more along the lines of "Why bother changing your brake pads on your old car when you can just buy a new car with new brake pads" than "You should really change the oil in your car." Nevermind the fact that your old car is a truck that you need in order to haul things, is easily repairable and you know how it works inside and out and people are telling you to get a SmartCar to replace it when you really just need new brake pads.

<comment><USER5> But now your old truck is 70 years old and all the replacement parts have to be hand made by some people you called back from retirement. It's okay to keep it running to show it off from time to time, but it's no way cost effective to do any real work with.

</comment></comment></comment></comment><comment><USER6> The real problem is there's huge, legacy systems tied to these platforms that they don't understand and are too risky to port/re-engineer. Think of our military systems or payroll going down since software was ported wrong or relied on underdocumented assembler or compiler feature.

There's some hope on reducing costs at least. Look up NuVAX for an example of emulators being designed to work _exacly_ like old hardware for fraction of price, space, energy, and so on. I haven't heard attempts but next step might be instrumenting them to trace programs code/data for porting. Or binary translation to modern architectures. I know DEC did latter for VAX-to-Alpha port.

<comment><USER7> The private sector usually manages to keep it's systems updated. This here seems like the typical incentive and accountability problems of government bureaucracy.

<comment><USER8> I'm not sure what private sector you're talking about, but the healthcare industry keeps systems updated only due to regulatory requirements, and even then there are a fair number of practices that stick with old systems and just have their upstream providers (e.g. billing services) massage the data on the way to its destination.

<comment><USER9> Take just a quick look at MUMPS. And they start new deployments, new projects even today. With my tax money, here in Europe.

</comment></comment></comment></comment><comment><USER10> Most federal systems that are anywhere over ten years old (and that's most of them) are complete mysteries to the people who both use and maintain them.

A long time ago, I was responsible for such a system. I didn't ask for the job; I simply was the smartest person in the room for too long.

I vividly remember one day we had a problem with folks in a remote location entering things and those things getting mangled and/or lost on the way to the system-of-record.

For one system, with maybe five thousand users and perhaps a few gigabytes of traffic a month, I was on a call with 30 people spanning most of the Earth. I learned that there were at least a dozen separate systems at that location between the person entering the data and the data being sent to HQ. Each system was old. Each system had a separate vendor which claimed to be the only vendor to understand that system (Sometimes this was true. Many times they were just bluffing.)

And -- and this was the kicker -- for each of our dozens of locations, each location manager, because of their friendship with politicians, made their own decisions about how machines were configured and which programs were installed. They were complaining to us because things were bad, but they did not feel like they answered to us.

I was responsible for fixing it.

At the end of that call, I was reminded of Arthur C. Clarke's quip: Any sufficiently advanced technology is indistinguishable from magic.

But I doubt I thought of it in the way he meant it.

<comment><USER11> As a younger developer, I can't emphasize enough how much I enjoy hearing these types of stories. :)

</comment></comment><comment><USER12> To be fair, my last employer (aerospace manuf.) ran an incredibly dated and ancient OS with pretty decent results. It was simple, to the point, ugly as hell but got the job done without needing constant updates etc etc. Also we never had a problem with malware (because who writes malware for a 30 year old OS?)

I understand this article mentions many different sectors and functions for antiquated systems but sometimes an update simply isn't needed.

<comment><USER13> > because who writes malware for a 30 year old OS?

Careful. I believe I just read an article (Wired?) about some hackers doing exactly this.

Security through Seniority might be a good name for the mindset. :-)

<comment><USER12> Is there a term for when you say something knowingly broad but ALSO understand there are specific cases where it doesn't apply? Like a simple term I can paste onto the end of statements like (sic) or similar so that I can avoid the nitpickers?

EDIT: honestly not being facetious just curious because this exact thing happens constantly.

<comment><USER6> That's how models and rule work in general. There's a rule or pattern that mostly applies but always exceptions.

In this case, the old systems were all torn apart by older hackers. There's young ones, just a few, hacking mainframes and stuff now. The ease of finding first flaws showed only reason they weren't found sooner is nobody cared enough to look. Or couldn't afford the relics to play with. So, believing one is safe just because computers are old is akin to Security via Senority.

Now, there are older approaches like tagged HW or dedicated lines whose intrinsic properties reduce odds of attacks. Definitely apply any good techniques from past to present situation. Just that it's old... especially since it's older than _INFOSEC itself_... doesnt make it safer.

</comment></comment></comment></comment><comment><USER14> On the other hand, they're getting decades out of the software. Use the bleeding-edge stuff, and it's obsolete in two or three years now. Use a "cloud" service, and the service probably goes away within five years. The new stuff has too much churn. Where will Rails be in ten years? Python? Java will still be around; it's the successor to COBOL.

<comment><USER15> They're getting decades out of the software, but "about three-fourths of the $80 billion budget goes to keep aging technology running". Is that worth it to you?

<comment><USER16> Depends. Where would that 3/4 be going if they invested in new technology? Training? Support?

<comment><USER6> Nothing if they keep the interfaces the same. The real cost, immediate and over time, is the port of the applications or systems to new HW and toolchains. I can't overstate enough how many problems this can cause. Especially if they don't have source for these apps or it's barely commented.

</comment></comment></comment></comment><comment><USER17> I wonder, what would be your answer is someone came up to you and said "We need a computer that we can maintain and keep in service for 50 years or more. What should we do?".

<comment><USER18> Take the IBM route. Write to a VM spec. Hardware comes and goes, but VMs last forever. The System 38's virtual architecture is still used on modern AS/400 machines, so programs written in the late 70s will still work today without needing to lift a finger.

<comment><USER17> Yeah, that makes quite a lot of sense and is a proven technique. On a side note, did they ever build a System 38 VM for something like VMWare, Virtual Box, etc.?

</comment></comment></comment><comment><USER19> Honestly, I don't see good solution to this until the rate of technological change really slows down. It seems like your options are to either pay to periodically re-engineer every system or pay to maintain obsolete hardware.

<comment><USER20> Maybe pay for vmware or similar to run your old systems on modern hardware?

<comment><USER21> Vmware virtualises 'modern' hardware.

</comment></comment></comment><comment><USER22> "Feds spend billions to maintain museum-ready buildings"

"Feds spend billions to enforce museum-ready laws"

These computer systems aren't even that old compared to many things the government spends money on.

</comment><comment><USER23> anecdotal, in the early to mid eighties I was in the US Air Force. The machine I was first assigned to watch over was in the secure comm center. This burroughs machine was the first non-tube computer made by burroughs. it could boot from paper tape or card and was replete with blinking lights.

later I moved up in tech to a sperry/unisys system. all our personnel data and such was loaded via cards, physical cards in multiple boxes till near 88.

So honestly I don't doubt they still do similar. I was just so glad we got out of boxes of cards because having to fix runs each night got old and all for bent card.

it got me into programming, turbo pascal at the time. why, when we moved off physical cards it was then onto 360k floppies. The problem was, the upload/download programs provided could take half an hour or more to transfer to the 1100/70\. The turbo pascal program did it in five or less per disk without issue.

</comment><comment><USER24> On one hand it seems inefficient and perhaps dangerous to be reliant on such old systems. On the other hand, the idea of a new software project to replace it also sounds at risk of being extremely expensive and overly complicated. Because of all the government contracting anti-patterns.

In theory there's a middle ground that avoids both these extremes. In reality, with government software... I'm skeptical it will happen.

</comment><comment><USER25> I want to know only one thing: COBOL is named under Social Security so I suspect the "outdated computer language that is difficult to write and maintain" Treasury uses is not COBOL -- but oh god then what it is??

<comment><USER26> Dating from 1960 ("the systems are about 56 years old"), and especially given that the system in question is likely an IBM mainframe, Fortran would be my guess.

Fortran can actually be surprisingly pleasant, at least as pleasant as C, but I'm guessing their particular code is not.

<comment><USER27> Could be PL/I

</comment></comment></comment><comment><USER28> Despite all the ipads and what note I have found a pen and notebook to be the better note taking equipment than anything else.

If it is getting the job done cheaply and efficiently that required and better than the alternatives it is the best technology to use.

</comment><comment><USER29> Seems like a great opportunity for virtualization...

</comment><comment><USER30> I think this deserves its own term - porkware</comment>


Ask HN: Has any SaaS company successfully used a 'name your price' pricing plan? - <AUTHOR>

As much as fixed pricing plans make sense, has any company successfully used a pricing option similar to how insurance companies and travel sites use "name your price" features?
My initial thought is that it may lead to many customers with a $1 payment, but some may pay derive more value, therefore paying above your fixed pricing tiers.
Thoughts? <comment><USER2> Why would you want to do this? What's the motivation?

If it's "this is a great marketing strategy" well, um, maybe but hopefully you have better ways getting your customers to hear of you.

If it's "this would be a fair way of matching value provided to cost", well, um, maybe but I think you're still better off naming a few different price points to cover your intended customer segments.

If it's "I don't know what this is worth, you decide", well, no, just no. Man up, make a decision and name a fair price. You don't get to cop out of making the hard decisions if you want to have any hope of making money. Also, if you don't know what the service is worth then I strongly suspect your customers won't either and perhaps you don't have a viable business.

<comment><AUTHOR> Was more of a curious inquisition into if this model had been attempted, not a "should I do this".

In the examples in description, insurance and travel, there is a demand seeking a supply and the supplier gets to choose if the price is right to fill their void.

</comment></comment><comment><USER3> I would think about how this pricing model might compare to that of bands that offer a name your own price donation for an album. Wikipedia is another possible example i.e. software/information for a donation. Those aren't direct examples...but they might provide some insight.

<comment><AUTHOR> Is Wikipedia's donation data open? Would be interesting to see statistics on donation amount vs. usage / contribution to the knowledge base.

Good thought on the band's album donations.

</comment></comment><comment><USER4> Google AdWords and bidding systems might fit this bill

<comment><USER4> I guess it works when customers are competing for limited resources. Could you create a supply limit in SaaS that customers would compete to buy?</comment></comment>


Britain-Based Card Aggregation Service Curve Opens First U.S. Center in Brooklyn - <AUTHOR> https://www.areadevelopment.com/newsItems/2-11-2020/curve-brooklyn-new-york.shtml <comment><USER2> With some punctuation: Britain-Based Card Aggregation Service, Curve, Opens First U.S. Center in Brooklyn</comment>


Scribd (YC07) Has FREE (full book) by Chris Anderson online - <AUTHOR> http://www.scribd.com/doc/17135767/FREE-full-book-by-Chris-Anderson

<comment><USER2> wasn't this on here yesterday ?

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

and before that...

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

</comment><comment><USER3> Scribd is quite annoying. I mean, this is probably a deal between Scribd and Anderson, but wouldn't the actual optimal solution be releasing it simultaneously in PDF and HTML formats?

<comment><USER3> And I said that before noticing the super-annoying left-right format that requires scrolling but is incompatible to the left-right touchpad scrolling feature of my web browser.

I think I'll just read some more small blogs from people who will make the disruptive innovations of 2012. I wonder why I still visit news.ycombinator.com

<comment><USER4> You can change the layout -- click More -> View Mode -> List Mode

will do vertical scrolling, not book style L/R scrolling.

</comment></comment></comment><comment><USER5> I think I'll just read wikipedia. Zing!

</comment><comment><USER6> And I still can't read it on my kindle for free.</comment>


Tiled Map Editor reaches version 1.0 - <AUTHOR> https://thorbjorn.itch.io/tiled <comment><AUTHOR> The release notes say March 25, but it was released May 25.</comment>