PhD Productivity Strategy: Do Deep Work in Less Hours - <AUTHOR> http://www.nextscientist.com/phd-productivity-strategy-deep-work/ <comment><USER2> The biggest thing I noticed when starting my PhD was all the first and second years derping around not doing much, all the third years panicking and "just getting going" and all the 4th and 5th years really grinding.

So, I inverted that and worked my ass off like I was still an undergrad in the first 18 months, toned it down for the next year and submitted my thesis at 2 years 10 months (the earliest my university would allow a submission) and was viva'd and passed 2 months later with minor corrections.

PhDs taking forever is generally a lack of initial work by the student rather than any external factors. Too many students let their supervisors fob them off rather than getting in their office when needed and forcing their projects forward.

Also, selecting a sensible area with a high likelihood of novelty helps, I worked on energy harvesting for hostile environments (high temp photovoltaics, piezo etc at 300degC) which was a new area for the group and my supervisor, and published 6 papers as basically nobody else was working in the field.

Doing a PhD in the UK helps, in and out before the funding dries up in 3-4 years is expected along with no class requirements and no masters needed (can go in straight from Bachelors).

<comment><USER3> Wow. I just defended a few weeks ago, at 7 years. And honestly, until about year 5, I felt no rush whatsoever to get out. Not that I was derping around -- I finished with 20+ papers -- but I was enjoying it, and I realized that once I was out, two undesirable things would happen:

\- I would have to start running the grant treadmill (and indeed, I'm just in the middle of finalizing a training grant that has as one of its requirements...that I must write another grant)

\- In the US NIH, there is a 10 year "New Investigator" status that lasts 10 years from the PhD, where you are preferred for certain types of grant awards. So I reasoned it is much better to graduate late and start this clock from a strong position than to rush up the hierarchy and find yourself victim of the Peter Principle.

So for me, delay was a conscious strategy. Only downside was I had to live on a modest stipend. It was worth it for me, though. Another point that I'm making is that "productivity" is not equivalent to "graduating/getting promoted as fast as possible".

As for TFA, I would say that amazing _quantities_ of work can get done by pushing yourself, deadlines, etc, but the creative work that lays groundwork for future growth only occurs during low-stress periods. I try, therefore, to set up alternating periods of both types.

<comment><USER4> Did you have trouble extending to 7 years ?

<comment><USER3> Not really. My salary was funded by my PI and he was happy to keep someone at my skill level as long as I wanted (and at a bargain salary to boot).

From my department and committee, I started to feel rumblings around mid- year-6 of the "you should get on with it" lines. But they weren't trying to force me out or anything, it was more like concern.

I was spending (and still do) a much bigger percentage of my time on collaborative work than my peers, and they were concerned I wasn't adequately focused on my own career. But that wasn't the case at all -- I was doing what I thought was in my best interests, especially considering my field (bioinformatics) is inherently highly collaborative compared to the wet-lab stuff going on around me.

However, there were some institution-level reasons I cut it off at 7. After that, the institution's policy is that you have to start re-taking some classes you already took (and passed). It was irritating to always have to go to an irrelevant journal club every week (I was in a department that really had nothing to do with my research). Also, I had some appealing opportunities available if I finished when I did. But in no way was I "forced out".

<comment><USER4> Interesting, very interesting. Thanks for the reply. Would you like to share a link to your thesis ?

<comment><USER3> Oh, God, I'm not sure anyone is _totally_ happy with their dissertation, but I guess I should get over it. I got about 2/3 of what I wanted to done. I'm continuing with the project, though.

[https://www.dropbox.com/sh/ujf73cdu4m6p1lj/AAD4vVwpCfgSf7GGo...](https://www.dropbox.com/sh/ujf73cdu4m6p1lj/AAD4vVwpCfgSf7GGoQCYrK97a?dl=0)

<comment><USER4> Don't worry, I cannot judge anything anyway. I just read you were into aging research. I went at a few senescence panels a few months ago and am very curious about the subject. Is your thesis a step into finding applications for this domain ? or more general ?

ps: sexy title

<comment><USER3> Well the project arose like this. I got interested in aging halfway through the PhD. I started collaborating heavily with aging people at my institution. But there are so many papers and so much data to get informed about the area.

So I wondered "is there some semi-empirical way to find out what is 'most important' in aging so I can focus my future efforts on that?"

The solution I hit on was to take all the available gene expression data and to build a system to ask "what genes/pathways/systems change most strongly and consistently with age across species, experimental conditions, and tissues"? This would be a "core aging signature", if it exists. Obviously this is only one of many ways to answer my question and neglects epigenetics, proteomics, etc, although we're currently extending the system to DNA methylation. There is not enough high-throughput proteomics data to make it possible to do this with protein yet. We do not use sequencing for now because it is much more of a processing burden and human RNA is behind dbGaP embargo. And at the time I started this, there really wasn't that much of it compared to GEO.

My boss's interests are much more general than aging, so he encouraged me to develop the system to be more generic while still answering my question, which I did. It became a general meta-analysis system for asking "what genes change expression with <arbitrary condition> across the available experiments in GEO?" We found other things we could do with such a huge amount of expression data, and some of them are in Chapter 5.

I would say the system itself is 80-90% done. But sadly I did not get to a really detailed analysis of aging yet, although my findings so far on that are in Chapter 4.

<comment><USER4> Aight, wonderful idea. I wish De Grey and his friends get to see this system.

<comment><USER3> Thanks for your interest. I've actually met him once -- a friend of his I was talking to over beers introduced us -- but at the time, he was seemingly more interested in his pending date with the blonde he had just picked up than talking with a lowly graduate student. Can't say I blame him :) His papers are excellent, though. A more philosophical and broad approach is needed in aging, I think. He has mellowed a lot from the exaggerated claims he was making in the early 2000s. Maybe he saw my poster which covered an early version of this work, but we didn't talk about that.

The best aging researcher alive right now IMO though is Jim Kirkland. I've had the good fortune to work a little with him and the man is a living encyclopedia. His brilliance is obvious even in a conference full of PhDs.

<comment><USER4> haha so not surprised by your anecdote, I met him only once but it seems very degrey. Doesn't waste time.

From I what I could hear, he has to spend a lot of time managing funding for sub parts of the foundation and other efforts. Maybe this dilluted his claims a bit in time. All of his friends seemed to be pretty high grade researchers, it was a bit of an SF experiment sitting among that crowd.

Thanks for the name, there's another Kirkland studying aged things [https://en.wikipedia.org/wiki/James_Kirkland_(paleontologist...](https://en.wikipedia.org/wiki/James_Kirkland_\(paleontologist\)) but well .. couldn't resist that joke.

The panel I attended was the ICSA 2017 at Paris (Pasteur) [http://www.icsa2017-senescence-on-the- seine.org/](http://www.icsa2017-senescence-on-the-seine.org/)

Kirkland wasn't there but a nice international bunch

They were supposed to plan for a sequel since a few hundred people attended their surprise talk; we'll see.

</comment></comment></comment></comment></comment></comment></comment></comment></comment></comment></comment><comment><USER5> As a current PhD student in a highly competitive program, I wish I could say this is reasonable advice, but it's wishful thinking in the hyper-competitive environment at top tier universities (where the goal of a PhD student would be to graduate as faculty material).

There is just no way around grinding out the experiments. You literally have to will something to work in multi-month long pushes where you iterate again and again until you figure it out.

Deep work is good and nice for the theoretical parts, but all the academic superstars/upcomers I know work super long AND super hard to make conference deadlines all the time.

Of course, if you just want to graduate without stressing all that much or much ambition, this might work.

<comment><USER6> >You literally have to will something to work in multi-month long pushes where you iterate again and again until you figure it out.

Or instead of iterating 5 times, you take your time and do it right on the 2nd attempt, figuring it out in 1/3 of the time. Hurrying only leads to mistakes. It makes no more sense than attempting to continue working when you really need to go to the bathroom. You are are a human being and have biological limitations. Ignoring them is of no benefit and usually significant detriment.

<comment><USER7> > Or instead of iterating 5 times, you take your time and do it right on the > 2nd attempt, figuring it out in 1/3 of the time. Hurrying only leads to > mistakes.

In an abstract sense this is true, but there are some fields were you do just have to do it again, and again, and again. I know an exceptionally smart biochemist who routinely has 16 hour days. There's no substitute.

In my own field, someone who would later go on to win a Nobel for the work, was working on something that simply required a huge amount of time and iteration to get right. This is often the case.

This is not true in all fields, of course. I just want to caution against extrapolating from experience in one field to all PhDs, which is the sense I get from a lot of comments in this thread.

<comment><USER8> I don't know a single biochemist that puts in 16 hours of work a day. I know of plenty of biochemists that routinely start and end their days 16 hours apart because they have a growth protocol that takes 12 hours to complete prior to harvesting, so they get to the lab, prep, set up the experiment, then leave for a large chunk of the day while their flasks are hard at work, then get in at 8pm to finish the protocol, record results, tidy up and head home for sleep.

The above timeline is common and routine as are claims of having just done a '16 hour day' by those who are on the above schedule.

I'm not saying biochemists couldn't run 16 hours of experimental protocols at their bench per day, but I've never seen it happen.

</comment></comment></comment></comment><comment><USER9> I do walking for 30 minutes at the middle of the day while thinking about the task or problem that I'm facing during that time. It just always amaze me that good ideas pop up in my mind when I walk.

For those who are stressed and overwhelmed, I would advise to take a walk. And also for those who want to be creative, take a walk. It's a productivity hack.

</comment><comment><USER10> Fewer hours. And yeah, I agree -- that's how I got mine done.

<comment><USER11> I admit I logged in to HN to make the same grammar correction. Fewer/Less grammar errors bug me badly. I don't know why this particular grammatical error bugs me so, but every time I encounter it, I have an inner voice that yells 'fewer.' My family hates me for it.

<comment><USER12> Same here. I think the reason it bugs me so much is because my mind views it as a type error:

        int fewer;
        float less;

is how I tend to remember the distinction. (Fortunately in my family, my wife is the language nerd who first called me on my misuse many years ago. Now I notice it everywhere too. It's weirdly viral.)

<comment><USER13> Fewer is for things that can be counted in numbers. Less is for non-numbered things. It's so easy that it really disturbs me when people get it wrong.

Fewer people. Fewer zoos. Fewer cigarettes. Less hatred. Less abuse. Less misuse of power.

<comment><USER11> Less person, less zoo, less cigarette, fewer hatreds, fewer abuses, fewer misuses of power.

Flip flopping it around. The last three are now countable. The first three, while maybe verging on nonsensical, are grammatically correct. Less zoo, for example, might be used in the context of closing down part of a zoo. 'I have less cigarette left than Joe', also makes sense, if we are comparing cigarette lengths.

</comment></comment></comment></comment></comment><comment><USER14> The problem with saying "less hours" is that the optimal numbers of hours of effort varies a lot depending on your current productivity.

If you can't manage to focus on something despite persistent effort, yes it's much better to stop and have fun instead. It makes no sense to have "long hours" as a goal even if you're not sure of what you are going to try to accomplish during that time.

On the other hand, when you are motivated, or making progress on something, or working towards a deadline, then it may be very productive to keep going for many hours. I don't have statistics, but an important part of my PhD output (both research and writing) was done between 11 PM and 3 AM, on weekends, etc. (By the way, I disagree with the advice of going to the lab early in the morning -- personally I worked better from home late at night. But it depends on how you work and whether you can do the work from home or not.) Importantly, you should be in a flow mode, so actually these hours don't feel "long".

The main productivity lesson I got from my PhD is this: either work productively, or relax wholeheartedly. Aka: "Do, or do not; there is no try." :) It's terrible to try to work on something and not succeed -- it's unproductive, unpleasant, it does not put you in a better mood like real fun does, and it makes you completely disgusted with the task so it will be even harder to work on it next time. You have to learn when to keep on working, and when to stop because you won't be productive working longer. (You get better at this productivity prediction with experience.) And you should be fine with stopping very early, maybe skipping the rest of the day if it turns out you're not in the mood; but you should also be fine with stopping late and working crazy hours when inspiration comes.

<comment><USER15> I've found the same thing at my job as a software developer, as well as on my hobby projects—including a programming language, which is very like Ph.D. territory. Sometimes the time and code flow easily, sometimes not; forcing myself to work when I'm not in a good state of mind to be productive is _actively harmful_ to my holistic productivity.

</comment></comment><comment><USER16> I think it's incredibly hard to give general advice about the Ph.D. process. Even within the same discipline, the work varies greatly from sub-discipline to sub-discipline, and from advisor to advisor.

<comment><USER17> agreed! i cover this topic here: [http://pgbovine.net/PG-Vlog-26-what-does- academia-mean.htm](http://pgbovine.net/PG-Vlog-26-what-does-academia-mean.htm)

<comment><USER3> I have to thank you for your "Ph.D. Grind" memoir. There were many lessons in it, but the lesson I took from it, as I recall from reading it several years ago, was basically that you _have_ to discard perfectionism to get anything done.

I'm not sure if that was even an intended message, but that's what I took from it, and I thought back to it during the dark hours of dissertation writing when I was repeatedly thinking "this isn't good enough". I also remembered the lesson that one should be willing to be flexible in the sense that the dissertation doesn't have to be exactly (or at all) what you originally intended it to be.

</comment></comment></comment><comment><USER18> > #6 Give yourself a break

This is the most important bit in my experience. I had a pretty successful PhD and I loved my time as a PhD student. I'd have days or even weeks when I just didn't feel particularly motivated, and when that happened, I didn't sit at my desk twiddling my thumbs, I took the day off. Maybe read some papers, but almost never forced myself to do hands-on work if I wasn't feeling it. Having an advisor that grants you this kind of flexibility, as well as the flexibility to let you take on projects that make you feel motivated, is pretty important for a successful and non-torturous PhD, IMHO.

(Meanwhile I know of other advisors whose students would come into the lab 7 days a week and try to sell their work-life balance by telling the story of this one time when one guy the afternoon off on a Friday to go skiing. It's bizarre to me that some advisors think that kind of whip-cracking is the right way to make creative endeavors successful.)

</comment><comment><USER6> Essentially every single aspect of our cultures understanding about how to accomplish things and do work is a direct outgrowth of assembly-line manufacturing. Mental work is fundamentally different. But we continue to treat mental work as if its the same thing as mindless physical rote repetition. Humans aren't capable of extended periods of mental exertion. 40 hours of work a week was fine when moving sheet metal into a press. For mental work, it's counter-productive and borders on the cruel. It's certainly harmful to every effort that pursues it.

But habits die hard, and the management class is more addicted to the manufacturing-driven mindset than junkies are to heroin, so it'll take awhile to change.

<comment><USER19> > Humans aren't capable of extended periods of mental exertion

The humans on my thesis committee are definitely capable of extended periods of mental exertion. I don't know if it's something you're only born with or if it's something you can train but I bet I'll find out in a few years.

<comment><USER20> How would you know? It looks difficult, maybe even impossible to measure academic productivity.

<comment><USER19> Well, we could use a crude metric which is, how much of the day do you spend doing intellectual work? Right now, my advisor spends about ten or twelve hours. And it is pretty deep intellectual work, most of it is paper reading or discussion, via e-mail or in person meetings. Between watching when/how they reply to e-mail, make check-ins, their calendar, and talking to other collaborators and other students, they genuinely seem to fill 12 hours a day with work, six days a week, and have for the last fifteen years.

We can quickly get into some no-true-Scotsman territory here by asking "well if they're so smart how many Nobel/Field/Turing awards do they have" or something, but that's not the original question. The original question was, how much can you work at a high level a day? I have a measurement for both the ceiling and the floor and the ceiling seems high.

<comment><USER20> "how much of the day do you spend doing intellectual work?"

But that only measures time, not productivity which is at the root of this problem. You think your advisor is doing ten or twelve hours of deep work, but how do you know they couldn't achieve the same in four or five?

By the way, meetings and emails aren't deep work, even in an academic setting.

</comment></comment></comment></comment></comment><comment><USER21> I have tried most productivity hacks. In the end what worked best is the Pomodoro 25/5.

<comment><USER22> How has it worked for you I am interested. It has worked for me too, and I too have tried a lot of things. The reason it has worked for me is because I set the bar very low. Like one pomodoro on a specific task and then I usually end up spending more time...

<comment><USER21> I believe it helps because it

a) Is simple

b) Works for any tasks.

c) Allows for short burst of activity during which it is easy to refrain from reading random stuff, mails, or explore tangential ideas. Easy because you know you will have 5 minutes to check it out if necessary after your burst.

d) Helps for moving around, go fill a glass of water, look at your surroundings etc.

e) Probably correlates well with average human attention span

</comment></comment></comment><comment><USER23> Seems to me like this applies nicely to more than just PhD's; it works well with programming as well.

At least when you can fit that work in between all the meetings you are scheduled for in a day.

</comment><comment><USER24> It depends on your field. There are some experiments you can't just walk away from, for safety reasons. You can't just "focus" and make your chemical reaction go faster.

<comment><USER25> Agreed. A large amount of time also goes into things like making figures, which is mostly time-consuming grunt work.

I think the key is differentiating between creative work (which is better to be done deep with fewer hours) and grunt work which is almost purely time. Both are needed for a sucessful PhD - few are good at both and it is hard to switch between the two.

</comment></comment><comment><USER26> Just try this for a week...

1\. Remove Facebook/Instagram/Twitter from your phone. Using parental controls disable Safari. Remove your email too if you can.

2\. Use SelfControl to block these websites for 24 hours at a time. So you only get to check these things once every day. After you've checked it, quickly block again. If 24 is too much, start with 8 or so. But always block again right after checking!

SelfControl: [https://selfcontrolapp.com/](https://selfcontrolapp.com/)

\--

Few more tips:

\- Pomodoro technique is nice (I built FocusList - focuslist.co) but in my experience it doesn't help if you keep thinking about how many more minutes you have to stay focused. Instead you have to forget about all that and just think about your task.

\- Keep a journal of sticking with this habit. I always print current month, put it up in my kitchen and I cross off days. I'm currently doing that for my diet, but it works for any habit you wanna build.

\- If you can't motivate yourself, reading a book like "Deep Work" will give you an initial push.

\- Use headphones. This is individual, but speaking for me, they just gave me this feeling of immersion and it just helps me get into the zone. Get a nice pair with noise cancelling, or with those foam tips (if it's comfy), it will make you feel like you entered a different world.

<comment><USER27> Just got myself a nice pair of noise-cancelling headphones last week. I had some extremely productive hours like I've hardly known before.

<comment><USER13> Now that I've been using them for a few years now, I can't focus at work without them.

</comment></comment></comment><comment><USER28> I'm a little confused, has this person contributed to science in any significant way ? If not why should we listen to this person and ignore scientists who have actually achieved success in their field ?

<comment><USER29> >I'm a little confused, has this person contributed to science in any significant way ? If not why should we listen to this person and ignore scientists who have actually achieved success in their field ?

It's a fair question. But be warned: You're not going to get a much less diverse set of answers from them, though. I would suggest also listening to scientists who established themselves 30+ years ago. You'll likely hear a different story compared to the current crop.

In the 00's, some of my fellow graduate students did more work for their PhD than many faculty members I know did to get tenure in the 80's and early 90's. The high level of work demanded today is mostly due to inbreeding attitudes in academia. It's entirely an internal problem.

<comment><USER30> I largely agree with this, but in some fields I also think it is an over supply of PhD problem as well.

<comment><USER31> The oversupply problem is one that doesn't seem to be going away ay time soon, especially in the pure sciences. From my anecdotal evidence, it seems to be harder and harder to get into academia or cross into industry each year. I have multiple bio and chemistry PhD friends who have been either stuck in limbo at a postdoc position or who have left the field in frustration. I wonder if it will correct over time, or if the glut or PhD's will continue to grow.

<comment><USER32> Is it the same in CS as far as industry positions are concerned?

<comment><USER31> Not from what I have read or heard. There still seems to be a need across the board for those with deep knowledge, especially when it comes to certain topics. The people I have known who have had trouble, and studies I have read about the topic point mainly to biology and chemistry as the two hardest fields to break initially with a PhD. But of course even that could change depending on specialization, etc.

<comment><USER32> Among those doctoral graduates who went to North American industry and for whom the type of industry position was known, about 60 percent took research positions .

source : [http://cra.org/crn/wp- content/uploads/sites/7/2017/05/2016-T...](http://cra.org/crn/wp- content/uploads/sites/7/2017/05/2016-Taulbee-Survey.pdf)

Is 60% pretty high compared to other fields?

</comment></comment></comment></comment></comment></comment></comment><comment><USER33> hm, time to eliminate the hacker news bookmark...

<comment><USER34> I came back to HN (does it fall under #3 or #5?) just to remark something along these lines ...

</comment></comment><comment><USER35> "deep work"meaning concentrate. Breaks, of course. Innovation does not happen at the grind. Funny how concentration has gone out of fashion.

<comment><USER36> Innovation isn't the most time consuming part of a PhD. If you are doing benchwork there is an amount of time that is simply required to get experiments functioning.

<comment><USER35> I suppose I am thinking of it from math/coding perspective where the right idea saves a ton of time.

</comment></comment></comment><comment><USER37> Fewer

</comment><comment><USER38> This is complete bullshit.

From personal experience, one needs to stay at the experimental setup until you have publishable data.

For example, I had part of an experiment die when the oxygen tank ran out, rushed back to the lab at 3:00 AM, changed the acquisition mode. I took the final picture and published in a high impact Nature family journal.

My less productive colleges would have called the experiment a failure, and stayed home.

</comment><comment><USER39> >The worst PhD productivity advice is to work long hours. This advice is shared by successful people in Academia, so it should be good advice, shouldn't it?

Is it though? Because I've never heard this ever. I've heard over and over again to avoid working long hours. It always annoys me when articles start off on premises like these that I just don't think are true.

</comment><comment><USER40> This is stupid advice with sole purpose of keeping students engaged in publishing incremental research. So that no one questions vanity metrics like H-index and the ridiculous condition of academic research.

As a PhD student the real secret strategy is to ignore academia, work only on very high impact projects ( with potential of becoming startups or revolutionizing the field), intern with production teams (in core areas) at great companies. And enjoy lack of 9 to 5 scheduled life.

The deep work in less hours is meaningless if the work itself is merely publishing "Minimum Publishable Units" couple of times every year. It's just fast track to mediocrity.

Though I agree that not all environments are hospitable to risk taking. But then dropping out is a better deal.

<comment><USER41> Production teams at great companies seems to assume this is a Phd in something applied. Theorical Phds exists as well (e.g. pure maths)

<comment><USER40> Hedge funds, prop trading etc. do hire from math heavy background. But I agree.

My advice is only good for CS or similar (ECE, Data Science) PhD's.</comment></comment></comment>


The Ad Blocking Fight Is Over - <AUTHOR> http://gamesauce.org/news/2015/09/15/the-ad-blocking-fight-is-over/ <comment><USER2> This site just shows a blank page when my ad blocker is on.

<comment><USER3> It kept on loading while it was showing me the blank page.

At least a blank page is quick to read.</comment></comment>


What I've Learned Founding 3 Tech Companies | betashop - <AUTHOR> http://betashop.com/post/1417413108/57-things-ive-learned-founding-3-tech-companies

<comment><USER2> >44\. Conferences are generally a waste of time

What is the community's take on this? I kind of agree, but sometimes I feel that I feel so because I haven't learned "networking" skills completely yet.

<comment><USER3> As the co-founder of a conference related startup ( <http://lanyrd.com/> ) I'm very obviously biased here, but I've found conferences incredibly valuable in my career to date. What you get out of them depends very much on how you approach them.

Unless you live in the bay area, conferences are going to be the highest concentration of smart, informed peers you'll be exposed to for the whole year. Talk to people! Don't think of it as "networking" - think of it as an opportunity to learn from others (and to share your own knowledge). At most conferences, the hallway track is by far the most valuable.

And if you really want to get the most out of conferences, speak at them. Preparing a talk forces you to learn a great deal more about your subject, and presenting guarantees you some excellent conversations afterwards.

</comment></comment><comment><USER4> 35\. Don't drink on airplanes unless you are on a flight of longer than 8 hours. It ruins you and wastes your time.

huh? it seems out of place in comparison to the rest of the list. Did I misunderstand what he meant?

<comment><USER5> It's just been my experience that drinking on airplanes has an adverse effect on productivity in the air and then once on the ground. Let's say you take a flight from SF to Chicago or NYC. You have a couple of drinks on the plane so then you end up getting no real work done on the plane and not even thinking clear enough to get head-work done on the plane. Then when you land, you don't go workout nor do you do any work, so the night is basically shot. And you are more prone to also say, ok i had a couple already today so let's have another one, and then the next morning might even be a rough one.

I've also found this especially true for flights from NYC to London. There's nothing worse than landing after a red-eye and a few drinks. It makes the red- eye jetlag so much wose. The best way for me to hop across the pond is to immediately hit the gym upon arrival.

</comment></comment><comment><USER6> _1\. Build something you are personally passionate about. You are your best focus group._

The first statement is great. The second is potentially dangerous and stupid if your reality distortion field is strongly polarized against what a real market wants. Do your homework and get real market research. Find a pain point or a genuine need. Believing that you're right and everyone else is wrong is a greased pole to hell in most cases. Caveat emptor.

</comment><comment><USER7> I think point four is true but difficult to achieve. Most CEOs I work with, who also act as the product manager/owner, have a hard time keeping up with the role of product manager: especially when there are two or more pairs working on their product.

Having someone who can share that product vision with you is, in my opinion, really important. This frees up the CEO to focus on other aspects of the business like customer development, funding, etc.

<comment><USER5> This is a tough one. On Jobster I made 2 big mistakes with regard to this. (1) I gave up the chief product role too early in terms of getting too busy with other aspects of running the business to really guide and impact the product. (2) I made the mistake of thinking i could still guide the product when i was actually too busy doing other stuff, and then I failed to give full day-to-day control of the product to Ethan Lowry when he volunteered to help with it. I was too foolish to realize that i had already given up product control but yet unwilling to allow someone else to help me with it. Ethan went on to be the founder of Urban Spoon.

</comment></comment><comment><USER8> Noticed your current startup, fabulis, only allows login via FB, what about people without FB accounts?

<comment><USER5> are there such people? j/k.

We started with facebook only as a way to help ensure that our users are real people with real names, real pictures, and real friends. This was especially important in building a gay website so that we could set the right tone and not quickly become a porn/hookup/sex site.

</comment></comment><comment><USER9> Totally diaagree with him about conferences. I could nit pick about one or two of the others but based on my experience doing several startups this is an unusually good list.

</comment><comment><USER10> Brilliant List. So real, so today. The best one is number 56 from the list. Mature, but don't grow up.

</comment><comment><USER11> Really nice. Helpful in day to day work activities.

</comment><comment><USER12> excellent list

</comment><comment><USER13> 57(last one). Never Give up.</comment>


Credit card processing Many-to-One relationship  - <AUTHOR>

Is there a good way of moving money from many people to one person (who isn't the host of course)?
If the amounts were small and numerous enough, it may make sense to simply direct most of the payments between the parties and  siphon off your cut with several payments. But this is an ugly solution.
If the amounts were few and large, this solution is not practical. As  far as I can tell, the only alternatives to the small e-businessman are using paypal and being charged twice (once for accepting from one party and another time for pushing to the other), or (somehow) negotiating with a bank to get a merchant account (at great expense I imagine) that charges a little bit less for the same solution.
My goal is to minimize the amount paid to credit card processors while taking a small cut.
Do any of you know anything about this?
Thanks. <comment><USER2> Can you give a particular scenario? And is your goal here to make money while at the same time making it simple, or just to make it simple?

<comment><AUTHOR> My goal is to minimize the amount paid to credit card processors while taking a small cut.

<comment><USER2> Well, without knowing too much, here are a few thoughts for you. First, you probably want to hold all the money, i.e. take it from all the people first. The reason for this is you can float it while you hold it. Even if it ends up being only a couple of days, this will add up over time and enable you to take a small cut without seeming like you are taking a small cut. You can turn this into clever UI by having a screen shownig that you are waiting on these people before you can release the final payment or something like that.

Secondly, I'm pretty sure with the right processor you can credit a card for whatever amount you want, even if you haven't charged it, i.e. separate from any transaction. This depends on the processor but I think I have seen this before.

Finally, if the one person is OK with a check, that hardly costs you anything as most of the check processing system is subsidized by the federal government. Similarly, you might be able to get lower rates on incoming payments using EFT. At the same time, you can keep the cut small but you take home a higher portion because you aren't paying the credit card processor most of it.

<comment><AUTHOR> What sort of processor do you mean? A bank or a paypal operation or something else?

I cannot find any automatic check processing services, have you heard of any.

<comment><USER2> Is this just a one time thing--or is this around a business where it is going to be happening all the time?

By processor I mean a credit card processor like Paymentech or Verisign or Cybersource. Paypal offers most processing and bank functions, but you pay for it and are forced into their API. Most of the major processors now have eCheck products, though I haven't used them and am not sure on the pricing, but it should be less than credit cards.

On the backend (you sending the one payment) I meant just doing an electronic bill pay from your bank account where they send out a paper check. This is usually free for you on a small enough scale. And it would further extend the float period.

</comment></comment></comment></comment></comment><comment><USER3> are you doing something similar to fundable.org? What not try the simple method?

Let all the payers transfer the money directly to that one person. Then, you send an invoice to that one person for your commission and trust him to actually honor the invoice.

This is what Ebay does and it seems to be working well enough.

<comment><AUTHOR> That makes a lot of sense, but I did not think it was easy to transfer the money directly to someone else. When people collect with ebay they are forced to sign up for a paypal account.

This does lower the cost, but it I think it significantly raises the transaction activation energy.

Am I wrong?

<comment><USER3> Yes. Fundable forces users to sign up for a paypal account or pay by check. It does raise the transaction activation energy but i think this is the best way to circumvent the double-fees problem.</comment></comment></comment>


Bridge is a new RPC framework for building modular services - <AUTHOR> https://www.getbridge.com <comment><USER2> Ok, the people being quoted on the page all look to be under 25, and so are the people commenting here judging by the comments, so I suspect that no one involved or interested in Bridge has ever used RPC systems before and therefore have no idea how bad they actually are. Or possibly, judging by the "No configuration files or IDLs." comment, they may have heard of SOAP while it was being called an RPC system and be suffering from second system delusions.

If you are interested in some of the existing discussion, check out (They're PDFs. Sorry.):

* [1988] A Critique of the Remote Procedure Call Paradigm <http://www.cs.vu.nl/~ast/publications/euteco-1988.pdf>

* [1994] A note on distributed computing. <http://research.sun.com/techrep/1994/abstract-29.html>

* [2005] RPC under fire. Steve Vinoski. [http://www.iona.com/hyplan/vinoski/pdfs/IEEE-RPC_Under_Fire....](http://www.iona.com/hyplan/vinoski/pdfs/IEEE-RPC_Under_Fire.pdf)

<comment><AUTHOR> So Google (Protocol Buffers - RPC), Facebook (Thrift - RPC), Twitter (Finagle/Thrift - RPC), GitHub (BERT-RPC), DotCloud (ZeroRPC), Quora (Thrift - RPC) and all major tech companies are wrong? The list of companies using RPC messaging systems is very long.

RPC is widely used. It is mature and well understood. "RPC is bad because network calls look like local calls" is a terrible overused argument.

<comment><USER3> To some degree, it's a fair critique. RPC is a loaded term, because there were far too many implementations that tried to hide the network, which is a recipe for disaster. We were hesitant of going forward with the name ZeroRPC ourselves because of the historical baggage.

That said, most of the faults people have placed on RPC have been products of individual implementations and not the concept itself, and there really is much more momentum behind RPC engines than anything else. For my Master's thesis, I implemented a generative communication [1] engine. While I still feel like it's a "beautiful" model, it turns out no one cares. Developers understand RPC calls. Not that many get tuples / tuplespaces / pattern matching and why that can be nice.

1: <http://theory.sci.univr.it/papers/Isa-orig/Varie/Linda2.pdf>

<comment><USER4> The terms are fuzzy, but tuple spaces aren't solving the same problem RPC. That is, you can _use_ RPC to implement tuple spaces. But not the other way around!

Message queues are basically the modern tuple spaces, and I'll bet all the companies listed above use message queues too.

RPC has its place but it's overused. It's a low level primitive, not a distributed systems architecture. Some people's architecture is basically just RPC spaghetti, with a naive handling of errors.

The argument is confused by the fact that you can use an RPC with messaging semantics (async, a single argument data payload), and you can use a messaging system with RPC semantics (i.e. tunneling RPC over HTTP, using HTTP as transport).

I think we basically have to stop using the word RPC as a catch-all for so many systems, and identify which choices are good and which ones lead to design mistakes.

<comment><USER3> You can implement RPC in tuplespaces pretty easily:

Client:

       out("rpc-request", uuid, "say_hello", "m0th")
       in("rpc-request", uuid, ?response)

Server:

       in("rpc-request", ?uuid, ?method, ?arg)
       response = call(method, arg)
       out("rpc-request", uuid, response)

The example is obviously a bit simplified, but it's certainly easy to do in generative communication.

Message queues and tuplespaces are _very different_. A tuplespace allows pattern matching on tuples. And many tuplespace implementations do not provide monotonicity.

<comment><USER4> Well I should have clarified that I was basing that on my interpretation of the terms RPC and message queue. The important bit is that all these debates are obscured by imprecise terminology.

RabbitMQ supports reciving messages based on a pattern:

<http://www.rabbitmq.com/tutorials/tutorial-five-python.html>

It also says it supports RPC:

<http://www.rabbitmq.com/tutorials/tutorial-six-python.html>

That doesn't match my definition of RPC, but OK. I consider RPC server-to- server, not server -> "smart" intermediary -> server. But I guess they want to to define RPC as request/reply. So again it's a terminology issue.

What deployed, modern systems use tuple spaces and are substantively different from a message queue? My impression is that "tuple spaces" were the historical name, from Gelertner's papers, but everyone just calls them message queues. Message queues have lots of different properties but the defining one, as in tuple spaces, is that there's an intermediary between 2 servers. The sender and receiver don't have to be up at the same time.

<comment><USER3> > What deployed, modern systems use tuple spaces and are substantively > different from a message queue?

None that I know of, but that's because no one uses generative communication nowadays :)

> Message queues have lots of different properties but the defining one, as in > tuple spaces, is that there's an intermediary between 2 servers.

That's a very loose definition that could classify a lot of things as message queues. Generative communication says nothing about how the semantics are implemented; they may use an intermediary, or they may not. The early version of C-Linda did not use intermediaries, and was intended for in-process communication. Of course, a practical, distributed implementation of generative communication uses intermediaries. But then again, depending on the implementation, it may be distributed across multiple intermediaries.

I would say a message queue would necessarily have monotonicity (the name surely implies it!), which generative communication does not have.

> The sender and receiver don't have to be up at the same time.

In academic parlance this is called time decoupling, and it is an awesome property. ZeroRPC has this as well thanks to 0mq.

I don't really know anything about RabbitMQ to comment. I think I've heard that some engineers at dotCloud tried it out for our distributed communication needs, and it just couldn't scale to our load. But that would've been a while ago, and it has probably improved substantially since.

<comment><USER4> OK fair enough. But just with regard to your original point -- people should "care" about higher level distributed systems abstractions, and they do (to an extent). I think the main example of a higher level abstraction in wide use is message queues (which I think of as a descendant of tuple spaces, but that point is immaterial).

If your only concept is RPC, that's just too low level and limited, and you're going to end up with a mess. You're right that "developers understand RPC" (in a naive way). But that's just because we are still in the early stages and knowledge hasn't had time to propagate. Some RPC systems have more of the naive properties that the OP was pointing to; some have learned from those mistakes.

</comment></comment></comment></comment></comment></comment></comment></comment><comment><USER5> Looks cool, but - is Bridge an open source project? Is it a company? All of the above? Do I have to pay for it? What are the prices?

As someone who makes architectural decisions on a regular basis, I need to know that if a company that we're a dependency on dies, we can rip it out and replace it with a) an open source version of what we were paying for or b) our own alternative implementation (which sounds like something on top of RabbitMQ in this case). It's frustrating to see companies like this positioning themselves in a way that makes them difficult to evaluate.

<comment><AUTHOR> We're a well funded company. We've raised money from A16Z, Salesforce.com, and a bunch of others.[1]

We have open sourced the clients but Bridge Server is not open source.[2]

How do we make money? We're building this type of software for much larger organizations (think enterprise & government). We're not in the business of charging hackers and students $5.

We're likely going to charge some money for Bridge Cloud as a lot of the startups currently using Bridge prefer to use & pay for Bridge Cloud. It's the peace of mind of not having to deal with ops on a messaging server. Bridge server itself will also cost some money.

But the point is that we're only going to charge the big guys who can easily afford such systems. Their alternative today is to spend tens of millions on an engineering team to build systems in house.

There will always be a generous free tier for Bridge. You can download Bridge right now and pump 40,000 messages per minute through it for FREE. Do you need more? Just call me, I'm happy to bump you up.[3]

We have a setup for companies paying us and need to see the source code. If it's really important to you, we're happy to show you the code.

What can I do to help you evaluate Bridge? Can you shoot me an email? I'm at firstname.lastname@example.com.

[1][http://techcrunch.com/2012/01/05/andreessen-horowitz- salesfo...](http://techcrunch.com/2012/01/05/andreessen-horowitz-salesforce- put-1-4m-in-real-time-messaging-infrastructure-startup-flotype/)

[2]<http://github.com/getbridge>

[3]<https://www.getbridge.com/start>

<comment><USER6> Can you please put all of this on your site? This discussion is only temporary and many of us are interested in the particulars.

<comment><AUTHOR> I will do that tonight!

</comment></comment></comment></comment><comment><USER7> The guys behind this are some of the smartest people I've worked with. I've been using Bridge ever since their beta launch, and they've personally help me get set up, responded to every support request I've had, and delivered on everything they promised for Bridge.

It's been super useful for all types of projects -- I've seen it used in tons of small 24 hour hackathon projects, and have used it to scale my own app and port it over to mobile with very little friction. Definitely recommend this piece of technology.

</comment><comment><USER8> Looks nice, but there's no way I'd run a closed source binary only server as a critical piece of infrastructure like this.

Planning on selling licenses I suppose? I would have loved to have a poke around in the erlang server code. Cowboy/rabbit/messaging - sounds fun.

<comment><AUTHOR> Shoot me an email[1]. We're not open source, but I'm happy to show you the code!

As I said in comments above, if the source is really important to you, I can walk you through it and give you access so that you feel comfortable about what you're adopting. We're just not ready to open source the server yet.

You don't even need to pay for a server license until you're doing thousands of messages per second! At those scales, you should be able to afford cheap licenses. We're not focused on making small amounts of money from ramen startups or hungry students. We do have a good business in enterprise software to fund the free Bridge Cloud servers.

[1]: firstname.lastname@example.com

<comment><USER9> It might be worth considering introducing a Qt-style "if we ever go under, or stop, the source is released Under BSD".

No offence to you, but I have sen too many companies go bankcrupt, or get bought out and shut down, to trust such important infrastructure to you!

<comment><AUTHOR> This has been proposed with some of our enterprise contacts, as they share your same concern. I'll take a closer look!

</comment></comment></comment></comment><comment><USER10> ZeroRPC was just linked a few days ago[1] and this sounds similar. Both even use MessagePack for serialization. How are they different/similar?

[1] <http://news.ycombinator.com/item?id=4147337>

<comment><USER11> ZeroRPC is pretty cool but it's a different concept. It uses 0MQ sockets as the transport whereas we use RabbitMQ. This allows us to do zero-configuration service discovery and complex routing.

Bridge allows you to securely expose APIs to "untrusted" clients such as browsers and mobile clients. ZeroRPC does not do this because 0MQ doesn't allow such access control.

<comment><USER12> sthatipamala is correct. A few more points on the differences between ZeroRPC and Bridge:

* ZeroRPC has been open-sourced by dotCloud with no plans for monetization. It's just a fundamental piece of infrastructure which we think is worth sharing. Licensing fundamental infrastructure software is not our business (also: it's very hard).

* I see very interesting scenarios where ZeroRPC can be integrated with Bridge. There is already work on integrating it with systems very similar to Bridge, for example Stack.io (<http://github.com/dotcloud/stack.io>).

<comment><USER3> Few more points:

* Bridge currently uses a central broker, ZeroRPC is broker-less.

* ZeroRPC gives you streaming responses (similar to python generators). Bridge instead provides pub/sub.

* Bridge uses callbacks everywhere, whereas it varies for ZeroRPC based on language implementation. Our node.js version obviously uses callbacks, but the python version doesn't, thanks to gevent.

<comment><USER13> I can't imagine that WebSockets would be used outside of communicating with the browser -- in fact, a quick glance at the Python client library seems to indicate the use of raw TCP sockets.

<comment><USER3> Apologies, must've misread something. Removed that point.

</comment></comment></comment></comment></comment></comment><comment><USER14> Hi, I'm the first person quoted on the testimonials page. I've gotten a few emails related Bridge and my job, and I'd like to clarify: The email that quote came from was personal, and not at all related to my employment at Facebook (specifically, it is not an endorsement by Facebook). I use Bridge for personal projects, and that's what my email was referencing. I've asked that my quote be made clearer, and I'm sorry if you were confused or misled by the ambiguity.

</comment><comment><USER15> This is magic as far as I can tell... How can this be so far ahead of everything else out there?! Anyone have any insights on how this works and what the performance/flexibility tradeoffs are for this magic?

<comment><USER16> It's not _that_ magic; this kind of development is what message queues have been enabling for years (ActiveMQ, ZeroMQ, RabbitMQ, etc). It's a nice way to architect systems. Bridge looks like a nice evolutionary step forward, in terms of elegance & consistency.

Message queues aren't a silver bullet of course, they introduce a lot of potential problems which need to be solved on a case-by-case basis. Such as, what happens if a receiver dies before handling a message? Do senders need to retry sending messages or can they fire-and-forget? Is retrying built in to the queue layer? What happens if a receiver is bogged down with too many messages? Is there a limit on the incoming queue size and what is the limit? Can we start dropping messages if we're overloaded; which messages can we drop? If you make a request that expects a reply, should you timeout and what timeout duration should you use? When a new handler joins the system, should they instantly receive messages that have been waiting for them, or should they dump the existing queue? And so on..

<comment><USER15> Thank you for the explanation, this is blowing my mind because I had no idea message queues existed! Given that, this is a great abstraction for RPC on top of an MQ.

</comment></comment></comment><comment><USER17> Looks like a nice API (in a few languages) on top of some basic AMQP functionality backed by RabbitMQ. We're building something rather similar (for internal use, not a product). Might have to keep my eye on it, though it's hard to tell what it would cost for server licenses from the webpage. The core server is closed source with rate-limited free binary downloads.

<comment><USER18> yep, my first thought was "seems like a nice RPC wrapper around AMQP".

</comment></comment><comment><USER19> I've been using their system for a couple months now and it's a really excellent framework for building real-time apps of any sort.

</comment><comment><USER20> We've been talking about this around our shop. No small amount of thought goes into considering whether to use a service or tool or not. And that can greatly depend on if it has a web api or needs glue code to fit into our world. Both Facebook and Google use similar message layer systems to keep the chimera cluster f*cks they have working. The problem will be keeping bridge lean enough to do what it needs to, and small enough that you know what it does.

<comment><AUTHOR> We're really focused on lightweight simplicity right now. Keeping Bridge lean is a priority.

In terms of a web api vs. glue code, Bridge requires very little if any glue code. Check out our roadmap. We do have a REST endpoint planned. <https://www.getbridge.com/about/roadmap>

</comment></comment><comment><USER21> i've been using bridge to connect things that you wouldn't think is possible/easy, ranging from connecting android phones to RC blimps to web pages to remote python scripts. it was completely seamless! awesome piece of technology

<comment><USER22> Bridge was a lifesaver for the blimp project! Without it we would have had to drop $70 on a bluetooth module and send commands over a serial connection.

here's a video of our blimp: [http://photos.zyron.me/Other/2012-04-29/22712358_zSZWhh#!i=1...](http://photos.zyron.me/Other/2012-04-29/22712358_zSZWhh#!i=1820650079&k=zHFPXnK&lb=1&s=A)

</comment></comment><comment><USER23> How does this differ from something like Apache Thrift?

<comment><USER13> Thrift was designed for server-server and primarily for static languages. IDLs are a pain in the ass.

Bridge looks like a good alternative. Stuff like client-server, binary data serialization, and no IDLs makes Bridge very appealing.

Take a look at Evernote[1]. They needed something like this, and it sounded like they grudgingly went with Thrift. Bridge might be what they needed.

[http://blog.evernote.com/tech/2011/05/26/evernote-and- thrift...](http://blog.evernote.com/tech/2011/05/26/evernote-and-thrift/)

<comment><USER24> Full disclosure: I did some work on Thrift in 2007-2008.

I read the blog post you linked and I don't see any real evidence that their choice of Thrift was "grudging". They did say that there are differing requirements that might lead to others to make a different choice -- but AFAICT there is no indication in the article that they regret their choice.

WRT IDLs: YMMV of course, but the post you linked provides the following reasons why an IDL might be a good idea: "A more formal IDL and native code generation may help provide better long-term client stability, so the initial Thrift overhead for developers might be justified for some services that are concerned about client stability and longevity."

</comment></comment></comment><comment><USER25> Looks interesting but very similar in concept to Mongrel2 built on top of zeromq.

<comment><USER11> Good observation. They are actually pretty similar but with different implementations. We're implemented with an Erlang cowboy server that interfaces with RabbitMQ for routing.

From what I've seen mongrel2 is designed as a HTTP/REST -> 0MQ gateway. We also have HTTP/REST endpoints in the works but we're designed with persistent WebSockets/TCP in mind.

</comment></comment><comment><USER26> The most useful page for me was how to do a local install: <https://www.getbridge.com/docs/install>

It looks like it is built on top of rabbitmq.

I will be keeping an eye on these types of frameworks because I want to see how far the framework can go in the stack. Specifically I am waiting for frameworks that help me manage my web UI in an easy manner.

</comment><comment><USER27> Aren't imports ugly, or is it just me?

// js

var Bridge = require('bridge-js')

// python

from BridgePython.bridge import Bridge

// ruby

require 'bridge-ruby'

\---

First of all you don't really need language name in the name of each of the bindings. It's kind of obvious that i'm using ruby or python at the moment, isn't it? Python version looks especially ugly it should have been much simpler:

import bridge

<comment><AUTHOR> That would be ideal, but it was not possible to get the `bridge` packages. The word `bridge` is too generic.

Sorry about that :(

<comment><USER12> Maybe something specific yet cross-language, like "bridge-rpc"?

</comment></comment></comment><comment><USER28> Has anyone used this on live software with serious traffic? I really like the concept.

</comment><comment><USER29> awesome. it's not bridge, it's rosetta stone.. this will end religious wars between languages :) will bring them together.. now we can use haskell for X ruby for Y and Z for T. distribute them to different servers. very cool.

</comment><comment><USER30> It's a shame that it's closed source. I'm trying to install it through the installer, and I'm in "missing shared object file" hell due to things not being named as the binary expects them to be.

<comment><AUTHOR> Oh dear! Can you send me an email? firstname.lastname@example.com

</comment></comment><comment><USER31> the server seems to be written in erlang (using cowboy and rabbitmq?) but there's no erlang client library available. what gives?

<comment><AUTHOR> We're working on more clients! We figured we'd release with just a few to begin with.

</comment></comment><comment><USER32> I like this, from the examples it looks really useful and I wish these guys well. Kudos to them for building something awesome!

<comment><USER32> Excuse this, it's a self-reply test after some miscellaneous problems.

</comment></comment><comment><USER33> I built something similar but simpler not long ago <https://github.com/yankov/nourl> But it only supports ruby on a server side and JS on a client. You guys can simplify your framework in many ways by following convention over configuration principle.

</comment><comment><USER34> I like it, but no PHP option?

"Write each component in the language best suited for the job. "

Or is this supposed to be a subtle stab?

<comment><USER13> More clients are on the way, judging by their roadmap (see <https://www.getbridge.com/about/roadmap>).

</comment></comment><comment><USER35> Looks fantastic - not being a day-to-day programmer this is exactly what I've been looking for. Building my command and control platform will be significantly easier.

Anyone else notice that the pip install is broke though? Complains that 'README.md' is missing from the tarball.

</comment><comment><USER36> I'm really intersted in seeing the browser javascript part. The javascript gitHub repo seems to be for node only. How do you call RPC directly from Browser Javascript?

I'm guessing it does something similar to socket.io, but I haven't tested yet.

</comment><comment><USER37> I see that even on the client side in JS you need to provide your api-key. How is this secure in that someone else doesn't just use your api key? If it is explained on the site forgive me for not finding it.

</comment><comment><USER38> I've already built a cool hack with bridge! The multi-language support allowed me to use node.js for my IO and python for my logic. They interfaced pretty seamlessly. This is a good tool for hackers.

</comment><comment><USER39> The default is to send your private key in plaintext to the redirector.

<comment><USER11> SSL was added recently so it's not the default for now. Thanks for calling us out on this, we'll switch to HTTPS/SSL as the default in coming updates.

To enable encryption right now, please see <https://www.getbridge.com/docs/gettingstarted/js/advanced>

<comment><USER2> Wait.

"The default is to _send your private key_ in plaintext to the redirector."

What?

<comment><USER14> Your private API key, not your private SSH key.

<comment><USER40> That clarifies that it's not a good idea, actually. A secure exchange would involve the server issuing a challenge, and the client producing a response, and not sending the key at all.

</comment></comment></comment></comment></comment><comment><USER36> You have a link to the [bridge] tag on Stack Overflow, even though that tag is supposedly dead:

<http://stackoverflow.com/tags/bridge/info>

</comment><comment><USER41> Viewing the site from an iPad could use some attention. Both landscape and portrait have some unexpected cutoff and alignment issues that are somewhat distracting.

</comment><comment> johnx123-up So, Flotype <http://www.flotype.com/> (from NowJS) is now Bridge? Why?

</comment><comment><USER42> You're node broke.

<comment><USER43> Why do companies keep running their "marketing" sites on application server platforms? Put it on S3 or your Web host of choice, as a good old fashioned _static site_ , and your uptime will go through the roof. Especially for a company that wants to be other people's infrastructure provider...

<comment><USER12> Plug: dotCloud has a service called _static_ exactly for that :)

<http://docs.dotcloud.com/services/static/>

</comment></comment></comment><comment><USER44> <body style="padding-left:10px"></comment>


Ask HN: What are best tools for activism? - <AUTHOR> <comment><USER2> A smile and a handshake.

</comment><comment><USER3> Signal is pretty great.

</comment><comment><USER4> Critical thinking.

</comment><comment><USER5> Organizing</comment>


Interesting visualisation on Google earth - <AUTHOR> http://www.flickr.com/photos/endafarrell/5503515990/

<comment><AUTHOR> It is a very pretty way of seeing stats.

I especially like how he has tackled (to a point the ) splitting up of countries into a grid, to allow him to block the stats into something a little more meaningful than many thin lines.

The blog post about it: [http://enda.squarespace.com/tech/2011/3/6/nokia- place-regist...](http://enda.squarespace.com/tech/2011/3/6/nokia-place- registry-visualisation.html)</comment>


The Website That Visualizes Human Activity in Cities Across the World - <AUTHOR> http://www.technologyreview.com/view/541106/the-website-that-visualizes-human-activity-in-cities-across-the-world/ <comment><USER2> This is very interesting and I think it has a great potential for various usages.

I think it opens up the ability to study density in real time, not just based on where people live but where they go during the day and during certain times of the year.

Potential for a lot of start ups to use this data too as it grows. An idea that comes to my head immediately is a vacation finding website.

E.g. Somebody wants to go on vacation to a certain kind of area at a certain time but they'd like to go somewhere that is least busy. With this sort of data, you could find the optimal time and place for them based on their density requirements.

Or maybe if data about the kind of apps being used was also included, where to best try and market a new product.</comment>


Incubation Program from Dr. Kai-Fu Lee, ex Vice President of Google - <AUTHOR> http://tmi.vc/apply-here/

<comment><USER2> Can anyone tell me what they mean in the part about the "US/incubation application?" It refers to YC but this is the first I've heard of it.

<comment><AUTHOR> I am actually suspicious about it. That's why I posted it here to get others to comment on it. I already contacted one of the founders of the incubator about this problem.

[https://www.facebook.com/groups/webcamp/404741189537971/?com...](https://www.facebook.com/groups/webcamp/404741189537971/?comment_id=404788092866614)</comment></comment>


Manhood:Badly educated men in rich countries have not adapted well to trade,tech - <AUTHOR> http://www.economist.com/news/essays/21649050-badly-educated-men-rich-countries-have-not-adapted-well-trade-technology-or-feminism

<comment><USER2> Almost an interesting except the author found it necessary to (attempt to) shoehorn it into a feminist narrative.

> "The dead hand of male domination is a problem for women, for society as a > whole—and for men like those of Tallulah. Their ideas of the world and their > place in it are shaped by old assumptions about the special role and status > due to men in the workplace and in the family, but they live in > circumstances where those assumptions no longer apply."

The author says this right after explaining what these men lost to time are jobs in factories and fields. They didn't lose a privileged place in society, they were at the bottom being worked to death and now they don't even have that. But right next to this is an infographic showing the male share of new billionaires which has nothing to do with the uneducated men the article is talking about. It only serves to help the reader keep in mind who the real victims are. (The infographic of the male share of prisoners appears later)

The author tries to give a balanced picture but to me this is a great example of how feminism struggles to talk about men's issues in a meaningful way. The first word of the article is a woman's name, the first statement is a woman calling men lazy. By the end of the second paragraph the author has painted a picture of the men the article is about as lazy, gambling and unemployed.

I can't imagine an article ostensibly about women's issues that opens up with a man explaining these particular women are good for nothing and then the author trotting out various ideas of why that's the case.

edit: This is just ridiculous. The author suggests that these men need to do more housework, like maybe that's their real problem, they just can't get with the program because they're clinging to pre-feminist revolution gender roles.

It's almost a dangerous view, mass unemployment is an economic problem and instead of discussing it frankly the (anonymous) author would have us focus on how backwards men are now that the patriarchy isn't showering them in privilege anymore. It's sad to see thinking this shallow appear in The Economist.

<comment><USER3> Had the same reaction. How is this on the front page of HN?

<comment><USER4> Consider the role the tech industry has had in the automation of labor and the resulting unemployment of unskilled workers.

</comment></comment></comment><comment><USER5> * Poorly educated

<comment><USER2> The social justice movement demands we be sympathetic to poor people. Using the word 'poorly' might arouse that sympathy before it's established that the subjects of the article are dog-fighting degenerates unworthy of it.</comment></comment>


The Man Who Built Catan - <AUTHOR> http://www.newyorker.com/online/blogs/currency/2014/02/klaus-teuber-the-settlers-of-catan.html <comment><USER2> I've got a little story as to how addictive Catan can be to some people...

About 15 years ago, a friend came to visit in my country with Catan. The simple, original box. He stayed at my place and for days my friend, my roommate and his girlfriend and me kept playing it. Then my friend left back to its country and took his Catan with him. We were so addicted and wanted to play really badly, but it was saturday evening.

Shops wouldn't open until monday and we wanted to play. We had played the game so much in a few days, non-stop, that we knew it by heart.

So I told my roomate and his girlfriend: let's build it. I was working in the book publishing business and had a very nice color printer at my apartment. I fired up Gimp on Linux (IIRC) and Quark XPress (that I'm sure of) on the old Mac and started designing basic hexagons and cards layout while my roommate started drawing and his girlfriend started writing down everything she remembered. Then we printed everything on the color laser printer and started cutting.

In about three hours (!!!) we had a functional game (we'd put a huge table glass on the map once randomly distributed). And we played the whole Saturday night, the whole Sunday... And when we woke up on Monday, we went to buy the game.

We were so into it that the three of us couldn't wait 36 hours or so to buy the game: we had to have it immediately. And we built it.

There's one word I'm thinking of for this game: addictive ^ ^

<comment><USER3> Some friends and I made a single-use board with felt markers some years ago. It's also fun to customize the resources to your local environment. Debating how resources should combine was at least as fun as playing.

[http://flickr.com/photos/dorywithserifs/3745799327](http://flickr.com/photos/dorywithserifs/3745799327)

</comment></comment><comment><USER4> Catan was my first German-style board game[0].

I've since "graduated" on to more complicated games, so I rarely play it anymore, but I find that it's an effective "gateway" German-style board game. Almost all of my friends who have played it love it, and have gone on to try (and enjoy) other German-style games. Catan is nice because it's sufficiently more complex (and well-designed) than Monopoly so as to be interesting, but not so complex that the rules take ages for newcomers to learn (as is often the case with many more complicated games).

My personal favorite at the moment is Through the Ages[1], though I'm also a fan of Puerto Rico[2], as it's a rare example of a good game that has (almost) _no_ random elements to its gameplay, such as rolling dice or shuffling a deck. (There is _one_ set of tiles that is shuffled, but it's rather inconsequential and could easily be made deterministic if desired).

Here in NYC, there's a cafe dedicated to board games and which was funded on Kickstarter[3]. As a huge board game geek, I'm really glad they're catching on.

[0] [https://en.wikipedia.org/wiki/German- style_board_game](https://en.wikipedia.org/wiki/German-style_board_game)

[1] [http://boardgamegeek.com/boardgame/25613/through-the- ages-a-...](http://boardgamegeek.com/boardgame/25613/through-the-ages-a-story- of-civilization)

[2] [http://boardgamegeek.com/boardgame/3076/puerto- rico](http://boardgamegeek.com/boardgame/3076/puerto-rico)

[3] [http://www.uncommonsnyc.com/](http://www.uncommonsnyc.com/)

<comment><USER5> I'd argue that Catan is much less complex monopoly. Just that most people learn monopoly at a very young age so they never notice the complexity. Monopoly's rules are 6 pages of pure text. Catan's rules are 4 pages with some illustration.

I don't understand at all why monopoly is the universal board game that every kid learns. It's a horrible game that drags on for hours. Even though I don't particular care for Catan it'd make a much better universal board game.

<comment><USER6> Monopoly only drags on for hours if you play by silly house rules like $400 for landing on Go, money for landing on Free Parking, or not requiring an auction when passing on purchasing a property. All of these common house rules artificially extend the game by either injecting cash into the game or slowing the acquisition of property.

A vanilla game of 4 player monopoly should take no more than an hour.

<comment><USER7> In my experience Monopoly games played by the official rules with experienced players would drag endlessly due to trade negotiations. Typically, whenever a player was clearly in an advantageous position, the remaining players would form a loose alliance, shuffling properties and cash in an attempt to stymie the leader. The leader would fall back into the pack, a new leader would emerge, and the whole process would repeat. Every iteration would require a substantial amount of discussion, proposals and counter-proposals for an equitable but effective distribution of properties and cash amongst the "insurgents". Any thoughts on what we were doing wrong?

Catan at least has the advantage of monotonically increasing building and army points: Given enough time and even barely rational spending, a player is guaranteed to reach 10 points, no matter how alliances form and splinter.

The biggest problem we encountered in both games was the "spoiler": The player who was not in a position to win, but was in a position to determine the winner. Either you try to impose hard-to-adjudicate rules requiring "rational decisions" or you accept that a long-running game may be decided by caprice.

<comment><USER8> *In my experience Monopoly games played by the official rules... Any thoughts on what we were doing wrong?"

I'm guessing you weren't actually following the rules[1]. If you do follow the rules you'll find liquidity gets sucked out of the game by continual reselling because you are only allowed to sell unimproved properties, and have to sell houses & hotels back to the bank at half price.

[1] [http://richard_wilding.tripod.com/monorules.htm#sellingprope...](http://richard_wilding.tripod.com/monorules.htm#sellingproperty)

<comment><USER7> That rule was followed. Given that we were playing with 3-4 experienced players, monopolies were rare (everyone bought essentially every available property landed on that was still potentially monopolized) and most targeted the sweet spot of three houses. Monopolied properties weren't traded often, but even then that's not a lot of liquidity to sacrifice with ~$800/board cycle going into the game via passing Go.

Once a few monopolies did crop up, it was the remaining unimproved properties that would be swapped most often for ludicrous amounts of money to allow, say, a cash-poor player to build a few houses in the path of the current leader.

</comment></comment></comment></comment></comment></comment><comment><USER9> "The company originally sourced all of the materials for the game from Europe, but, when demand began to take off, the manufacturers didn't have enough wood to keep up."

Couldn't they have traded some grain or ore?

<comment><USER10> I chuckled when I read that line. I assume they put in as a little joke.

</comment></comment><comment><USER11> The great thing about Catan is how it's a wedge. It's a gateway drug into the world of modern boardgames (I don't say Eurogames because there's some fantastic Ameritrash). People who play Catan are then amicable to try out other fun great games like Ticket To Ride and Small World.

<comment><USER12> I thought the distinction between "Eurogames" and "Ameritrash" had more to do with design style than actual nationality.

<comment><USER13> It does. I'm not sure what you're seeing in the comment you replied to that seems like it's implying otherwise, though.

Eurogames trace their ancestry from early American designers, and Europeans have contributed some really garish ameritrash (esp. the British.)

</comment></comment></comment><comment><USER14> For those who might be interested:

[http://www.youtube.com/watch?v=o3WJTlDa7oo](http://www.youtube.com/watch?v=o3WJTlDa7oo)

This is a Table Top episode hosted by Wil Wheaton playing Settlers of Catan. There is also another episode where they play the Star Trek variation.

Also, if you haven't seen this series and are interested in board games I highly suggest you watch other episodes. The level of interest will vary from episode to episode based on whether you like the type of game they play. But they give you a decent idea of how the game works and how it is played.

I have made several board game purchases based on this show.

<comment><USER15> I've also made several purchases based on that show and recommend everyone give them a watch.

They're also organizing the upcoming International TableTop Day at [http://www.tabletopday.com/](http://www.tabletopday.com/), and are very proud of how they almost got the ISS involved in last year's but that fell through at the last minute.

</comment></comment><comment><USER16> I never played Catan but wondered if it was suitable for kids 8-12 yrs old?

Also, anyone play "Escape from Colditz"? man I loved that game as a kid.

<comment><USER17> Definitely suitable, in my experience. One of my children is in the middle of that age range, and the other is just below it. They both enjoy playing the game.

</comment></comment><comment><USER9> My friends and I just got into Catan and it's really great. We used to play a ton of FIFA and Madden when we were together, now it's always "who wants to settle?". It really is a great game because it can't be completely beaten like Monopoly can and there is no best strategy that we've found. I play totally differently than my friends and we all win sometimes.

I also love the social aspects of trading and the robber. We have a LOT of table talk when we play, and it's hilarious to see what people will say to convince someone to put the robber on a spot they don't own. Also the desperate trades we get into "I'll give 5 wool for a grain! 6 wool for a grain!". It's really the best board game I have ever played by far.

<comment><USER18> Catan got really popular when I was in college, and I noticed a distinctly different playstyle among the "normal" groups of friends I had and the ones that came from the Economics department.

A lot of people never think to do things like: \- Pay the robber to rob someone else \- Ask the robber what card he wants to take from you, and if it's something you're willing to give up just show him which card it is in your hand \- Trade away all of a scarce resource you have, then use the monopoly card to get them back, then trade them away again \- Paying someone to build roads to cut someone else off \- Paying to "rent" someone's port for a turn to get a better exchange rate

We like to use a house rule that requires all trades to "clear" within a turn (ie no arguments over enforceable/conflicting trades taking place on future turns).

<comment><USER19> Interestingly the "clear within a turn" rule would mean that you could only rent a port from the player who's turn it is (unless you allow all players to use their ports at any time).

I also assume by paying you mean making an undesirable trade, unless you allow gifting through another house rule.

In some games I've seen the following: Player A (current turn) wants to trade wheat for a brick through Player B's port. Player A will trade 2 wheat and a bonus resource to Player B for x arbitrary resource. On Player B's turn they move the wheat through their harbour for a brick and trade this back to Player A for their x arbitrary resource back. Player B keeps the bonus resource as payment, and Player A gets usage of Player B's harbour. This couldn't happen in one turn as only the current player can use their harbour.

<comment><USER18> Right, it basically becomes a form of "I'll give you 2 wheat and one other card if you immediately port the 2 wheat for the one thing I want and give it back".

It's not strictly a discrete trade, as there are two steps for the player to take, but it does resolve within a turn (provided the active player has the port).

</comment></comment></comment></comment><comment><USER20> Is Catan really Silicon Valley's golf, like the article claims? I'd love to think so but I haven't seen any deals cemented over a game of Catan. Anyone have any stories?

<comment><USER21> _Is Catan really Silicon Valley 's golf, like the article claims?_

I'd believe it of the old Silicon Valley. The new one, with Snapchat and Clinkle and spider pooping and expensive real estate and multiple liquidation preferences? Probably not. I think golf is the new golf in Silicon Valley.

<comment><USER22> I had to look up spider pooping. People can't possibly be doing that. Wow.

</comment></comment></comment><comment><USER23> It looks like there is a fairly active IRC channel for modern boardgames called #boardgames on Freenode. [http://webchat.freenode.net/?channels=%23boardgames](http://webchat.freenode.net/?channels=%23boardgames)

[http://www.boardgamegeek.com/](http://www.boardgamegeek.com/) is the IMDB of boardgames.

<comment><USER24> If you read French (or want to improve yours :-)), there's also the French site TricTrac: [http://www.trictrac.net/](http://www.trictrac.net/)

</comment></comment><comment><USER25> Here's a fun (and pretty long) podcast interview with Klaus and Guido: [http://jeffrubinjeffrubinshow.com/episode/16-settlers-of- cat...](http://jeffrubinjeffrubinshow.com/episode/16-settlers-of-catan- creator-klaus-teuber/)

</comment><comment><USER26> Catan is incredible to me. We picked it up in a thrift shop in a rural eastern Washington town, thinking it was some relic of the 70s (this was probably 1998 or something). We played it on family vacations and never thought about it outside of them. Then, all of a sudden, it exploded in popularity. Really cool story.

</comment><comment><USER27> Played it for the first time a year ago. I've been addicted ever since.

</comment><comment><USER28> Best game ever.

</comment><comment><USER21> I wish we had more of a board game culture in the U.S.

It seems that most adults end up, just because society is so demanding and competitive these days, with a lot of low-level social anxiety. It's rarely enough that most people notice it, but it keeps people from really relating to each other or learning from each other, and it's a major part of why people become so damn boring, one-sided, and narrowly careerist once they leave school.

There seem to be two antidotes to this low-grade but ubiquitous social anxiety. One is games, the other is alcohol. I don't mind an occasional drink but, most of the time, I prefer the one that sharpens the brain over the one that dulls it.</comment>


Learn how to write an emulator - <AUTHOR> http://www.emulator101.com/ <comment><USER2> The Space Invaders (Midway 8080) platform described here is really easy to emulate; it's just a 1-bit frame buffer hooked up to a CPU. Subtracting the CPU emulator, my implementation on [http://8bitworkshop.com/](http://8bitworkshop.com/) takes less than 200 lines of code. One of the easiest with which to get started.

<comment><USER3> That's a real gem!

I also started out on the Apple ][, writing my own versions of the games I saw in the arcades (donkey kong, pacman, joust, etc).

My kids are old enough to be curious about how games are actually built, and we've had fun building an adventure game in basic, and a version of asteroids in C. We had planned to build something this summer, so this book of yours is an ideal next step which we can work through. I think they'll really get a kick out of seeing how it all goes together. (okay, okay, I admit it. Nostalgia hit me hard and I just want an excuse to fire up my old Apple ][ again.) Regardless, I just hit "order" on Amazon.

<comment><USER2> Hope you like the books! I'll have some basic Apple ][ emulation available on the site soon.

</comment></comment></comment><comment><USER4> A long time ago, I wrote a 68000 emulator in C to replace MAME's x86 assembler core. After months and months of poring through my old Amiga programming books and the Motorola manual, I still remember clearly that moment where I fired up the emulator, and actually SAW the title screen of Rastan Saga come up after the game booted from my core. Truly a magical experience...

After that, I doubled down and wrote a g65816 emulator for it (that's the CPU the SNES and Apple IIgs used). Emulator writing is almost a zen-like experience.

<comment><USER5> If you happen to remember, which of those Amiga books was the most useful to you?

At the moment (well, for _years_ really) I have been in a 6502 binge, but want to get into m68k programming as well (and the Amiga ecosystem specifically).

</comment></comment><comment> alok-g >> Want to really learn how a CPU works? Writing an emulator is the best way to learn about it.

The best way to learn how a CPU works would be to write a CPU! I.e., write HDL code for it and test in a hardware simulator.

I have designed a miniature application-specific processor, a compiler* and IDE for it, a disassembler, and an emulator too.

* To be more precise, I hacked a compiler for it using C# .net compiler.

<comment><USER6> Do you have any recommendations for tools for this?

<comment> alok-g I had developed using professional IC design tools (specifically Modelsim and Xilinx) for the processor. However, free tools are available like [http://iverilog.icarus.com/](http://iverilog.icarus.com/)

The actual processor was implemented on a Xilinx FPGA, and it was about 2K lines of HDL code, carrying about 25 application-specific instructions which I had designed also.

For the compiler, disassembler, IDE, emulator, I created in C# and .NET.

While I did not use these, there are also ASIPs: [https://en.m.wikipedia.org/wiki/Application- specific_instruc...](https://en.m.wikipedia.org/wiki/Application- specific_instruction_set_processor)

</comment></comment></comment><comment><USER7> Implementing an emulator is similar to writing an interpreter and imo more rewarding in certain cases.

Start with CHIP-8, it's the gateway drug to others.

<comment><USER8> How do I get started? What resources do you suggest?

<comment><USER9> When I did my CHIP-8 [1] I collected a lot of background info and links, which you can find in the "History" and "Sources" topics of the readme.md there.

[1] [https://github.com/tallforasmurf/CHIP8IDE](https://github.com/tallforasmurf/CHIP8IDE)

</comment></comment></comment><comment><USER10> I wanted to learn SNES assembly once, but I found the actual limitations of the SNES frustrating, do I made my own 24-bit virtual machine and basic assembly language. I was getting confused with how to implement interrupts so I took a look at an open source gameboy emulator....turns out without really knowing what I was doing I had written an emulator.

That was really awesome to work on though. I probably learned more working on that than anything else. It was the first time I really felt like I understood entirely how a computer actually works.

</comment><comment><USER11> I want to learn how to write an emulator that is not an interpreter and still keep it timing accurate (even if not completely cycle accurate). I haven't dug, but some of the ones for modern machines seem to compile instead of interpret yet I don't know how they handle timing.

<comment><USER12> What is the difference, in this context, between timing-accurate and cycle- accurate?

<comment><USER13> Timing accurate: this instruction takes four cycles, so do the work, and increase master clock by four.

Cycle accurate: this instruction takes four cycles, so this push the address to the multiplexed A/D bus. Next cycle read the data. etc.

So more fast forwarding in timing vs cycle accurate. Typically timing accurate doesn't implment things like wait states injected by other peripherals accessing the main bus either.

</comment></comment></comment><comment><USER14> If you're interested in processor emulation, here's a really cool one done in HDL for the pdp 11/70: [https://wfjm.github.io/home/w11/](https://wfjm.github.io/home/w11/)

</comment><comment><USER15> This is pretty much about writing a cpu emulator. A system emulator is much more complex even as far back as a gameboy or Sega genesis. I think there is still great value in writing your own cpu emulator as described in the article.

<comment><USER16> I used this website for information for both a Chip8 emulator and later an NES emulator (which uses a 6502). The PPU for the NES was definitely more of a struggle but Emulator101 is still a great resource even if you want to go on for emulating other chips / peripherals :)

</comment></comment><comment><USER17> If you like writing small emulators, try the Synacor challenge and/or ICFP 2006. Extremely challenging puzzles, and both start with writing a simple emulator.

</comment><comment><USER18> Does this address optimizations, as seen in LLVM and JIT compilers?

<comment><USER19> As far as I can tell it does not feature a recompiler, only an interpreter. Emulator recompilers are very tricky to get right. Since you're working directly with machine code instead of nice bytecode you generally need a bunch of heuristics to avoid optimizing something that shouldn't be optimized (register access being an obvious candidate). Furthermore machine code (especially for older consoles) tend to use self-modification liberally so you need to figure out the right heuristic to invalidate your recompiled cache when the machine code is modified.

In general for these very old systems (anything 8bit these days I'd say, and even 16bits if you're only targeting the desktop) a recompiler is probably more trouble than it's worth.

<comment><USER18> > In general for these very old systems (anything 8bit these days I'd say, and > even 16bits if you're only targeting the desktop) a recompiler is probably > more trouble than it's worth.

I guess that's also because modern CPUs can easily handle very old systems, which were relatively slow, and hence software written for it had to be efficient.

However, if emulating e.g. ARM on i86 (or vice versa), I guess that recompiling optimizations may be necessary to keep things efficient. Of course emulating JITted code can be a pain because of self-modifying code. Wondering: does VirtualBox use such approach?

<comment><USER19> >I guess that's also because modern CPUs can easily handle very old systems, which were relatively slow, and hence software written for it had to be efficient.

It's that but it's actually worse than that: power aside, one hertz for one hertz, modern systems are generally much more recompiler-friendly than a GameBoy or Atari. The reason is that modern software is written using high level abstractions, you have well defined firmware interfaces, self-modifying code has become the exception instead of the rule etc... That lets you make simplifying assumptions that can speed things up greatly. For instance "I don't have to worry about self modifying code unless I encounter a call to the firmware's flush_cache method". That's better than "I need to be careful with every write to memory because it might potentially write to code instead of data or registers".

Back in the days it wasn't rare to find timing loops that required cycle- accurate emulation, for instance because the drawing code expected that the delay between the interruption until a certain instruction was executed was precisely _n_ cycles. I doubt many people do that on a PS4, actually I would be surprised if you could make something like that work between all the various hardware revisions and firmware updates.

So older hardware generally requires the emulator to be a lot more strict which often means that you end up with a comparatively slow recompiler. Given the complexity of a recompiler compared to a simple interpreter it's simply not worth it anymore for these old systems.

</comment></comment></comment></comment><comment><USER20> too bad it's in objective-c :/

<comment><USER21> It does go into Objective-C later, but it starts with C. You can see that if you go to Disassembler Pt 1.

</comment></comment><comment><USER22> [http://www.emulator101.com/logical- operations.html](http://www.emulator101.com/logical-operations.html)

       /* Example 2: turn on one LED on the control panel */
       char * LED_pointer = (char *) 0x2089;
       char led = *LED_pointer;
       led = led | 0x40; //set LED controlled by bit 6
       *LED_pointer = led;

Really?

<comment><USER23> What's wrong with that? If you're writing code for pedagogical purposes, it doesn't necessarily need to be as concise as possible.

<comment><USER19> I know some people who object to one-line read-modify-write of hardware registers, the idea being that glancing at the code the non-atomicity of the operation might be lost. I also generally don't use raw volatile pointers directly when dealing with hardware registers, too easy to forget a "volatile" somewhere and have the code behave erratically. I always use tiny read32/write32 wrappers instead.

<comment><USER4> Absolutely. Modern compilers are trivially able to inline such operations, so there's no reason not to make your intentions and separation of operations crystal clear. After all, you're going to read the code a lot more often than you'll write it.</comment></comment></comment></comment>


Learning AngularJS Magic: Expressions - <AUTHOR> http://www.pathgather.com/blog/2014/12/7/learning-angularjs-magic-expressions

<comment><USER2> Or just write function increasePoints() { ++($scope.points) }

Function errything!

</comment><comment><USER3> I hope someone does a series on "forgetting AngularJS magic" when 2.0 comes out and changes everything...

<comment><AUTHOR> The more it uses web standards (e.g. Object.observe), the less magic will be required (e.g. $watch), so I think you're right :)

<comment><USER4> The only reason Object.observe is a standard is because the angular guys pushed it through. It's generally agreed to be a wart of the new spec [0].

[0] [https://twitter.com/floydophone/status/469214241732714497](https://twitter.com/floydophone/status/469214241732714497)</comment></comment></comment>


How to explain rss to normal people. - <AUTHOR> http://internetducttape.com/2008/02/28/explain-rss-using-facebook/

<comment><USER2> This is how I have explained RSS for the past 4-5 years:

Question: Simplifying greatly, what are the 2 ways you can get a newspaper/periodical/magazine?

Answer: One way is for you to go buy the newspaper/periodical/magazine (Pull). The other is for the newspaper/periodical/magazine (Push) to be delivered to you whenever it is published.

RSS is similar to getting the newspaper delivered to you, and hence saving you from hitting refresh or checking a website to see if it has been updated.

Similar to email, RSS needs a reader/client to read these updates, and these readers/clients could be similar to microsoft outlook or yahoo/gmail/hotmail.

</comment><comment><USER3> Actually, rss is reasonably mainstream. You don't have to explain rss to normal people!

Most of my non-hacker friends use some sort of feed reader. They know that RSS lets them read blog posts in their feedreader without visiting the blog, even though they may not know the format specifications.

<comment><AUTHOR> I guess it depends on who your friends are, but mine have no clue. Part of the trouble is that awful name.

</comment></comment><comment><USER4> RSS needs to be integrated into email clients, not web browsers. RSS's "notification" use cases are closer to email, even in the terminology ("subscribe"). If there was better support in email clients, RSS would see more use for things like ecommerce shipment notifications, website and ecommerce "newsletters" (which often get marked as spam when sent as email) and the like. The user remains in "control" then, unlike email spam, because they can unsubscribe by grabbing the feed anymore. Reach statistics would be more accurate too (for the same content that was traditionally delivered via email).

</comment><comment><USER5> Honestly, I still think RSS is useless to normal people.

<comment><USER6> _"... Honestly, I still think RSS is useless to normal people. ..."_

Useless in the same way plumbing is to a house. I like to think of RSS & Atom as the plumbing of the Internet.</comment></comment>


Linden Lab CEO responds to Lively, says Second Life UI will be simplified - <AUTHOR> http://is8.thestandard.com/news/2008/07/10/linden-lab-ceo-responds-lively-and-vivaty

<comment><USER2> A better UI would go a long way, but they missed their chance. There isn't going to be a big swell in MMO worlds for a while that aren't game-centric. The idea has, and will resurface, probably when the next big technical hurdles in modeling and rendering are overcome. My guess is that it won't be Second Life making those advances either.

</comment><comment><USER3> Basically they are just adding a "get naked" button.</comment>


Real-time thoughts on the husband and wife startup. - <AUTHOR> https://medium.com/lessons-learned/523a01d69e18

<comment><USER2> I know and respect Chris and Jenny. Although I'm against working with family for the most part, if you must, I agree with most of the advice. However, the Co-CEO choice is a complete cop out. It never works. You're simply delaying a decision under the guise of marital compromise, but your business will suffer if/when you hire more people. Just my humble $.02.

</comment><comment><USER3> Like any strategic team, roles and responsibilities are defined (be proactive) and weaknesses are complemented by strengths, vice-versa...like the divide- and-conquer described, spot on! In similar fashion, I'm starting a company as well, and while I'm not married to my business partner and co-founder, I'm mindful that I draw from best practices from my marriage of 14yrs, e.g. "Let the small things go", "choose your battles", and "there's more than one way to skin a cat"...my two cents - best wishes on the Loveseat... ;)

</comment><comment><USER4> Excellent tips! Any couple working on a business together should read this!! The app looks like a great idea too!

</comment><comment><USER5> Love it all... love the post, love you two, and love the app = Loveseat. Anxious to see more of all.

</comment><comment><USER6> Great post Chris. Good luck to you both!

</comment><comment><USER7> Love it!</comment>


Facts and Stats about your name - <AUTHOR> http://www.namedat.com/ <comment><USER2> Entertaining! 833433 humans live in the U.S. with the first name Thomas. That number seems a bit low

<comment><USER3> Hm, there are around 340million people in the US. So around every 200th man would be a Thomas. Seems about right to me...</comment></comment>