Ask HN: Ohours.org is closing down – what's an alternative? - <AUTHOR>

I want to host open office hours but need a better tool to manage requests than gmail + google calendar. I liked the idea of ohours.org with requests, scheduling, etc. -- is there an alternative I could (ab)use? <comment><USER2> A friend recommended You Can Book Me, which she's used for office hours: [https://gb.youcanbook.me](https://gb.youcanbook.me)

It's the only alternative I'm considering for a set of group open office hours.

For just you, Doodle has a MeetMe feature which might suffice: [http://doodle.com/meetme](http://doodle.com/meetme)

<comment><AUTHOR> Thanks! I will try out [https://gb.youcanbook.me/index.jsp](https://gb.youcanbook.me/index.jsp) and see how that goes, sounds it fits the bill!</comment></comment>


Why Designing a Mars Rover Like Curiosity Just Got a Lot Easier - <AUTHOR> http://www.wired.com/design/2012/08/designing-the-curiosity-mars-rover/

<comment><USER2> When, as a writer for Wired, you re-write a company's press release into a news story, sometimes stuff like this slips in (second paragraph):

"His company's software designed Curiosity."

When that happens, it reveals you for the hack you are.

If the writer had taken the time to get an independent perspective, maybe the story would have been better.

</comment><comment><USER3> If the design and testing of physical objects occur in silica, I wonder if by picking up the speed and iteration of software, they'll also pick up the size, scope, and complexity of software.

While doing software dev has its advantages, there are well-known disadvantages as outlined in classics like the mythical-man month.

Will physical dev pick up the same disadvantages? Or is there some constraint on designing physical things that help contain complexity?

</comment><comment><USER4> Some strange wording. As far as I know PLM is more of a concept than a specific program, and it's not really new.

<http://en.wikipedia.org/wiki/Product_lifecycle_management>

<comment><USER5> Careful, you will disturb the seamless synergy of holistic lifecycle design.</comment></comment>


Employee Performance Reviews Do More Harm Than Good - <AUTHOR> http://www.jacksonfish.com/blog/2009/05/21/employee-performance-reviews-do-more-harm-than-good/

<comment><USER2> I don't think this is necessarily true. I realize most employers aren't like this, but my boss does a very good job of politely and clearly telling me what he expects of me and what I can expect from him. Our performance reviews are always positive experiences, and I leave with specific goals to accomplish before the next review: sometimes goals to improve my job performance, sometimes goals to improve myself. Instead of focussing just on a bonus or pay increase, it's basically a reconciliation of "what would you like from us", and "what we would like from you".

I think if more employers looked at it this way, and were more casual and open about the whole process, it would be a lot more beneficial to their companies.

<comment><USER3> i don't necesasrily disagree with you here, but i think that the process would be better if it were a rolling review with constant feedback and dialog, instead of something built up as an important once-a-year event.

<comment><USER4> Rolling feedback should be part of the annual review process at any competent company.

Where I work the annual review looks at those above, below, and beside you and doing that several times a year is far to time consuming. IMO, the trick is managing the less formal feedback and using that as part of the formal review. Which is why your manager does not create your review. They might be biased by something from last week but your coworkers tend to think back to the important projects over the year.

</comment></comment></comment><comment><USER5> My girlfriend is a Ph.D. student in industrial organizational psychology. She had this to say:

I think this view is unnecessarily extreme. I think the correct way it should have been presented is that performance reviews should be done in a more useful way. Not all performance reviews are for the purpose of rationalizing bonuses. I think feedback on one's performance accompanied with goal setting of specific behaviors is fundamental in sustaining good work and motivation in employees.

I do think that ranking employees doesn't work most of the time because it not only creates competition but discourages those who have been performing well, but just not so much as others who could potentially be ass-kissers as what the article says.

The bottom line is that , w/o a review/feedback on your on-going performance, you wouldn't have an idea of what you should work towards to and u cant assume that all employees are intrinsically motivated to do better.

Heuristically, people lose their sense of engagement about 5 months after they are hired and this can keep deteriorating if immediate supervisors don't provide the support/encouragement/feedback.

One last thing, research has repeatedly shown that regular performance feedback increases motivation and performance in the long-run. what's important really is how the feedback is given.

<comment><AUTHOR> I generally agree with your girlfriend.

And to be clear, I never said that regular consistent performance feedback was bad. I said that the annual performance review was not a substitute for it.

</comment></comment><comment><USER6> In my experience employee reviews are typically de-motivational. My employer has me rate my team members on a scale from 1 to 6 on a variety of work related criteria. The basis for getting a raise rests on the employees ability to increase their ratings on a review to review period. It's horrible (and I've told them I think so).

The entire ratings system is ripe to be exploited by people who know how to play the game. _This is especially bad if non-technical people are reviewing technical people._ I had to witness the worst developer on my team become the highest paid because he knew how to sell himself and could speak a language that upper management understood.

I'm more in favor of (arguably) less subjective methods of determining an employees worth (like Bioware's RPG style ratings, or Joel Spolsky's ladder). There's still room for person bias, but at least there's _less_ room.

<comment><USER7> My situation is similar; the manager who decides on reviews for our "team" THINKS he's technical, but he's basically useless. He hinders communication between team members, reassigns people to projects arbitrarily and without warning, and has had a 100% attrition rate for his team since he joined it. No one, even folks on other teams, have had good experiences working with him, because the one thing that he does NOT do is work to remove barriers that we developers have to face in order to get our jobs done. (He creates far more barriers than he removes.)

And yet HE is the one who evaluates OUR performance... making the entire process a waste of time.

To top it off, he isn't even honest in his reviews... as far as I can tell it's all politics for him, basically doing anything he can to shift blame down from him onto us.

<comment><USER8> This is why everyone's review should include feedback from peers and, where applicable, subordinates.

It's also a good argument for including discussions with your boss's boss in your review, to avoid a poor but politically savvy manager being able to competely filter feedback from everyone below them to the higher-ups who could do something about that poor manager in the middle.

<comment><USER7> I agree. I think that's a good idea.

</comment></comment></comment></comment><comment><USER9> Unfortunately, at least in the U.S., unless there's some kind of formal & documented evaluation process for compensation, they're opening themselves up to a whole host of potential lawsuits.

One useful strategy we've had is to do 90 day (quarterly) quickie evaluations followed by a formal, but succinct, annual review. If both parties are doing their jobs, "pathway/goal" guidance given informally during the quarterly process and throughout the year should lead to very little surprises in the annual review.

<comment><USER10> Also performance review depends upon the corporate culture but then the bigger you are the diluted culture you have ...

At the same time you can use performance review to your own advantage, how? well you can easily identify whether your manager is just a good manager or GREAT manager - Good managers help their employees succeed in whatever role they happen to be in. Great managers see the unique talents of each employee, and then create the role that's a perfect vehicle for those talents. Great managers remove the obstacles that prevent their employees from unleashing their talent. And they make sure each employee has the right opportunities, the right stage, the right audience, to be fully appreciated.

</comment></comment><comment><USER11> Employee performance reviews that enforce an arbitrary curve-based ranking or grading system often to do more harm than good.

I have seen employees who have performed well all year get demolished by a performance review where they were rated a "3" or "4" out of "5" because HR required only one "5" per department and two or three "4"s, and expect the majority of employees to be a "3". (Thankfully, they didn't require that each department designate a "1" goat.)

That being said, I have found that performance reviews that focus on how the employee has improved the business and seized opportunities (or not) and focus less on artificial competition are extremely beneficial.

<comment><USER12> +1 for mentioning the arbitrary curve-based ranking common in big companies.

Tightly coupling salary/bonuses to performance reviews with this type of system is a disaster.

Unfortunately, my experience is that most managers in such a system lack the insight to minimize the effect on employees. Maybe when you're talking about minimizing the effect of telling an employee they are (non-deservedly) one of the "3" performers, you've already lost the battle . . . Add in the inevitable weird corporate culture stuff "you are a '3' because you got promoted this year, it's just your turn in the box" and you have a perfect recipe for draining motivation away from employees.

</comment></comment><comment><USER13> What blows my mind is that no company I have worked at has ever set performance goals on day 1. It doesn't make sense. We set goals at annual reviews so why not on day 1? Why blindside an employee during the first annual review?

I talk to everyone on my team 3 times a year to make sure I'm giving them what they need from me and vice versa. The informal manner helps in keeping the whole process relaxed and the feedback genuine. The 4 month period in between gives ample time to improve things without stretching it out for a whole year. Iterate, get feedback, iterate, get feedback. It works for startup business plans so why wouldn't it work for self development?

</comment><comment><USER14> The last company I worked for had these '360' performance reviews where you get reviewed by a few coworkers as well as your boss. Also there was no money involved. I thought it worked really well. While you'd hope your coworkers would give you pointers on how you could improve throughout the year, realistically, shyer developers won't do that, and this gives them the opportunity to do so (mostly) anonymously.

</comment><comment><USER15> I once worked with a manager who was very up front about using performance reviews to retaliate against any subordinate who crossed her. Luckily she wasn't my boss.

<comment><USER16> Your boss was merely more subtle about it.

</comment></comment><comment><USER17> If you eliminate performance reviews altogether, and issues rewards as team rewards, why would top performers (the ones who might regularly bank 7-15% raises instead of 2-4% raises) stay with your company for the rock-steady, everyone-gets-5% return, when they can go somewhere else and make meaningfully more money?

It seems that the socialist (not tarring, just naming) approach to granting team raises is a powerful attraction to low performers.

In a small startup, with relatively little money to throw around, it probably doesn't matter and eliminating them may actually be a net win. Once the company reaches the 500+ person mark, failing to recognize ($$) individual achievement just demotivates and chases away those who would be your stars.

<comment><USER8> But what _is_ "individual achievement" in a field like software development? In the sort of teams one typically finds in those 500+ person organisations, nothing is truly done by individuals.

Even if a genius developer produces a brilliant implementation of new feature quickly and with a low bug count, someone had the idea for that feature and worked out how it was going to integrate with other features, many people probably wrote a load of other code the feature depends on even if that code didn't itself create the same buzz, people were involved in testing the feature, producing the marketing, and on and on. While everyone might agree that the genius developer had done a good job for the team, how can you say quantitatively and objectively what his contribution was? 10%? 25%? 90%?

In contrast, the success of a project team is generally fairly easy to quantify: divide the cost of running the team by the amount of revenue generated by the projects they produce.

The sad reality is that while serious guru developers may indeed be an order of magnitude more productive than average, and some at the other end of the scale are actually counterproductive, salaries for employees will never realistically reflect this. The bottom-feeders always get more than they deserve, while the top guys will never get credit proportionate to their contribution. After all, this is why many of us get out and go freelance or start our own businesses.

But within that reality, I can't help wondering whether the guys at the top would still rather work with a motivated team than be individually slightly better compensated but surrounding by jealous, bitter colleagues.

<comment><USER17> Another alternative is to permit salary ranges that are a factor of 2 wide, meaning you can literally pay your "best" people (itself a terribly loaded/complex term) twice what you pay the average qualified employee at that level. Yes, paying someone 10% more than their peer isn't enough to recognize excellence. Paying them double probably is in many cases. Hell, even 50% over makes a marked difference in quality of life and is going to be both noticeable and relatively harder to match.

In my past experience, even at employers where everyone to the last employee was totally qualified, there was general consensus about who the top, distinguished cohort was, and to the extent that people were jealous or bitter, it centered around the fact that those people were better, not around the fact that they got paid more.

Even if nothing in a mid-sized company is truly done by individuals, I know the handful of employees that would really hurt to lose and the buckets full where we would be perhaps genuinely sad to see them go and wish them well in their next endeavor, but that I wouldn't lose much sleep over it. Survey 10 high-level managers, and the lists would line up pretty well I imagine. If that's the case in your org, and you aren't making damn sure that pay, within fairly BROAD bounds, isn't going to be a reason for the stars to walk, you're doing it wrong IMO.

</comment></comment></comment><comment><USER18> Presumably the author here is drawing a distinction between performance reviews and development reviews? It seems like it's quite a good thing to review how a developer is getting on regularly, and find out what things they'd like to do more of and how they could develop their skills, without it being tied to bonus distribution.

</comment><comment><USER19> This article feels like it was taken out of 7 Habits - Think Win/Win. Recurring performance reviews certainly cause unnecessary competition and fear among employees, breaking up their "team" ability. I just wish the article had addressed the deeper question of how to tell an employee they're doing poorly without such a review.

<comment><AUTHOR> I'm planning a follow-up post on that topic. :)</comment></comment>


Technical debt and tacking into the wind - <AUTHOR> http://www.tedunangst.com/flak/post/technical-debt-and-tacking-into-the-wind <comment><USER3> _Looking back, maybe Fog Creek should have built itself a boat instead of walking up the beach. Except rule number one was never, ever rewrite code._

That is the crux of the problem. Sometime requirements change enough that a total rewrite is the better and cheaper option. Having to support an entirely different operating system is certainly a change of that magnitude.

Obviously, second guessing is easy and shipping is hard, but can anyone tell me coherently why Joel didn't push for a rewrite when he received the requirement to support Unix servers? My perceptions may be inaccurate here, but it seems like the reasonable thing to do when confronted with having to support Unix servers in addition to Windows is to rewrite the code in a cross platform way, and perhaps add shims to support the differences between platforms. I don't think I know anybody personally, whose response would be, "I know, let's write a compiler to translate our VBScript into something that runs on Unix." And in fact, lots of other successful companies (Twitter, Reddit to name two offhand) _have_ successfully embarked on full rewrites, with much less justification than having to support a brand new OS.

It seems to me that Joel was so committed to his "don't rewrite" principle that he was willing to take on a massive amount of technical debt to avoid comprimising on it. Which... well, it worked out well in this case, but I have a hard time seeing it as good general advice to follow when building software.

<comment><USER4> Isn't the story of Wasabi that changing OS's and dev platforms is manifestly _not_ a good reason for a rewrite?

People seem to be mistaking the big story about Wasabi today. Wasabi _worked_. Yes, they're migrating away from it --- ten years after introducing it. They defered to 2015 what people on HN are telling them they should have done in 2005.

Not only that, but the "port" to C# was _mechanical_. They _didn 't_ rewrite to get away from Wasabi. Because they put the time in to build Wasabi, all their code was instrumented, and they were able to _write a program_ to do the final port. They deferred the port for a decade, and also mechanized it.

I can't help but think you've taken exactly the opposite message away from the posts today that the authors intended.

<comment><USER5> There's nothing new here, a company can have a crap tech stack and still build a successful product if it has a competent team and good leadership.

This was I imagine a bit of a PR problem for FogCreek, because at the end of the day they were using Visual Basic to build a Windows-only website, not exactly the most awesome stack in today's world (or yesterday's for that matter).

It's normal that they want to communicate to the world the fact that you won't have to learn their custom version of Visual Basic in order to work there. It's also normal that people aren't giving them a pass that easily.

<comment><USER4> I think you may have commented on the wrong thread. I can't see what your comment has to do with mine.

</comment></comment></comment></comment><comment><USER6> I really like the metaphor of walking up the coast because you're getting closer to London. So many projects are like that, some sort of fitness function that tells you that you are getting incrementally closer to your goal, but nothing to tell you that you are fundamentally ill equipped to actually make it to your goal, or even that your entire strategy which is "working" is fundamentally wrong.

<comment><USER7> They made it to London, though.

</comment></comment><comment><USER8> _Those who don't learn from history are doomed to repeat it. Any day now, I suspect some fools are going to want to write web apps, but they won't want to use raw javascript and they'll create some ridiculous custom language to javascript compiler. I can only hope they have the good sense not to tell anybody about it._

<comment><USER9> We wrote a custom language, only it's javascript. We built a very simple module/class system that compiles to javascript, in javascript. It consists of functions called 'Module', 'Class', 'Static' and such, that generate javascript code. This has had so much value for us. It allowed us to abstract some patterns into 'compiler extensions' for things like scoping, timeouts and cancellation, etc. And more recently, it allowed us to add typechecking by outputting typescript instead of javascript. I think it was a great idea and would do it again, but it's only been 6 years, so perhaps ask me again in 4 years :)

</comment></comment><comment><USER10> I was 50/50 on whether or not he was just trying to defend poor decision- making with this post, up until this line:

> It's worth repeating that what's generally overlooked is that each decision > was made by the team and a variety of alternatives were considered. Moving > forward with Wasabi .NET was only done after considering a lot of > alternatives, including porting to python.

That right there is the crucial point for me. I think the real danger (and concern) with these types of technical debt situations is that they're often forced on engineering by upline management (i.e. non-coders). But if the folks who will have to maintain any mess they create are the ones making these decisions, the decisions are likely the correct ones-- at least at that time.

</comment><comment><USER11> well worth reading for the insight into behind the scenes at FogBugz - <USER2> depressingly clear headed and awkward discussions undoubtedly had. and one suspects another lesson - don't have your whole company dependant on one product.

I still adhere to the idea that LOC is debt and LOTests is capital.

</comment><comment><USER12> So, what about the path between "complete rewrite" and "invent a proprietary intermediate language": doing what they did at the end (running a permanent transpilation and committing the result) at the beginning? They could have just moved from straight ASP to straight PHP, and then later done it again to move to straight C#. No rewrite necessary, no technical debt necessary.

<comment><USER7> Path dependency. At the time, PHP was not as easily deployed on Windows as ASP, and so the original design was set up to give them PHP on *ix and ASP on Windows.

</comment></comment><comment><USER13>
        > A much hipper programmer might say something like "you
        > ain't gonna need it."

This is a little bit like saying "a much hipper programmer might describe this approach as being 'AJAX'", a term that is at least 4 years older than YAGNI :-)

</comment><comment><USER14> FogCreek seems to be winning the game. So I agree with the sentiment that it was productive debt.

<comment><USER15> Winning what game? I can't find solid numbers about bug-tracker marketshare, but if I type "FogBugz vs" into Google, it throws up Jira as the first result. If I type "Jira vs", FogBuz doesn't show up -- I get Rally, Trello, TFS, Redmine, and Asana first.

FogBugz definitely used to have a lot of mindshare, but...

<comment><USER14> You have a valid point. But just as an aside, you know who makes Trello, right?

<comment><USER16> Yes, that would be _Trello, Inc_

[https://trello.com/about](https://trello.com/about)

The fact that FC managed to come up with a successful (but not necessarily profitable) product idea and spin it off into its own company doesn't really say much about the validity of their decisions on a completely different product.

Nor is it evidence of Fog Creek "winning the game" (whatever that might mean)</comment></comment></comment></comment>


Rekursiv - <AUTHOR> https://en.wikipedia.org/wiki/Rekursiv <comment><USER2> > Linn had finally overreached its finances and the project was clearly at > risk, but the finalstraw was a Linn delivery driver called Shug. He reversed > into Davids Porsche and Ivorunwisely decided that, since the incident had > happened on private ground, Linn werentresponsible and wouldnt pay for the > repairs. David quit and "chucked all that I had in theway of bits and bobs > of hardware into the Forth and Clyde Canal."

Hah!

<comment><USER3> Ivorunwisely = Ivor (Founder of Linn) unwisely

</comment></comment><comment><USER4> David Harland is a _very interesting_ person. Why would a professor of computer science at St Andrews University suddenly drop out of computing entirely, and move to writing about space exploration? It turns out he has strong opinions about the state of modern computing: [https://news.ycombinator.com/item?id=8217780](https://news.ycombinator.com/item?id=8217780)

<comment><USER5> My prejudice is that any "audiophile" (see Linn) and anyone associated with them is a bit ... _interesting_

</comment></comment><comment><USER6> the linked source document is a fun read: [https://www.slideshare.net/sebrose/rekursiv](https://www.slideshare.net/sebrose/rekursiv)

<comment><USER7> Here is the one technical bit, the rest is a very entertaining job story.

> The thing about the REKURSIV was that users could program different > instruction sets. James Lothian, who was worked at Edinburgh University > microcoding the Prolog instruction set describes it as being "a really > interesting and unusual design: the main memory was in effect a persistent > object store, with every object having its type, size and position in memory > known in hardware, so that (for example) the hardware could prevent you from > 'running off the end of an array and corrupting surrounding memory. Paging > of objects into and out of main memory was handled by the host machine > (generally a Sun 3), and was completely transparent, even at the microcode > level. This meant that you could write arbitrarily complex algorithms in > microcode, even recursive ones, hence the machine's name. Every object had a > unique identifier (a 40-bit number), and the MMU chip would translate that > into the object's store address (if it was in main memory). Since only the > MMU knew the object's address, an object could be moved around in memory > without having to update references to it (since they were in terms of its > object number); this made garbage-collection particularly straightforward."

<comment><USER8> "users could program different instruction sets"

High-Level Hardware Orions could also do this:

[https://en.wikipedia.org/wiki/HLH_Orion](https://en.wikipedia.org/wiki/HLH_Orion)

</comment></comment></comment><comment><USER9> Byte had an article about it in the November 1988 issue [https://archive.org/details/byte-1988-11-next](https://archive.org/details/byte-1988-11-next)

This would be the issue that showed the NeXT cube.

</comment><comment><USER10> This is, of course, complete hearsay, but Tim Rowledge ( [https://news.ycombinator.com/user?id=timrowledge](https://news.ycombinator.com/user?id=timrowledge) ) told me once that the Recursiv processor was used in a prototype british "smart torpedo." The official story was the CPU locked up during a test and the torpedoes have never been seen since.

</comment><comment><USER11> [http://www.brouhaha.com/~eric/retrocomputing/rekursiv/](http://www.brouhaha.com/~eric/retrocomputing/rekursiv/)

</comment><comment><USER12> > The project originated in an initiative within the hi-fi manufacturer Linn > Products to improve its manufacturing automation systems, which at the time > ran on a DEC VAX minicomputer. This resulted in the design of Lingo, an > object-oriented programming language derived from Smalltalk and ALGOL. Due > to the poor performance of Lingo on the VAX, a subsidiary company, Linn > Smart Computing Ltd., was formed to develop a new processor to efficiently > run Lingo.

This brought to mind the J. Lyons & Co. (a 1950s UK restaurant chain and food manufacturer) who built the LEO computer [1] to run their own business, and ended-up manufacturing them as the first computer designed for business use. A big departure from their main business.

[1] [https://en.wikipedia.org/wiki/LEO_(computer)](https://en.wikipedia.org/wiki/LEO_\(computer\))

</comment><comment><USER13> I have the book they wrote up about this machine.

I keep meaning to go back and look at it and see how practical it would be to write up an emulator or an implementation on FPGA. But the absence of any software to run on it for testing would make it tricky.

<comment><USER14> Also the book is hilariously written. Very dry humor throughout. Definitely an interesting read.

</comment></comment><comment><USER11> [http://www.merlintec.com/old-self- interest/msg00259.html](http://www.merlintec.com/old-self- interest/msg00259.html)

</comment><comment><USER15> > the processor instruction set supported recursion

I think that's one of the most interesting parts. It would be interesting to see this implemented in a more general processor's instruction set (like x86). I wonder how much performance boost there would be in some algorithms if you could compile down to a set that included a recursive instruction?

<comment><USER16> It would be interesting to learn a little bit more about what this means. X86 "supports recursion" in the sense that it has a stack and the push, call, ret, syscall, etc. instructions make use of it.

<comment><USER17> A bit of googling led to this document: [https://www.academia.edu/5256838/Rekursiv_an_object- _oriente...](https://www.academia.edu/5256838/Rekursiv_an_object- _oriented_cpu)

<comment><USER18> Unfortunately that link goes to an error page for me :(

<comment><USER19> This seems to work

[https://www.academia.edu/5256838/](https://www.academia.edu/5256838/)

</comment></comment></comment></comment></comment><comment><USER8> I applied for a job working on Rekursiv in late '87 - never did hear anything back from my application...

</comment><comment><USER20> Link to pdf of magazine with article. Without need to login to linked in. Search for "Getting REKURSIV" article

[https://accu.org/var/uploads/journals/CVu213.pdf](https://accu.org/var/uploads/journals/CVu213.pdf)

</comment><comment><USER11> [https://ethos.bl.uk/OrderDetails.do?uin=uk.bl.ethos.281981](https://ethos.bl.uk/OrderDetails.do?uin=uk.bl.ethos.281981)

</comment><comment><USER21> But does it run TaOS?

</comment><comment><USER22> "Due to the poor performance of Lingo on the VAX, a subsidiary company, Linn Smart Computing Ltd., was formed to develop a new processor to efficiently run Lingo."

y tho

<comment><USER23> Why not?

Ivor is well known for being single minded and opinionated. He'd proved his heretical and opinionated point about turntables against the general industry view in the sixties, and built a successful and highly profitable business on the back of it. From nothing.

From all I've read and heard of him, it's just the sort of thing I might expect. :)

<comment><USER24> _" if they were to build a computer system that would run Lingo fast enough they would rule the world i.e. corner the CIM market"_

Others had similar ideas about inventory and object oriented languages:

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


Show HN: Archivist, stream live concerts to your iPhone - <AUTHOR> http://itunes.apple.com/us/app/archivist-stream-free-live/id432850880?mt=8

<comment><USER2> I use this in the morning right after I wake up. Not even joking. It is amazing to just play a live concert over Airplay, especially since it filters down to bands in my ipod library.</comment>


Substack.com - <AUTHOR> All the promise and hype that accompanied Facebook and Twitter in their earlier days have turned into something quite different: platforms for hate and group-think at its worst. Do people think that Substack.com will be destined for the same or worse fate? Does anyone know if substack.com has put in controls/monitoring for this kind of thing? <comment><USER2> People ask to receive newsletters or RSS updates. Substack isn't a middle-man it's a carrier.

The problem with Facebook and Twitter is that they determine what a user sees, and are subsequently responsible for it.</comment>


Going to a Trade Show (2004) - <AUTHOR> http://www.ericsink.com/bos/Trade_Shows.html

<comment><USER2> Nice timing. We're getting ready for OSCON this coming week; our first trade show. So, I guess actually it's a week or two late, since we don't have time to change anything at this point. Nonetheless, an interesting read.

We're keeping it super-cheap; even with 500 T-shirts, two nice and huge banners, a projector and giant screen (80" diagonal), a nice printed quick reference card to give away, and paying someone to help us out with the booth (not a "booth babe", though she is cute) since there's only two of us who can be in town for the event, we're coming in well under $10k, including the cost of renting the booth. Of course, the fact that it's local is a big help. No travel expenses to factor in.</comment>


Gmail, talk, PlayStore and Google Apps down - <AUTHOR>

Currently these google products are down in India. PlayStore on web is down but works fine on Android.<p>Imagine in future your phone becoming a brick when google services goes down. <comment><USER2> "Currently these google products are down in India" - for some. Works fine for me :-)

</comment><comment><USER3> Could have put 'India' in the title somewhere.</comment>


Shut up, Brain. Stop Thinking About Cool Shit. - <AUTHOR> http://tweetminer.net/blog/?p=1

<comment><USER3> I'd argue that's what business partners are for. You simply can't be good at everything. I tend to have the opposite problem this guy has - I see the big picture, but get impatient with the details.

I can code (well, sort of anyways...) but the thought "Is jQuery's $().keydown routine hogging too much processor time? I need to profile it." will most likely never cross my mind.

However, I think I suffer from the same problem in that I'm continually trying to get myself to think this way and learn this stuff, just so I can try to implement my ideas.

<comment><USER4> You mention you need partners. Do you think one person is more important than the other to the success of the business?

<comment><USER3> In a philosophical sense, no. Realistically, though, the more important aspect is not whether one partner is more important but what the team dynamic is like. If one partner perceives they are more important, or feels under- appreciated, then it's likely the partnership will get in the way of business and, ultimately, success.

My belief is that in a successful partnership (as in marriage), both people must be comfortable in their quite different but equally important roles.

</comment></comment></comment><comment><USER5> Even if you have a business partner - I wonder if you should really be writing your own apps instead of working for someone else if you consider the business side of it SO boring. After all, no matter how deep into coding you are - <USER2> it is your business, you WILL have to get involved.

OR build a kickass app, use it as a portfolio and secure a good job somewhere. Maybe someone else's startup...

</comment><comment><USER6> A reply to the article: [http://robotr.tumblr.com/post/192059426/dont-shutup- your-bra...](http://robotr.tumblr.com/post/192059426/dont-shutup-your-brain)

<comment><USER4> I agree. You have to pursue what you have a passion and obsession for. This is how you become great.

<comment><USER6> Thanks for reading!

</comment></comment></comment><comment><USER7> Honestly, those aren't even the right questions he's neglecting.

For example, you can't just add PayPal integration and be like "now I'll get paid". The questions are: what's the MVP for the free app? What am I going to hold back for premium, and why? What do I think the right price is there, and why?

If you're making an app just for yourself, and you want to share it, post the code on GitHub. If you're trying to sell a product, let me tell you something: blog posts aren't marketing just because you posted something you wrote.

All "business guys" do is resource allocation. We talk to customers to prioritize features; we talk to potential partners to try to enhance distribution; we do the customer service (which helps us further talk to customers); and, yes, sometimes we do the paid advertising and PR and sales calls and marketing stuff.

</comment><comment><USER8> Learn about the business aspect, you can break this down as problems you need to solve and have your brain work on that.

I never liked the business aspect myself, yet I managed to build a business with a couple of employees, and earlier this week someone actually suggested I became a PR advisor — I hate PR, but I love psychology, and PR is really just applied psychology, and there is lots of data mining and math involved in that field.

</comment><comment><USER9> The purpose of a start up is to serve their customers. I think that we at HN tend to downplay the importance of business guy's role in this task. They abstract many of the "mundane" tasks of scaling a business and let the technical guys focus on coding the product. I can't find the essay, but PG did mention that a business, in its simplest form, is a product that serves customers. Though there has always been an "us vs. them" mentality between the two, the ultimate goal is to best serve the customer.

<comment><USER10> This business guy vs hacker thing is a false dichotomy and I'm sick of hearing it. It's good to work with others, and it's good to specialize, but there's no reason one person can't be competent at both.

</comment></comment><comment><USER11> What does TweeMiner do? The video is too slow for me.

<comment><AUTHOR> It's an RSS reader fully integrated with Twitter. It makes it easy to follow your RSS feeds and click a button to Tweet stories (and schedule those Tweets)

</comment></comment><comment><USER12> It is not so easy to switch the field. Like almost every kind of business activity you need some knowledge of a theory along with actual experience. That means you ought to spend plenty of time - learning of an alien skill is a very slow process, and that's why it is so boring. It is very good idea to start exploring new fields, but you shouldn't expect a success which could be compared with your primary skills. So, I think the good idea is to find and hire someone pro and learn from him. You will save the time and money.</comment>


Distributed messaging with BitTorrent Sync - <AUTHOR> http://missiv.es/

<comment><USER2> If a permission-enabled filesystem was bolted on top of BTSync, this could result in all sorts of fascinating log-based applications.

</comment><comment><USER3> Better use SyncThing[1] which is opensource including protocol specification.

There is also project Pulse [2] using syncthing as engine for something maybe similar to the linked article..

[1] [http://syncthing.net/](http://syncthing.net/) [2] [https://ind.ie/pulse/](https://ind.ie/pulse/)

<comment><USER4> The SyncThing project partnered with ind.ie and started rebranding itself a few months ago. SyncThing and Pulse are the same thing, even though the old domain is still up. It's a terrible name change, imho.

You might be thinking of Heartbeat [1]? It's a social network built on Pulse.

1\. [https://ind.ie/heartbeat/](https://ind.ie/heartbeat/)

<comment><USER5> Not anymore. SyncThing will remain as SyncThing and Pulse will be a fork.

[https://discourse.syncthing.net/t/syncthing-is-still- syncthi...](https://discourse.syncthing.net/t/syncthing-is-still- syncthing/1372)

</comment></comment></comment><comment><USER6> Is BitTorrent Sync open source so it can be audited?

<comment><USER7> No. BitTorrent Sync is closed source: "BitTorrent Sync by BitTorrent, Inc is a proprietary peer-to-peer file synchronization tool available for Windows, Mac, Linux, Android, iOS, Windows Phone and BSD." src: [https://en.wikipedia.org/wiki/BitTorrent_Sync](https://en.wikipedia.org/wiki/BitTorrent_Sync)

Check out Tox for FOSS peer to peer, distributed, multimedia messaging: [https://tox.im/](https://tox.im/)</comment></comment>


Brand new homepage for Taskforce... what do you think? - <AUTHOR> http://www.taskforceapp.com/

<comment><USER2> I kind of think the second line:

> Taskforce makes it easy to save time, stay organized, and cut down on email

Should spell out _what_ it is. You've told me you help fix my inbox, but you tell me more marketing speak in the follow up line. Maybe that line could be the line "Convert emails into tasks and clear your inbox."

Just an idea, I really like things that spell out what the problem it solves is (reduce inbox clutter) and also how it does that, in simple terms.

Other than that, awesome.

<comment><USER3> I'd totally agree with that point. Nothing above the fold tells me exactly what the app does. Other than that, i'm loving the actual extension.

edit: i think the rapportive website does this great."Get rich contact profiles inside Gmail", rather than something like "Discover the social side to your email inbox". I can instantly tell what I get straight away through this sentence and the large screenshot.

</comment></comment><comment><USER4> LOVE what you're doing. Gutted Email Oracle Shut down. Can I get an early invite for pointing out this:

<http://www.taskforceapp.com/blog>

404s with:

The page you were looking for doesn't exist.

You may have mistyped the address or the page may have moved.

<comment><AUTHOR> sure Richard - email me at: nic[at]taskforceapp - will get it straight over.

<comment><USER5> Same thing with the api and jobs links in the footer.

</comment></comment></comment><comment><USER6> 'Jobs' link also 404s.

My other thought is that it's very monochromatic. To such an extent that nothing quite draws your eye. In fact, I think the first thing I looked at was the 'Add to Gmail' button because it provided some contrast.

Why is the smallest text on the page the text that describes the features you offer?

I think on the whole you need to do a better job of telling the potential customer how you go about solving their problem. I get that it has something to do with tasks, but, for example, it's not clear what it means to "communicate through tasks, not lengthy emails." Does that mean it only works when other people are also using Taskforce?

<comment><USER7> _"the first thing I looked at was the 'Add to Gmail' button because it provided some contrast."_

That is their primary conversion goal, isn't a good thing that that is what you are drawn towards.

(Kind of agree though, can't quite decide on what's best)

<comment><USER8> I think they should first convince me that I need the app, then lead my eye to the conversion link.

</comment></comment></comment><comment><USER9> It looks very promising and definitely should solve a big pain for me, but when I tried getting more information about what it will do, I got loads of 404s. All learn more pages on <http://www.taskforceapp.com/guide> are 404s along with several others on the website.

Apart the site looks good, but when you move between pages (try homepage and guide page), you will realize that the top bar moves vertically by at least a few pixels. I am sure you guys would want it to be consistent.

Waiting for an invite.

</comment><comment><USER10> I think you need to make better use of the screen real estate. Having the feature examples below the break (Chrome, Mac) is not very effective. This app is in a crowded space (market) and I would move what you think is the distinctive features to the top and make them eye catching. Maybe thinking in vertical stripes with product, validation and features each having a column would be more impactful.

My eye goes to the gmail logo which I do not think is the message you want to communicate first.

</comment><comment><USER11> The page you were looking for doesn't exist.

You may have mistyped the address or the page may have moved.

I am getting the above page for the following;

<http://www.taskforceapp.com/jobs> <http://www.taskforceapp.com/api>

</comment><comment><USER7> My initial reaction was confusion. but I've just realised what the problem is. I'm using NoScripts. You should make it clearer that scripts are required, or ideally make your primary messages visible even with javascript disabled.

Your site isn't doing anything that really requires scripts so you should gracefully degrade to support clients without scripting.

(Also, from the front page, after you click "gmail" or "another email platform" the back button breaks)

Other than that it looks nice, I've signed up. (Edit: Well, I tried to but I need an invite code. hint hint)

<comment><AUTHOR> sure - send me an email: nic[at]taskforceapp

</comment></comment><comment><USER12> I'm usually on a 24" screen where this probably wouldn't be a problem, but since I'm travelling for holidays I'm on a 13" screen, and there is too little "above the fold." This is what I see:

[http://img.skitch.com/20101223-cswsdqrxqjwbat5isf124bkr29.jp...](http://img.skitch.com/20101223-cswsdqrxqjwbat5isf124bkr29.jpg)

I think you could change/sacrifice some of the giant whitespace up top and move more screenshots or real meat of the application above the fold.

</comment><comment><USER13> <http://www.taskforceapp.com/guide/installation> gives 404 (As do the other guide pages)

<comment><AUTHOR> ah yes... didn't put everything up. thx

</comment></comment><comment><USER14> I think unless Marissa Mayer actually emailed you and allowed her email to be disclosable, i'd not use her name in a screenshot.

<comment><AUTHOR> it isn't necessarily _that_ Marissa Mayer... :)

</comment></comment><comment><USER15> I like it.

One comment: I'm not sure if it's my wifi - or the website, but the images took a long time to load.

</comment><comment><USER16> I would love to see more screenshots.

<comment><AUTHOR> I can send you a beta version, if you want to check out the app

</comment></comment><comment><USER17> Great look. Like the colour co-ordination, but get some more screenshots.

</comment><comment><USER18> It looks interesting, unfortunately to use try it, it requires an invite code? It might be useful to put a few codes on HN so that we can try it out.

</comment><comment><AUTHOR> Thanks guys - that makes sense.

</comment><comment><USER19> I like how you have "Marissa Mayer" in your Inbox.</comment>


Keith Alexander Interview: Obama makes almost the same decisions as Bush - <AUTHOR> http://www.afr.com/p/technology/interview_transcript_former_head_51yP0Cu1AQGUCs7WAC9ZVN

<comment><USER2> Brutal re-titling.

In one small part, former NSA head says they make almost the same decisions regarding issues of how to defend our nation.

 _Gen. Alexander: Obviously they come from different parties, they view things differently, but when it comes to the security of the nation and making those decisions about how to protect our nation, what we need to do to defend it, they are, ironically, very close to the same point. You would get almost the same decision from both of them on key questions about how to defend our nation from terrorists and other threats._

Not the same as "Obama makes almost the same decisions as Bush".

And it only takes a few different decisions to be meaningfully different.

</comment><comment><USER3> This title is rather misleading as it refers to one question in a lengthy NSA interview.

I'm curious if you can find any presidential hopeful, save Rand Paul, that would act much differently. National security politics in the US pretty much accepts Bush-era policies as the new normal, as much as that may suck.

</comment><comment><USER4> I always thought the "defund NSA" movement was bonkers. I realize this is from the other extreme of the spectrum but it's nice to hear from both sides.</comment>


Silicon Valley Reality Show - <AUTHOR> http://sfbay.craigslist.org/pen/tfr/2632476149.html

<comment><USER2> I was considering filming an episode of "the hackers" in which we do a reality show following some hardcore hackers as they solve mind-boggling problems.

The show will mostly involve people sitting at the computer typing.</comment>


FinnAPL Idiom Library - <AUTHOR> http://www.finnapl.fi/idilib.htm <comment><USER2> There's also a unicode version of the library at [https://aplwiki.com/wiki/FinnAPL_idiom_library](https://aplwiki.com/wiki/FinnAPL_idiom_library) .</comment>


Defence chiefs spend £12m on anti-Taliban bomb disposal droids that topple over - <AUTHOR> http://www.thesun.co.uk/sol/homepage/news/campaigns/our_boys/3049690/Defence-chiefs-spend-12m-on-anti-Taliban-bomb-disposal-droids-that-topple-over.html <comment><AUTHOR> It was originally designed for surveillance and reconnaissance operations: it was very light and very fast. A soldier could carry it in a backpack, throw it into a second story window or have it chase a car up to 30 mph.

Now they try to retrofit it for an entirely different use scenario; it's no wonder it's a bad fit.

Also, I found it interesting that article did not mention the company that makes them. Originally, DragonRunner was designed at Carnegie Mellon and commercialized at the lab director's start-up in Pittsburgh. That company was bought by Foster-Miller, which was bought by Qinetiq. Qinetiq happens to be a spin-off of the British Ministry of Defence, which certainly explains the lofty contract ($185K per unit!)</comment>


Ask News.YC: Video Advertising Services Similar To AdBrite InVideo? - <AUTHOR>

I've looked around a ton and found that there's very few real competitors to AdBrite InVideo. Their product is mostly quite good and basically exactly what I want. The problem is that it's highly unstable and there's a hugely variable delay in the time videos are added to their database and the time they're playable (resulting in errors for users). Attempts to get them to implement a workaround to fix the problem have received only friendly lip service.<p>Anyone know of a video ad service that lets you instantly wrap your videos in an ads in a simple and reliable way?

<comment><USER2> <http://www.adotube.com/>

<http://www.brightroll.com/>

I searched for "preroll postroll ad" on Google to find these. I have no experience with adotube or brightroll. <http://www.MochiAds.com> does flash advertisements very well, but apparently only for games. I'm not sure if you could hack their ads into a video.

There are also a lot of different video advertisers that are advertising on Google.

<comment><AUTHOR> Thank you. I actually missed Adotube, but they're lame like lots of others: 200,000 minimum uniques/mo to get an account. Brightroll has a similar rule and rejected my application. MochiAds seems to be exclusively for games.

All these damn companies suck and Google isn't in this game which sucks.

Thanks again.

</comment></comment><comment><AUTHOR> UPDATE: Always email the founder! I did. Philip Kaplan replied (on his iPhone) within a couple hours and thanked me enthusiastically for letting him know. Hopefully I'll be able to use AdBrite after all, which is awesome.</comment>


From Plant Pathology to Building Software, Meet Val, a Software Engineer at Lyft - <AUTHOR> https://eng.lyft.com/meet-val-software-engineer-at-lyft-4f0c5486dc17 <comment><USER2> Interesting read</comment>


Show HN: li:http_backend a Simple and Modern C++17 Web Framework - <AUTHOR> https://github.com/matt-42/lithium/tree/master/libraries/http_backend <comment><AUTHOR> Author here! I just finished the first version of the library. Any remarks suggestion or question is welcome.</comment>


Ask HN: What was your first side project that generated any income? - <AUTHOR> <comment><USER2> My family went picnicking in a cottonwood grove and noticed all the mistletoe. So we threw rocks to knock some of it down, took it home, and put in is small bags. We kids sold it door to door and made a mint in pocket change.

</comment><comment><USER3> [https://datawaves.io](https://datawaves.io)</comment>


SCCS: The Posix Standard Source Code Control System (2017) - <AUTHOR> http://sccs.sourceforge.net/ <comment><USER2> There's also a GNU replacement CSSC[0]. I had to set this up at work 6-7 years ago to handle a very old code base that no one wanted to modernize. The repo was delivered to me on an old SCO system. I was able to move it to a modern system using CSSC, where it still lives today and needs almost no attention.

One benefit of these ancient tools is that they are effectively done. They've been beaten on for years; all behavior and quirks are well understood, and whatever the promised feature set is, usually exists and works exactly as promised.

[0]: [https://www.gnu.org/software/cssc/](https://www.gnu.org/software/cssc/)

<comment><USER3> They're also extremely easy to conceptualise and use.

</comment></comment><comment><USER4> I started with SCCS, then moved to RCS, then to CVS for a long while. I'm now an occasional Git user. The number one problem with SCCS is a locked checkout paradigm: one person gets to edit at a time. Also, it doesn't manage directories, only files. Read here for some alternatives: [https://en.m.wikipedia.org/wiki/Comparison_of_version_contro...](https://en.m.wikipedia.org/wiki/Comparison_of_version_control_software)

<comment><USER5> > The number one problem with SCCS is a locked checkout paradigm

That's common amongst the older breed of VCS: VSS or Perforce do the same.

It's useful when working on binary files which can't be merged. Some centralised VCS (e.g. SVN) can be opted into locked checkout on a per-file basis.

Definitely not a great default though.

<comment><USER6> Once upon a time I forgot to uncheckout a file in clearcase and went on a vacation...

<comment><USER7> Was the admin able to unblock your coworkers?

<comment><USER6> The official process was so complicated that they just waited until I got back next week.

</comment></comment></comment></comment></comment><comment><USER8> Is this just a historic artifact, or does it have some practical use?

<comment><AUTHOR> I think it's somewhere inbetween, similar to the heirloom-doctools. You can interact with any live SCCS repo -- if you find any outside of BitKeeper (whose format seems to have diverged anyway).

And for some reason it's in POSIX. I'm pretty sure nobody even cares about its existence in POSIX, but it's technically there. Though I can't think of a single OS that ships SCCS; OpenBSD ships GNU CVS and their own RCS (OpenCVS is sadly in eternal limbo[1]), not sure what FreeBSD does. Linux distributions generally don't ship anything. And git has basically won anyway.

[1] [http://openbsd-archive.7691.n7.nabble.com/Status-of- OpenCVS-...](http://openbsd-archive.7691.n7.nabble.com/Status-of-OpenCVS- td318199.html)

<comment><USER9> > Though I can't think of a single OS that ships SCCS

Commercial UNIX systems do.

Check the documentation of Aix, HP-UX and similar.

</comment></comment></comment><comment><USER10> One notable thing about SCCS is that it in fact played important role in creation of git as BitKeeper is direct descendant of SCCS.

</comment><comment><USER11> Pragmatically, why would anybody need anything but git nowadays?

<comment><USER12> 1\. git, until very recently (but haven't checked), requires you to check out the whole repo even if you're just interested in only a subdir or single file

2\. Suppose you're implementing a Wiki where docs are version-controlled on a fs mounted by the web server. git doesn't really fit this use case since you'd need a shared checkout dir, whereas eg. RCS does, provided locking is accepted or even preferred

3\. on-site version control of config files in /etc when you don't do full- blown DevOps</comment></comment>


My unorthodox, branchless Git workflow - <AUTHOR> https://drewdevault.com/2020/04/05/My-weird-branchless-git-workflow.html <comment><USER2> > I'll just apply them to master, rebase them behind my WIP work, and then use > git push origin HEAD~5:refs/heads/master to send them upstream, or something > to that effect.

if you're going through the trouble of carefully rebasing to change the order of commits, _and_ remembering exactly how many commits behind HEAD you should push, _and_ remembering what state the remote is in (what is master is actually pointing at HEAD~4?)... why not just go through the comparatively minor trouble of using branches?

also it's not like working on branches excludes the possibility of sometimes committing directly to master. that's what I do for most of my personal projects: small cleanup and fixes happen on master, larger things happen in a branch on a PR until I'm happy with it. ~30% of the time I'm actually not happy with how it turns out, and then I'd rather just close the PR and delete the branch than carefully revert work in progress.

<comment><USER3> With you 100%. And yes, I will sue.

<comment><USER4> What will you sue?

<comment> grayed-down For peace?

</comment></comment></comment></comment><comment><USER5>
        No time spent creating new branches for new features.
        No time spent switching between branches to address feedback.

I'm sorry but these are non-issues with git. The approach you've outlined makes collaboration on features impossible. Cherry-picking and rebasing does not scale for either teams, or lots of parallel workstreams.

<comment><USER6> _git checkout -b new_feature_branch_ is an onerous workflow?

<comment><USER7> Switching branches does get a bit annoying if you happen to work in multiple branches simultaneously and have to switch halfway through a task, or there's a lot of differences; however, that is also a matter of organization.

It's happened to me though; one scenario is that you created a couple of merge requests for the same repo over the course of a day, and the next day feedback from code review or testing comes in. You end up having to switch to various branches to fix the reviews.

But that's really not that big of a deal. The context switch is worse than the git checkout call.

<comment><USER8> Git checkout understands "hyphen expansion" for your previous branch (a la `cd -` to switch to your previous working directory), so switching between two branches is as easy as `git checkout -` or even `git co -` if you have an alias.

<comment><USER9> But you'll also have to rebuild. If your build system is bad, that could be slow. If your build system is really bad, you might need a clean build.

All build systems (that people actually use) are really bad.

</comment></comment></comment></comment></comment><comment><USER10> Seems like all the time you'd ostensibly save on not branching you instead spend doing very careful munging later and crafting very careful commits with git add -p and rebase and other equally time consuming tools.

I don't see the value-add at all.

<comment><USER11> > you instead spend doing very careful munging later and crafting very careful > commits with git add -p and rebase

I mean, I already do this, because I like to be able to understand my commits as standalone historical artifacts. IMHO commits exist to be read (by your future self trying to figure out WTF you were on about most of all!) as much as they exist to change the state of the codebase.

Given that I'm already doing this, it wouldn't be any _more_ work to use a workflow like this, I guess? (I still use branches. And have multiple git worktrees checked out at once from the same repo.)

</comment></comment><comment><USER12> I was with you till this part

>When I'm ready to present some or all of my changes to upstream, I grab git rebase and reorganize all of these into their respective features, bugfixes, and so on, forming a series of carefully organized, self-contained patchsets.

That seems like a lot of extra work to "not use" branches.

I do less work than that and don't use branches. I just tag the releases.

Whenever I want a certain commit to triger CI/CD for build/testing and preprod deploy, I just tag a git commit as "release-[most recent git commit 8char fingerprint]" using a little script and some cli aliasing.

Then push. Release is built, and I can keep pushing to master unfinished features. But because the working version is tagged, Ops can always rebuild, redeploy, or roll back to known good commits.

</comment><comment><USER13> This workflow doesn't seem weird or unorthodox to me, it just seems like a solo contributor workflow. There aren't as many reasons to use branches when you aren't working with other people in those branches. It seems fine to skip some of the overhead when you're by yourself. The implicit suggestion that everyone else is _always_ using branches does seem a bit strange, if that's the implication. I use branches when I need them, but I don't always use them, and usually on small teams we adopt a policy of checking self-contained single-commit features into master, and using branches for multi-person, multi-commit, and multi-day features.

        No time spent creating new branches for new features.
        No time spent switching between branches to address feedback.
        All of my features are guaranteed to be mutually applicable to master, saving me time addressing conflicts.
        Any conflicts with upstream are addressed in all of my workstreams at once, without switching between branches or allowing any branch to get stale.

To be honest all 4 of these are unconvincing. Creating branches and switching branches is a non-problem, these operations are faster than committing.

To the third and fourths points - that all "streams" resolve at the same time, that's an okay point, but isn't normally a problem in practice with branches. If you're working on multiple branches than conflict with an incoming commit, it means you've touched the same code in multiple branches, and also someone else has too. It tends to indicate bad planning or bad communication or both. And it just doesn't happen very often.

Here are a few reasons to use branching anyway when you're alone:

\- To do an experiment multiple ways on the same code.

\- To avoid use of git stash. Branching is safer and adds no extra difficulty. Stash doesn't have as good of a safety net (it's in the manual).

\- To write & test your feature without your other in-progress features getting in the way.

</comment><comment><USER14> This is a very eclectic workflow that _might_ work if you have very good mental organization. For most people this sounds a recipe for disaster. A good way to lose work and get confused about the scope of individual features.

I tend to think of git as tool to aid organization and not an opportunity to flex my prowess at mental gymnastics. Crazy, I know.

</comment><comment><USER15> Local testing would become meaningless as "features" are not being tested in isolation. It'll lead to the classic "but the tests work on my machine" because half the changed code isn't in the published changeset.

<comment><USER16> Yeah, this sounds like hell to bisect.

</comment></comment><comment><USER17> I used git as a solo dev for years. I always used branches, but there wasn't much reason. Now working with a team, branches are useful.

</comment><comment><USER18> Here's better rationale for this kind of approach: it requires a lot less rebasing and merging:

1) If you branch a lot, keeping up with upstream changes can be tedious: you have to rebase each branch separately just to keep up. With this method, to keep up, you rebase just once, on your one branch.

2) If you branch a lot, merging each branch can cascade into a bunch of rebasing. As you build your feature, you might clean up unrelated code. Your "implement feature" commits could be interspersed with "fix unrelated code" commits. If you're creating a branch for each cleanup commit, as you submit them for review earlier than your feature, you have to rebase all your branches one by one. With this method, you rebase just once.

</comment><comment><USER19> People are quick to dismiss this, but I think it's a fish-in-water kind of thing, where they are so used to the normal git flow, they can't see any way that it might be non-ideal.

I am excited about the promise of patch-based VCs. In theory they are clearly a better, more flexible model, that is a closer match to how we actually think of changes.

As an example, the branch-free model of this post just falls out naturally, w/o the need to rebase at the end.

However, we're still missing a great implementation to make this promise a practical reality (perhaps the upcoming version of Pijul will be that implementation?).

<comment><USER20> You might take a look at stgit. [http://www.procode.org/stgit/](http://www.procode.org/stgit/)

</comment></comment><comment><USER21> I much prefer separate local branches and rebase against master to start the daily workflow. If you are regularly keeping your feature branch on the up to date with master head there is little conflict day to day. When there is a conflict it's because you have to make a decision between two features or collaborator updates and your feature. As long as you haven't pushed your local branch you can rebase it all you want.

Way way more organized to use branches.

</comment><comment><USER22> Is this the cutting off your nose to spite the face workflow? It seems like a lot of faff to avoid the trivial task of creating a branch.

</comment><comment><USER23> I think the success of such a workflow says a lot of positive things both about drewdevault and git.

With respect to git, this is yet another successful workflow conducted through git. While git may have its flaws, one cannot deny that many different workflows are enabled by it.

And with respect to this particular workflow, I think it says that drewdevault makes largely self-contained commits with good commit messages and that constantly work. I have been on projects using branched development with people who sometimes make commits that break things, but that then fix them in other commits, with a does-it-really-matter-before-it's-merged-anyway attitude. And I have been on projects where the default commit message is absolutely lousy. (And I am currently involved in a project where both of these are true).

But to be able to successfully rebase and reorder and cherrypick commits says a lot to me about highly disciplined organization. I would expect many workflows to be enabled by such habits.

<comment><USER24> > I think the success of such a workflow says a lot of positive things both > about drewdevault and git.

There's a massive flaw in this approach if the repo is not private (collaboration is mentioned in the post in terms of "review some incoming patches") in that you can't push works in progress to the remote as you are doing it all in master. If you _did_ push those then when you tidy it up you will cause problems for other collaborators.

If you can't push WIP out then you have the only copy, and you're losing some of the distributed advantages of git: distributed backups of your WIP changes being one of those.

> But to be able to successfully rebase and reorder and cherrypick commits > says a lot to me about highly disciplined organization.

Yeah, rebases and cherry-picks are great features. Just use branches as the starting point.

</comment></comment><comment><USER20> I do something kind of similar using stgit[1]. I do everything on a single branch creating patches with stgit. stgit lets you easily change the order of commits (a lot like quilt[2], but more robust because it's using git underneath). When features are ready, I just cherry pick them over to master and push upstream.

[1][http://www.procode.org/stgit/](http://www.procode.org/stgit/) [2][https://en.wikipedia.org/wiki/Quilt_(software)](https://en.wikipedia.org/wiki/Quilt_\(software\))

</comment><comment><USER25> He understands the power of rebasing, but he doesn't address how you use that power and also coordinate your work with other people.

He seems to be implying that it's OK to rebase against master and/or force push the remote ref, as long as the only person you are pleasing is yourself.

I mean, a lot of people progress in their Git knowledge until they reach the point where they want to minimize the clutter of merge commits. That's almost a cliche.

But how you do that when you are working with others, some of whom may have advanced Git knowledge while others are complete novices, that's what the real world looks like.

</comment><comment><USER26> When I go rock climbing, I don't use ropes. It saves me time of having to set anchors.

The git advice works for either experts or small projects. If you're an expert, choose your own workflow. I find in large projects with many users, branches help to recover quickly from mistakes and help define testing history. My primary concern is for novices to go at it without branches because they're hard to deeply understand without experience and they see experts managing without.

Learn how to use rock climbing equipment before you rely on it. Experts, do whatever works best for you!

</comment><comment><USER27> Isn't it incredibly annoying to edit a git change that isn't at the branch (HEAD) tip?

Our workplace uses gerrit, and while it sort of supports this workflow I personally use a lot of short-lived branches, one for each gerrit review, simply in order to get at them easily to make changes.

<comment><USER28> It's a lot easier with git commit --fixup:

[https://blog.sebastian-daschner.com/entries/git-commit- fixup...](https://blog.sebastian-daschner.com/entries/git-commit-fixup- autosquash)

</comment></comment><comment><USER29> A long time ago I used to use Stacked Git (1) for a similar but different workflow.

1: [http://www.procode.org/stgit/](http://www.procode.org/stgit/)

I miss the days when you were expected to use a porcelain on top of raw git.

<comment><USER10> It may not be _expected_ now, but i'll always take the opportunity to plug magit, which is by far the nicest porcelain i've ever used.

</comment></comment><comment><USER30> This is an interesting article. I do find it pleasant to use git without branches. It allows you to invent a different type of agility and resourcefulness with git operations. I would not recommend this to new users or teams.

</comment><comment><USER31> So essentially, he is using Git as a logging and versioning tool, instead of using it as a collaborative tool.

</comment><comment><USER32> Sounds like me using RCS in the 1980's.

</comment><comment><USER33> nope.

<comment><USER34> " _Please don 't post shallow dismissals, especially of other people's work. A good critical comment teaches us something._"

[https://news.ycombinator.com/newsguidelines.html](https://news.ycombinator.com/newsguidelines.html)

</comment></comment><comment><USER35> If I read correctly, this is trunk-based development.

[https://trunkbaseddevelopment.com/](https://trunkbaseddevelopment.com/)

And this is also my experience, I absolutely hate spending time to merge things and resolve the conflicts and bugs.

I think this should be the default behavior for small/medium teams.

Branching should only be used when trunk-based dev is no longer possible.

I really liked this article from the Our Machinery guys, who created the Bitsquid engine.

[https://ourmachinery.com/post/moving-away-from-git- flow/](https://ourmachinery.com/post/moving-away-from-git-flow/)

This other article is also interesting: [https://email@example.com/why-i-love-trunk- based-...](https://firstname.lastname@example.com/why-i-love-trunk-based- development-641fcf0b94a0)

<comment><USER36> Branches are still very much a thing in trunk-based development.</comment></comment>


How a "College for All" philosophy leaves everyone behind - <AUTHOR> http://www.dissentmagazine.org/online.php?id=389

<comment><USER2> This was pretty hilarious to me, and I really ought to be in its target readership: I've tried college a couple of times and couldn't stick with it. I am far more ashamed of that than proud, however.

From the article:

> _Statistics like those put out by the College Board are misleading: they > promote a foolish sense of tunnel vision, leading students to believe that > the only possible way of obtaining even a middle-wage job is through the > traditional, four-year college route._

...

> _...certain industries—business services, health care, education, and > particularly manufacturing—have had record increases in middle-wage job > openings, with not nearly enough qualified applicants to fill the > positions._

Business services ... doesn't require schooling, depending on the service. That's pretty broad, though. Health care? Requires schooling. Education? Schooling. Manufacturing? That's not middle-wage unless ... schooling.

> _Companies manufacturing high-precision products—car and aircraft parts, > large-scale construction equipment—encounter a dearth of workers with the > mathematical and technical skills necessary to operate computer-controlled > machines..._

Mathematical and technical skills ... that would be, schooling, and ... schooling.

> _Thus, the positions remain unfilled, because the American educational > system does not currently produce enough job candidates with the technical > expertise to perform in the "blue-collar" jobs of the twenty-first century._

This is ridiculous. Does anyone here really expect to attend a four-year college, or even two years at a local college, to be a plumber? Or electrician? Or computer tech? This is blatantly conflating trades with education.

OK, maybe there's another point here I'm not getting. I'll give the article a fair shake ...

> _It is in this respect that the prevailing "college for all" philosophy is > most misguided..._

ARGH. This article _really is_ saying that kids don't need to learn math, because they can work in a factory instead. They don't need to learn English, because they can swing a hammer instead. They don't need to learn history, because they can wrench on a car.

Yet, if they're going to have an opportunity to be part of the force that could renew U.S. industry, they _need_ to know math, English, and history. They _need_ to be able to look at their job and _calculate_ production waste, and make processes more efficient; they need to know how to measure things; they need to be able to quantify things. They need to be able to communicate their findings clearly and effectively, and with a minimum of misunderstanding. and they _really_ need to understand the past; they need to know what's been tried before, and what did and didn't work, and why. I would love, sometime, to hear someone else say, "Henry Ford didn't invent the automobile! He just realized that he could build cars really efficiently if he built them like guns, with lots of cheap, interchangeable parts."

The possibly apocryphal example of Chris _was not_ a failure of the education system; it was a failure of a social system (and, probably, familial system, and many other systems), and that social system is failing in large part because much of it wants to believe that nobody _needs_ to know anything about anything, and that it's somehow wrong to have a solid general education, or that it's even possible to be "over-educated".

I condemn this English teacher to a hell in which everyone communicates via YouTube comments.

edit: Just to be clear, I am -- and have been for a very long time -- in favor of increasing the amount of trades classes in high schools, mostly because I think it's valuable to have multiple skills. However, I don't see the connection between the college track and the decline of these trades classes, and I _definitely_ don't think that someone shouldn't continue their education just because they're active in a particular trade.

<comment><USER3> I think that you're confusing the article's mention of education or schooling with college.

The opinion I take from the article is that while the emphasis should remain on continued schooling after high school, it's important that students be made aware of schooling options outside of a traditional four year degree.

>This is ridiculous. Does anyone here really expect to attend a four-year college, or even two years at a local college, to be a plumber? Or electrician? Or computer tech? This is blatantly conflating trades with education.

Exactly the author's point: We need to stop pushing all kids into college when some of them really should be pursuing tradeschools or associates degrees focused narrowly on these middle-wage skilled jobs.

>> It is in this respect that the prevailing "college for all" philosophy is most misguided... >ARGH. This article really is saying that kids don't need to learn math, because they can work in a factory instead. They don't need to learn English, because they can swing a hammer instead. They don't need to learn history, because they can wrench on a car.

I think she's saying that kids don't need a BA in Applied Maths to work in a factory, or a BA in English Literature to be a machinist, or a BA in American History to wrench on a car.

We're failing children by using college attendance rates as a metric and then blindly pursuing that metric without consideration for the impact on those kids or the economy they'll find themselves in when that first student loan payment comes due. High school really should be putting a lot of focus on "What do you want to do when you grow up? This is what that requires." rather than "Get a degree in something, _anything_ , and it will all work out for the best."

</comment></comment><comment><USER4> I fail to see how Chris was a "casualty of the system". I have a little trouble buying his stated desire to transfer to a vocational school for training mechanics...in any city there are plenty of mechanics around, and you just need a little guts to up to a bunch of them and say "I want to be a mechanic, please tell me how". Sooner or later, you're going to get a lead. They may or may not take you on, but I find it difficult to believe that you can't become a mechanic if you show at least some of the signs of being worth an investment in time - maturity, respect, willingness to work hard, motivation, some relevant experience like, say, fixing other things that are less expensive than but share some characteristics with cars, etc...

I get the impression that Chris' journal writings have more to do with his gang aspirations than his desire to live an honest life. Gangs are known to deal in stolen cars, and they deal with shady characters who perform a variety of roles to support this illegal business - ripping cars apart, putting together knock-offs, making illegal modifications, and so on. With a little work, I have no doubt Chris will be able to satisfy his love of cars as a gang member.

Being a gang member is a high risk / high reward proposition, but it has a variety of perks: money, women, and cars among them. This leaves the issue of morality untouched - clearly gangs are evil and mechanics are good...but you can't teach someone to be good.

</comment><comment><USER5> It's odd how America can simultaneously have a problem with anti- intellectualism and a problem with over-intellectualism. I guess they are the same thing: the idea that you must either be part of the intellectual elite pulling shots at Starbucks, or a working class Joe trying to save the American dream from the eggheads.

<comment><USER6> Good point. The extremes tend to reinforce each other by fueling the antipathy of the other side.

</comment></comment><comment><USER7> I am surprised, in a good way, of the message that an _educator_ is striking about America's education system. Educators usually have been blind to their own problems. Never is the discussion about whether or not every student needs a college education.

It seems that society expects college to be the ultimate endgame, but I have found that people from non-college backgrounds know more about a subject than their degree counterparts. I hired an electrical engineer straight out of school that barely knew how to solder, while a technician paid almost a third less than him could put together an entire PCB prototype. Similarly, I have found the best programmers do not have degrees, but their degree wielding counterparts less than interested at finding new solutions, always going by the book to solve a problem.

<comment><USER2> They don't know more about a subject. They _may_ have more practice at it.

I can do fairly delicate work with a soldering iron, and I can puzzle out simple circuits, and I can work out various values for a circuit if I have pen and paper and a book to refresh my memory. I've also been an output smoothness tech for <http://www.specsensors.com/> . There is _no way_ I know more about the field than any electrical engineer, not even close. I've worked with those guys. Their college backgrounds actually taught them stuff.

I'm less certain about the programming example. There are plenty of stories among hobbyists and professionals of the CS kids that can't code up a linked- list. Then again, there are also lots of non-degreed hacks that can't do that, either. Considering that part of MIT's CS program is to write an operating system (and I know a guy who did that in a weekend, and slapped in a GUI for extra credit), I question whether it's true that the best programmers don't have degrees.

<comment><USER7> I think you are giving a college education too much credit. There are definitely exceptions to the rule, but one of my best engineers has been at it since the 70s, and has no degree in electrical engineering but in math, and what of the hackers that have been programming such as RMS before it became a real, hardened discipline (before a CS degree was offered)?

The best and most dedicated need no degree to validate their talents. MIT is a fine school, but I would be even more impressed if they could take an average student and turn him into a programming whiz. The best learners are often self taught, which is why the PhD program works to an extent (free labor for the school, self education for the PhD student). How are you so certain a degree less programmer couldn't program an OS, or code a linked list library from scratch? Arrington's a lawyer--how was it that he got into an agreement without documenting it on paper (maybe that JD is just a piece of paper)?

A lot of college graduates seem to think they are entitled to jobs, when they haven't proven they can program. I've met a BA Chinese grad who can't speak Chinese to save his life (I spent my middle school years in Taiwan, I have no degree in Chinese), or the English grad who can't write. Having a degree means you studied the subject, it doesn't mean you are an expert at it. Especially not with an undergrad degree. They spend 2-3 years on remedial high school, and spend maybe a year and a half on their discipline.

Like anything in life, there are no absolutes. I can say though that the ones most driven go beyond a piece of paper. Having one helps. But having one doesn't mean you're better, you just paid your dues in cash and time. It might just give you the edge you need, but the last thing I look at it in a programmer is for a degree. I seem to recall reading that one of the main Linux kernel committers has a degree in music. That hardly gives him the credentials to be playing with an OS internals by your reasoning.

It's like the culinary school example. You'll be on a much better footing with a degree, but it doesn't mean you're better. A lot of culinary school graduates end up cooking banquets at country clubs. Some chefs, like Pizzeria Bianco's Chris Bianco (where NYT proclaimed the best pizza is not in NYC but in AZ) have no paper to prove but hard knocks.

<comment><USER8> "...and what of the hackers that have been programming such as RMS before it became a real, hardened discipline"

I'm pretty sure RMS did much of his best hacking at MIT.

<comment><USER7> Was there a Computer Science degree when he was at school? His degree was in Physics.

How do you get a degree in CS when no degree in CS is offered? To imply you need a CS degree implies that there has to be a degree for you to be considered an expert in it.

What if you invented the computer? Are you not qualified because you didn't get a degree in your invention?

</comment></comment></comment></comment></comment><comment><USER9> A "diplomas for all" philosophy probably does leave everyone behind.

But, an "opportunity for college for all" philosophy does not. With higher education, you get out of it what you put in. The technical schools aren't much better. If you're going just for the certification/degree, you'd better be damned sure that the increased debt you take out is going to be offset by increased earning potential. Often, that's not the case.

I've been through two rounds of post-secondary education, earning a bachelor's degree and a law degree. I can say without hesitation that I wasted my time with the bachelor's degree. Not because the school was bad, but because the effort I put in wasn't proportionate to the tuition paid. Law school was just the opposite. It hasn't necessarily increased my earnings (I co-founded a technology services company before law school and probably made more money at that) but I expect the law degree to pay out over a longer period of time. Even if I were to completely abandon the practice of law, what I learned will pay dividends in any number of fields.

To say that someone can simply engage in a trade and make money doesn't reflect the full value of an education. A dedicated student may study in one field and wind up working in another. But the thought process and skills they obtain through their education give them a higher probability of success in whatever field they may choose.

The flip side is that an unmotivated student who drops out of college three years in hasn't gained anything but debt.

The trick is figuring out your motivations _before_ starting school.

</comment><comment><USER10> "The object of the educational system, taken as a whole, is not to produce hands for industry or to teach the young how to make a living. It is to produce responsible citizens"

-Robert Maynard Hutchins, "The University of Utopia"

See also, "The Moral Obligation to Be Intelligent" by John Erskine

<comment><USER11> Awesome, and I agree. But that sort of idealism should only be advanced if it can be implemented and maintained. How long will superintendents and school boards advocating such principles remain in their positions when parents and students complain that they can't get a job out of high school/college?

</comment></comment><comment><USER12> I just don't understand why education has to be so closely tied to vocation.

16 year olds are not completely unaware of what's being foisted upon them. My 16-year-old-self was at least some what aware. I had no idea then what I wanted to do _for the rest of my life_ , but I did have a pretty good idea of what I _didn't_ want to do. I just find it sometimes difficult getting by outside "the system" and I don't think I knew how challenging it would be when I was so young.

Tracks are so restricting. Why is it so hard to change careers?

<comment><USER8> "I just don't understand why education has to be so closely tied to vocation."

Because modern vocations require specific skills that must be learned somehow, somewhere. Perhaps you want to name this something other than "education," but that does not change the amount or nature of learning necessary to do a job proficiently.

"Why is it so hard to change careers?"

It is probably harder than it needs to be. At the same time, much of the reason that changing careers is so hard is inherent in the training and experience necessary to get good at something. If you decide at 50 to become a doctor, you have some hard work ahead of you.

<comment><USER12> _If you decide at 50 to become a doctor, you have some hard work ahead of you._

Understandably so.

In my experience, universities in my area admit adults into their "continuing education" track. It's sadly nothing more than a collection of humanities and introductory liberal arts courses. For some reason I cannot attend a university to study physics for the pure joy of it (granted, most people including myself wouldn't have the financial backing to return to the ivory tower for the joy of it).

I'm simply a life-long learner. I think it's a shame that universities have simply become expensive job requisites.

</comment></comment></comment><comment><USER13> I'd like to see the department of education put out a list of skills that are needed and for what purpose, or end goal. There needs to be some grand vision, perhaps to unify the country like the moon landing did. Clinton wants people to instantiate jobs by focusing on alternative energy projects. Mostly I just see this desire for jobs, schooling, and a few other things as a means to keep people busy and to fit the mold or dream of a finely balanced social, psychological, utopia.

<comment><USER8> Clinton?

What does the Secretary of State have to do with education policy?

<comment><USER14> And what does education policy have to do with education?

It seems very common today for people to form opinions and make decisions about very specific things, but base them entirely on generalizations. How would the Department of Education know what skills and knowledge are necessary for a specific job function better than the actual people who require the work? This mindset is the same one that leads to the same presumptions about the necessity of college that the article is challenging.

We don't need a system unified around a consistent vision. We need the exact opposite of that: less universal systems, more focus on the particulars of every situation by the people who are actually involved.

</comment></comment></comment><comment><USER15> Strange doubletalk: too many kids are attending college; not enough graduates for industrial jobs. ???</comment>