Show HN: rust-rss – library for serializing the RSS web content format - <AUTHOR> https://github.com/frewsxcv/rust-rss

<comment><USER2> Nice! It's good to see libraries like these popping up, adding more value to the Rust ecosystem.

Coming from Ruby and Rails, I'm excited to dive into low-level programming with Rust. It is just so refreshing to have control over stuff that is totally abstracted away in Ruby, while being safe enough just to not shoot myself in the foot each time.

<comment><USER3> If you feel like it, when you do, please let me know how it goes. I'm really invested in trying to make that particular leap a success.

<comment><USER2> I will do, Steve! I follow you on Twitter so I'll ping you once I feel like I can write decent Rust code and have an acceptable level of low-level programming know-how.

Maybe I shall write a little blog post about it, so I can explain the major challenges a bit.

<comment><USER3> That'd be wondeful. I don't know how long you've written Ruby, but Jay Fields had a blog way back in the day that was just really basic stuff. I'd really like to see such a thing for Rust. So, I guess what I'm saying is, you can probably start something similar even before you feel like you can write 'decent' Rust code...

That's a lot of work, though, but I think someone is gonna do it at some point, I hope.

</comment></comment></comment></comment><comment><USER4> I dont know Rust, but I think this could be vulnerable to XXE attacks[1]. Back in the day I fixed all the Java RSS libraries so now I always look for it. It's not exactly an obvious problem.

Also you should add RSS 1.0 (RDF) and Atom support.

[1] [https://www.owasp.org/index.php/XML_External_Entity_%28XXE%2...](https://www.owasp.org/index.php/XML_External_Entity_%28XXE%29_Processing)

<comment><AUTHOR> Is the security issue related to specifically RSS or the XML parsers?

With regards to Atom: [https://github.com/frewsxcv/rust- rss/issues/2](https://github.com/frewsxcv/rust-rss/issues/2)

I did not think RSS 1.0 support was necessary since (AFAIK) RSS 2.0 is backwards compatible. Please correct me if this is wrong

<comment><USER4> XXE attacks are caused by configuration settings of the XML parser. Generally the default config is to allow external entities, and the calling code needs to override that config because the documents come from untrusted sources.

RSS 1.0 and 2.0 are completely incompatible. There is a whole boring politics story there..

</comment></comment></comment><comment><USER5> A quick look shows that RustyXML doesn't have complete error-checking when building a tree, so it's possible to get this library to generate output that isn't well-formed XML (hi parse-errors!), which should be a worry if you're taking input from other sources (with arbitrary strings).

<comment><AUTHOR> Author or rust-rss here. What kind of errors could occur when generating the output?

<comment><USER5> Consider a string containing U+0000 or U+FFFF; both will generate output that isn't well-formed XML.

<comment><AUTHOR> I'll look into it. Thanks for pointing it out.

<comment><USER5> As far as I'm aware, this is just a current shortcoming of RustyXML — it should just be fixed there.

</comment></comment></comment></comment></comment><comment><USER6> Wow, just now I needed something like this for my rust package!</comment>


M&S to replace call centre staff with AI that understands human speech - <AUTHOR> https://www.telegraph.co.uk/technology/2018/08/15/ms-replace-call-centre-staff-ai-understands-human-speech/ <comment><USER2> yeah, right. that means they don't give a shit about customer support.</comment>


What was the nicest codebase you've inherited without the original author(s)? - <AUTHOR> What made this particular codebase stand out above others? What did the original authors of the code do well?
Documentation? Tests?
Perhaps nothing about the code itself, but rather the surrounding environment? <comment><USER2> I inherited EASTL (EA's internal implementation of the C++ STL designed to be more suitable for use in games) for a while after the original author left EA, although I'd already done some work on it while he was still there. It's now open source on GitHub. There's also a paper out there outlining the original motivation and design goals.

It was generally very well written and where it differs from the standard there's usually an interesting reason why. It had extensive unit tests that ran automatically across a very wide range of supported platforms and compilers including all major desktop, mobile and console platforms. It is generally much more legible than the STL implementation used by Microsoft (which was one of its design goals) while also often more efficient. It's the STL so it's mostly fundamental algorithms and data structures and widely useful utilities of general interest rather than very domain specific business logic.

</comment><comment><USER3> 19 upvotes, 1 hour, no answers...

How often do you look at some code and think "an idiot wrote this", and then realise you're looking at your own code?

Maybe all code is technical debt? That is, maybe every piece of code you inherit is bad because you now have more to learn and understand, no matter how nicely structured/documented/tested it is.

Sorry OP, I got nothing positive!

<comment><USER4> All code is technical debt. We should not write it unless it serves a purpose of high enough value.

<comment><USER5> I like the idea but find that an overstatement that trivializes the nature of technical debt: at some level one is talking about things that "pay off now" but require "interest payments" in the future" and while one can kind of squeeze the line `for (let i = 0; i < array.length; i++) {` into that framework, experience says that that line by itself almost never requires a maintenance debt payment; if you have a list then you almost certainly want to iterate through it and refractors are driven by the size of the list, not by the bugginess of the looping construct...

I think what's really at stake is that code and data are a sort of inventory: they are not what you are selling, but they get turned into what you are selling. Inventory always has a carrying cost, and generally people underestimate that because they are only looking at the direct cost of storage, not how the presence of the inventory itself gets in the way, makes getting to other things harder, makes bottlenecks harder to see.

And that's where you see that debt is a wrong metaphor, because debt has the particular property that you can pay all of it off and that would be a good thing. By contrast inventory is a good thing in the right place: It means that if one thing stops working, the system can still continue for a while. Really operating with zero inventory everywhere is possible, and it's not done because it would drive you out of business. Similarly, deleting all of your code is not accessible in the way that getting rid of all of your debts is.

Designing an API to have a separate messaging later from its business layer from its data management layer from its data fetching layer is a technical debt; the fact that any change in the system now needs to be distributed across 10 different places in the code base is your interest payment. I would argue that you would like to derive all of these from some shared source of truth to remove those interest payments, and when you do, I no longer think that it's a bad thing for you to have a homebrew HTTP framework that has those separations in its internal functions.

</comment></comment></comment><comment><USER6> I inherited a popular open source charting library. People like it because it has a data model - you can automatically brush and filter between charts.

It is intentionally a leaky abstraction so that there is always a way to customize it if it doesn't work the way you want.

There is only enough design to make it reusable, no claim to a "grammar" or other highfalutin abstractions.

There have been dozens of contributors and many parts are inconsistent.

Yet it still gets a ton of use 7 years on because it does 80-90% of what you want.

I've learned so much from this. Worse is better. Don't box yourself in with designs you don't understand.

Solve one big problem and after that be humble and let users work around anything you didn't think of.

<comment> Iwan-Zotow Name?

<comment><USER6> If I reveal the name, then I must also admit it has plenty of bugs.

And I haven't kept up with merging PRs because it is a lot of work to test and integrate code. (Help welcome!)

With that out of the way: it's dc.js

<comment><USER7> DC.js is the greatest most customizable charting library I've ever used. Thank you for that.

</comment></comment></comment></comment><comment><USER8> Few years ago, I inherited the whole infrastructure for a fintech startup. It was few hundreds instances in AWS. The company was possibly the first to operate fully in the cloud and pass financial regulations for that.

At the heart of it, there was a short list of instances to run with their purposes. Most of everything was automated around that. You could add a line to order any resources in the world and have it running in the next 5 minutes. Instance provisioned with standard OS setup and patches, DNS and aliases up, permissions for developers and services deployed.

It was extremely efficient and well organized. I'm not sure who wrote it but I'm pretty sure it's the only guy in the world who figured out how to use AWS, accidentally.

While I worked there, I updated it to support provisioning in any region, EBS backups, automated firewall groups and a few other things. Everything was tagged consistently with purpose/team/environment for identification and billing.

It was neat. I doubt I will ever find again a company that can setup hardware or manage resources any decently.

To conclude this. A coworker told me that new guys were hired after I left and they undid most of it in the next 2 years.

<comment><USER9> Sounds like he basically wrote his own CloudFormation

<comment><USER8> It was mostly using ansible actually. The integrations are pretty good, better than what you can get with Terraform or CloudFormation.

</comment></comment></comment><comment><USER10> Well, I'm only a lowly WordPress developer, but I'll say that most WordPress plugins are a PITA to extend the functionality of, but that the WP Store Locator plugin was very nice to work with. Just sensibly implemented object- oriented programming and extensive use of WordPress hooks.

<comment><USER11> Hey another fellow WordPress developer!

Another great plugin is Metorik's helper plugin! Bryce is amazing and he's so responsive and helpful. If you're looking for a tool to extend Woocommerce functionality, definitely check it out.

</comment></comment><comment><USER12> I inherited an internal tool from someone who left the company. They weren't a software developer. Everything had comments (not function comments/XML headers), behavior comments. Some were "someone who knows how to code should clean this up", "I want to do x but couldn't figure it out, this is close". It lacked clear abstractions, it was mostly one file. It wasn't even in a repository. The program was however purpose built for use by the developer, and people in a similar role at the company.

The team who was supposed own it hated it, so I get to work on it :)

<comment><USER13> There's a saying about how it's easier to bring design to something without design than bring good design to something with bad design.

</comment></comment><comment><USER14> My current works codebase. I've never seemed to like other peoples code. Not even my own after 1 month But this code is very good. I would attribute it to the strong set of rules and design patterns everyone follows. All code/services are broken up into `unit` which all follow the same pattern, of how it's called, how the code is arranged etc. This means there is no ambiguity for any new starters trying to contribute to the codebase. In addition to that our linter doesn't allow you to push code if it detects any errors. There are a few other elements, involved too, but I think the most important thing is keeping a standard of where each bit of code should live, how it should be called, and ensuring everyone uses the same conventions (i.e. single quotes instead of double, all this small things add up)

<comment><USER15> Is it git hooks that run a linter before push?

<comment><USER16> Yup

</comment></comment></comment><comment><USER17> I've inherited a couple codebases at work that were pretty nice. They stood out among others because they did a good job at doing one simple thing very well. Libraries that start having a lot of feature creep, such as trying to support a bunch of different other libraries or trying to do things too cleverly to support a ton of different ways to use it, always end up being a mess.

</comment><comment><USER18> So if the codebase were good, I would not be assigned to it. However, I always look to fix the following issues:

1) lack of extensibility. This comes from poorly scoped projects. Both previous dev and product manager didn't understand the value in what they were making.

2) built in headaches. This is related to (1) but it's kind of the opposite problem. I see deployment tools that don't make the options object available to read in all contexts, or unhelpful automations, like silent failures. This is often from someone inexperienced trying to be clever.

3) terrible engineering practices - storing prebuilt native binaries in git, deploying a custom (read unsupported) version of a tool like gpg or perl. This can represent just a terrible engineering culture, but I often find these practices can be sourced to someone with a title like Director of Research

4) Lack of scalability - this is the least worrisome thing I run into. It takes experience in big problems to know ahead of time with any accuracy where the bottlenecks will show up. If this were the only problem I ever ran into, I'd be a happy camper.

</comment><comment><USER19> I once "inherited" an Adobe ColdFusion codebase that hadn't been touched in about 15 years. I guess the reason it hadn't been touched in so long was because it simply worked. It was a well structured project and easy to get in to. Implementing some minor new features was straight forward and thanks to an existing test suite easy to test.

Needless to say I was pleasantly surprised by that.

</comment><comment><USER20> I inherited a well-unit tested JS MVC frontend written with classes using Resig's Simple JavaScript Inheritance and jQuery, it pretty much looks like modern React code with Pythonic style to match Python backend (self=this everywhere, snake-case etc), but written in 2009. Currently in process of migrating it to vanilla TypeScript with very few difficulties so far. A few months later and I could have be dealing with a coffeescript POC.

On the other hand I also inherited an angularjs frontend written by an ape.

</comment><comment><USER21> I was new in development, had some notions about how to program, and stumbled upon sup ([https://sup-heliotrope.github.io/](https://sup- heliotrope.github.io/)), a mua written in Ruby that basically incorporated all Gmail wisdom into a local, curses client. I was hooked. Looking at the code everything was clearly defined and understandable, with boundaries set exactly where'd you expect them. I owe William Morgan, its creator, for my interest in programming and the reason I started this career. Maybe some of it is also due to Ruby itself ?

If you don't know wmorgan, he's the one who created trollop and the leveldb- ruby gem. Any Ruby practitioner should know what I'm talking about.

</comment><comment><USER22> Code written in Haskell is often really easy to pick up. Due to it's pure functions it can easily be picked up function by function and the GHC repl gives you an easy but powerful way to poke around. Of course there are also the crazy type level EDSL libs which are hard to disect, but in general Haskell has been the best language for me to pick up code written by others.

<comment><USER23> Maybe, I'm a bit skeptical, but I'm not a very good Haskell programmer.

I see too much symbol soup and point-free style makes it tougher to understand the code.

</comment></comment><comment><USER24> There must be a correlation with something working well and being nice to work with and people staying at those companies working on those projects.

</comment><comment><USER25> Inherited [https://broadbandmap.nz/](https://broadbandmap.nz/) the frontend was done by a external contracting company, the frontend looked like it should once i got it to run.

They gave us a stock rails CMS/static site generator that did the frontend part.

almost full rewrite as we where a Python shop and there was a mess of JQuery pubsub involved so you wouldn't know what was happening in what order or if there would be a bug because something wasn't subscribed to this event bus in time. almost goto level.

We met with the external company a few times and they made it clear to us they wheren't getting paid to fix tech debt or make the handover process smooth for us just that they where getting paid to make it look like the design.

This is actually a better state than the other projects i can think of, more because its a small project and the levels of technical debt are thus lower because theres not as much code/complexity, not that the code that is there was good.

All the tests where failing (very flaky by design, using browser driving to check for very specific parts of text on the page that had long been replaced), we also deleted all their tests/writ our own aswell as the almost full rewrite.

</comment><comment><USER26> I needed to extend a framework on which a thesis was written about.

The thesis explained all the high level concepts.

And every line of code was commented.

It made it quite easy to understand why and how he was doing things.

<comment><USER27> Comments go a long way to help people. Despite the "only code is the documentation" dogma.

</comment></comment><comment><USER28> Deis Workflow is a really nice codebase, and I like to talk about it. "Team Hephy" we committed to maintain Workflow and support newer versions of Kubernetes when Deis went to Microsoft. Their release architecture and testing framework were just really top-notch. The number of things that just haven't gone wrong in 2 years since they stopped committing and we took over, is itself probably the biggest testament.

There are over 100 repositories with code in different languages, and I can honestly say that each time I've ever needed to go in and work on something, usually from a position of little or no knowledge about the code or internals other than as a black box, I just find really well-organized code that seems like it was thoughtfully put together by a bunch of people that assumed they were always going to be the ones who would be stuck dealing with the consequences of whatever decisions they made every day.

[https://github.com/teamhephy/workflow](https://github.com/teamhephy/workflow) (from [https://github.com/deis/workflow](https://github.com/deis/workflow))

If you're looking for some training wheels for your beginner Kubernetes experience, you could do a lot worse! The product itself is basically a "Bring-your-own-Infrastructure" open source Heroku work-alike.

[https://web.teamhephy.com](https://web.teamhephy.com) / [https://blog.teamhephy.info](https://blog.teamhephy.info) / [https://docs.teamhephy.info](https://docs.teamhephy.info)

</comment><comment> grayed-down Back in the day I would inherit or have to work on large codebases written in Delphi/Pascal from several different authors. While there were a few eyerolls here and there, I never recall being overwhelmed or overworked trying to discover what I needed to know.

But then that's Delphi; a pure pleasure to work with. I only wish I had more use cases for it. I would put back in the lineup immediately if I did.

</comment><comment><USER29> Believe it or not, it was a large (~1M lines) in-house "CMS-generator for different clients" type of thing written in perl, this was right around the time 2nd-gen rails clones were starting to be a thing, a fair bit after perl was the popular weblang of choice.

The people who wrote it were competent at writing maintainable software. It was well thought out in terms of design and discoverability and tooling, it was well tested, and the authors cared a lot about not obfuscating purpose.

It had good dev ramp-up docs and a pretty clean commit history.

I think probably the largest differentiating factor for this particular codebase was that it wasn't developed under duress of time-pressure and the previous authors were past the point in their programming careers where they learned how to not overestimate their own ability or underestimate unknowns in their domain. The company was relatively small, technically competent at the top, and culturally less concerned with inflating profits than making enough money to live comfortably and do their thing.

</comment><comment><USER30> I didn't inherit them, but I've had to read through portions of the sqlite and Mercurial codebases and found both to be very well written. Good code can and does exist. It rarely exists in the private closed source sector, however, because teams either are unwilling to invest in it, lack the proper skills in their developers, or both.

</comment><comment><USER31> I recently took over GNU libredwg, which had an esp. nice codebase. The infrastructure was severely lacking, not enough warnings and probes enabled in autotools, many missing configure settings, totally bonkers unittests written by some late Google Sumner of code students, but the base architecture was excellent, with a DSL like specification language (via C macros), it was easy to extend, and works as perfectly fine documentation. readable code.

Documentation had the proper GNU framework, of course without man pages as most such GNU stuff, but this also easy to add. The other testsuite parts were also easy to add, dejagnu still rocks, gtest would have been a horror show.

GNU coding standards are a godsend.

</comment><comment><USER32> People who inherit code will always complain about something as that's just the nature of it. But often those complaints are more to do with the inheritor not understanding the intent. Code comments in those cases should describe the underlying design decisions or there should be thorough documentation of the design that explains it.

</comment><comment><USER33> One wouldn't know about the best code they have inherited because beautiful code denies its existence so perfectly.

</comment><comment><USER34> Unix V7 which I worked on porting. Some say it was the last Unix kernel that one person could completely understand.

</comment><comment><USER35> It wasn't technically inherited software, since no one imposed it on me, but when I shop around for open source libraries I tend to prefer those that some in-code docs and a few high level tests to check that the APIs keep working from a version to the next.

The worst code bases I inherited, on the other hand, are a lot memorable. The absolute worse was a ~500k-ish line of code WordPress/BuddyPress mess of undocumented spaghetti, complete with a slew of modifications to WP and BP core files. It took me weeks to put the latter in separate plugins in order to upgrade the mess.

</comment><comment><USER36> An unreleased idTech2 (ish) game.

id Software writes beautiful code, or did at the time.

</comment><comment><USER37> Rails codebases I've looked at are usually in pretty good shape. I attribute it to the conventions that are fairly strongly enforced.

<comment> r-s I have inherited many rails codebases and do not share this experience. I have found that often teams end up not using typical conventions and start re- inventing things well before it was necessary.

To be fair, I usually seem to find myself given rails 2.x and 3.x codebases which have sometimes been in production for close to a decade. That is a lot of time to build serious technical debt.

</comment></comment><comment><USER38> PHP dev who inherited a Java Spring Boot application. Sooooo much hidden magic going on. This was a about a year ago and since then I've become more comfortable with the Spring way but I still feel a little uncomfortable with it, even though it's the cleanest codebase I own.

</comment><comment><USER39> use a language that prioritizes maintenance and correctness instead of prioritizing speed-to-develop-a-prototype and brittle abstractions tailored for onboarding users who expect familiarity, and there will be a lot less expletives involved. These are real tradeoffs involved here. Without tradeoffs, there would be no need for choice and thus no need for strategy. Once those tradeoffs are determined, the crux of a strong strategy is how the chosen activities reinforce one and other to drive an unfair advantage.

</comment><comment><USER40> A simple, direct php site without a lot of weird, novel bullshit in it.

</comment><comment><USER41> I haven't inherited it but the C source of the simple terminal st is really really clean and good: [https://st.suckless.org/](https://st.suckless.org/)

I highly recommend it, it's only a couple thousand lines so it's worth the read. Never before have I seen such readable and clean C code. I read it and then implemented my own terminal emulator from scratch, which we now use on an embedded platform at work to debug problems that cannot be debugged using a PC (for example because Ethernet and serial connections to the device are broken).</comment>


You got the programming fatigue? - <AUTHOR>

I've recently started programming a new startup of mine full time and found that I am severely limited to how much work I can do because of physical fatigue - notably eye strain (pain) and wrist pain (carpel tunnel).
I have started wearing wrists braces on each hand to help with the wrist pain and that helps. And for my eyes I often wear polarized sunglasses and switch between staring at my laptop screen and hooking it up to my LCD TV.
I guess I'm kind of wondering if you guys have the same problems or if I'm sitting on the computer way to much. Also, what do you guys do to minimize, eliminate such physical problems like this? <comment><USER2> Physical pain is to be expected when you work on a laptop. I use my PC for long hours without any kind of discomfort, but working on the MacBook for even a few hours tires me out. Here is what I suggest:

1\. Try using a desktop computer, if you can.

2\. If you can't use a desktop, get a separate monitor, keyboard and mouse for your laptop. Use this setup when you're coding at home.

3\. Learn and use Emacs or Vim. They're seriously better on the wrists. If you cannot invest time in one of these editors, learn whatever editor you're using right now _properly_. Make use of keyboard shortcuts whenever possible, and avoid the mouse/trackpad like the plague.

4\. Use a dark color scheme in your editor and make it fullscreen. You won't believe how much cognitive strain it eliminates until you've tried it.

5\. If you're using Windows, use the Windows Classic theme. On Linux, try using whatever monochrome theme you can find. The Mac already has a monochrome theme. Staring at wild colors and funky visual effects makes you feel tired. Eliminate these distractions.

Just this much for now :)

<comment><USER3> Additional tip on emacs: swap the Ctrl and Caps keys. If you are on Mac, use Aquamacs because it allows you to use the option key instead of the control key, which is awkwardly positioned on both PC and Mac.

If there was anything Sun got right in its workstation design, it was where they put the damn control key: next to your pinky, where it belongs.

<comment><USER4> Some people argue that swapping ctrl and caps isn't good. See <http://xahlee.org/emacs/emacs_pinky.html>. Xah Lee says use a good keyboard... Not sure if this is true. I'm perfectly happy using the control key by reaching down with my left pinky...

<comment><USER5> I find Xah Lee's arguments unconvincing.

 _On a typical PC keyboard of today, the Caps Lock is the most difficult modifier key to press, and is pressed by the weakest finger pinky._ </quote>

On keyboards I've encountered Caps Lock is right on the left of an A key on the home row - it is easy to type it (and certainly easier than the Left Ctrl).

 _It makes the left pinky do 2 pinkies's work._ </quote>

You press Caps Lock instead of Left Ctrl - the same work.

 _It forces the left hand to strain into spider legs positions, or forces your right hand to flies about wildly if the letter key is near the middle of the keyboard (e.g. T, G, B)._ </quote>

The standard practice is to press the Right Ctrl (right hand) + t,g,b (left hand) - no flying.

 _It renders many Control-‹key› spots void, since now with only one pinky many otherwise good Ctrl-‹key› spots are hard to use._ </quote>

The Right Ctrl stays therefore there is no need to use only one pinky. The most frequently used Ctrl-<key> combinations in Emacs is point movement commands. Caps Lock makes it easier to type some of them e.g., C-n/p.

 _The left hand now constantly shift from home position._ </quote>

See my comment to the first quote.

</comment></comment></comment></comment><comment><USER6> Unless it has been diagnosed as carpel tunnel syndrome, I would guess that the wrist pain is actually a more general "repetitive stress injury" (RSI). Proper posture helps a lot for this, as does taking regular mini-breaks to let your wrists rest. Software RSI break timers help; I use AntiRSI on my mac. The idea is to let your arms hang down for 10 seconds or so every 5-10 minutes. Take longer breaks regularly, and stretch your wrists, arms and shoulders.

Google 'RSI wrist stretches' (or exercises), etc. The book "It's not Carpal Tunnel Syndrome! RSI Theory & Therapy for Computer Professionals" is highly praised, but I haven't read it personally.

I've found that a trackball is much easier on my wrist when I'm forced to do any mousing. The Microsoft Natural Ergonomic Keyboard 4000 helped too, but I couldn't stand the space bar's noise and action -- it's worth looking into a more friendly keyboard anyway.

Edit: As for eye strain, try to focus on something in the distance while you're letting your wrists rest. Human eyes aren't particularly well suited for focusing close-up for long periods of time, so you should let them relax once in a while.

<comment><USER7> I agree, a lot of "carpal tunnel" is most likely RSI. This lady explains it in great detail here:

<http://www.aboutcts.com/moreon_cts.html>

Her main site is <http://julstro.com> which pertains to the whole body, but the aboutcts.com site deals specifically with carpal tunnel issues.

</comment></comment><comment><USER8> A lot of people keep their hands at the keyboard for long periods of time; excessive use of keyboard shortcuts keeps you in the same position for longer. I find that typing in bursts works better for me; I hold my chin, lean back, etc. while I ponder what to code next. Rather than keeping your wrist in the same position a lot, it gets to flex and move around.

I had a lot more pain while coding at home because I would sit at the computer more often, but when working at an office, I have to get up and talk to people more often, and it really makes a difference.

As for eye strain, getting a dark color layout for your code editor of choice and keeping most of your GUI dark helps. Black text on a white background is like staring into a lightbulb.

<comment><USER2> May I suggest Zenburn? It has to be one of the most beautiful and comfortable color schemes out there. Available for both Emacs, Vim and a host of other editors/IDEs.

<http://slinky.imukuppi.org/zenburnpage/>

<comment><USER9> I prefer wombat. It's a gvim only scheme (unless you know a guy who interpolated it for 256 color), but it is veeeery nice.

</comment></comment></comment><comment><USER4> Sadly, I think a lot of this isn't physical but psychological. The stress of programming for a job will express itself in your body, despite the best mitigating techniques (keyboard layout, editor choice, screen color scheme, typing breaks, posture).

During intense job-related programming sessions, I'd have all sorts of hand and back aches. When programming just as intensely on a personal project, no aches at all.

<comment><USER10> Getting your circulation going helps relieve both eye strain and wrist pain. I've had both on very stressful projects. Get into the habit of working on your cardio. It's been shown that cardio does help with stress management and brain function.

</comment></comment><comment><USER11> I've been been an active developer for over 35 years, and I can say paying attention to ergonomics is one of the key aspects to longevity. When any part of your body starts to hurt, please pay attention, and take immediate action to adjust, shim, change keyboards, etc in order to stop the aching or pain before it gets any worse, and shut the pain down. It's your body's way of telling you that a change needs to be made. A single gig just isn't worth slamming your potential.

Better chairs, desks, keyboards, and VERY IMPORTANT arm supports to keep your wrists straight while you type. Also, don't pound your keyboard. A gentle touch is always best. If a mouse is a problem, try a trackball (Kensington), or even a "foot mouse".

There are lots of sites on minimizing eye fatigue. Looking away from the screen every 10 to 15 minutes to refocus on something far away is helpful. Also, don't scrimp on your monitor. Use a large display that is crisp and has good contrast.

Being cheap on the hardware you are "bound" to make seem wise in the short- term, but the long-term consequences are disabling.

Please, don't compromise with pain or discomfort.. It only gets worse.

</comment><comment><USER12> I didn't have the eye strain problems, but did have pain in arms, wrists, under and around my shoulder blade for my right hand. I used my right had to mouse. Was working on a project that "must go live" and the last month of implementation I spent 60 hours a week coding. Seriously.

Big mistake. A day after the launch I could not type, mouse, anything with my right hand as my muscles would ache and lock up.

At work I had a desktop, at home a laptop. The laptop was on a desk that violated every law of ergonomics known to man. The chair was a cheap $79 chair I got in college from the local office supply store. More mistakes.

Fast forward a year, I'd begun to notice that my right arm/hand ached all the time and the area between my shoulder blade and spine constantly held a knot.

My PCP prescribed pills and sent me to physical therapy. That helped a little but the side effects from the pills made me feel drunk all the time. The PT used a technique called "traction" that I later found out was chiropractic in nature. That stretched my neck and seemed to help the symptoms. That an excercises and an occasional pill when I had a bad flare up seemed to help manage things.

Fast forward another year and after an ergonomic makeover (explained below) I was hurting again and figured I'd go see a Chiropractor which my family (all Chiro success stories) suggested I go to. Wow! I've just celebrated 1 year of Chiropractic care and feel amazing! It's not solved all of my issues and I still have to manage my time in front of the computer, but it forces me to use it wisely.

Here's a list of items that have helped me:

\- Read everything you can about Ergonomics

\- Buy an Elevator for your laptop - www.griffintechnology.com/products/elevator - By itself it isn't high enough for me so I have 2 thick text books under that as well to keep my eyes at a 90 degree angle from my screen

\- Buy a good chair. I broke down and bought an Aeron chair from a used office supply store. One of the best moves I could have made.

\- Take loads of breaks, stretch, excercise. Push ups, lateral pulls, "give yourself a hug" all relieve tension and strain. Find any and all stretches for your neck and upper back.

\- Sleep. Really, look at the code you've written when you're fatigued and look at code you've written when rested. My CTO says that "every programmer has 4 good hours of code in them a day". That doesn't mean to work 4 hours, but that you need to listen to yourself when you're "spent". Accomplish the toughest tasks first thing, then once your "spent" do the menial tasks that take effort but little critical thinking.

\- Go to a Chiropractor. I kick myself for suffering literally for 2 years! For the wrist pain, they can pop your wrists and relieve the pain.

Good luck and I hope my suggestions help someone.

</comment><comment><USER13> If you just started a new job, it's likely you also changed your work layout. Ergonomics can make a big difference.

In my case, I eventually figured out that I need my desk at a specific height. Being even an inch off causes burning and tingling in my arms after a couple days. So every time I move offices, step 1 is adjusting the desk height.

On the eye strain, have you switched monitor brands or OSes with your new job? Small things like color temperature or type of LCD subpixel rendering can take a while to get used to. One configuration isn't inherently better than another; it's just novel and different, and your eyes might be doing a little extra work recognizing slightly different glyphs on the screen. If this is the cause, then the discomfort should go away soon.

</comment><comment><USER14> I found these wrist stretches very helpful: <http://www.fitsugar.com/309088> I also read somewhere that staring at a computer screen for a long period of time weakens the eyes. It suggested that every 20 minutes you should get out of your seat and walk around, concentrating on objects different distances away. Also, make sure you maintain good posture when sitting at the computer.

<comment><USER15> _I also read somewhere that staring at a computer screen for a long period of time weakens the eyes. It suggested that every 20 minutes you should get out of your seat and walk around, concentrating on objects different distances away._

I don't have any scientific proof of this but I try to do it when possible as well. Once or twice per day I try to go outside and focus on things as far away as possible and try to make out detail. It definitely makes me more relaxed when I sit back down to work again.

</comment></comment><comment><USER16> I use Workrave ... <http://www.workrave.org/welcome> to periodically force myself to take short breaks.

<comment><USER17> In Ubuntu, go to Settings > Preferences > Keyboard > Typing break and check the box "Enforce typing break". You can customize it based on how often and how long the break lasts, as well as the ability to postpone the break, or not if you're like me who keeps postponing the break.

</comment></comment><comment><USER17> I find that a nice looking font face helps loads. A large, sub-pixel smoothed font is wonderful on the eyes. And nice relaxing colours help too. I keep my terminal on a salmon-y colour text on a dark grey background.

As for the wrists: invest in a good chair and use Vi :)

</comment><comment><USER18> If you're working near florescents, try moving or turning them off. If you made an unlucky draw in the gene pool lottery, the fast flicker from florescents can interfere with your eyes' ability to focus, which can lead to eye strain. Taking a periodic break to stare at something distant is good. My optometrist claims that getting a 15 minute dose of indirect sunlight (looking at something outside with a blue sky background) is even better.

An eye exam will also rule out something like cataracts, which usually hit when you're a lot older, but may arrive early if you made a particularly unlucky draw from the gene pool.

</comment><comment><USER19> _eyestrain:_ optometrist said to focus on something far away every so offend. This relaxes the eyes. I also got some eye drops to help relax them (called "clear eyes" or something)

 _wrist pain:_ for me, _coldness_ was a big factor, so I have fingerless gloves onhand, rub my hands warm when sore, and of course try to keep the room warm. Awkward posture and being tense were also factors. And, for the first time ever, I went to the trouble of automating my common tasks in vim (esp. mapping keys to macros).

Straining an injury can make it permanent. Having done it myself, I sincerely do not recommend it.

</comment><comment><USER20> If your injuring yourself by using the computer where others aren't there's something about you, or the way you're using the computer that's causing you injury.

The best advice I've found is to just check, every 10 minutes or so, am I comfortable? How could I relax? Ask these questions of your fingers, wrists, arms, elbows, back, neck etc. Sit correctly (google for advice on that) but don't be tense.

I also found the Alexander Technique quite useful <[http://en.wikipedia.org/wiki/Alexander_technique>](http://en.wikipedia.org/wiki/Alexander_technique>).

</comment><comment><USER21> I have an old SGI keyboard that I'm absolutely partial to and a simple dual screen setup with two fairly large monitors a good 2' (60 cm) away from my head.

It works, but after sitting for > 10 hours I have to take a fairly long break.

move my desk up (or down) 2 cm and I end up with very had shoulder pain. It took a lot of trying to get it right.

Chair is a fairly cheap office chair but it has lots of stuff I can change to force changes in position during the day.

I removed the armrests because they make my arms hurt like hell.

</comment><comment><USER22> You might look into the work by Dr. Sorno. I know people saved by his methods from RSI/CT... I don't necessarily agree with his repressed anger and hostility hypothesis but I think the basic idea that the mind can generate these body pains for reasons we don't understand. Fortunately his techniques work regardless of the specific psychology involved. Start here..<http://podolsky.everybody.org/rsi/>

</comment><comment><USER23> 1\. Vim (black background)

2\. Dvorak (use a typing tutor (like ten thumbs if on OSX))

3\. Kinesis (not needed after 1 and 2 are fluent)

Almost left computing because of the pain, but after heeding the above 3 points, I'm back at 100%. No pain, and to top it off, I type faster. Win-win situation :) Oh, and get up and stretch every hour or two. If back pain is an issue (compressed L4 here), then get a desk you can stand at, and a comfy architects stool.

</comment><comment><USER24> For your eyes, you might want to check out F.lux: <http://stereopsis.com/flux>

That helped me a little. I also bought a Kindle DX and use it to read PDFs and some web articles converted to PDF. Since the Kindle isn't backlit, it lets my eyes rest vs staring at the big monitors and laptop screen.

</comment><comment><USER25> I wear a pair of Gunnar Optiks to help reduce eye strain (<http://www.gunnars.com/>). They have a slight magnification and anti-glare which do seem to have a positive effect. Plus when I have them on I feel like I am in "work mode".

</comment><comment><USER26> Try changing your posture and work environment from time to time. I regularly switch mouse hands, for example.

Also, dark color scheme is best. I have harmless floaters in my eyes but they make bright white backgrounds look like a freaking protozoan dance party.

</comment><comment><USER27> Is this a joke? How old are you? You're feeling tired and injured using a computer? WTF?

Imagine you had a real labour intensive job, rather than our soft, easy, cushy 'jobs'...

Imagine digging fence post holes all day, trenches, laying bricks, anything else really!

Wow what a pathetic, meek, frail society we have become where people wing about how hard it is to sit on your ass all day long!

Edit: I guess I should add... sure I can understand mental fatigue; sometimes we work with mind numbing, brain twisting complexities. But that just means you should go make a coffee, go for a 15 min walk by the river, whatever. But physically, if you're saying 'computing' is hard... surly this is a joke/troll ... !?

<comment><USER28> I'm not trying to feed the troll here, but I feel it should be noticed that this is a hacker community, and hackers don't generally dig fence post holes all day, trenches, or lay bricks all day. I'm sure some do, but programmers, who program for a living, _need_ to be in front of a computer of some kind. Not all _hard_ jobs involve labor. I'm guessing you've never had to sit in front of a computer and think logically for a week -getting very little sleep all the while. If you had, you would not only have _not_ written that post, but would learn that thinking, and not moving while you think (limited movement), can be _stressful_ and _hard_ to say the least.

Well, that's my two cents, and from my point of view, and I am sure others share it, when you said " _But physically, if you're saying 'computing' is hard_ ," I dare you to do something some of the greater "computers" (people who computer) have done. You know, like make an operating system from scratch without ever seeing code of one, you know, like Steve Jobs did, for example.

Ok. I hope that didn't come out as a rant, and if it did, I apologize, but think about it, computing can be hard.

<comment><USER27> Sure devving is hard! I've most certainly had my share of ~100 hour weeks, no doubt they are horrific! They ruin you! (My partner doesn't enjoy them either :P) And I'm sure whatever crazy devving sessions I've endured, they are but a drop in the ocean compared to what people a required to pull off when they are taking the first steps in a start-up.

However it's actually a topic that my best mates and I talk about quite often! How lucky we are that we can sit in our air condition offices all day, drinking coffee straight from a coffee machine, with our nice 26" LCDs, a plant beside us and our high back chairs... While others we grew up with come home wire sore backs, sun burnt, trash hands that just constantly hurt. Heck quite a few have even lost fingers. Sure our computer jobs can be stressful but that's why we do it, for the kick, we have the drive, we love the challenge.

Yea no shit nobody on here digs fence posts... they wouldn't be bloody winging about sitting in a chair all day if they did ahahah. Surely some of you have had ACTUAL REAL, physically hard jobs in the past? While putting yourselves through university or the like? I had some SHOCKING jobs going through uni from kitchen hand to digging bores/water holes on farm land in outback Australia. Maybe that's where my appreciation of what a physically intensive job means, stems from?

My point is.. How lucky are we!?!

Anways, watch me get down voted to hell because this isn't what others want to hear about our 'precious lifestyle'. But I fail to understand how your body can get SORE from sitting in a cushy chair for 15 hours a day ... !? WTF!

<comment><USER29> _Anways, watch me get down voted to hell because this isn't what others want to hear about our 'precious lifestyle'_

Watch you get downvoted for being unhelpful, unsympathetic and trollish.

 _Maybe that's where my appreciation of what a physically intensive job means, stems from?_

Why are you talking on and on about physically intensive jobs when the OP is not saying "It's too much effort", he's saying "it's wrecking my wrists and it should not, what am I doing wrong?".

 _Yea no shit nobody on here digs fence posts... they wouldn't be bloody winging about sitting in a chair all day if they did ahahah_

They would if their family survival depends on income from sitting typing and they can't type because of knackered wrists.

 _But I fail to understand ..._

That's a failure in your understanding.</comment></comment></comment></comment>


Pillow-SIMD: improving the performance of image processing - <AUTHOR> https://github.com/uploadcare/pillow-simd#readme <comment><USER2> re: [https://github.com/uploadcare/pillow-simd#why-do-not- contrib...](https://github.com/uploadcare/pillow-simd#why-do-not-contribute- simd-to-the-original-pillow)

They can create three versions of each affected function (fallback, SSE4 and AVX2), place them in separate files (one file for each set of compiler flags), compile each version with its own compiler flags, then link them all together, and in the main module (which is compiled for generic cpu) run cpuid and set global function pointers to the right function implementation.

Then always use the global function pointer to call the right implementation of the function, and only expose calling the global function pointer if the function is exported from a shared library.

They do need to make sure that function pre and post conditions are preserved in all versions and that memory alignment/layout required by optimized functions is created by the generic code.

I think x264 does this.

<comment><USER3> You can even use the GCC ifunc attribute and get the dynamic linker to handle selecting the right function.

<comment><USER4> Certainly seems like this is the right way to go: [http://clang.llvm.org/docs/AttributeReference.html#ifunc- gnu...](http://clang.llvm.org/docs/AttributeReference.html#ifunc-gnu-ifunc)

<comment><USER5> Any pointers for similar functionality for Visual Studio?

<comment><USER6> Code in separate libs then this inside #ifdefs.

#pragma comment(linker, ...)

<comment><USER5> Thanks!

</comment></comment></comment></comment></comment></comment><comment><USER7> It'd be interesting to see this compared to Halide [0], which conveniently already has a resize example [1]. Parallelization and data locality for example can make big differences.

[0]: [http://halide-lang.org/](http://halide-lang.org/)

[1]: [https://github.com/halide/Halide/blob/e9ece5ee8ee9cb62295d5e...](https://github.com/halide/Halide/blob/e9ece5ee8ee9cb62295d5e7e5409e54390bb01b4/apps/resize/resize.cpp)

<comment><USER8> I just discovered today that our resize example is actually absurdly slow. Working on a better one. So far it's about 8x faster. The other apps are much better tuned.

(I'm one of the main Halide devs)

<comment><USER7> Cool! On another note, are you aware of any other places with a lot of Halide code? A repository for common but not-obvious processes like brightness changing, denoising, contrast adjustment and such would be really cool.

</comment></comment></comment><comment><USER9> I don't really want to defend ImageMagick, but does Pillow come anywhere close to it in terms of format support? A magnitude better performance is great, but sometimes you just need to operate on and convert strange files (X bitmaps, ASCII braille come to mind).

<comment> St-Clock ImageMagick has also better default handling. For example, in a previous project, we were automatically resizing jpeg images. Surprisingly, some resulting images were blurry. After some investigation, we found that these images had been photoshopped and Photoshop was using a different sampling factor (one of the variables used in jpeg compression). ImageMagick automatically detected this sampling factor and reused the same, but Pillow was using a default sampling factor and was blurring the image.

<comment><USER10> Did you submit a bug? We're using libjpeg, so the support for that functionality should be there.

</comment></comment></comment><comment><USER11> This is a bit OT, but if you only care about downscaling, cropping and/or rotating JPEG images by multiples of 90 degrees, you might also want to take a look at jpegtran-cffi ([https://github.com/jbaiter/jpegtran- cffi](https://github.com/jbaiter/jpegtran-cffi)).

It does all of the above operations without decoding the image, giving a significant speed boost.

I just benchmarked it against pillow-smd on my laptop (SSE4 only) and it's 1.3-1.8x faster, depending on the operation.

</comment><comment><USER12> I wonder why this isn't benched against graphics magick (which I have found to be ~2x faster than imagemagick)

<comment><USER13> Both of the implementations you mentioned are not best known for its speed, rather, its their versatility (or bloatedness, some may argue).

</comment></comment><comment><USER14> With Python, is there an alternative for pexif.py to parse the orientation data for reorientating images? I used Thumbor in production for a while (which relies on Pexif) and found so many bugs in it that I had to make a hurried switch back to PHP.

</comment><comment><USER6> Just slipped this into an image resize-bound Python script I'm using. Immediate 3x speedup. Glorious!

(But yeah, would love to see this merged upstream. Lots of Python libraries have sorted out harder CPU/GPU dependencies.)

</comment><comment><USER2> Does Pillow have good security tests like fuzzing? Is it safe to pass arbitrary user input (file upload) to Pillow and Pillow-SIMD?

<comment><USER10> Fuzzing is slow. I've tried afl against a small subset of images and I was getting about 10 tries per sec per core.

There have been some bugs that look like people have been successfully fuzzing, but there's nothing organized.

The goal is certainly to be safe against user input, I would say we're there, but we're better off than we were 6months ago.

<comment><USER6> At the next major rev, Image.DecompressionBombWarning probably should default to error instead of warning.

</comment></comment></comment><comment><USER15> Why did Pillow fork from PIL in the first place?

> If you have ever worried or wondered about the future of PIL, please stop. > We're here to save the day

What's the backstory here?

<comment><USER16> > What's the backstory here?

No backstory, the development of PIL gradually slowed down and ultimately stopped in 2011 (the last official release having been cut in 2009), I've never seen any info as to why that happened, it just did. Possibly the difficulty of implementing P3 compatibility while remaining pre-2.7 compatible.

PIL was always an idiosyncratic package with a completely custom setup script, a difficult install (including setuptools-incompatibility) and weird-ass modules (probably owing in part to 1.5~2.7 compatibility), as well as a fairly slow release schedule (bi-yearly at the best of times).

And so in 2013 it was forked (not entirely unlike LibreSSL from OpenSSL) and a dedicated group started on maintaining and cleaning the stuff, progressively phasing out pre-2.6 compatibility and adding Python 3 support, etc...

<comment><USER17> Very easy install:

      wget http://effbot.org/downloads/Imaging-1.1.7.tar.gz
      tar xvf Imaging-1.1.7.tar.gz
      cd Imaging-1.1.7/
      python2.7 setup.py build
      sudo python2.7 setup.py install

Alas, those simple days are over.

EDIT: Preemptively, I know how to verify checksums.

<comment><USER10> Thankfully, you can still do that if you don't like pip.

</comment></comment></comment></comment><comment><USER18> What about compared to opencv's image handling functions? I've seen Opencv run about 4x faster than pillow for certain operations.

<comment><USER19> Opencv doesn't provide convolution-based resampling. Only supersampling with INTER_AREA flag, which is comparable to BICUBIC for high-ratio downscaling. So, such statements don't make sense without exact code :-)

</comment></comment><comment><USER20> Is there any chance the ImageMagick developers would consider adding such optimizations?

</comment><comment><USER21> Which operations you do the most? I'll try speed up them too.

</comment><comment><USER22> How about versus imagemagick with openCL?

</comment><comment><USER23> What if you don't care about speed, but you do care about not embedding strange scripting languages from the mid-1990s that can write files and make network requests?

<comment><USER24> [https://github.com/imazen/imageflow](https://github.com/imazen/imageflow) works for that and still gives you speed. :P</comment></comment>


Hey Hackers, any guesses as to how these guys work? - <AUTHOR> http://www.rapidload.com/

<comment><USER2> >Rapidload works in a way similar to download accelerators: Rapidload intercepts Audio / Video stream that is streamed by the browser and splits the downloaded stream into several parts that are downloaded separately at the same time. Certain sites place limits on bandwidth for single connection, so multiple connections achieve faster streaming rates. So Rapidload doesn't speed up your connection itself, rather it optimizes the streams so that they will more easily reach the users maximum connection speed.

:.:.:

Okay in English:

Rapid load will intercept your youtube connection, and make say 20 different youtube connection, it will start each one a different time code, so from youtube's side it looks like 20 different people watching the same video in 20 different places.

It saves these videos, then plays them back as a single video.

<comment><AUTHOR> Is downloading separate pieces of the video possible like this on YouTube? In what scenarios would this actually make things faster?

<comment><USER2> When the streaming service or your ISP caps download speed.

</comment></comment></comment><comment><USER3> Without even examining the product, several things come to mind:

(1) TCP hacks or tweaks to be more aggressive. Note that this might harm performance on busy links even if it helps on calm ones... lots of trade-offs here. TCP bundling is a form of TCP hack.

(2) Scatter/gather (BitTorrent-like) chunk or bandwidth sharing using centrally managed p2p.

Edit: looks like it's TCP bundling.</comment>


Which companies provide academic dataset like Yelp? - <AUTHOR>

For my data mining project this semester at school, I was hoping to work on something besides the UCI repository dataset. Yelp seems a pretty good option, but would like to know if there are any more such options available. <comment><USER2> Is there a specific type of data or industry you're interested in? There's a ton of government data floating around, a lot of which is located at <http://data.gov/>

Some other sites to look into: kaggle.com, <http://www.healthmetricsandevaluation.org/ghdx>, factual.com, infochimps.com

There's always the classic Netflix recommendation challenge from a few years ago too

<comment><AUTHOR> I'm inclined towards tv sitcoms/music data, but thanks for the links.

<comment><USER2> Too bad Pandora hasn't done a data dump.

What about piggy backing off Wikipedia (which you ca download) or IMDB for seeing connections

</comment></comment></comment><comment><USER3> If you want music data, I believe Last.fm's API can deliver some useful info to you.

What is the project concerning?

<comment><AUTHOR> Nothing concrete I've in my head, it's for my school data mining course.</comment></comment>


Tracing System CPU on Debian Stretch - <AUTHOR> https://blog.cloudflare.com/tracing-system-cpu-on-debian-stretch/ <comment><USER2> @jgrahamc your team and you do splendid work and it's always interesting to see technical posts like this. Thanks from a happy customer.

It would be really nice to read about your higher level infrastructure, e.g. how you do monitoring and alerting, your Kafka journey (have you been dealing with mirrormaker pain? as far as I can tell you;'re not using it), and similar.

<comment><AUTHOR> I will ask people internally to write about that stuff.</comment></comment>


Google moves WebRTC code samples to GitHub - <AUTHOR> https://plus.google.com/u/0/+samdutton/posts/Hc5hTz8oWes

<comment><USER2> Seems to be only the code samples. The code itself still lives in Subversion on webrtc.org and still uses Google's issue tracker.

<comment><USER3> What are the benefits of being on Subversion and Google Code at this point for a project like this? Or is it just that moving over is hard?

<comment><USER4> Chromium itself moved (is in the process of?) to git, so I'm inclined to think it's the latter.

</comment></comment></comment><comment><USER5> Yet another project moved from Google Code to GitHub.

Is there any reason why Google isn't trying to use Google Code to compete with GitHub? Seems like it wouldn't require many more resources, and could give GH a run for its money with some niceties (free private repos, plugin to their cloud platform, etc)

<comment><USER6> My guess: it's sorta in the same fate as Reader is right now, just not being killed as quickly. There aren't many people maintaining it. And they need to upgrade to a newer backend at some point, but no one is around to rewrite it.

It's also important to note that their support for SVN, HG, and Git is all an in-house implementation to work on top of BigTable.

I'm not really sure why they let it stagnate in the first place, but someone made the call that it wasn't worth investing in anymore. Remember that Google Code really came as an answer to SourceForge which was going downhill. But then we had GitHub and BitBucket appear, which have really taken over.

For pure source repos, Google has been using Gitiles[0] for most of their public projects like Android and Chromium[1].

[0] [https://code.google.com/p/gitiles/](https://code.google.com/p/gitiles/)

[1] [https://chromium.googlesource.com/chromium/src.git](https://chromium.googlesource.com/chromium/src.git)

</comment></comment><comment><USER7> [http://webrtc.io/](http://webrtc.io/) is down...

Does anyone know of a functioning webrtc server?

<comment><USER2> [https://apprtc.appspot.com/](https://apprtc.appspot.com/)</comment></comment>


Ask HN:  How Do I Protect Personal I.P. from My Employer's Acquiring Company - <AUTHOR>

A large software company is acquiring my current employer.  During my very long stint (by Silicon Valley standards) with my current employer I've conceived of, worked on, evaluated, and partially documented some potential startup ideas on the side.  I intend to continue developing these for possible future personal gain.
These ideas have little relation to my current employer's business, but a few of them are close to some of the larger company's product offerings.  Close enough that a product manager with some imagination could see integrating a couple of my ideas into their current offerings.  So ... what should I do to protect my past and future efforts?
I'll soon need to sign an Inventions Agreement with the new company, along with a Schedule of Separate Works.  I will be listing in the schedule formal work I've done for previous employers, listing patents and patent applications, etc.  I intend also to list a brief description of each idea I'm considering for the future and indicate on the schedule that the "company" with which I've done this work is my own personally registered Fictitious-Business-Name "company".  Should this be sufficient?  How important would it be to document these conceptions before formally starting employment with the new company?
I imagine working code would the best documentation, but most haven't reached that stage yet.  Some of the ideas are just "sketches" in my mind and on random sheets of paper -- is it possibly already too late for those? <comment><USER2> The problem is that when an idea is in the embryonic stage it's often difficult to pin the central elements down that may be protectable. As you allude to, when you have something tangible like code then you are in a much stronger position. It may not be too late for your ideas, but by the same token you may not actually have anything to protect.

On a wider point, much depends on what your new employer will think of the fact you are working on side-projects that may compete with its own ideas. Regardless of who came up with the idea first, they may not want a new hire to be working on similar projects when their energy could be directed at the company's own similar project.

Of course they may be perfectly happy for you to continue but it's of course vital you properly map out that work done on your own time will not belong to the company. In this regard, as the other poster says, you would be well- advised to speak with a local lawyer.

</comment><comment><USER3> I know this isn't what you want to hear, but you should go see a local lawyer, and bring the the documents from NewCo with you. The exact wording matters, and it's not something an internet forum can help with ;(</comment>


Hack a meal in 10 minutes or less. No ramen allowed - <AUTHOR>

what is your best Hacked meal in 10 minutes or less. No ramen allowed <comment><USER3> The options are endless... My wife and I both work, I do 99% of the cooking, often late at night with a less-than-stocked selection of ingredients.

A couple of ideas... soak a cedar plank for 3 minutes. Heat on grill on one side for 2 minutes, flip over and pour a good amount of rum on the now warmed side, salmon fillet on top of that, more rum on the salmon, season to taste. Cook for another 5-6 minutes. Grill some asparagus alongside the salmon directly on the grill, seasoned with oil and balsamic vinegar.

Thin porks chops cook quickly, and can be flavored with a mixture of apple cider vinegar, sugar and peppercorns for a sweet/peppery sauce. Cook the sauce along with the 'chops.

Chop up some raw chicken breasts and saute light butter. Cook batch of egg noodles at the same time, and heat some french-cut green beans in the micro. Make a sauce of sourcream, onion soup mix and herbs. Once the chicken and noodles are done, combine all the ingredients as an impromptu casserole. If you're not limited to 10 minutes, add some bread crumbs on top and bake in the oven for a bit to heat everything all the way through and let the flavors combine.

<comment><USER4> I'm sure it's a good recipe, but I couldn't stop laughing after "soak a cedar plank."

<comment><USER5> Worse, my first thought was "you have to soak a cedar plank for at least an hour!"

<comment><USER3> You really don't though, a few minutes is all that is needed for something that cooks quick like fish.

<comment><USER6> The laughter is coming from the size implied by "cedar plank".

</comment></comment></comment></comment></comment><comment><USER7> Ev's Improv: Heat olive oil, throw in a can of white beans, a small can of green chiles, half a can of chopped tomatoes (minus the liquid), a vegetable bouillon cube, curry powder, and black pepper.

(So named because I had to whip this up for Evan Williams when he spoke at YC and we discovered at the last minute he was a vegan. It was better than the official vegetarian dish I'd spent all afternoon cooking. <http://www.paulmckellar.com/things/1684-?context=album_42>)

<comment><USER8> Taking a look at that link (and then going to the YC main page again) made me realize how cool that lecture hall you guys have is.

Any chance there are some photos around of the "YC Offices" just for the curious?

<comment><USER9> It'd be interesting to put handles with faces too.

Anyways, the get together looks like a lot of fun. All the best to the new YC founders!

</comment></comment></comment><comment><USER10> No ramen allowed?

What about real ramen, starting with chuka soba and making your own broth (this part would take much longer than 10 minutes, but bear with me), adding in your own choice of meats, vegetables, egg, bamboo shoots, _negi_ , etc...

 _Edit: I realize I made it sound like you put the chuka soba into the broth at the beginning, which would make for soggy noodles! You generally cook the noodles separately, later, and put them in, still firm and chewy, toward the end..._

Remember, ramen is a real food (and really, really good), that's served in real restaurants (there are several good ramen restaurants in the Bay Area).

"Instant noodles" is the caricature that most Americans are exposed to (I, too, was a victim of this ignorance for many years!), but for the sake of the deliciousness that is Ramen, please stop calling instant noodles "ramen", even if it says so on the package.

It would be like an entire country being exposed to the concept of "steak" through frozen dinners, and developing a prejudice against "steak" as some crappy packaged frozen food.

<comment><USER11> Extra-fancy buckwheat soba is a bit pricier, but insanely delicious. A complex and rich taste all by itself, so you don't have to add much to it.

Soba takes eight minutes to cook, but the meal is even faster if you prep it beforehand. It's best eaten cold, so just pop it out of the fridge.

Chop other stuff to put into it. Tofu, green onions, mushrooms, peas, whatever.

Broth is awesome if you have it, but I can get by with a few dabs of soy sauce.

Add some red pepper flakes. Done.

<comment><USER10> > Extra-fancy buckwheat soba is a bit pricier, but insanely delicious. A > complex and rich taste all by itself, so you don't have to add much to it.

My favorite local ramen shop (Ramen Halu in San Jose, near Saratoga Ave and 280) uses it to make Tsukemen (sort of a dipping ramen, with cold soba noodles and hot broth and dipping sauce). Amazingly good. :D

<comment><USER11> I live around the corner from there. I can't eat there because they don't do vegetarian though. Still that's the way with anything authentic.

</comment></comment></comment></comment><comment><USER12> 1) Write code.

2) Forget to eat.

3) Drink lots of water.

4) take an hour to eat someplace and think about what you're going to do next.

Repeat every 24 hours....

</comment><comment><USER13> Somewhat off topic (this is certainly not cooking in ten minutes or less) but the English chef Heston Blumenthal is something of a cooking hacker whose work some of you might find interesting.

There's a whole bunch of his writings here:

[http://browse.guardian.co.uk/search?search_target=%2Fsearch&...](http://browse.guardian.co.uk/search?search_target=%2Fsearch&fr=cb- guardian&search=heston+blumenthal+appliance+science&N=&sort=relevance)

(look for the links called "The appliance of science" - that's his weekly column)

</comment><comment><USER14> _"... what is your best Hacked meal in 10 minutes or less. No ramen allowed ..."_

For the time limit I guess it's _Rat packs_ only. Here's a selection that I've hacked up. Each take less than 10m.

Cold:

\- toasted Turkish bread, fruit & nuts ~ <http://flickr.com/photos/bootload/208532380/>

\- croissant & salad ~ <http://flickr.com/photos/bootload/2348875312/>

\- salad ~ <http://flickr.com/photos/bootload/374445307>

\- popcorn ~ <http://flickr.com/photos/bootload/197013458/>

\- cold scones & filling ~ <http://flickr.com/photos/bootload/278756630>

\- cold beans ~ <http://www.flickr.com/photos/bootload/146521341/>

Hot:

\- boiled googs & soldiers ~ <http://www.flickr.com/photos/bootload/273680402/>

\- cannelloni, sauce & basil ~ <http://flickr.com/photos/bootload/2298155730>

\- left-overs & sliced veges as a soup ~ <http://www.flickr.com/photos/bootload/1144599851/>

\- focaccia ~ <http://flickr.com/photos/bootload/487694401>

\- heated beans, coffee & bread ~ <http://www.flickr.com/photos/bootload/201529926/>

Less than 20m:

Of course reducing the time to 10 minutes leave out even the simplest of recipes:

\- boiled rice, chilli, garlic & chicken ~ <http://flickr.com/photos/bootload/2348875322/>

\- pizza ~ <http://flickr.com/photos/bootload/54271803>

\- any form of stirfry ~ <http://flickr.com/photos/bootload/434856726>

</comment><comment><USER15> Take any fish fillet about 1/2-3/4 inch thick. Sprinkle with the seasoning of your choice. Stick it in a toaster over set to 400 degrees. (Put a sheet of tinfoil in the baking tray and you won't even have any cleanup.) It will be done in ten minutes. While you are waiting, boil 1 cup of water. Turn off the heat and throw in 2/3 cup of couscous. This should put you at about the five minute mark. Throw a veggie of your choice in the microwave. Everything will be done, hot, tasty and nutritious at ten minutes. It's pretty foolproof and east-cleanup too. This is pretty much our standard dinner most nights. (And I'm not even doing a startup right now!)

<comment><USER16> I like to broil whitefish, it's a similar effect. I tend to grill red fishes (Tuna, salmon, etc) because the grill heats up hotter quicker. The cook-in-bag vegetables are super easy and quick with no cleanup.

Oh! and this dish freezes well, you can make enough for a week in just a few minutes and reheat a nice dinner all week.

</comment></comment><comment><USER17> My "quick" meals are complicated by having an aversion to microwaves (I don't even own one...they make food taste like crap, and I love food more than most things in life, so I would never use it if I had one).

A rice cooker is a godsend. I finally broke down and bought one of the fuzzy logic ones when I moved to California a little over a year ago. Many wonderful things are possible with trouble-free rice. Takes only a couple of minutes of prep time, though the cooking time is 20-45 minutes (depending on quantity and type of rice).

My quick meals:

Fried rice - Scramble an egg, set it aside; dump in frozen vegetables (or fresh, if you have an extra five minutes for washing and chopping) saute in hot oil (as hot as your stove will go) until bright and slightly tender; dump in the rice and some mushroom flavored soy sauce (the good kind from an Asian market); stir it up; dump the egg back in and mix it up. Serve with a handful of cashews, for an interesting texture and flavor.

Black bean burritos - Heat up a can of refried black beans with about a quarter of a jar of good salsa mixed in. Roll it up in flour tortillas with shredded cheddar and/or pepper jack, lettuce, and tomatoes (the veggies are optional, as the salsa adds some tomatoes and onions and peppers). Optionally add sour cream and/or guacamole. Also makes a great dip for tortilla chips.

But usually, meals take me longer than ten minutes, and I'm OK with that. I like to cook most of the time.

<comment><USER13> Like you, I have an aversion to microwaves but recently I found a use for them (thanks to culinary hacker Heston Blumenthal): use them to "cook" vegetables of which the aromatics dissolve in water, like fennel, asparagus and broccoli.

What you do is you rub butter and salt and pepper on the vegetable of your choice and wrap it tightly in two or three layers of microwave foil. Then you zap it three times in one mine bursts at the highest setting.

Best fennel / asparagus / broccoli you've ever tasted.

<comment><USER17> Hmmm...I have a nice stovetop steamer for vegetables which seems to work fine. But maybe I'm missing something. Will have to try it next time I'm cooking at a location that is microwave-enabled.

<comment><USER13> With a steamer you're still working with water so some aromatics will probably get lost. A better alternative to microwaving would be stir-frying as you coat your vegetables in oil so no aromatics would leak out.

</comment></comment></comment></comment><comment><USER18> 1\. Start in a large pot 3cm of water to boil. 2\. in a fry pan, holding it tilted, at very low heat, drop in well-chopped anchovies and garlic, in a bath of enough olive oil that they are swimming. 3\. When the pool of stuff is bubbling rapidly, dump in a 200g of ground beef. 4\. spread the beef around. 5\. Put 3 minute pasta in the boiling water. 6\. when the beef is brown, dump in a can of diced tomatoes. 7\. kill the heat on the sauce when it starts bubbling again.

I routinely do variations on this in roughly 10 minutes. It is satisfying and vaguely healthy.

In 20 minutes though, you can have nirvana:

1\. Cut a pumpkin into 2cm square chunks. 2\. Steam for 10 minutes or so, until mushy. 3\. in a fry pan mix a chunk of S&B dry curry and a can of diced tomatoes with some water along with the pumpkin. 4\. smash everything together until it is a puree. 5\. kill heat, add plain yoghurt.

Eat as a soup or on rice.

</comment><comment><USER19> I won't cook if it takes more than 10 minutes so this will be great for me :) Anyway, my current favorite is..

Ingredients: 1) 1/2 jar of sweet and sour cooking sauce that has vegetables in it (Uncle Ben's!) 2) Packet of microwaveable whole-grain rice (the healthy stuff!)

Directions: 1. Microwave the rice for 90 seconds. 2. Put the sauce and vegetables into a bowl and microwave for 90 seconds. 3. Blend the rice into the hot sauce / vegetables.

This is what I eat for dinner every day my girlfriend isn't working the evening shift. Takes 3 minutes. This can also be varied by using frozen vegetables which you defrost first with the microwave on Low for 5 - <USER2> minutes. You can then blend in tomato ketchup, pickle, onions, and all sorts of stuff to just get a rice + lotsa goodies type meal.

<comment><USER20> rice, ketchup, pickles and onions. are you pregnant? My wife eats like this. Hahaha.

</comment></comment><comment><USER20> steak and potatoes

ny strip (bout half an inch thick) Salt, pepper, garlic, shallots, butter potatoes (cut into chunks)

turn broiler to highest setting. put all ingredients in a ziplock bag and shake, then put onto the broiler plate and broil. 8 mins late you have medium steak and potatoes!

<comment><USER21> Don't forget to flip the steak to the other side halfway through.

<comment><USER10> Or to remove the ingredients from the ziploc bag (at least, I hope that's how he does it!)

</comment></comment></comment><comment><USER22> Refried beans, cheese, sour cream, 'salsa,' tortilla, and a minute in the microwave.

</comment><comment><USER23> Actually, Spaghetti can be pretty quick if you have enough people to eat it all.

Put some noodles in water over the stove. Grab a can of sauce and put it in another pot on medium.

It really depends on the size, but it could be ready in about 10-15 minutes for a small amount.

If you're entertaining on short notice or limited prep. time it works too. Give yourself about 20 minutes and then you're set for serving yourself and guests!

(Note: Spaghetti done right will take significantly longer. This does not include preparing meat or adding any spices)

<comment><USER24> >10-15 minutes

You are overcooking it. Six to eight minutes is enough. If you ever go to Italy, you will see what I mean. Their normal cooked pasta is 'al dente' for non-Italians, and their 'al dente' is ... soaked in warm water. But good anyway. And do salt the water generously.

<comment><USER8> Italian 'al dente' is a trip. I hardly believed it at first, but it _is_ tasty.

</comment></comment></comment><comment><USER25> Out-of-the-can salad: chickpeas, black beans, maize, lettuce, cottage cheese, sunflower seeds and a diced avocado. Sprinkle with balsamic vinegar and olive oil and eat with bread

</comment><comment><USER26> Tuna sandwich:

Mix canned tuna, diced celery and/or onion, and mayonnaise in a bowl. Serve with sliced bread. You can store the filling in a jar in the fridge for about a week.

Corn soup:

Boil canned corns in water with your favorite broth/bouillon and diced scallion. Peas optional. Whip up an egg and mix it into the soup when almost done. Turn off the stove and mix in a tea spoon of starch powder for a thickened texture.

</comment><comment><USER20> If you aren't counting calories I have the best way to eat tacos.

1 bag of doritos. 1 bag Monterey jack cheese shredded 1 bottle pace chunky salsa 1 lb ground beef 1 pack mcKormic taco seasoning 1 bag lettuce shreds

*optional sour cream, green onions chiles, avacado, etc.

Brown ground beef. usually takes 4-5 mins for a lb. Mix in taco seasoning. mix all ingredients in a big bowl. Engorge yourself with delicious carbs.

</comment><comment><USER27> Nature's fast food (aka fruit) i like the no-wash needed like banana, oranges - easy clean up too considered as vegan food too :D

for cooking: rice, water, meat, garlic put together in a small rice cooker use the rice cooker's bowl - no need to transfer food to plates clean everything in one swoop

oh yeah, you can put raw egg+shell too and peel later ;)

</comment><comment><USER28> Eggs, chicken breakfast sausage in 2" pieces, some salt, some cheese, frozen stir fry vegetables (everything organic). Pre-heat a pan, mix everything (break the yolks), pour it in the pan and start mixing with a plastic spatula. Takes about 5 minutes, comes down to $2 for a hearty portion and has all basic food types, sans dairy.

</comment><comment><USER29> Chop vegetables into small chunks, fry them for a little while (add apices at will), then add some water (just enough to make them not burn and allow steam to develop) and cover with lid. Let stew for a couple of minutes. Add tomato sauce or soy sauce or coconut cream or... Combine with rice or noodles or...

</comment><comment><USER5> Can of black-eyed peas, pat of butter, frozen hamburger patty (read, bubba burger.) Boil. Not fancy but good eating. And it keeps well.

Realistically though, we all owe it to ourselves to eat well. I've lost 10-20 lbs this year (depending on the day) by avoiding carbs and eating my vegetables. Who knew?

</comment><comment><USER30> Throw a scoop of protein powder in oatmeal. Microwave or (better) throw boiling water on top.

Dump a can of tuna in a strainer. Heat with hot water in sink. Dump on top of bagged salad. Top with a vinaigrette or salad dressing.

</comment><comment><USER13> Quick and fairly good: some Turkish or Italian bread with a stew made of canned tomatoes, canned tuna and lima beans (also canned). Add some fresh basil and maybe some grated cheese.

Five minutes tops.

</comment><comment><USER31> Meals I often enjoy

1\. Can of chick peas + balsamic vinegar 2\. Huge pile of spinach or kale wilted in a frying pan with a bit of oil, salt, and pepper. 3\. Cereal & milk 4\. PB&J

</comment><comment><USER32> Ok, this is the best one right here!! Take those biscuits that come in the roll,, pop em in a toaster oven with pasta sauce and mozzarella cheese on em: instant mini pizzas!

<comment><USER17> I much prefer the somewhat healthier alternatives of pita bread or thick slices of fresh sour dough bread. Have you read what's in those canned biscuits?

I also get pretty picky with my mozzarella. I've gotten hooked on mozzarella fresca--the really soft, whole milk, kind. It makes me like pizza (which I've never been a huge fan of).

</comment></comment><comment><USER33> Scramble 2 eggs (teflon pan). Chop jalapanos. Put eggs, jalapenos and cheese on large flour tortilla. Zap in microwave 33 seconds. Serve with beer and hot sauce.

</comment><comment><USER34> Wondered if we have enough for a cookbook.

</comment><comment><USER35> Egg and rice (from the fridge) :P I cook the bestest eggs in da whole world. I cook it better than Chuck Norris. Seriously, I do.

<comment><USER13> Cooking eggs _can_ take 10 minutes (start from cold water, then at 10 minutes the yolk is semi-solid), but to do it properly you need 20 minutes to half an hour at least.

At 62 - 68 degrees centrigrade, that is.

If the temperature gets any higher, the egg white gets rubbery and the yolk grainy. We think of this as the way eggs should be, but if you've ever tasted a properly cooked egg you'll know those are much, much better.

(oh, and salmonella bacteria die at around 60 degrees so that's not something you should be worried about with this technique).

</comment></comment><comment><USER36> I tend not to make meals that quickly, as for me, cooking is one of the things I do to relax and think. :)

And I usually end up spending near to an hour in the kitchen, most nights :D

<comment><USER9> Agreed. Cooking up something inventive in the kitchen, chopping ingredients as pans fry minced onions and garlic, throwing new spices together; it's a whole lot of fun. Whenever I have the time, this is something I love to do.

<comment><USER36> Same. And I don't even have a fully-stocked cabinet, yet. Need to hit up the japanese and indian supermarkets. And any others that I can find.

I prefer to shop at places like that than places with an 'international' section. You get better quality ingredients, at cheaper prices. And a wider variety!

</comment></comment></comment><comment><USER9> If 10 minutes is prep time, you can do a whole lot with a crock pot. I also like rice alot, so I include a rice cooker. But, prep only takes 5 minutes, if that. Throw the meat, sauce, and veggies into the crock pot, and rice into the cooker. A couple hours later when I get back home, I have a delicious, warm meal waiting.</comment>


Measuring the Age of the Earth (2014) - <AUTHOR> https://whatisnuclear.com/geology.html <comment><USER2> I took a geology class once, which I quite enjoyed, and a certain point we were discussing radiometric dating. I understood the idea of a half-life and how you could use a known half-life and the current ratio of isotopes to measure the age of something, but there was a piece of the equation I didn't understand, so I asked:

How do we know the starting ratio?

The professor didn't really answer my question, just a sort of "scientists have measured it" type answer... which didn't make sense to me because scientists didn't exist 4.5 billion years ago or whatever, so how could they measure the starting conditions.

I think the poor guy was so accustomed to hostile questions on the topic that he interpreted it that way. I imagine many of his students came from a young- earth creationist background and didn't always take that section of the course well. Or maybe I was just reading into it and the guy was having an off day. (as an evangelical christian, old-earth vs new-earth was often a topic of discussion)

But it was actually an honest question. And this article finally gave me the answer I was looking for. Plotting an isochron of different radioactive elements solves for both the age and the original composition of the sample.

<comment><USER3> And you became an old-earth evangelical christian after reading this very article?

<comment><USER2> I was (and still am) an old-earth evangelical christian.

Many of my friends were young-earth creationists. It's not a topic I hear much about anymore, but I've had many lively discussions about it.

YEC is interesting because there are different ways people think about it in relation to science. The most straightforward would be to claim something like "God created the universe with the appearance of age", so that it would be actually < 10k years old, but appear billions of years old.

Such a theory is consistent with scientific findings, albeit falling prey to Ockham's Razor, and violating the principle of Uniformitarianism, both of which are probably pretty crucial to the Philosophy of science.

Theologically this approach isn't quite as jarring as it may at first appear. I once heard it put as a question: "Did Adam have a belly button?" If he did, then that's not really all that different from "the appearance of age" in general.

For me personally it still didn't sit right with me, and I also disagreed with the general interpretive approach taken to scripture. Genesis isn't a scientific textbook and I don't think it should be read that way. I highly recommend this book for an alternative interpretation: [https://www.amazon.com/Lost-World-Genesis-One- Cosmology/dp/0...](https://www.amazon.com/Lost-World-Genesis-One- Cosmology/dp/0830837043)

In general I think science is very important and undervalued in the christian community in general and that's unfortunate. To give just one Biblical example, King David spent years tending a flock of sheep by night, with nothing better to do than stare at the stars for hours on end. As scientifically illiterate as he was, he still knew a lot more about the constellations than I ever will.

<comment><USER3> Yes, young creation with old age idea would fall prey to more than just logical reductionism, such tempering would be deceptive at best. And that is not a good thing for an anthromorpic deity.

<comment><USER3> sorry for terrible spelling, I meant anthropomorphic.

</comment></comment></comment></comment></comment><comment><USER4> The OP mentions the work of Claire Patterson [1], who first measured the age of the Earth using relative abundances of lead isotopes in ancient rock samples. He found it very hard to do, because the samples he used were getting contaminated with atmospheric lead, and had to build the first clean room to measure the samples properly.

Atmospheric lead came from tetraethyl lead in gasoline. He spent decades campaigning against it, and came close to having his academic career destroyed by stooges paid the Ethyl Corporation[2]. Through sheer persistence and strength of character, he managed to get lead additives banned a few years before his death.

1\. [https://en.m.wikipedia.org/wiki/Clair_Cameron_Patterson](https://en.m.wikipedia.org/wiki/Clair_Cameron_Patterson)

2\. [https://en.m.wikipedia.org/wiki/Ethyl_Corporation](https://en.m.wikipedia.org/wiki/Ethyl_Corporation)

<comment><AUTHOR> There was an excellent COSMOS episode entitled "The Clean Room" that went into great detail on this topic.

[https://en.wikipedia.org/wiki/The_Clean_Room](https://en.wikipedia.org/wiki/The_Clean_Room)</comment></comment>


Tech journalists: take my tech test - <AUTHOR> http://blog.tommorris.org/post/26528963866/tech-journalists-take-my-tech-test <comment><USER2> I am insulted by the smugness of this post. Firstly, the pretension that tech journalists have any reason whatsoever to be reading this blog. Secondly, the lack of any evidence, enforcement, or argument as to why "journalists don't know what they are talking about."

Thirdly, the notion that all you need to be a tech journalist is an understanding of programming, when technology journalism today touches on hardware, electrical engineering, business, politics, environmental issues, and finance, not to mention the fact that many of these people are actually trained journalists, which is a worthy field by itself.

However, the most damning implication, the one which tends to lie at the root of many self-delusional blogs beyond this one: the idea that only insiders' word is worth hearing. Only an insider in a very particular segment of the tech world will be able to immediately tell you which of the NoSQL databases is the odd man out.

The notion that someone who can't isn't worth listening to is a surefire way to seal yourself in a stifling echo chamber where you cling to your own (usually flawed) ideas like a teenager clinging to a safety blanket while the other kids are out making friends and growing.

<comment><USER3> Why do I have the right to write the post? Simple. I read tech journalism. I read newspapers, blogs, magazines and much more. Consumer feedback from a consumer.

Lack of evidence? Oh god, it's like the air we breathe. Every time there's a product announcement, the amount of completely bullshit reporting, completely oblivious to what has gone before drowns out everything else.

My quiz covered programming, sure. It also covered software more generally, security (WEP vs. WPA) and Internet standards. The programming questions led up to a question about the App Store, which is kind of a business question really (if someone comes along and says they'll build you an amazing iPhone game in PHP...).

As I noted in the comments, I'm not expecting perfection. You don't have to be able to answer all the questions: but I've met far, far too many people who write about technology for a living and not only couldn't give an answer if I asked any of those questions but wouldn't even have a clue what I was talking about.

Do I expect every tech journalist to be able to answer all those questions? No. Am I being unreasonable in expecting tech journalists to know a smidgen about tech? Not at all. No more than if I expect people who write about politics to know a little bit about Parliamentary procedure or the democratic process.

Do the tech journalists which fail my admittedly very hastily made-up quiz/rant know about hardware or electrical engineering or the complexities of business or political and environmental regulation? I don't know. They seem to know a lot about social media, which seems to stand people in good stead for writing about technology for some reason.

And finally, there is a pretty fucking significant difference between being someone who "isn't worth listening to" to and being paid to write about technology. I don't know anything about wine – if offered a column writing about wine in a national newspaper, modesty would forbid, right? The reason you get elevated to a paying gig writing about technology could have just a little something to do with knowing something about the actual technology.

If only so when someone from a technology vendor comes to you and says that the brand new thing does ten octoflops with added HTML5 social media wigetization, you know what the fuck they are talking about and can call them out on it if it sounds like bullshit.

<comment><USER4> "completely bullshit reporting, completely oblivious to what has gone before drowns out everything else."

This is really the crux of the problem. Reporting has lost its memory, and PR- copy-pasting substitutes for in-depth analysis. Everything else follows from that.

</comment></comment></comment><comment><USER5> This is my first comment on HN....

I am a mid-level software developer, and this test is bullshit... The only question that was even remotely applicable to a tech journalist, (even a typical techie) is the one regarding network security.

I agree with jfasi; Tom, your post was incredibly arrogant.</comment>


5 Things Artists Can Teach Us about Productivity - <AUTHOR> https://amymhaddad.com/5-things-artists-can-teach-us-about-productivity-25fde96d4638 <comment><USER2> While the tips in this article are pretty generic, I will say that working artist are among the hardest working group of people I've ever known.

It takes extreme dedication and an iron will to keep up a full time artistic practice.

If anyone is interested in the working/day to day of artists I suggest the following books:

inside the painter's studio (Joe Fig): [https://www.amazon.com/Inside-Artists- Studio-Joe-Fig/dp/1616...](https://www.amazon.com/Inside-Artists-Studio-Joe- Fig/dp/1616893044)

Art&Fear (David Bayle) [https://www.amazon.com/Art-Fear-Observations-Rewards- Artmaki...](https://www.amazon.com/Art-Fear-Observations-Rewards- Artmaking/dp/0961454733/ref=pd_sim_14_13?_encoding=UTF8&pd_rd_i=0961454733&pd_rd_r=Q0PT4NY9FCECEHPA2N5T&pd_rd_w=J7W3O&pd_rd_wg=gFBHF&psc=1&refRID=Q0PT4NY9FCECEHPA2N5T)</comment>


Ask YC: Has Paul Graham ever made a joke online? - <AUTHOR>

I've never met Paul Graham or seen any videos of him talking. All I know is that he created this site and that he posts here. But I noticed - every single one of his posts is super serious. I have NEVER seen PG crack a joke or follow up on a joke. I have to ask...<p>What's the deal with that? Is pg like some really humourless guy? Is he afraid of letting his hair down? Or is he like a really stern mentor like in the movie Kung Fu Dragon Master From the Shaolin Temple, where the master is all serious and then the American student thinks he knows kungfu and punches the master, and it turns out that actually the master just removed his underwear...but for startups? <comment><USER2> Go to IT Conversations and download the audio of PG's talks. There are some supremely funny laugh lines.

From memory:

 _At our startup we had Robert Morris working as a system administrator... incidentally, we also had him in charge of security. Our clients would ask about our security and we'd say 'Don't worry; we've got an expert in charge'..._

PG's humor is often subtle. (If you didn't see the humor in that last quote, go google "morris worm".) He tends toward the sly, rather than the slapstick. And he's fond of jokes that, when examined closely for a second time, or when reduced to print on a page, turn out to have a lot of truth in them. But I'd never describe him as a poker-faced guy.

</comment><comment><USER3> He clearly has a sense of humor:

<http://news.ycombinator.net/item?id=35079>

I don't know where you get the 'serious' impression. The content on his website makes it seem like he's having a great time, most of the time. And you might notice that he edits out the negative stuff pretty fast, e.g. comments with angry interjections, or the deleted preface (available if you view source) for this: <http://www.paulgraham.com/polls.html>

<comment><USER4> Oh man that thread is a riot! Half of it I don't understand and the other half is like watching a nerd version of Ultimate Fighting Championship, only with pocket protectors. Do we still get threads with over 150 comments anymore? There should be a YC Classics thread list, because that definitely qualifies.

</comment></comment><comment><USER5> Here's another: <http://news.ycombinator.com/item?id=241134>

</comment><comment><USER6> <http://news.ycombinator.com/item?id=152428>

</comment><comment><USER7> What are you talking about? Almost every one of his essays has jokes.

</comment><comment><USER8> Go to omnisio.com and watch his talk at the last startup school. Then you can choose whether you want to delete this submission or not.

</comment><comment><USER9> Paul is a really awesome guy in person when you meet him.</comment>


Plug-In Kit Turns Any Car Into a Hybrid for $3,000 - <AUTHOR> https://mashable.com/2012/08/02/plug-in-hybrid-kit/

<comment><AUTHOR> I don't think this includes battery cost, and not sure about the energy management system.</comment>