Exercise More to Hack Better - <AUTHOR> http://datasyndrome.com/post/1474842339/exercise-more-to-hack-better <comment><USER2> It's even worse than lowered productivity for me. I just start getting straight-up depressed; just absolutely terrible feeling. No energy, no drive, no light. And then I realize that somewhere in the last two weeks I stopped my regular exercise regiment for some reason or another and pick it back up - cured instantly.

It's easy to fool yourself into thinking that the funk caused the stop in exercise but that's nearly never the case.

EVERYBODY, hacker or not, should be getting regular exercise. Please. You won't regret it.

<comment><USER3> Same thing here. Stopped running, restarted 3 days ago, feeling better already.

Although I do think that doing something like painting a house or doing gardening for a couple hours would also do the trick.

<comment><USER4> From experience, I would say activities like painting a house, or gardening aren't a substitute to running in every aspect; sure, they can clear up your mind, but you won't experience an improved cardiovascular and respiratory health, or even a "high".

<comment><USER5> I like to "garden" using a chainsaw. That's a pretty good workout.

<comment><USER6> When I lived in areas that had a lot of snow, I enjoyed the workout of shoveling snow. Always felt fantastic doing it and afterward, so much so that I'd often fantasize about shoveling the entire neighborhood if I had enough time.

<comment><USER3> Seen this? <http://www.shovelglove.com/>

</comment></comment></comment></comment></comment></comment><comment><USER7> My problem with deliberate exercise is that it doesn't feel purposeful (vague notions of improved health notwithstanding). Picking up a chunk of iron just to put it back down again or stomping on a moving platform just to remain in the same place feels about as useful as typing out a bunch of boilerplate code just to delete it shortly afterwards. I might change this attitude should I find more interesting activities.

Instead, I choose to integrate exercise into my lifestyle rather than go out of my way to do it. Serious gym rats will scoff at me, but it's far more satisfying to carry a 10-kg watermelon home from the supermarket 3 km away.

It's also a lot easier when the exercise is compulsory. Twice a day I pass through 1.5 km of hilly terrain to reach my bus stop, and the panoramic view of the city along the way is certainly a nice bonus.

<comment><USER8> Try a sport!

I too hate treadmills and lifting weights -- it's just dreadfully boring. However, if you pick up a sport, you can hone your coordination skills and progress to become a better player. I find that it's much more motivating when you're competing with people. And, I feel much better knowing that I am acquiring a useful skill that can be measured against in competition.

Personally, I play competitive table tennis (very unlike garage ping pong). What's good is that you can actually do this inside, and, it's cheap to play at clubs. It's also a sport that keeps your mind sharp. I even wrote a whole article about why I think it's a great hacker sport: [http://jamesyu.org/2009/01/11/why-table-tennis-is-a-great- ha...](http://jamesyu.org/2009/01/11/why-table-tennis-is-a-great-hacker- sport/)

<comment><USER9> I want to echo your advice. I recently started playing a combat sport after a few years of not really exercising. I have no illusions about its likely effectiveness in a real fight (not much), but since I don't plan on getting in a real fight that doesn't matter.

It is fun and interesting compared to other forms of exercise I've tried, and it definitely helps me get my cardio up. There are a couple other benefits too: when you are paying $150 a month for the class sessions, you show up. And it's easier to keep going with an instructor there pushing you than by yourself. There's also no team depending on you to be good, so there's not the same kind of pressure to perform. For someone like me whose self-control and discipline are perhaps below average, these benefits are no small issue.

I didn't start doing this to be a better worker; my primary motivation was vanity. But anecdotally, I have noticed that my productivity level has been somewhat elevated in the month since I started doing it. I'm not sure if it's the fact that I have to leave work at exactly six PM every day, giving me a solid deadline for whatever I want to accomplish in a day, or if it's the exercise itself. Heck, it could be a mix. But as far as I've seen so far I would definitely recommend it.

<comment><USER10> Martial arts have an extra motivation bonus as well. You're much less likely to give up and stop moving when your opponent is still trying to hit you.

</comment></comment></comment></comment><comment><USER11> One of my cofounders has a PhD in neuroscience. Whenever I am stuck on a technical issue, he encourages me to get up and exercise for a while. His reasoning is that vigorous activity increases bloodflow to the brain, which in turn leads to creative problem solving.

Anecdotally, this has served me well so far. Our entire architecture came to me during the middle of a hellish session on the treadmill.

</comment><comment><USER12> I wouldn't agree at all with 'the gym don't count' - I'm an on-off gym user for years now and can say that my energy levels are so much higher when I am exercising multiple times weekly, whether is be cardio or weight lifting. My general mood and spark is multiplied, to the surprise of many who believe they are exhausted most evenings and certainly couldn't put any spare energy to a workout.

When I'm not working out - I also suffer a peculiar kind of depression mentioned here in the comments. Yet I'm not sure how much of this is due to a release of certain chemicals in the body, or the psychological hit of knowing you're letting yourself go. Either way, I'm back in the gym after 3 weeks out: last week I struggled to get up, today I'm up and coding at 5am. Much like exercise itself, work out what's best for you and realise the importance of training your body as much as we all train our mind.

Edit: spelling correction

<comment><USER13> I'll second everything said here. "The gym doesn't count" is an utter lie. If you've led a multiple-year sedentary lifestyle, a mere 15 minutes on a treadmill in the morning will show you an immediate difference in your motivation and mental clarity.

Also, fat-asses: you don't have to kill yourself at the gym. Look up on the internet what your target heart rate should be, and stick to it. If you feel like you're going to fall over and die, you're making it too hard on yourself.

If you're just getting started, developing the habit of going regularly (at least 3x/week) is immensely more important than minutes ran, reps, or pounds lifted.

It's incredibly hard to start and stick to a routine if you're not used to it. I've only done it three times in my life, but it paid off every time. And the years in between were racked with life-altering depression and failure.

<comment><AUTHOR> Hackers are inside all the time. You're telling me 15 minutes on a treadmill beats 15 minutes outside for your well being?

<comment><USER13> Where did you get that? I'm telling you that 15 minutes on a treadmill beats doing no exercise at all. It's contemptible to suggest to a sedentary person that if they can't exercise outside in the sun then they shouldn't even bother.

<comment><AUTHOR> It is contemptible to suggest that I suggested that. You can go outside, so you should.

</comment></comment></comment></comment></comment><comment><USER14> Exercise also grows neurons, according to many recent studies (so the effect is more than just short-term). See e.g. [http://well.blogs.nytimes.com/2009/09/16/what-sort-of- exerci...](http://well.blogs.nytimes.com/2009/09/16/what-sort-of-exercise-can- make-you-smarter/)

</comment><comment><USER15> I can't back this up with statistics but I'd hazard a guess that a portion of antidepressant subscriptions are entirely related to a sedentary lifestyle.

My world goes completely to shit if I'm not exercising on a regular basis, it changes everything.

<comment><USER4> The World Health Organization predicts that depression will create the second greatest burden of disease by 2020, requiring cost-effective prevention and intervention strategies. The evidence to support the benefits of exercise in offering protection from depression and as an intervention in the treatment of mental illness is growing. The literature is reviewed with 11 prospective longitudinal studies that include measures of physical activity and depression at two or more time points showing a protective effect from physical activity. Fifteen randomized controlled trials (RCTs) and three meta- analyses provide evidence that exercise can reduce depression and that it can be as effective as cognitive therapy. Four RCTs report exercise as an intervention in alcohol addiction and two RCTs in the use of illicit drugs. While many of the studies reviewed have methodological weaknesses, including lack of concealment in randomization, limited use of intention to treat and blinding, the benefits of exercise far outweigh the risks. There is evidence that exercise protects against depression and is an effective intervention and adjunctive intervention for the treatment of mild to moderate depression. Exercise provides some health and psychological benefits as an adjunct to treatment in complex mental health problems such as alcohol and drug rehabilitation. [1]

[1] MARIE E. DONAGHY School of Health Sciences, Queen Margaret University, Leith Campus, Edinburgh

</comment></comment><comment><USER16> After going outside and walking in the sun for a couple of hours, I'm too tired to get any work done the rest of the day.

As far as I can tell, everything said about exercise is lies. Or perhaps mileage varies. Just remember, mileage varies, and also, you're not alone.

<comment><AUTHOR> You have to do it regularly. :) It sucks at first.

<comment><USER17> Is this a meth argument? If I'm relatively okay without exercise, and start exercising, staying on it for a while, the anecdotes here seem to suggest that if you ever stop it throws you in a huge funk.

<comment><AUTHOR> Yes, only the opposite of what you suggest.

You are in a state of permanent withdrawal right now. You feel like crap, way worse than you're supposed to, and you don't know it. Your body requires exercise and you aren't giving it what it needs.

Yes, if you stop exercising you will return to your current relatively miserable state. Thats the worst that would happen - which is actually pretty bad.

<comment><USER17> I hope you're using "you" in the general sense, since a) as a rule one shouldn't trust people's medical judgments (especially when they don't know you) unless they're a doctor, and even then, get second opinions etc., and b) you're experimentally wrong.

<comment><AUTHOR> Go outside.

</comment></comment></comment></comment></comment></comment><comment><USER18> I think this is largely true. I've lost a lot of weight in the last eighteen months, and started exercising, and I find that my concentration and ability to handle abstraction are significantly better when I'm working out than not. Healthy body, healthy mind and all that.

</comment><comment><USER19> I don't know how many more of these kinds of posts I have to read before I get my act together. One more at least.

<comment><USER20> Get up off your ass, get out there and just do it!

</comment></comment><comment><USER21> Lately I've found the best way for meto consistently exercise is to incorporate it with hacking and work. I've started using my bike as my primary mode of transportation when I leave the house to program. So instead of driving to a coffee shop or library, I ride my bike. Its made a noticeable difference in my energy, creativity levels and ability to focus.

</comment><comment><USER22> Not central to the authors point, but I think surfing, and exercise like it (mountain biking, for instance) are superior to simply hitting the treadmill. Getting out into nature and getting some vitamin D is a whole lot better than doing the rat-run in a gym cardio room. That said, anything is better than nothing.

<comment><AUTHOR> Definitely going outside is required. The gym does not give you the same benefit, imo. Its definitely also about connecting with nature.

Editing now to clarify, thanks!

<comment><USER23> Pet peeves with these types of comments/articles:

1) They are completely anecdotal. "This worked for me, so it applies equally to all 7+ billion humans on this earth!"

2) They assume that everyone lives in the same climate and/or lives in a similar region. e.g. How are you supposed to 'connect with nature and the sun' when you live in Alaska and it's dark 6 months out of the year? How are you supposed to regularly 'connect with nature' when you live in the middle of a metropolis?

<comment><AUTHOR> 1) Almost all 7 billion humans on earth don't have a problem with not going outside. Just the Hacker News crowd.

2) I'm not assuming anything. Alaskans can snowmobile or dogsled.

Stop making excuses and go outside. You will thank me for it.

<comment><USER23> I already go outside. Stop assuming that you know anything about be just because I'm part of the 'Hacker News crowd.'

</comment></comment></comment></comment></comment><comment><USER24> My sport of choice is beach volleyball (2v2). My problem is that I'm wildly obsessive - so instead of just going out there and playing volleyball for a couple hours, then heading home to work, I stay at the beach for 5-6 hours, and after that I'm completely spent. And then the next day, if it's mildly nice, I'll just head back to the beach because I'm completely obsessed with improving my game.

I'm finding that late fall is doing wonders for my productivity, since the beach is colder now (but damn nice for Wisconsin November), I'll only spend 2-3 hours down there once or twice a week, rather than 6-7 hours 4-5 times a week (summer schedule).

But I do recommend picking up a sport. Good exercise and doesn't feel like a waste of time, the way lifting does (though I do try to do lifting to improve my game, even if it's boring as watching grass grow).

<comment><USER25> Obsessive behaviour can be remedied. If you want.

</comment></comment><comment><USER26> I can't stop running. It's too addicting.

Though, I can't help but feel the pain of my exercise.

<comment><USER27> It could be your shoes as well. I've been running for a couple years, and take frequent breaks now.

Vary your run; do different distances, speeds etc. But don't neglect shoes; indulge in a new one every 500 Km.

<comment><USER26> I don't use shoes at all when I run.

However, I would be willing to buy shoes like the vibram 5 fingers to protect me from the occasional pebbles and the dangerous glasses but not modify how I run barefoot.

<comment><USER28> what do you do in winter?

<comment><USER29> Run faster.

<comment><USER26> I just did in the cold. The heat that your body accumulated over exercise really does make everything warm.

</comment></comment></comment></comment></comment></comment><comment><USER30> I work from home, and either run or swim during lunchtime. It's great, I get so much more done. If you start, the first weeks you will feel very tired and it seems counter-productive. After a while, you suddenly realize that you are way more productive. If you run races regularly, you'll also see progress, which is great for motivation and general self-esteem.

That being said, the trick to keep running is to stay injury-free, and this is harder than it may sound. Don't run very long distances, take a lot of rest (I run every other day and sleep a lot), and do lots of interval running. Listen to your body: never, ever ignore injuries. If you feel pain, don't run until it's gone. Don't think you're special and tough and you can run through the pain (I did that, and it didn't work).

<comment><USER31> ...and don't buy expensive running shoes. The more padding a shoe has the more it leads to bad technique that actually increases the impact on joints. Humans are made to run, go thin-sole or 5fingers to teach yourself proper technique.

<comment><USER32> We also weren't made to run on asphalt and concrete. I agree with thin sole for trail running, but don't you need some sort of artificial cushion on hard surfaces?

<comment><USER30> It depends on how you land. I land on my forefoot, which means I don't need cushioning at all. Previously, I landed on my heel, which is when you need the cushioning. If you really want to go all the way, search for "natural running", those people run without shoes, even in the winter.

</comment></comment></comment></comment><comment><USER33> I notice ideas come to me more readily when exercising, especially on the beach. Sometimes I get such a flood of ideas I run faster to get home to write them down. If you can't get outside, juggling is a great indoor exercise, and it also helps with focus.

</comment><comment><USER34> My "exercise hack" (if one might call it that) is to do some isometric holds in my closet doorframe, and around a few of the sturdier metal bars in my vicinity when I go on walks. The holds aim for around five seconds length at maximum intensity(but without overly spiking blood pressure, something which is learned with practice).

It takes 5-10 minutes per day and has a dramatic soothing effect almost immediately.

<comment><USER35> Mine is short intense workouts early in the morning. 3 birds with 1 stone.

</comment></comment><comment><USER36> I started running again after I read Spark by John Ratey. Look it up on Amazon or your local library. Yes we are born to run and then hack it seems.

Of course I am totally wired up with a heart rate monitor/watch/iphone/gps which makes it more fun.

Whatever works for you. Run or whatever gets you pumping then hack like you never have.

</comment><comment><USER37> Exercise makes an amazing difference. I began a marathon training program six month ago, and it has dramatically impacted my energy level.

I haven't gotten sharper in the past six months, but I'm more robust to energy-sapping conditions. An occasional bad night of sleep doesn't ruin my work day. I have a lesser mental block when starting big projects. I'm not worn out after a long work day, so I've worked more on pet projects without sacrificing time with my girlfriend. I have a major incentive to eat light, since nothing is worse than a hard run with a stomach full of grease. As a plus, I now understand the value of working incrementally towards a large goal.

I didn't find it difficult to work into my schedule. My highest-mileage week only took six hours of my time, and most weeks were less than four hours.

</comment><comment><USER38> For people who can't get motivated about treadmills or lifting weights and who have the space, a full length (floor to ceiling) punch bag comes highly recommended. I lost 60lbs in 6 months by channelling my aggression and frustration into that bag for 15 minutes at the start of each day. Take a few Muay Thai classes at your local gym so that you know how to punch and kick, then go to town on that bag as often as you can. After the first 3 weeks you won't be able to go a day without using the bag, it's addictive and probably one of the most effective forms of exercise after running.

</comment><comment><USER39> I commute by bike (2x30 min/day), go running 1h30 once a week and have a rowing machine (1h/week). I don't want to live without these highs. It also helped me in productivity and mental illness.

</comment><comment><USER40> This year I joined a cycling club and starting riding time trials. I'm now training hard to improve my times for next season.

Having something to aim for works for me. It doesn't have to be competitive either, setting yourself personal goals works too.

</comment><comment><USER41> I usually start and finish my day exercising. However, motivation comes from recording each workout to measure my progress and adjust training accordingly. It's hacking your body and any kind of hacking is fun :-)

</comment><comment><USER42> I absolutely agree with this %100, "Get up, go outside, move around, and come back. You'll get more done."

Not only helps with the Vitamin. D, but gives your sub-conscience time to process the top idea/problem on your mind.

</comment><comment><USER43> exercise reduces stress. stress encroaches on working memory.</comment>


Show HN: Prospect.io – Sales Prospecting, Like a Boss - <AUTHOR> https://prospect.io <comment><AUTHOR> Hi HN,

I would love to get your feedback on this project (design, content, business model, pricing, etc.)

</comment><comment><USER2> +1</comment>


Ask YC: do you use what you learned in school? - <AUTHOR>

How many of you actually get to use any of the information you learned in your CS classes in college?  E.g., implementing red-black trees, operating systems, writing compilers, etc.<p>From reading this site, I get the impression that people write a lot of web GUI code, but that doesn't require a CS background.  That's not to say web applications aren't interesting, and there aren't technical challenges to be addressed. <comment><USER2> Few people have to do all the specific algorithms stuff we learned, because now that's all in libraries, but it's still useful to know how those things work, just as it's useful to a pilot to know how all the systems in his plane work.

I think the most useful thing I ever learned in a CS class was from Michael Rabin: that the best way to solve a problem is often to redefine it as something that's easier to solve. This turns out to be applicable to practically every kind of work.

<comment><USER3> Universities seem to be struggling to cope with the depth of knowledge that has accumulated. It is empowering to "know how those things work" from first principles, but as time progresses, the volume of such knowledge grows towards and beyond the capacity of the courses that convey it. Universities must then (as they are now) make a delicate balance between covering fundamentals (which most practitioners consider too "academic") and preparing graduates with skills that they can immediately apply in practice. Many graduates seem dissatisfied with the balance that universities choose.

<comment><USER4> I would suggest reading this great short story by Asimov. Its called "Profession". <http://www.abelard.org/asimov.htm>

<comment><USER3> Thanks for the link; I've always been an Asimov fan. The short story format is fine for entertainment, but takes a while to get to the point:

 _Tapes are actually bad. They teach too much; they're too painless. A man who learns that way doesn't know how to learn any other way. He's frozen into whatever position he's been taped. Now if a person weren't given tapes but were forced to learn by hand, so to speak, from the start; why, then he'd get the habit of learning, and continue to learn._

I've never questioned the goal of schools to develop learning and thinking skills, rather than just convey content. However, the question is _with what content should those skills be developed?_ It is that choice that requires a delicate balance between fundamental and practical content.

</comment></comment></comment></comment><comment><USER5> All the time, believe it or not. For example, in one class, I learned about garbage collection algorithms, which I used to explain to a coworker why he was seeing a certain memory usage pattern in the JVM. I'm also glad I learned about DFAs and NFAs in my theory of computation class, because they come in pretty handy for figuring out some problems. My favorite incident was when the same coworker was suggesting project ideas, I used Turing's halting theorem to show him that his idea was impossible. Granted, that doesn't happen every day.

</comment><comment><USER6> Operating Systems and assembly-level courses taught me the foundation for what I need for low-level and kernel debugging that I do now quite frequently.

The other courses all been used quite a bit towards opening doors for me in starting businesses and job opportunities.

I honestly have to say that there's not a single CS course that didn't provide me a valuable tool which I've used. I'm not sure if that's normal, or if I am just the sort of person who finds uses for the tools in my toolbox.

I think the course (in the last 7 years) that has offered me the least would have been Linear Alegbra, but that's primarily because I didn't go deep enough after it to really broaden my skills to apply to those sorts of opportunities. I see lots of cases where I could use it, I just regret that I didn't improve my grounding in it because it would have opened more doors for me.

I'd say that the first 2-3 years of engineering, I used very little of what I learned in school. Very strange, but now that I'm working as a principal engineer/architect or on my own projects, that CS schooling has been incredibly valuable. It helps that I covered areas like AI, languages, graphics, and networking in my electives.

If you want a generic software engineering job, I don't think a CS degree is really ideal (depending on the school). For me, (i.e. someone who loves computer sciences), it was a perfect choice and I use those building blocks all the time now.

<comment><USER6> To touch on your "web gui code" comment-- I think that may be marginalizing people a little bit.

Hackers _can_ do web GUI code. Nowadays they pretty much have to do so, because it's often the ideal front-end for whatever backend software you produce.

Computer-oriented businesses that build up a long-term business advantage are going to start with some solid technology behind them that is difficult to reproduce without knowledge. For example, new search engine technologies, new streaming codecs, new AI prediction routines, etc, etc.

For a less grand example, our site, <http://bug.gd> is pretty simple from a web design point of view, but I learned from my CS courses that full-text indexing isn't something to take lightly in large quantities. So I know enough to search out tools (like sphinx or lucene) that implement algorithms I can literally understand to be reliable, fast, and memory efficient.

The CS schooling also allows us to write more client software for different OS's that help catch and report error conditions into the global error database. We'd be stuck with _only_ a web frontend if we didn't have people with good CS/os backgrounds to work on lower-level API to catch what we need there.

Secure coding is another area in which core computer science compentencies are worth every penny.

Anyway, sorry to ramble, but I think your question comes from a perspective of misunderstanding just how many zillions of doors open to a computer scientist that are harder/closed/lost/hopeless for those who don't dive into the technology. It's not all lost on web GUI development.

Not that other hackers (non-CS) couldn't do the things I described, but I know those tools come in incredibly handy for me in trying to help shape this computer-heavy world.

<comment><AUTHOR> Glad to hear that such opportunities are open to the CS-knowledgeable. Where do you find such jobs? (Not on Dice -- they seem to just be about buzzwords).

</comment></comment></comment><comment><USER7> I should be finishing my degree this summer, and I knew going into the program that I wanted to be doing web startups when I was done. So, I chose a program the focused more on Software Engineering than straight CS.

So, tailored my education along the lines of creating startups. My classes the last 2 years have included Intro to Database systems, Unix programming, Perl, Web Database Programming, Advanced Database systems, Distributed Systems, and Systems Programming. I've avoided Java and Microsoft technologies whenever I've been able to.

Every time that I get a semester break, I work on learning Django, or Ruby on Rails, and every semester web development comes a little easier to me. I've also been doggedly pursuing my own education, and I'm not relying on my school to give it to me on a silver platter. School is there to give you a framework, on which you continue your self-education. So, when I was taking my Distributed systems class, I read up on Erlang, and the other students had no idea what that language was for.

There are people in my advanced database classes that are editing SQL with notepad on windows. I was trying to tell them that a decent text-editor might improve their quality of life a little bit. Several of them didn't know what the difference between notepad and a decent text editor was. Sigh... I guess that it goes to show that it's not the school, it's the student.

</comment><comment><USER8> Just the other day I had to use a non-trivial string algorithm for some batch string searching (searching for occurrences of any of a few million different strings on a large text corpus). A colleague is working on creating a little language for doing batch image processing, requiring use of undergrad-level compilers material.

As for the string problem I faced, I found an existing implementation in the language I was using, but I wound up having to modify it in order to cope with changing requirements.

If I hadn't learned about algorithms and automata in college, it probably would have been impossible for me to understand what I was using and I'd be flying blind. I probably would have instead not even known about the algorithm and would have believed that an inefficient naive solution was the only way, therefore making the project essentially infeasible (at first glance, anyway).

I'm also thankful that I had the opportunity to learn about functional programming because it made me a better programmer in imperative languages.

</comment><comment><USER9> CS classes? I studied Italian in school, and yes, I use it every day to speak to my wife, who is Italian.

</comment><comment><USER10> Its hard to answer because honestly I can't remember what I learned in uni specifically. As for using advanced CS topics let me give an example.

I'm writing a web app at the moment for orthodontics. On one hand its just overlaying a template on an image, but its using and manipulating a scene graph for the various parts of the template. The templates are defined by the relationship of various landmarks - these relationships (like the angles and distances between certain points) are represented in my own language so that I can send them to client for evaluation (as they move parts of the template) or to R so that I can generate a set of landmark locations that fit the relationships.

I probably make things more complicated than they need to be but I can't imagine not understanding these concepts. The power and beauty of those advanced CS topics is worth learning for itself. If they don't give you any insight as a programmer (whether you use them directly or not) then I don't think you've really understood them.

</comment><comment><USER11> The main thing I gleaned from undergraduate university (applied math) was how to collect and structure data in such a way that useful information can be derived from it. This has helped me in writing software for image processing programs to doing market research for new products. The key courses in this were signal processing courses along with the math and numerical analysis to understand the analysis techniques. The computer science courses I took in programming languages, compilers, hardware, etc. were very good practice in how to abstract a problem and codify it. I have not used too many of the specific languages or techniques in my professional life however as that tends to more or less keep up with the industry.

The most important things I gleaned from my graduate work about 10 years later (MBA and some more applied math) were how to present interesting data to people in a way that they too could interpret it and derive value from it, and how to manage social networks effectively.

</comment><comment><USER12> The best thing I learned in school was typing in middle school. It is by far the most useful thing I have ever had taught to me.

<comment><USER13> I learned (initially) from Mario Teaches Typing, at home.

I imagine this was considerably more enjoyable than learning at school.

<comment><USER14> I wish I had Mario. Instead I was stuck with Mavis Beacon.

<comment><USER12> I don't think anything beats this... <http://en.wikipedia.org/wiki/The_Typing_of_the_Dead>

<comment><USER14> Ok, that game wins. Now I want to play it. Apparently it's on GameTap.

<comment><USER12> and it's freely available abandonware hosted at the Underdogs! Though it probably doesn't count as abandonware now that it is on GameTap. I won't tell anyone if you don't.

<http://www.the-underdogs.info/game.php?id=4973>

</comment></comment></comment></comment></comment></comment><comment><USER15> It really depends on what you're working on. One thing that I've figured out is that you don't learn software engineering in college at all. Even if you took a bunch of courses in it.

However, a knowledge of algorithms can be invaluable. I've been out of college for six years and I can remember using at least:

\- String search algorithms

\- B-Trees, Tries

\- A handful of graph algorithms

Other times stuff that I learned in college put me in quick striking distance for stuff that would be more work to understand without a CS background:

\- Open key cryptography

\- Word stemming algorithms, text coding

\- Writing a query optimizer

\- Digital signal processing

You can always find cool stuff to hack on without drifting into that territory, but if you actually dig CS-nerdiness, and are good at it, you'll sometimes get some of the more fun problems thrown in your direction.

</comment><comment><USER16> school taught me the grind and to not shy away from a challenging problem, seriously.

<comment><USER13> well, what your experience was is that you learned that while at school. but that doesn't necessarily mean school taught it to you. it could also be that school actually makes it harder to learn that, but also puts so much pressure on people to learn it, that they figure it out anyway, despite that added difficulty.

This alternative view is consistent with the evidence in general, and with what you related about your experience.

<comment><USER14> Good point. The question is do you use what you learned at school, but if it was do you use what you were taught at school, the answers could be quite different.

</comment></comment></comment><comment><USER17> I use high school algebra more than any other school learning aside from English.

I use a lot of the principles from 6.001 (Structure and Interpretation of Computer Programs) at MIT. I think there were other classes with useful learnings, but it's hard to remember specifically.

</comment><comment><USER18> All the time. Just recently one of guys I work with got stuck because he was using an STL priority queue to maintain a scheduler's data. The data was keyed on the time a scheduled event needed to run. The problem was that sometimes an event's time needed to change. Normally theses priority queues do not let you change items on the fly. Things get added and they come out based on their priority. He figured out how to override this behavior but couldn't understand why the priority queue was broken after he modified an item inside the queue directly. So, I had to explain to him how heaps and priority queues worked.

</comment><comment><USER19> Even if it doesn't look it, you should, unless you went to school for nothing. Broad exposure to a particular subject, if anything, hones your intuition about it, such that even if you make "blind guesses" about solutions, they are better suited than those without the education.

At the very least, you will know the names of things and where to start looking, which prevents you from reinventing the wheel. This difference, in my experience, is significant.

Don't overstate the importance of a degree, but don't understate the value of knowledge from school; it's knowledge, after all.

</comment><comment><USER20> Yes, you can get away with doing web programming without a CS background, so this practice does not "require" such a degree - but having a CS background will only make you better at what you do. In addition, you will utilize some of the knowledge you acquired in college in places where you would least suspect.

That and the real point of education is to learn how to learn and think. View it as a mental workout if you truly do tell yourself "this is pointless, I am never going to need to know this". Remember that it will only make you stronger in the end.

</comment><comment><USER21> Well, I'm not 100% sure you are asking for my experience, but here goes anyway (I'm a mathematician/physicist, by training and profession, and I don't write web GUI's except for fun).

However, I'd say that I regularly use stuff from about 4-5 of my college/grad school classes. Virtually everything else I learned "on the job" (i.e., in grad school, doing research).

Oddly enough, I recently found myself using some tricks I picked up from a machine learning class for something completely different (the philosophical kind of quantum mechanics).

</comment><comment><USER22> 1) algorithms and distributed systems

2) my negotiation class (although practice is more useful :P)

3) getting used to busting my ass/grinding through problems

</comment><comment><USER23> 100% of what I use is from work.

0% is from school.

Not a judgement. Just an observation.

</comment><comment><USER24> I work on a compiler for a living, so yeah I kinda use my compilers course. And pretty much all the other CS courses.

I think people who say their education hasn't been valuable just picked the wrong education.</comment>


Show HN: Wotop – Web on top of any protocol - <AUTHOR> https://github.com/nishitm/wotop <comment><USER2> If you're tunneling SSH through HTTP, shouldn't it actually be "Any protocol of top of web"?

Also interesting choice to use C++. I don't see the headers for Civet or Mongoose, or even libcurl in the Makefile. Is it your own HTTP implementation on both sides?

<comment><USER3> It doesn't really need to support the full HTTP spec given that both the client and server are under its control... Any subset will do; all you really need to do is respond with a 200 header.

</comment></comment><comment><USER4> I think I've used [https://github.com/larsbrinkhoff/httptunnel](https://github.com/larsbrinkhoff/httptunnel) (or another very similar tool) in the past to get around restrictive networks that pass http traffic. That was more than a decade ago though.

</comment><comment><USER5> Currently Webrtc have to go thru TURN servers to achieve P2P calling on few networks,

Can a similar thing be used to send them over http/https and have a js code on receiving side, convert it into UDP Webrtc data, bypassing the need for a costly TURN server

</comment><comment><USER6> What are the primary protocols that you envisioned this would be most useful with?

<comment><AUTHOR> Mainly SSH, because in my college SSH outgoing/incoming traffic was restricted But it can work with any TCP protocol thru HTTP

</comment></comment><comment><USER7> Fun project.

But isn't this "just" a service bus with another name, that uses http for transport ?

</comment><comment><USER8> Yes, but does it support: [https://en.wikipedia.org/wiki/IP_over_Avian_Carriers](https://en.wikipedia.org/wiki/IP_over_Avian_Carriers)

<comment><USER9> Yes, but you would not need it since you could connect via SSH directly when having IPoAC connectivity. The ping might suck though.</comment></comment>


Fun with in-engine color grading - <AUTHOR> http://the-witness.net/news/2012/08/fun-with-in-engine-color-grading/ <comment><USER2> This is very clever.

I've used exported curves from photoshop to generate color correction LUTs, but actually just displaying the LUT in the screenshot, and then using the manipulated result to generate back a new LUT is much more flexible and pretty smart!

<comment><USER3> It's a pretty common trick.

See e.g. section 24.2.3 here: [http://http.developer.nvidia.com/GPUGems2/gpugems2_chapter24...](http://http.developer.nvidia.com/GPUGems2/gpugems2_chapter24.html)

</comment></comment><comment><USER4> From a glance the game looks remarkably like a Myst sequel (not that it's a bad thing by any measure).

<comment><USER5> Basically, yes.

>Blow said that he was inspired by Myst, but also by the non-existent games that could have been inspired by Myst but weren't...

>"It's like there's some really fucking awesome game like Myst that nobody ever made because it was filled with all of these illogical puzzles and stuff, right?"

>I didn't follow. He was inspired by an imaginary game?

[http://kotaku.com/5893336/jonathan-blows-the-witness-is- an-e...](http://kotaku.com/5893336/jonathan-blows-the-witness-is-an-exercise- in-symphonic-game-design)

By the way, I've been following The Witness blog for a while and they have some really amazing and surprisingly technical content.

</comment></comment><comment><USER6> Reminds me, in a way, of Super GameBoy palette-shifting--playing with the color-space of whole scenes, rather than individual objects, to achieve a certain area-theme.

</comment><comment><USER7> I love color palette tricks like this. Reminds me a lot of the old color cycling tricks in 8-bit color games ([http://www.effectgames.com/effect/article- Old_School_Color_C...](http://www.effectgames.com/effect/article- Old_School_Color_Cycling_with_HTML5.html)).

Never thought of using this to redesign the color scheme of an in-game area without changing the original textures though - that's really clever.

</comment><comment><USER8> This is a great idea. I always though that games underused 2d image processing techniques in their quest for visual beauty.

<comment><USER9> While a great feature, as Jon does mention, it's not novel invention. He cites NaughtyDog, but it has been use in many major games for quite a few years.

The nice part is that since it uses a 3D lookup table, it can do most LDR color correction that can be done in Photoshop.

</comment></comment><comment><USER10> This is so much cool.

</comment><comment><USER11> I thought I'd just leave this here

<http://www.youtube.com/watch?v=rfQ8rKGTVlg#t=25m03s>

<comment><USER12> Why not post on the original article? - he seems to be collecting links to other people who've done it before.

<comment><USER11> because I think it's silly to require email addresses to leave comments.</comment></comment></comment>


Ask HN: We Need a Bug Tracking Software Recommendation - <AUTHOR>

We have decided to implement an in-house bug tracking application on our development server (dedicated RHEL5.3 64-bit box with 4 virtual machines via XEN) and have narrowed the list to three possible candidates. This will run on the host OS not in virtual.
We are using Eclipse/Zend Studio with Subversion as our IDE.
Does anyone have any experience/comments/recommendations regarding any of these. We would appreciate both positive and negative points.
Our short list is:

  1. JIRA

  2. TRAC

  3. BugZilla
 <comment><USER2> I quite enjoy trac as it plays nicely with SVN and is fairly simple to set up (and free). I'd start with that and look to other things if it doesn't do what you want.

</comment><comment><USER3> 3\. Simple to use, free, Anyone in your organization can use.</comment>


Just turning your phone on qualifies as searching it, court rules - <AUTHOR> https://arstechnica.com/tech-policy/2020/05/just-turning-your-phone-on-qualifies-as-searching-it-court-rules/ <comment><USER2> This reminds me of the time when a Pennsylvania District Attorney argued before the State Supreme Court that opening the settings app didn't qualify as a search because it's not an app like the messages app.

Thank goodness that argument failed.

</comment><comment><USER3> Dupe: [https://news.ycombinator.com/item?id=23269835](https://news.ycombinator.com/item?id=23269835)</comment>


Boris Johnson's suspension of parliament is an affront to democracy - <AUTHOR> https://www.ft.com/content/9dbc7852-c9b2-11e9-af46-b09e8bfe60c0 <comment><USER2> Perhaps, but the UK is officially a monarchy and the Prime Minister has the power to prorogue parliament. At least the Financial Times isn't calling it a "constitutional crisis" like US news outlets are doing... the UK doesn't have a constitution. Implementing one would rival Magna Carta in English political history and there's a coin-flip's chance they would try to abolish the monarchy while at it, something which is a deeply divisive topic in the UK.

<comment><AUTHOR> We don't have a written constitution. That doesn't mean this isn't a constitutional disaster.

[http://ohrh.law.ox.ac.uk/prorogation-constitutional- principl...](http://ohrh.law.ox.ac.uk/prorogation-constitutional-principle- and-law-fact-and-causation/)

> The Prime Minister's recent announcement that Parliament would be prorogued, > thereby severely curtailing the opportunity for parliamentary debate, raises > important issues of constitutional principle and law, and also issues > concerning fact and causation.</comment></comment>


10 Realtime Web Technology Predictions for 2014 - <AUTHOR> http://www.leggetter.co.uk/2014/02/24/10-realtime-web-technology-predictions-for-2014.html

<comment><USER2> So presumably every site I visit in 2014 will request my location?

Didn't hang around long enough to read it after that..

<comment><AUTHOR> No. That would be the geolocation API [https://developer.mozilla.org/en/docs/WebAPI/Using_geolocati...](https://developer.mozilla.org/en/docs/WebAPI/Using_geolocation)

You can of course use that in conjunction with realtime web technologies: For example, see: [http://leggetter.github.io/100-lines-or-less-js/realtime- col...](http://leggetter.github.io/100-lines-or-less-js/realtime- collaborative-mapping/)

Actually, that one doesn't use the geolocation API. It's just a realtime mapping example.

This one uses the geolocation API: [https://github.com/leggetter/realtime- visitor-tracker](https://github.com/leggetter/realtime-visitor-tracker)

It's actually a really good use case, but not the only one.

<comment><USER3> I believe he is referring to the fact that your website requests one's location for no apparent reason.

<comment><AUTHOR> Ah, I understand now. See point 2 here: [https://news.ycombinator.com/item?id=7297658](https://news.ycombinator.com/item?id=7297658)

</comment></comment></comment></comment><comment><USER4> 1) Why the clickbait title? 2) What do you want my Geolocation for? 3) Why can't I middle click or ctrl+click any links in the article?

<comment><AUTHOR> 1\. I guess I could've removed the "10" bit?

2\. I'm running some realtime benchmarks on a number of hosted service providers. If I can get the geolocation it let's me add that to the benchmark results. Granted, a banner that provides info on that would be better than the bog-standard browser prompt.

3\. Yeah, sorry about that. I'm interested to see where I'm sending traffic to so am capturing outbound clicks. It seems there's a bug on Chromium on Linux where the `event.metaKey` isn't set to `true` when it should be. See [https://code.google.com/p/chromium/issues/detail?id=95874](https://code.google.com/p/chromium/issues/detail?id=95874)

</comment></comment><comment><USER5> Is preventing middle-click to open in new tab a trend for 2014? If yes, I don't want to live on this internet anymore.

<comment><USER5> Seems like the middle-click issue is a bug known to the owner of the site: [http://www.leggetter.co.uk/2014/02/24/10-realtime-web- techno...](http://www.leggetter.co.uk/2014/02/24/10-realtime-web-technology- predictions-for-2014.html#comment-1259700530)

<comment><AUTHOR> Yeah, thanks. Hopefully that's fixed now.

</comment></comment></comment><comment><USER6> Title should be "How Many Times Can I Say 'Realtime' in One Post"

<comment><USER7> Branding at its finest ... or worst. I think it's a little overboard, but hey ...don't knock the guy for trying to put his brand in your mind.

</comment></comment><comment><USER8> "Realtime being fundamentally integrated with an app or website" comes with the assumption that the visitor is always connected. This might not always be true especially for the mobile user. Users would appreciate a functional site that works well despite the intermittent connectivity than one that shows a spinning loader.</comment>


Bring remote camera feeds into OBS Studio; open-source - <AUTHOR> https://obs.ninja <comment><AUTHOR> Using P2P WebRTC, this open-source and hosted free service allows creators to bring in low-latency, high-quality streams from smartphones, webcams, and screenshares for free. Works with OBS, Vmix, and other live video mixing software.

It also includes password-protected group video rooms, ISO recordings, HiFi audio, and fine-grain controls over nearly every aspect, including 40-mbps video bitrates!

Wiki: [https://github.com/steveseguin/obsninja/wiki/](https://github.com/steveseguin/obsninja/wiki/)</comment>


New XSS Bypass on Google Chrome filter - <AUTHOR> http://html5sec.org/title?xss=%3C/title%3E%3Cframeset%3E%3Cframe%20src=%22data:text/html,%3Cscript%3Ealert(1)%3C/script%3E%22%3E

<comment><USER2> Awesome. First noticed that Chrome was blocking XSS attempts a week ago. It seems that if Chrome want's to move in the direction of ignoring specs and standards for security means, they are headed down the lines of IE.

</comment><comment><USER3> Firefox 21 (Windows) seems to be vulnerable, too.</comment>


The Daredevils Without Landlines and Why Health Experts Are Tracking Them - <AUTHOR> http://www.npr.org/sections/alltechconsidered/2015/12/03/458225197/the-daredevils-without-landlines-and-why-health-experts-are-tracking-them <comment><USER2> From the article, the CDC finds reduced landline use correlated with smoking and drinking, and thus poor health outcomes. There's a sort of inference that one has to do with the other.

Many pay as you go cell plans can cost less than land plans, especially with all the taxes and fees. It's a luxury to own both. Therefore poor people, who are more likely to smoke, are thus more likely to both smoke and have only a cell phone.

Regarding drinking the correlation is that people who only have a landline binge drink less. This is clearly because the tiny 8% that have land line only are mostly much older retired and rural people who just are not part of the cell phone generations. Binge drinking is correlated with youth and so this metric follows from age and not phone use.

Not having a land line does not cause people to smoke or drink, nor is not having a landline a dangerous daredevil maneuver. It's an economic one. And having only a landline is a factor of age demographics.

In my own case I can certainly afford both but I only have a cell because the land line has constant heavy static making it useless for understanding speech, and since phone lines are now shared responsibility of many companies, none take responsibility for fixing them. Equipment falls apart and falls into disrepair. Service calls take weeks of calls to get done and the service personnel have to come in from out of state and are incompetent and incapable of fixing problems. As a result, no one in my entire area maintains their land line any more since none of our phone lines work.

It's an infrastructure issue just like decaying and falling apart bridges. Cell reception just works and is cheaper. However my case and that of my neighbors, that of decaying infrastructure is possibly atypical or a minority reason for cell phone only use compared to the income and age reasons of others.

<comment><USER3> I haven't had a landline since 2000, so I'm not really up to date with this stuff, but I assumed that what is being referred as a 'land line' today is really a VoIP home phone.

<comment><USER4> >but I assumed that what is being referred as a 'land line' today is really a VoIP home phone.

That does bring a few interesting questions. Does a land line count as a

1\. Copper pair from the telephone company, or other fully dedicated digital service?

2\. Hybrid service, such as VoIP to a provided CPE such as service commonly provided by cable companies?

3\. VoIP only services that can be run on any compatible wired or wireless device?

Number 1 is going away as fast as possible, and just about everyone wants the service to go away too, it is massively expensive to operate from a value proposition. There are a few users who do rely on its ability to keep working under failure conditions such as mass power outages and that equipment using it has been around quite some time and is well tested.

Number 2 is the most common new rollout I see the work environments I am around. The cable company offers service at less than half the cost of the telco here. No long distance fees and fast provisioning have lead to massive migration from businesses looking at reducing communications costs and consolidating their communications billing by one invoice or more.</comment></comment></comment>


Inker, transactional email development workflow evolved - <AUTHOR> http://www.position-absolute.com/articles/inker-email-creation-workflow-evolved/

<comment><USER2> Having to deal with emails lately, I feel the pain and would most definitely had needed something like so to ease that pain. I'm really not an email guy and coming up with a table button so it renders correctly on Outlook and it's damn Word rendering engine was just a total waste of time. And that's only one of the thousands of pitfalls and crap you have to deal with. I'll definitely try it out next time I'm on duty for emails!

</comment><comment><USER3> that's impressive dude, seems really nice!</comment>


Show HN: Textures.js, SVG Patterns for Data Visualization - <AUTHOR> http://riccardoscalco.github.io/textures/ <comment><USER2> This is lovely. When I see this, I don't think 'patterns', rather, 'hatches'.

Makes me wonder what the state of modern SVG is w.r.t. real-world units - something like this really makes SVG look useful for for technical drawing, but pixels are not the best unit to draw to...

<comment><USER3> Hmm, an _Asymptote_ to SVG renderer would be pretty useful for displaying mathematical diagrams on the web.

</comment></comment><comment><USER4> I never like how they chain methods. A better way would be:

        texture({lines: true, heavier: true, stroke: 'red'})

Is easier to configure if you need reusable textures.

<comment><AUTHOR> Interesting point. I simply relied o this post of Mike Bostock [http://bost.ocks.org/mike/chart/](http://bost.ocks.org/mike/chart/).

<comment><USER5> An initial config object would probably be ideal, and then you could have the chaining to supplement those values. You could have the initial method take in the config and use the values in that in place of the defaults. So

      textures.circles()
        .radius(4)
        .fill("transparent")
        .strokeWidth(2);

could initially be

      var circles = textures.circles({
        radius: 4,
        fill: "transparent",
        strokeWidth: 2
      });

and later updated to be

      circles.strokeWidth( 1 );

Which works rather nicely especially when the config object is generated dynamically.

</comment></comment></comment><comment><USER6> That's so tasty. Like tomato soup for my eyeballs.

I encountered the same issue in my project : 2 levels of polygon- distinguishment. Made a set of 1 bit seamless textures.

[http://glowinggreenhand.blogspot.com/2014/01/i-made-bunch- of...](http://glowinggreenhand.blogspot.com/2014/01/i-made-bunch-of- simple-1-bit-seamless.html)

<comment><AUTHOR> :D thanks! Very good point.

</comment></comment><comment><USER7> This is pretty cool. I made a really basic example, but in doing it, I could imagine playing around with having the colors or orientation change with the data as well. And it might make for cool transitions too. That obviously get way too complicated pretty quickly, but it'd be fun to see what you could come up with that might work.

[https://modeanalytics.com/benn/reports/a4515d9b9024](https://modeanalytics.com/benn/reports/a4515d9b9024)

</comment><comment><USER8> Looks just like the old Mac before they got colour.

</comment><comment><USER9> Isn't this what Tufte refers to as "chartjunk"?

<comment><USER10> Tufte points out 1 + 1 is 3 or more visually. The two lines create two elements, then the space is another, then the space on either is potentially another.

[http://csarven.ca/one-plus-one-equals-three-or-more](http://csarven.ca/one- plus-one-equals-three-or-more)

These textures are noisy. There can be occasions to use textures, but these examples would work just as well with shades of gray.

<comment><AUTHOR> Interesting point of view. Choices of style apart, there are situations where textures are useful. Like for example the case faced by swayvil (see the comment), or when you need b/w printable images. Another good reference is "Semiology of Graphics" of Jacques Bertin, he has a good opinion about textures.

<comment><USER10> "Semiology of Graphics" is a great book, but this was published in the 1960s when those graphs where drafted by hand and color printing was probably not an option.

I am ignorant as to what tools a draft-mans hand for shading then, but I am sure hatching would be easier than creating a fine range of halftone grays.

<comment><USER11> Here's what Tufte says:

> Can optical art effects ever produce a better graphic? Bertin exhorts: "It > is the designer's duty to make the most of this variation; to obtain the > resonance [of moiré vibration] without provoking an uncomfortable sensation: > to flirt with ambiguity without succumbing to it." But can statistical > graphics successfully "flirt with ambiguity"? It is a clever idea, but no > good examples are to be found. The key difficulty remains: moiré vibration > is an _undisciplined_ ambiguity, with an illusive, eye-straining quality > that contaminates the entire graphic. It has no place in data graphical > design.

</comment></comment></comment></comment></comment><comment><USER12> Awesome for colorblind people! Looking forward to using this.

<comment><USER10> Shades of gray would work as well.

Also checkout [http://colorbrewer2.org/](http://colorbrewer2.org/)

It has an option for creating color sets which are "colorblind safe."

</comment></comment><comment><USER13> Very good attention to details! (like the position of circle patterns on edges of shapes)

Have a star, you deserve it :)

</comment><comment><USER14> Masterful use of contrast and texture. Data vis can stand to have more of this.

<comment><AUTHOR> Wow! Thanks.

</comment></comment><comment><USER15> Loving the retro look. But I'm not sure if patterns are as good as colors in communicating data. As soon as the data has even an ordinal scale, gradients or hues should work better.

<comment><USER16> Patterns are useful if it is intended to be printed (or for other b/w media). For good color prints or screen usage I agree, colors often can do a better job.

</comment></comment><comment><USER17> I wish we could have written the documentation for my current project in the browser instead of LaTeX.

But the need to produce good PDFs killed the idea.

<comment><USER18> Check out GitBook. They build from Markdown/HTML and can produce interactive HTML and/or PDF.

<comment><USER17> Oh, I looked into it, but if you compare with LaTeX, its pretty simple, but we need references, and footnoes, and complex tables, so we would need an extended version, and preprocess it, and.. might as well use LaTeX.

</comment></comment></comment><comment><USER19> It reminds me of Semiology of Graphics by Bertin. Nice work! I would like to work on React port, only if I have a spare time...

</comment><comment><USER20> This is lovely. I've hand-coded solutions before to show two variables by region simultaneously (e.g. voting patterns by socio-economic levels:[http://imgur.com/ww1WV66](http://imgur.com/ww1WV66)). Colour and texture are nicely independent for showing this stuff.

</comment><comment><USER21> very nice. One tangential question, the example svg maps are not created in the browser. How are these typically created?

When I make SVGs they are typically either plots made with a plotting tool, or paths created from tracing or done purely by hand.

<comment><AUTHOR> I did it with d3.js and topojson, then I used the resulting svg image on the website. You can find the code here [https://github.com/riccardoscalco/textures/blob/gh- pages/map...](https://github.com/riccardoscalco/textures/blob/gh-pages/map.js)

<comment><USER22> In my opinion the "right" way for static things. Keeps the browser from computing, no need for the original data and libs. Of course being able to inspec other people's d3 code is fun on the other hand.

</comment></comment></comment><comment><USER23> Thank you for sharing this! Can't wait to use this soon :)

Slightly off topic but maybe some SVG expert can help me out with a quick question! Is there a way to identify and automatically recognize all numbers in an image.svg file?

<comment><USER24> What kind of numbers? Those appearing alone in attributes, such as <rect width='10' height='5'/>? Those appearing in path or polygon data are more complicated, as the syntax allows whitespace, commas, etc. as separators, but they're not needed in some cases. E.g.

        M0-1.2.5-3

is perfectly valid (AFAIR, not sure about the decimal points now), but not really nice to parse or extract.

The main point would be what your use case is? If you just need to transform something, e.g. translate or scale a shape it's easier to put a group around it and apply a transform on that.

</comment></comment><comment><USER25> This library is fantastic. These patterns are essential in the production of print-ready and print-like contents.

With the high resolution screens available today these make for stunning graphical presentation.

</comment><comment><USER26> Thanks for this. I need to learn SVG for something that I am working on now, this library looks like it has a great interface for me to learn from.

</comment><comment><USER27> I just want to point out that many of the line textures can also be made with repeating-linear-gradient() from CSS, perhaps more efficiently so.

</comment><comment><USER28> This is lovely, congrats to the author

</comment><comment><USER29> Wonderful! What are the best use case for using this patterns apart from geo graph representation?

</comment><comment><USER30> Indeed, original and very useful. Exactly what I've been seeking... for some time.

</comment><comment><USER31> Wow, this is really sweet. Can't wait to use it in my next project.

</comment><comment><USER32> Great project, just needed such a texture for an app. Thanks!

</comment><comment><AUTHOR> Many thanks for the good words! I am happy you like it.

</comment><comment><USER33> this is awesome! excellent for monochrome.

</comment><comment><USER34> Lovely. Style from Italy.

</comment><comment><USER35> Incredibly well done.

</comment><comment><USER36> Very beautiful :D

</comment><comment><USER37> beautiful!

</comment><comment><USER38> Reminds me of the AutoCAD patterns, back in school.

<comment><USER39> For me, the patterns in HyperCard and MacPaint.</comment></comment>


Ask HN: Why no stable binary kernel interface for drivers? - <AUTHOR> Linux does not have a stable binary kernel interface for drivers. This enforces either that all the drivers must be in the kernel source tree or that drivers become broken with kernel updates.
I don't want to have a political debate here about free software. But I can see ideological reasons for how Linux try to force hardware manufacturers to share the code for their drivers.
The (proprietary) driver issue is a big pain for people who want to use Linux for desktop as a workstation e.g. development. I would say that it is the biggest obstacle for adaption of Linux desktop.
Why couldn't we have long term supported kernels with decoupled drivers?
Discussion: http://lkml.iu.edu/hypermail/linux/kernel/1604.0/00998.html <comment><USER2> This is addressed in the docs, at "stable_api_nonsense.txt": [https://github.com/torvalds/linux/blob/master/Documentation/...](https://github.com/torvalds/linux/blob/master/Documentation/process/stable- api-nonsense.rst)

(You might disagree with that doc, but if so you should address its arguments directly.)

</comment><comment><USER3> Maintaining the drivers together with the rest of the system allows subsystem maintainers to make broad improvements to the functioning of drivers, and encourages vendors to upstream them as free software.

If you want a stable kernel driver ABI, then you're going to have to maintain your own wrapper which will retain all of the anachronisms that have been excised from the upstream kernel.

You are perfectly at liberty to do this for yourself, just don't expect kernel maintainers to willingly make their own lives harder, reduce the quality of running kernels, and reduce the enthusiasm for releasing and upstreaming high quality drivers.

As an alternative to a stable ABI, you can just go with a single LTS release, and you can expect binary compatibility on the order of four years.

<comment><AUTHOR> But if vendors does not want to upstream them as free software, then we have a problem and an issue with the non stable ABI solution. The end user does not care if the driver is free software, they just want their machines to work. I guess this is an issue for Google too, for their Linux fork Android.

Of course everyone has the liberty to write a wrapper, but that is just silly.

If Windows can have a stable ABI, why can't Linux have it too? Why would it need to "reduce the quality of running kernels"?

<comment><USER4> > The end user does not care if the driver is free software, they just want > their machines to work.

Upstreaming the code also means quality control. Linus and his subsystem maintainers by far do not merge everything people throw at them. Users also gain out of the box support for their Hardware if the driver is in the kernel. Also a lot of people using and developing Linux or the surroundings care about (at least some aspects of) free Software.

> Why would it need to "reduce the quality of running kernels"?

Because possibly (mostly, HW manufacturers in general are not exactly known for the quality of their software) low quality code becomes part of the kernel, Linux is a monolith.

> If Windows can have a stable ABI, why can't Linux have it too?

I think not providing a stable API/ABI is a major reason why Linux is able to move so fast. If you have to make sure your change does not break this 5+ year old driver you can't do major architectural changes that easily. The kernel developers would then need write the equivalent of such a "silly" wrapper.

> I guess this is an issue for Google too, for their Linux fork Android.

Google apparently likes doing this, e.g. they also maintain a fork of openssl to make some minor changes for their needs.

<comment><USER5> Google's fork of OpenSSL, BoringSSL, is very far from "some minor changes". [https://boringssl.googlesource.com/boringssl/](https://boringssl.googlesource.com/boringssl/)

</comment></comment></comment></comment><comment><USER6> As [http://lkml.iu.edu/hypermail/linux/kernel/1604.0/03993.html](http://lkml.iu.edu/hypermail/linux/kernel/1604.0/03993.html) states, you can get binary stability for in the order of five years from the likes of Red Hat and SuSe.

I don't know where you can get binary stability for decades, but it wouldn't surprise me if some military applications guaranteed that.

Since there's nothing stopping suppliers from selling it, there apparently isn't that much demand for it.

<comment><AUTHOR> > As > [http://lkml.iu.edu/hypermail/linux/kernel/1604.0/03993.html](http://lkml.iu.edu/hypermail/linux/kernel/1604.0/03993.html) > states, you can get binary stability for in the order of five years from the > likes of Red Hat and SuSe.

Yes but why can't the kernel provide a stable interface? The stable_api_nonsense.txt is just nonsense for me.

<comment><USER7> Because the kernel developers aren't interested in assuming the maintenance burden of maintaining (possibly many incompatible and versioned) interfaces purely for the benefit of users who maintain out of tree drivers.

<comment><USER8> I'm surprised driver interfaces are still changing so frequently. Ten years ago perhaps, but they're not largely sorted today twenty five years+ after Linux debut?

<comment><USER9> There have been general architecture changes. Look at DRM as a better way to do rendering versus the old Unix way, for example.

<comment><USER8> Sure, but isn't that ten years old already? It's not like these big changes come every month.

</comment></comment></comment></comment></comment></comment><comment><USER8> I use a Ubuntu desktop daily as a development workstation and have for a decade at least. Never really had a problem, though it slows down Virtual Box installation once or twice a year. _shrugs_

<comment><USER4> They should really mainline their stuff (or better build onto kvm)… On the other hand it's pleasantly surprising by itself that Oracle did not kill the project.

</comment></comment><comment><USER4> > The (proprietary) driver issue is a big pain for people who want to use > Linux for desktop as a workstation e.g. development. I would say that it is > the biggest obstacle for adaption of Linux desktop.

Simply don't buy Nvidia. Apart from that there shouldn't be a lot of hardware requiring blobs on the desktop.</comment>


Sysadmin left finger on power button for an hour to avert SAP outage - <AUTHOR> https://www.theregister.co.uk/2018/03/05/who_me/ <comment><USER2> I used to work for Loudcloud, an early dot-com hosting company. We used very expensive EMC Symmetrix storage for our DB tier. (Search the web for EMC Symmetrix 3830 if you want an idea what these beasts looked like.)

The Symmetrix had an EPO (Emergency Power Off) which was a red button mounted in a recessed area on the back of the cabinet, and was protected by a plastic lid. To perform an EPO, you had to lift the lid and hold the button down for 30 seconds or so.

One of our DC ops employees was moving a heavy server into a cage and accidentally bumped the corner of the server into the plastic lid. The plastic lid was forced inward and got jammed depressing the EPO button. Moments later the entire Symmetrix powered off.

Later that day, as the word got around, another DC ops employee in a different datacenter looked at the Symmetrix and curiosity got the better of him. He didn't see how it was possible for the plastic lid to get jammed. So he punched the lid with his hand. Moments later that Symmetrix went down too. :-(

We reported this design issue to EMC. A while later, a few of us were on a factory tour at EMC. They pointed out to us the "Loudcloud Stopper" work- around. It was a rubber stopper mounted next to the EPO button that prevented the plastic lid from being pressed inward.

</comment><comment><USER3> From "Founders at Work," James Hong recalling how they prevented Hot or Not from being accidentally turned off:

 _But the Salon.com article was coming out the next morning. I called the writer and asked her if she could push the story back, but she said it was a slow news day and she couldn 't. So the article came out and the server got slammed.

My brother needed the server for XMethods, so we did the quickest thing we could think of, which was that night at 3:00 a.m., we took the site down, grabbed an extra PC--a 400 megahertz Celeron, no-memory-in-it machine that I got for free when I opened an eTrade account--and drove to Berkeley where Jim had a shared office.

I remember taking the top off a case for pushpins and mounting it on top of the power switch of the machine so no one could turn it off. Then we put it in the corner under his desk and surrounded it with books, so it just looked like a bunch of stuff under his desk with a little Ethernet cable coming out. And as soon as we turned the site back on, the access logs started flying. It was 5 in the morning!_

[http://wcarss.org/founders/james_hong_hot_or_not.txt](http://wcarss.org/founders/james_hong_hot_or_not.txt)

<comment><USER4> I have no idea where my copy of that book is now so thinks for a link to that archive!

</comment></comment><comment><USER5> During my training, I worked on a BIND4-to-BIND9 migration in an IBM mainframe environment. One week I got bored and started "benchmarking" the server, wrote this little perl script that swamped the server with DNS queries. Then I realized that my feeble little antique of a desktop (Pentium II @400MHz, running NT 4.0, in 2004!) was not even capable to put some serious load on that behemoth, and had not IBM just recently ported Perl 5.8 to z/OS?

So I scp the script over to the mainframe, ssh into it, run it again... and grow disappointed that my puny little perl script is _still_ the bottleneck. How much can this beast take, I wonder. Maybe, if I forked off a couple of children?

In retrospect, I should have let it go at this point. My benchmark was already querying the nameserver at a far higher rate than it would ever encounter in production. I should have written in my report that the performance impact of some configuration changes was negligible if not zero.

But I really wanted to see how many queries this beast could handle. So I kept increasing the number of worker processes hammering BIND with the same queries over and over, until ... my ssh connection dropped. I pinged the mainframe, but I got no response. Ooops.

I was trying to look really busy as the monitoring guy who always looked as if he had just woken up walked down the corridor into our open plan office, grinning, and asked if anyone had something to tell him. Nobody replied. I do not think I have ever been that quiet in my entire life.

"Okay", he said, "the TCP/IP stack on that particular system just crashed, just in case you are wondering.". _Oops_

"Yeah, but SNA still works", the sysprog replied, "And the LPAR is scheduled for an IPL on Saturday, anyway. It'll do."

Obviously, it was a testing LPAR, so nobody got hurt; they would not let a trainee anywhere near a production system. But let the record show that I did manage to disable VTAM (at least the TCP/IP side of it) with a simple perl script from an unprivileged user account. By accident, but still. Also, I lost about a kilogram in sweat that day.

<comment><USER6> What do these acronyms mean?

SNA LPAR VTAM

<comment><USER7> Some IBM mainframe acronyms

SNA -> Systems Network Architecture

LPAR -> Logical partitions

IPL -> Initial program load

VTAM -> Virtual Telecommunications Access Method

I might be wrong of course

<comment><USER5> Nah, that is how I remember it. ;-)

I haven't worked with mainframes since, but I found the fact they have their own words for things fascinating. Parallel evolution, so to speak. Like, what mainstream operating systems call a kernel is called a "nucleus" on z/OS, which IMHO is a much cooler name.

</comment></comment></comment></comment><comment><USER8> HA! This is my favorite interview question to ask candidates:

"What is your all time biggest screw up, and how did you come back from it" \- I then tell them the story of me loosing several hundred thousand dollars and the funny things that happened around it to set the tone. If you have been in tech for any length of time you have one of these stories (if not a few). I have heard some great ones by simply asking and it gives great insight into a candidate (humor, stress response, the things you have seen).

<comment><USER9> What valuable skill or quality does this show?

<comment><USER10> Honesty and the ability to own up to your mistakes. It can also show arrogance depending on their response.

<comment><USER11> I always ask potential coworkers during an interview for a story like that for two reasons: 1) it'll tell me whether or not they have humility, honesty, etc; 2) and, because I love sharing war stories.

One candidate we interviewed answered my question saying that he had never made a mistake like that. Then he went on to tell me a story about how a bad patch from Oracle which he applied brought down production this one time.

The guy seemed arrogant, and I felt like he was lying or he is overstating his skills. Either way, he ended up getting hired by another team (knowing full well that we didn't like him), and he only stayed for about a month or two.

Go figure.

</comment></comment></comment></comment><comment><USER12> That's pretty funny though I don't think it'd work on a modern setup as everyone I've seen for the past 20 or so years does a hard power off after holding down the power button for 5+ seconds.

<comment><USER13> This was before the introduction of ACPI, which is what makes that possible. Prior to that, switches in PCs operated more like a latching switch than a momentary switch (regardless of whether it was actually a momentary switch or not), so it was the action of releasing the button that would either send the signal to shutdown, or physically break the circuit supplying power to the computer.

This is where the old "It is now safe to shut down your computer." screens of Windows 9x/NT 3 came from. [http://i0.kym- cdn.com/photos/images/original/001/286/950/e05...](http://i0.kym- cdn.com/photos/images/original/001/286/950/e05.jpg)

<comment><USER14> Are services still running when that screen is being displayed? I'd have thought that by the time it shows up, all processes are terminated.

<comment><USER15> It's in the article. The guy pressed the power button on the wrong machine, other than the one that was shut down.

</comment></comment></comment></comment><comment><USER16> Makes me realize how much I take quality of life features in modern servers for granted. We don't need to be physically present to reboot servers, eliminating the possibility (well, mostly) we will power down the wrong one like this - even if the OS is completely unresponsive there's lights out management that can be used to remotely manage power to the system. For the times that one needs to do physical maintenance on a server a blinking light can be toggled through the LOM interface to identify the machine, you can have the hostname display on a little LCD on the front panel too.

It's really amazing to see how far computing has come in just the past two decades.

<comment><USER17> I type "reboot" into the wrong SSH window all time, especially when I'm tired.

It's really quite a lot easier than pressing the wrong power button (I do that too at my desk).

<comment><USER16> I've done it myself, I generally avoid it by using `shutdown -r` instead which will by default delay reboot for 1 minute (at least it does on CentOS/RHEL 7). It's annoying to wait the extra time, but having a period to backout with a `shutdown -c` in case I made a mistake has saved me more than it hasn't.

On the flip side, at least when you make this mistake with a VM you're typically not down for long assuming you have fast-ish storage - on average any of the VM's I'm responsible for are back up in 60-90 seconds, physical machines can take 5 minutes or more (memory testing, expansion ROM's, etc. all make post take FOREVER even on modern hardware).

</comment></comment></comment><comment><USER18> This is an old-style directly connected power switch. If you release and re- press it quickly enough the power won't go out as there's still enough residual energy in the PSU capacitors. I used to do this all the time on my 486 as a sort of absent-minded tick.

I don't blame the guy for not trying that with a production SAP server though...

</comment><comment><USER19> 15 years ago when we were hosting servers in a co located facility I accidentally turned off a server instead of rebooting it (from terminal services).

The support personel were annoyed as they had to drive over to the facility and manually push the power button

<comment><USER20> I still have the habit to type "-r 0" ctrl+a "shutdown".

<comment><USER21> Oh wow that's really smart. Thanks!

<comment><USER22> Doesn't hurt to do the same when writing UPDATE queries, `WHERE id=X LIMIT 1` ctrl+a `UPDATE...`

<comment><USER23> I got used to typing "UPDATE SET x=x WHERE ..." and then going back and changing the "x=x" to the actual column assignments after I typed the WHERE clause.

<comment><USER24> to this day, i type "update where <where clause>" and then go back and add the set part of the statement. I think it would have been safer to put the where clause at the front of the sql syntax. Like "delete where <whereclause> from table", "update where <where clause> set ..." etc. I know any production database that's of real importance is going to have safeguards in place but it still makes me nervous.

<comment><USER23> Yeah, I wish they would update the SQL syntax to at least allow the WHERE clauses to be first in UPDATEs and DELETEs. Doesn't seem to be much enthusiasm around for making big changes to SQL like that though.

</comment></comment></comment></comment></comment></comment></comment><comment><USER25> I have used ngrok to make my laptop work as a production server when I was user testing [https://github.com/zitterbewegung/mms2text](https://github.com/zitterbewegung/mms2text) . I setup twilio to point to the url provided by ngrok. I just left my laptop home and I got people to test the app. Eventually I set it up on AWS but it chugged away fine on my laptop (Macbook Pro TB 13 inch).

</comment><comment><USER26> Speed 3: Uptime

</comment><comment><USER27> I did the same almost two decades ago. Old AT power supplies on Proliant servers would turn the server off only after you lifted your finger. I have pressed it on a wrong server. Had to reach with my foot to the phone lying close by on the floor to call accounting department to log off the application to prevent corruption when the Novell Netware server powering it was was rebooted.

<comment><USER28> 386s had a push button power switch where if you were really fast you could let it out and immediately push it back in and the power wouldn't be interrupted. Found this out in class - we would walk over to each other, lean over pretending to talk to a friend and sneakily push the power button in. Before we worked out that trick, you would have to get your finger on the button before the other guy took his off, then hold it down while you saved your work.

<comment><USER29> > 386s had a push button power switch where if you were really fast you could > let it out and immediately push it back in and the power wouldn't be > interrupted

It would be more accurate to say "some computers in the late 1980s and 1990s"; not all of them were 386s, and not all 386s had this style of switch.

<comment><USER27> It would be even more accurate to say "Many power supplies, especially when computers were much less power hungry, had enough capacitance to be able to survive 0.1 to 0.2s needed for the operator to reset the switch back on. This only works when the switch is switching AC and the motherboard stays connected to PSU. Since ATX standard was introduced the switch actually disconnects the motherboard from the power supply and it is no longer possible. Many power supplies still have independent AC switch but this is not typically operated by the user to switch the machine on or off."

</comment></comment></comment></comment><comment><USER30> I RDP'd to a Windows server an hour's drive from my office at a public library in another town. I had right-clicked on the network connection to check out some settings....and accidentally clicked DISABLE instead of PROPERTIES (or whatever it was called in Windows 2000 server) and disabled the network connection. It was a long drive...with my phone ringing the entire time. Never made that mistake again.

</comment><comment><USER31> There is a rather similar (maybe same but changed to protect the not-so- innocent?) story on the daily wtf; [http://thedailywtf.com/articles/Trauma- Center](http://thedailywtf.com/articles/Trauma-Center)

</comment><comment><USER32> A modern interpretation of Hans Brinker.

</comment><comment><USER33> What about disabling the power button effect in the OS?

<comment><USER34> Nowadays holding it for 5+ seconds still turns the system off, I wonder if this is a BIOS or a hardware configuration. Probably it's the PSU's logic, to power off if the 2 pins are shorted for more than 5 seconds.

On old AT systems (the ones where Windows 9x would show "It is now safe to turn off your computer"), one could actually press and hold the power button and the system would stay running. And when you're bored you can also quickly move your finger off the button and jab it down again (this would flip the switch back to on), and if you're quick enough, the system would not see that there was a power interruption.

Indeed the old AT power button was a mains (120V) switch, with thick cables going from and to the power supply unit.

<comment><USER35> >Nowadays holding it for 5+ seconds still turns the system off, I wonder if this is a BIOS or a hardware configuration. Probably it's the PSU's logic, to power off if the 2 pins are shorted for more than 5 seconds.

It is BIOS+Hardware (the PSU is not involved). As a matter of fact to "switch on" a ATX power supply (not connected to a motheboard) you normally use a paperclip (or a short piece of cable) to connect the green with any of the black see:

[https://forum.overclock3d.net/showthread.php?t=394](https://forum.overclock3d.net/showthread.php?t=394)

The whole point is that (unless the PSU has a mains switch and it is turned off) an ATX power supply is always partially ON, powering (parts of) the motherboard at all times (this allows for such things as Wake on Lan or switch on via CTRL+F11 or dedicated key on the keyboard).

<comment><USER36> Without ACPI (which NT4 was) the ATX power button was handled entirely by the BIOS (I think in SMI code). With ACPI the power button (when you don't hold it for 5 seconds of course) was handled by the OS.

</comment></comment></comment></comment><comment><USER37> Unscrew a bolt from the server rack and tape it on the button, done

<comment><USER38> >Jeremy told Who, me? that his mate asked to be relieved, as he was in a bit of pain. Those requests were denied due to the risk of the power going off and also out of a desire to make the poor chap suffer for his error.

Looks like they wanted him to suffer :p

<comment><USER39> You call it suffer, others call it corrective training ;)

<comment><USER40> Corrective training for the wrong person. Every time I hear a case like this, I'm reminded that when something like this goes wrong, it's usually the fault of something that failed prior to getting to this stage. The problem isn't that this person pressed the wrong button. The problem is that the wrong button was allowed to be pushed in the first place.

<comment><USER41> Normally I'm down with that, but I think there are some ground-state base cases where you have for perfectly sound reasons penetrated all the security and safety affordances and simply must be careful. "Make sure you've got the right power button before pushing it" is probably one of them. There's not _much_ you can do about that. Maybe not _zero_ , but not _much_ , in a context like this where many servers are being updated, because, again, whatever protections you may have had in place have already been bypassed.

Similarly, when push comes to shove you'll never be able to eliminate the needs for somebody to jump to root on some server, at which point, well, _be careful_ is all you've really got. Hopefully you've built some good habits into your fingers.

</comment></comment></comment></comment></comment><comment><USER42> > Jeremy told Who, me? that his mate asked to be relieved, as he was in a bit > of pain. Those requests were denied due to the risk of the power going off > and also out of a desire to make the poor chap suffer for his error.

I think that's just awful.

<comment><USER43> Likely also simple embellishment</comment></comment>


Snoop: A Python debugging library designed for maximum convenience - <AUTHOR> https://github.com/alexmojaki/snoop <comment><USER2> Can it set breakpoints in a code that would be running in a subprocess launched with the multiprocessing library?

<comment><AUTHOR> This isn't like a traditional debugger, so there isn't a concept of breakpoints, but the functions snoop, spy, and pp will all work in a multiprocess context.</comment></comment>


Blackberry CEO Says iPhone Is Outdated - <AUTHOR> http://techland.time.com/2013/03/22/blackberry-ceo-says-iphone-is-outdated/

<comment><USER2> This is just PR banter from a company that has been outdated for years as they strive to regain relevance.</comment>