What Every Developer Should Learn Early On - <AUTHOR> https://stackoverflow.blog/2019/08/07/what-every-developer-should-learn-early-on/?cb=1 <comment><USER3> Because it is a StackOverflow blog post its a bit self-serving, but basically it appears to advocate creating a permanent intangible dependency on StackOverflow to your ability to program.

Those heavily invested into StackOverflow means it becomes part of their programming identity, and as a result it skews their perspective of what they decide programming should be (which is true for them themselves).

The virtual-connectedness we have as programmers now has changed/accelerated (and perhaps thus slowed) the way programming is done. To be fair cut and paste programming has been around pre-Stack Overflow and even pre-WWW - <USER2> just required enough programmers and code-base to be in the one location for it to become viable.

As the web ages, like a sprawling codebase not rigorously maintained, the amount of cruft it acquires over time goes up - where a lot of stuff that is no longer used or out of date or just plain wrong yet still there comes up in your search.

It makes me think a lot of signal vs noise and worse still false signal vs noise comparisons. Sometimes you can find years later after you did something that you solved the problem the old/should be obsolete way, or you did the almost-the-right thing but not the right thing - often at a time/place you can't go back and correct/amend your previous code, not least because you're not meant to be working on it anymore even if you're with the same employer.

</comment><comment><USER4> This is one of those guys I see everywhere who jumps in the middle of every flamewar and calls both sides stupid because every single conflicting topic on the face of the universe according to them is apples and oranges. It's a niave worldview.

The world is full of apples and oranges and also some apples are better than some oranges and many apples are rotten to the core.

Haskell vs. JavaScript two different world views. One language is pure liquid bs, the other is guite good. Which one? The world is complicated enough that if you search hard enough you can find a trade off somewhere,... Nonetheless the fact of the matter still stands... In aggregate with all features accounted for, one of those languages is really bad, the other is much better. Please don't be that guy.

</comment><comment><USER5> While I agree that lines of code is a poor metric for basing decisions on, all the suggested altenatives in OP are very subjective.

<comment><USER6> Lines-of-code is not a metric without a "per" something.

If someone told you that you were about to join a team that tends towards an average of about 6-7 thousand lines-of-code PER METHOD, would you consider this fact in your decision to join or not join this team?

</comment></comment><comment><USER7> Just to be controversial, the biggest thing I disagree with is the number of hours people code. Hmm... That's not exactly true. I agree with the statement that few people code more than 4-5 hours a day. What I disagree with is that you shouldn't try to put your self in a situation where you can exceed that.

There is a lot of communication that is necessary in programming. That communication takes time. However, there is a lot of communication that is unnecessary, but that still takes time. Being efficient with communication means that you can spend more time coding.

I big part of that is working on smaller teams. Some tasks are inherently separable -- they don't require a lot of communication in order to complete. Some tasks are not. Frequently teams are built on the premise that the work is separable. You'll have 100 (or even 1000!) developers working on the same thing, and the assumption is that this will speed development. Often it is not true. Often it means that you are spending 80-90% of your day coordinating with others.

There is a certain amount of communication that is necessary when you are getting requirements. One of the places where we can be inefficient at communication is with these requirements. There is a balance between getting enough information to be able to start writing code and spending your time building fictional descriptions about what you are going to build. If you spend too little time doing up front analysis, you will end up spending a _lot_ of time iterating to your goal. If you spend too much time doing up front analysis you will strangely end up in the same situation -- the thing you thought you wanted to build turns out to be wrong because it's hard to test your assumptions without having the real thing to test it with. Knowing how to surf between these two extremes will dramatically reduce the amount of time you are spending -- and will ultimately reduce the number of conversations you require.

I will say, having worked on a lot of different kinds of teams, that if you are not spending the majority of your day writing code, then there is a problem. You _should_ try to solve that problem. Even though writing code is tiring, it is also fun. There is nothing wrong with finishing for the day and feeling like you don't want to write code. It's a good feeling. Go home and spend time with your friends and family. Get some well deserved rest and then go back to work the next day for some more fun.

The last thing I would say is that sometimes people feel like if they aren't typing, then they aren't programming. Typing is only a very, very, very small part of programming. Even if you wrote on average 1000 lines of code a day (which would be quite a lot, no matter what you say about LOC metrics ;-) ), you aren't going to spend more that an hour physically typing it in. Almost all the time you are programming, you are either reading code, or thinking (or both). When I talk about increasing the amount of time you spend programming in your work day, I don't mean increasing the amount of time you spend typing. You might not even increase the number of lines of code you type. You might even _reduce_ the number of lines of code you type (if you are really going well). What I'm talking about is increasing the amount of time you have to _think_ about your problem. Even if that's thinking aloud with a pair programming, or mob programming, or getting advice from someone -- it's all good. But you should have the feeling that you are doing something that is directly adding value to what you are working on. As programmers, we are there to put the rubber to the road. We aren't primarily paid to organise, or prioritise, or argue, or negotiate, or produce status reports (whether written or oral). We are primarily paid to advance the project in directly measurable ways -- there is more appropriate functionality at the end of the day. Anything that is stopping you from doing that should be viewed with suspicion.

This is what I wish all starting developers would learn ;-)</comment>


Four DB2 Code Bases? - <AUTHOR> http://perspectives.mvdirona.com/2017/12/1187/ <comment><USER2> I am just going to drop a few quick comments. It's 6:39AM in NY, and I just woke up. Maybe not relevant at all, but...

I love reading about biography like these. I own a couple books, for example, "Where Wizards Stay Up Late: The Origins Of The Internet" did keep me awake for a few days on an early train. This one, absolutely easy to digest, thank you for sharing.

1\. So do the four code bases share code they reuse (think of a common repository they depend on)?

2\. Are the query planners all different because they needed to be platform specific?

3\. Is DB2 still on four code bases?

Would be awesome if we have one central catalog of stories like this one.

BTW, I didn't know much about the author, so I did some quick googling: [http://mvdirona.com/jrh/work/](http://mvdirona.com/jrh/work/)

(I hope HN won't flood it to 404! Mr. James, is this on AWS!? It looks like it might be.)

<comment><USER3> If you have time to list the other books that you own like this and "Where Wizards Stay Up Late: The Origins Of The Internet", I'd definitely appreciate it. I love reading these types of stories too!

<comment><USER4> "Showstopper!: The Breakneck Race to Create Windows NT and the Next Generation at Microsof" by G. Pascal Zachary is great, about an interesting period of Microsoft's life.

</comment></comment></comment><comment><USER5> I'm one of those youngish programmers who has never really worked on anything but Linux, so the idea of these IBM operating systems is pretty foreign to me. The article describes System i as "very advanced" but I have never even really heard of anyone using it or referencing it.

How do you write and deploy software for these things? I am so used to just being able to, like, build a Go binary and run it on a Linux box. Are they better in some ways that I am missing out on? Just curious.

<comment><USER6> IBM i is advanced in some interesting ways, but the design has plenty of drawbacks. The database (DB2) is baked right into the operating system and is an integral component virtually every application relies on it - you can access tables via SQL or directly through record access (equivalent to fopen(), but against database tables). In fact, the "traditional" UNIX like filesystem (the IFS) on IBM I is an entirely different world, the object storage subsystem (the database) is where 99% of everything live on IBM I including most applications. Applications aren't compiled to machine code directly, outside the lowest level code needed to get the system running - they're all stored as bytecode and compiled to machines code on first run, which is how IBM has taken advantage of newer POWER releases without requiring customers beg vendors to upgrade or rebuild their code. There's a hell of a lot more, but these are two key components of the design.

As for writing software, you basically have no choice but to use tooling IBM has support for. There is a emulated POSIX environment (PASE) but it's mostly used by IBM to port things from AIX - the traditional IBM i languages are RPG plus C/C++ as a newer addition, but they have runtimes for Java, Python, Node and a few others. The traditional languages are the only way you have to make classic green screen apps, while the latter are there primarily to host web applications.

<comment><USER7> > but the design has plenty of drawbacks

As somebody who has never been near an AS/400, what are those drawbacks? Besides the environment being weird in the sense that it is unlike anything else?

The only bad thing I have ever someone say about the AS/400 was a supervisor I worked for during my training who had at one point written RPG programs, and she said ... some pretty unfriendly things about RPG. Which is not say that's the only problem; like I said, I have no knowledge of the system beyond what Wikipedia tells me about it.

<comment><USER6> There's extremely limited compatibility with POSIX software, PASE exists but you aren't just going to be porting applications with minimal or zero effort. Honestly IBM i makes little sense as a modern application platform, and DB2 for i is wonky plus licensing for it sucks (if you're connecting from anything but Java where you can use open source drivers expect to pay through the node for DB2 Connect unless your application also runs on i).

</comment></comment></comment></comment><comment><USER8> I have a lot of respect for databases in general, and DB2 is no different. But if you've ever tried to install DB2, you'll know it's a monstrosity, and even internally it was hard to get a license. The result of this is that most IBMers I know would rather use e.g. Postgres for other projects, not DB2. Now I'm not silly enough to think Postgres will replace DB2 at e.g. banks, but the effect is that Postgres reputation and knowledge spreads, and DB2 reputation and knowledge die. In the long run, I think this is a good thing.

Also, if you read between the lines, there's a ludicrous amount of infighting in IBM, which is probably how they ended up with four code bases. Still happens to this day.

<comment><USER9> _Now I 'm not silly enough to think Postgres will replace DB2 at e.g. banks_

You might be surprised then, because that's not silly at all. DB2 may hang on in the Back Office, the least technically sophisticated bit of banking for various reasons for a while longer, but it's long gone from the Front Office and Postgres is one of the replacements. I don't think anyone is starting new projects on DB2 even in BO.

<comment><USER10> Are there any databases successfully in production in high-value transactional environments other than oracle or DB2? I have to believe a lot of the pain coinbase is experiencing stems from their decision to use mongodb - which I love and use daily, but would never, ever have chosen over Oracle for high transaction bitcoin exchange.

I wonder if anybody has done a write up on this oracle/db2 versus "others" in the super-high-value back office scenario.

<comment><USER11> _Are there any databases successfully in production in high-value transactional environments other than oracle or DB2?_

Teradata!

And IMS, but that's not relational.

<comment><USER12> And ADABAS (officially declared fully supported through the year 2050 and beyond). Most often considered non-relational too.

High-value transactional environments most often neither relational nor even running on operating system (in modern sense at least), like zTPF "because a real operating system is too high level and therefore too slow for real transaction processing needs". Current users of TPF include Sabre, VISA, American Airlines, American Express, HP SHARES (formerly EDS), Holiday Inn, Alitalia, KLM, Amtrak, Marriott International, Travelport, Citibank, Citifinancial, Air Canada, Delta Air Lines, Japan Airlines and many others.

</comment></comment></comment></comment></comment><comment><USER13> The article mentions Informix, which has also been an IBM product for a number of years now. That makes it at least five major RDBMS code bases inside IBM.

I spent a few years managing DB2 instances at a previous employer and I've seen it hold its own against mixed workloads (i.e. shitstorms of bad-behaved applications and people running ad-hoc queries) that I don't think even a well tuned PostgreSQL could handle today.

DB2 has some really annoying quirks(1) and that IBM'ish feel that's very hard to explain, but it's also very understandable (from a tuning perspective) for such a complex piece of software.

DB2 for Windows seemed mostly crap compared to Linux or AIX, though.

(1) For example, at least since I've last looked into it, DB2 had no decent MVCC(2) and it was a real pain to deal with all the lock-related problems that would arise from large write/update transactions running in parallel with small reads.

(2) At some point (9.5, IIRC) they tried to simulate MVCC by letting transactions read previous row versions from the transaction log. This seemed to come with its own set of significant drawbacks.

<comment><USER14> I interviewed with Informix shortly before IBM acquired it, and after they acquired Illustra (a commercialized Postgres, company started by Stonebraker). My recollection was that Informix was a mess having decided to basically build their next major version on the untested Illustra. Different locations, lots of politics, two massive codebases. I remember thinking that Informix shot themselves in the head, and that IBM then acquired them cheap.

<comment><USER15> That brings back memories. I was involved in trying to build webapps on Illustra in the mid/late 90s. We (a small dev shop) ended up with it because it was sold to our non-technical manager on the basis that it was the future for the web and it was ridiculously expensive for the kind of bottom-feeder projects we were doing - which was kind of galling given we were being paid peanuts.

But even I was initially excited - the feature list looked cool - multimedia, rich/extensible data types (called blades?), OO/table inheritance, built-in dynamic web page generation, etc. But the performance was absolutely terrible and all the advanced features turned out to be less than useful or slightly broken. I remember my disapointment when I first tried out the "search for images LIKE a reference image" feature and it matched a butterfly with a racing car. We struggled for a few months with the general flakiness and horrible performance of Illustra and eventually convinced them to allow us to use Informix instead and went back to storing images as files served by HTTP and using PHP or Perl for the dynamic HTML generation. The Informix sales dudes seemed convinced that Illustra was the future.

The performance was much better but for the web apps we were writing, we could have just stuck with mSQL or MySQl and saved a lot of time and effort.

<comment><USER9> _multimedia, rich /extensible data types (called blades?)_

Yeah, DataBlades. I too was burned by them in the 90s.

</comment></comment></comment></comment><comment><USER9> Because DB2, like Watson, is an overall brand name for a suite of products. This is a standard IBM practice.

</comment><comment><USER16> The timing of the post is interesting given Microsoft SQL Server 2017's new support for Linux. Microsoft's doing it with one code base to span Windows, Linux, and Azure SQL DB, and it's interesting to read why IBM took a different route.

My favorite line out of it: "so I ended up taking a long weekend and writing support for a primitive approach to supporting greater-than-2GB tables." Wow.

<comment><USER17> That line is especially great in the context of the preceding paragraph:

> At the time I was lead architect for the product and felt super-strongly > that we needed to address the table size limitation of 2GB before we > shipped. I was making that argument vociferously but the excellent counter > argument was we were simply out of time. Any reasonable redesign would have > delayed us significantly from our committed product ship dates. Estimates > ranged from 9 to 12 months and many felt bigger slips were likely if we made > changes of this magnitude to the storage engine.

>I still couldn't live with the prospect of shipping a UNIX database product with this scaling limitation so I ended up taking a long weekend and writing support for a primitive approach to supporting greater-than-2GB tables.

It's amazing how often one person with a solid grasp of a problem can run circles around teams that are shackled by process and cya and politics.

</comment></comment><comment><USER18> _Db2 for z /OS will live on for the life of the IBM mainframe ..._

This raises a question which is interesting to me (not knowing anything about mainframes).

How long is the life of the IBM mainframe going to be? Are there specific plans already in place to replace these systems on a known schedule? Or are they going to be around indefinitely?

<comment><USER19> I suggest they'll be around indefinitely. While large customers are willing to spend large sums of money to maintain their systems and avoid the risks of new technology upgrades, IBM will continue to serve those customers.

<comment><USER20> Forever is such a long time. There are no new projects started on mainframes and there's a definite, if still quite flat, trajectory towards moving things off the mainframe. So _eventually_ it will die, but it will be decades.

<comment><USER19> As we approach the limit (of zero) that tail will just continue to get longer and longer. And by "indefinite" I do not mean "forever." I mean that there's no definite date that the 'mainframe industry' will end— IBM hasn't published any roadmap to end their use, and many institutional users are happy making few changes to business operations.</comment></comment></comment></comment>


Are NCDs the next world pandemic? - <AUTHOR> http://accessaccelerated.economist.com/ <comment><USER2> No.</comment>


Direct Invoice beta is up and running - <AUTHOR> https://direct-invoice.com

<comment><USER2> Seems similar to Freshbooks.com fwiw.

</comment><comment><USER3> Is it just me, or does this look very close in design (and even placement of specific buttons) to Metalab's Ballparkapp ([http://www.ballparkapp.com](http://www.ballparkapp.com))?

</comment><comment><USER4> What will be the pricing like? Will it be competitive compared to e.g. Zoho Invoice? What about API support?

<comment><USER5> Hi,

pricing is not yet fixed but will be similar to other services like Zoho. API support is on our roadmap (we are developers and developers will love Direct Invoice ;-)

</comment></comment><comment><USER6> Just sent a test invoice, and I must say the workflow is very neat. Best of luck!</comment>


Kanban can not save you from the engineering death spiral - <AUTHOR> http://blog.aha.io/index.php/the-engineering-death-spiral <comment><USER2> Huh? I'm pretty sure Kanban helps with all of these.

Why are we building this feature? With a strict limit on work in progress, someone must have explicitly decided that it was more important than all the other features in your backlog. Sure, you can still disagree with their weighting, but at least it forces them to prioritize, rather than delaying the product with a kitchen sink of everyone's ideas.

We can't release until quality is better? If you keep cards in progress until they're released (and you should), you very quickly reach a point where you _have_ to release, or it's simply impossible to do any more work. In fact this is pretty much the core problem Kanban was meant to solve.

I'm blocked? A blocked card is filling up a valuable work-in-progress slot, and a manager should notice very quickly. If particular issues keep blocking several cards, that means the manager is seeing those same issues every day; sooner or later they should take notice.

<comment><USER3> You can't solve social problems with dogma. Every single thing you mentioned above will work if it's done right but if you're in a toxic, poorly-managed environment each of those assumptions is wrong.

It is absolutely the case that you will find managers who make everything priority 1, ignore problems for far too long, keep piling features into dreadnaught-sized releases, etc. The only thing which can change that is a different manager – either because the previous one is sacked or because the development team threatens to resign en masse unless they are given enough control to do their jobs responsibly.

<comment><USER2> > It is absolutely the case that you will find managers who make everything > priority 1, ignore problems for far too long, keep piling features into > dreadnaught-sized releases, etc. The only thing which can change that is a > different manager

But Kanban _doesn 't let them_. You are required to prioritize upcoming cards in a linear order, not equally. Limiting work in progress is literally the definition of Kanban. If your manager won't do that, it's not that Kanban isn't solving your problems, it's that your manager isn't adopting Kanban.

<comment><USER4> What happened for us is we tried to adopt it, but it was just so unworkably at odds with our current process, it got mostly ignored.

The manager had no hope to prioritize and minimize work in progress. As a developer I spent more time managing tasks than coding, as it was. For instance - sending out an email explaining how this task needs requirements, that task needs database work, and X, Y, and Z are all done but QA can't test them because we can't get a deploy in because.... etc.

The manager who tried to implement also struggled valiantly against these systemic issues, but he was powerless - a higher power than him had decided that QA (for instance) had to work on project Y _right now_ , and there would be no testing for a few weeks, and so things just fill up.

"I have nothing to work on and I am forbidden from improving quality" was a _very_ common state to be in.

One solution that was attempted was to create more queues that could be worked on for different parts of the app, or to create more buckets...

The point is, he was very aware of our problems, but Kanban couldn't fix them. I don't know what could. When stories got blocked, I definitely made him aware... so the visibility was there with and without Kanban.

<comment><AUTHOR> I would suggest the core issue was that you did not have the freedom to go get the important work down and be responsible for it. Too often work is subdivided so no one actually owns anything important -- because the bits are too small.

<comment><USER4> That's a very interesting observation.

I've always been taught that breaking things down as small as possible is good - easier to estimate, easier to understand, easier to track.

You don't want to give a developer a week long task - that turns into two weeks, for instance. There just isn't the visibility.

I'd agree, there's a huge issue of none of the work feeling important, and an issue of Developers having no real power in the process (other than to unilaterally dictate how long we thought things would cost, strangely enough).

But is it a result of subdividing tasks too small? I'm not sure; it's an interesting concept to explore.

<comment><USER5> I find that the best thing that's ever happened to my task-delegation is Service-Oriented Architecture. You break a project down into a tree of tasks-- then find the nodes are the most weakly coupled, and call each such subtree a "service."

Each service gets assigned to one developer to build and own. Each developer then publishes a protocol/API for their service, and other developers--instead of needing to talk to them to consume their service--just consume its API.

This means each service can be developed, tested, mocked, gateway-ed, and made Highly Available in isolation from synchronous/blocking work by other developers.

</comment></comment></comment></comment></comment></comment></comment><comment><USER6> A friend of mine, CTO at Elfo [1] (a 60-ppl Italian software basically-unknown company) is successfully using Kanban for software development since almost 2 years.

Each team/project (6 to 10 developers) has it's own Kanban board, each person has no more than 1-2 tasks/phase and they focus on keeping the phases balanced, i.e. with the same amount of tasks. They're happy since its a light weight way to have a full picture of what's going on.

His original notes (in Italian, sorry) [2].

[1] [http://www.elfo.net](http://www.elfo.net) [2] [http://www.robertocappelletti.com/2012/01/kanban/](http://www.robertocappelletti.com/2012/01/kanban/)

<comment><AUTHOR> Great. Thanks for sharing this success story. It would be interesting to know if the engineering team is motivated and understands the why they are building what they are.

<comment><USER6> As far as I got a lot. The main reason is that, with limited effort, you see your progress (tasks move). Moreover the management is really enthusiastic of the approach, so they're often showing to guests (like I was) and promoting the activity as something unique of "their guys", so I guess this also makes people proud of what they're doing...

</comment></comment></comment><comment><USER7> The real silver bullet behind Kanban has nothing to do with Kanban. It's the desire for continual improvement and willingness to start where you are and improve from there.

Anytime you attempt to make a huge process shift you are tempting fate and risking failure. The short term drawbacks to huge change can often stifle the process before it reaches maturity. The trick is to work through the rationalization with the team based on current observable problems and lead them towards self-realization and analysis of their own problems.

Most people have ideas of how to make things better, but if you lead them towards the desire for slack, optimizing for the bottleneck, rather than maxing out everyone as if they're all the bottleneck, then you can easily get from there to Kanban-like WIP limits. From there you can adopt other solutions as the problems they tackle are realized.

Smart people frequently arrive at similar approaches whenf aced with the same problems, but not always. Your team may find some novel approach that works better for your context, or they may go looking for options and find Kanban. But the goal should begin with being able to communicate process problems, ask how they can be improved, test the potential solutions, and adopt the best ones.

Unfortunately, the biggest hinderance to gradual process improvement (once your team is on board) is that software tools tend to offer a "whole solution" and don't have the ability to grow with your team's maturity, unless they're writing it themselves.

<comment><AUTHOR> Thanks for the detailed thoughts. I am not sure though that Kanban or an other agile tool can solve the problem when it is one of leadership or direction. Strategy and management do not rise out of the incremental planning bits.

<comment><USER7> One of management's jobs is to enable and empower the workers. One of the principals that enables Kanban development is that management should not dictate worker process. If management doesn't know that they may be tempted to fix the development problems with more process, which actually disempowers the workers. Adding more dictated process may work in the short term, but it's a tactical fix, not a strategic one. A well run business keeps tactics and strategy in balance, and hopefully delegates the tactics as low as possible, to retain empowerment. Good management acts as a multiplier to worker productivity. Bad management cripples what it's trying to manage.

So yes, you need good management, but good management alone does not guarantee success. Management cannot be the source of the solution to every problem.

The other bit to take into account is that management can benefit just as much from its own cycle of metrics, feedback and retrospective action. All levels of an organization need to be able to improve, not just the developer teams. However, that's usually a completely different set of tools and skill sets.

<comment><AUTHOR> Agreed. The point I am trying to make is the following: I think you need to do both and that's why building great products/software is hard. You need to see the big picture yet deliver against it in bite-sized chunks. Good PMs and Engs are capable of doing both at the same time. That's the key. Give folks responsibility for owning big ideas and allow them to get their work done in an agile, incremental way. Kanban really is about the incremental "getting there" part.

</comment></comment></comment></comment><comment><USER8> In people' experience(s) how likely is it that a company can salvage a situation like this? I'm starting to experience this at work and I've been thinking about leaving (for other reasons than just this), and I wonder if anyone has actually seen a turnaround in an engineering team's culture.

<comment><USER9> I have seen a turnaround, a dramatic one. I forget the number, but this was for something in the range of a $60MM contract. I will not identify the company or product for various reasons.

How was the turnaround accomplished? By firing everyone in charge, and replacing them with people that could actually make reasonable decisions. Some lower level people were also let go; we had some people without the chops to do the job. But that was not the main problem. The problem was consistent management focused entirely on 'process' without regard to what we were trying to accomplish. In the form of "MIL-STD-1234 says we have to produce documentation in the form of X. Therefore, produce X". Documentation does not result in a great product. Documentation can only, wait for it, _document_ what was done. That was just one sliver of it, but entirely representative. Methodology X, process Y, 5 levels of sign offs all focused on what color ink you used or if your document's headers use the right capitalization. Just shuffling requirements along an endless document chain, without actually trying to figure out how to meet those requirements.

A really smart systems engineer who had the bosses ear was able to say 'they will never make it', he eventually listened, she was put in charge, our best engineer was finally put in charge of the SW, and from there we recovered.

In the interim we hired a bunch of outside consultants to come in. I don't see that they did anything of value. Lot's of interviewing, lots of 'do x, y, z'; meanwhile the people that had _successfully produced this sort of project before_ were still being ignored.

That is one story. The problem was mid-level management, and only once they were all fired (actually, there were several rounds of getting rid of person A, and replacing them with an exact clone, and of course that person had identical results) did we recover. This probably doesn't apply to any place where the problem is not middle management (say, a team full of cowboys, or a PM that sends you off on wild goose chases, or whatever).

<comment><AUTHOR> Exactly. Put the folks who can get the work done in charge of actually getting the work done. Give them the responsibility and allow their courage to flourish 9and remove barriers when needed). Celebrate their accomplishments.

<comment><USER10> yep - full management replacement is often the only thing that can help, and boards generally dont have that level understanding. plus the management wanna stay in place and advance personal careers/salary without effort and thys deflect issues and pressure the board. it even happens in non profits.

</comment></comment></comment></comment><comment><USER11> The key word (that is admittedly missed from the title) is "blindly": 'blindly applying "agile shock therapy" or introducing Kanban will only suck you further into the abyss'.

Which is a bit of truism: do anything blindly and your chances of succeeding are based entirely on luck.

Depending on the specific circumstances Kanban, or any other agile methodology, may or may not be part of the solution to the so called "death spiral".

</comment><comment><USER12> One problem with this article is the absence of any reasoning process.

How do you know there is such a thing as a death spiral? How do you know these symptoms apply to the "death spiral" condition. How do you know your solutions actually alleviate the symptoms or abandon the condition?

<comment><USER13> Death spiral: When you keep creating products with no demand in the real world [1]. You create things, release things, nobody uses it, but by then, you're working on the next version nobody wants either.

Death spiral: Working on components of a larger project with no hope of ever integrating all pieces into a coherent final release. Everything gets incrementally improved in isolation, but nobody can figure out how to cut a product out of all the pieces.

[1]: Plenty of demand exists in the delusional minds of executives, PMs, and clueless employees though. It just doesn't match the real world.

<comment><AUTHOR> True. That's one of the ways that you end up in this engineering death spiral -- bad market / product fit and thrashing strategy.

</comment></comment></comment><comment><USER14> The article has some good points, but I'm not really sure what it has to do with Kanban.

<comment><USER15> Kanban is the silver bullet of the day which sinking enterprises reach for. I've been a software engineer since 1989, and the entire time has been filled with process/method fads "which will fix everything." In 1989 it was Yourdon's institutionalized bureaucracy. Today it's Kanban.

Doesn't make Kanban broken; it just means that it is the non-solution for today's desperate souls.

<comment><AUTHOR> Very true. There is always some new "fix it." The problem is often that the engineering tools do not improve product management in the least and if the product strategy is bad and customer understanding is missing, no engineering team or tool can solve that.

<comment><USER9> But "Aha" does solve it?

</comment></comment></comment></comment><comment><USER16> Can anyone here recommend some references for someone wanting to learn about Kanban?

<comment><USER7> [http://www.amazon.com/Kanban- ebook/dp/B0057H2M70/](http://www.amazon.com/Kanban-ebook/dp/B0057H2M70/) Note the subtitle: Successful Evolutionary Change. Don't try to change everything all in one go.

And if you already know Scrum, here's some differences: [http://www.infoq.com/news/2009/05/kniberg-kanban-v- scrum](http://www.infoq.com/news/2009/05/kniberg-kanban-v-scrum)

<comment><AUTHOR> There is a good overview here for Kanban for development: [http://en.wikipedia.org/wiki/Kanban_%28development%29](http://en.wikipedia.org/wiki/Kanban_%28development%29)

</comment></comment></comment><comment><USER17> The article's own link to the authors product is broken.

<comment><AUTHOR> Thank you for pointing that out. Grateful for the call out. Best.

</comment></comment><comment><USER18> Warning: title not reflective of content.

<comment><AUTHOR> Thanks for the comment. The point is that using Kanban or implementing "agile" is not a savior from the engineering death spiral. The post includes that exact point in the first paragraph.</comment></comment>


IPO, Web 2.0 Style - <AUTHOR> http://www.uncov.com/2007/5/29/ipo-web-2-0-style <comment><USER2> Typical uncov BS. I don't know anything about the startup in question, but this:

 _earnings are so not Web 2.0. Profit is old economy bullshit, and Foldera knows it._

is complete crap. Earnings are a crucial part of what make Web 2.0 different than 1.0 -- this time, people _are_ trying to figure out how to make money. Oh, and BTW, you actually can make a lot of money with a Web 2.0 business. Hell, ask the Plenty of Fish guy -- $5-10 million in annual revenue, one employee. Earnings are so not Web 2.0, my ass.

<comment><USER3> I think his point was that a lot of Web 2.0 companies are launching with the hopes of quickly getting acquired before earnings are really relevant.

Did del.icio.us have any earnings when it got acquired? No.

Flickr? Barely.

Plentyoffish is definitely the exception to the rule -- they are not really "Web 2.0", the founder just happens to have a big mouth & nice blog.

There are plenty of entrepreneurs making hundreds of k a month with little to no employees; they just don't brag about it on their blogs.

<comment><USER2> Both delicious and flickr had earnings before they were acquired; they just didn't have profits. Since advertising is a proven business model on the web now, this wasn't a concern.

Plenty of Fish seems web2.0 to me; it may not be ajax-enabled, but it's certainly a social network.

 _There are plenty of entrepreneurs making hundreds of k a month with little to no employees; they just don't brag about it on their blogs._

It was just an example; I could have named any of the other companies you're thinking of to make my point. The point is that they have earnings or at least a solid earnings plan. "Earnings don't matter" is not the web2.0 way.

<comment><USER3> Point taken.

Just a nit though: how was del.icio.us making money?

I never saw one ad on there before Yahoo acquired them, come to think of it, I still don't see any ads on there.</comment></comment></comment></comment>


Startups -- So Easy a 12-year-old Can Do It - <AUTHOR> http://steveblank.com/2011/01/31/startups-so-easy-a-12-year-old-can-do-it/

<comment><USER2> Even better - 4th graders in my school ran the cookie business as part of the curriculum. Each week, one student was the "manager" who would supervise the baking of cookies in one corner of the classroom.

Initially, shares were offered to the class for $5 each, 2 per student maximum. I thought it was a dumb idea so I didn't ask my parents for the $10. That capital was used to purchase the ingredients (by that manager's mom, reimbursed), and the manager and his/her deputy would supervise the baking of the cookies each morning and would sell them at lunchtime for 15 cents each.

The assets of the company were liquidated at the end of the year and each $5 share was worth $70. I've been overoptimistic about entrepreneurship ever since, probably to compensate for missing out on having $140 of fuck-you-money in 4th grade.

</comment><comment><USER3> Great story. We've been trying hard to get our daughter's Girl Scout troop to do anything like this without success. That's exactly what Girl Scouts should be doing.

We might try again with the kids from our First Lego League team after the season.

Or what we should really do is start an incubator (or a "virtual" incubator online) aimed at teens.

<comment><USER4> Well, there's already "Business-Wise" and "Cookie-Biz". You might do better trying to help girls attain one of those badges using startup thinking than to try and get the entire troupe doing a startup.

(There might be some overlap possibilities in the "Global Action" and "Get with the Land" programs too)

Make it so much fun that the first group tells all their friends to try.

<comment><USER5> This is a good idea being that the concepts of startup thinking can probably transfer over. That said, it might be even better to use the badge acquisition as a stepping stone toward the real experience and have them do it like the article after, so they can understand how the different contexts affects their assumptions.

When I was in middle school all we had in terms of understanding "business" was an annual pushcart fair where most of the kids just chose to sell gobstoppers and we call it a day. This program seems to go more in depth in terms of giving these kids a genuine problem, having them think, communicate, and plan their actions, and most of all, putting their theories of business to the test with real world results they can use to assess their predictions of the world. These types of applicable real world activities WITH resulting data to challenge ones understanding is crucial. Probably why for us older kids with startup dreams, it's so important to just do something rather than just think/talk only about tech projects and ideas. The earlier one gets real projects out (first foray need not be perfect) and starts getting real user results the earlier we can test our assumptions and adapt, grow.

</comment></comment></comment><comment><USER6> It would be great to see programs like this across the country.</comment>


Why blocks make Ruby methods slower - <AUTHOR> https://www.omniref.com/ruby/2.2.0/symbols/Proc/yield?#annotation=4087638&line=711&hn=1 <comment><USER2> Wow, that is super interesting!

I think they buried the lede though. (Edit: not complaining! I like tech taught via a discovery narrative like they use here.) Given this:

        def a(&block)
          yield
        end

        def b
          yield
        end

Running `a {1+1}` is 4x slower than running `b {1+1}`. I didn't even know you _could_ yield in a method without an explicit &block parameter. I'll guess I'll change my ways then, although I like having the block declared in the method signature so I know at a glance I can pass one. Too bad!

So I understand from the article that the slowness is because of extra memory allocation etc., but I still don't understand _why_. I mean, if both methods behave the same, what is the difference? Is it because declaring &block means my code in the method body can now "do stuff" with `block`, whereas in the implicit case I don't have a reference so I can't do any funny business but just yield? That would make sense.

<comment><USER3> Even though it's slower, I avoid the latter form as a matter of style. I think it's super important that if a method yields, it's shown in the method signature. Otherwise, your code won't be self-documenting, and it's going to cause weird and hard-to-debug bugs later on.

<comment><USER4> > Even though it's slower, I avoid the latter form as a matter of style. I > think it's super important that if a method yields, it's shown in the method > signature.

Using &block in the signature does not indicate that the method yields, it indicates that the method reifies a Proc. To me, its a sign that the method does something which makes it likely that the passed block will be called outside of the usual lifetime of the called method.

Now, it may be an issue that Ruby has no self-documenting signature element which indicates that a method expects a block for the purpose of yielding without reification, but overloading the signature element which is for reification doesn't really address that (and, destroys one element of self- documentation in order to create another one.)

<comment><USER5> So, that the function reifies the block is not part of its _interface_ , though, it's part of its implementation. If anything it's a problem that this implementation detail leaks out through the interface.

Furthermore, if you pass it a block with & on the call-side, it's not really reifying a block anyways (even if there is still a performance penalty, which I've never checked), so it's not even true that's what it means in general.

The truth is all functions take a block in ruby. Only some of them do anything with it. Given that, indicating that you take a block with the &block argument seems entirely reasonable to me, if you don't mind the performance hit.

</comment></comment></comment></comment><comment><USER6> This isn't just a syntactic difference. A Proc can outlive the method that defined it, so the interpreter must lift local variables from the stack to the heap. A block, however, can never outlive the method that defined it, so local variables can remain on the stack. In theory, the interpreter could perform an escape analysis and implicitly convert `block.call` to `yield` if no `block` reference survives local scope. Presumably MRI 2.3 does this analysis.

Python has a similar performance impact for closures. Defining a lambda forces local variables onto the heap, even if the lambda is never instantiated, e.g. when defined inside an infrequently true condition.

</comment><comment><USER7> It is highly unlikely that this will make a non-trivial performance difference in any real code. Please don't go micro-optimizing your code for this, it's unlikely to be worth any loss in readability or maintainability. And it's platform dependent, may behave entirely differently in JRuby, or in future versions of MRI.

</comment><comment><USER8> I love those kind of clear explanations! It's probably not life changing, but at least you have the thorough explanation just not a statement telling you that x is faster than y. Props for Omniref and the reddit guys!

</comment><comment><USER9> This title really should read "493% slower" rather than just "slower."

<comment><AUTHOR> It was submitted as such, but must have been altered by a moderator.

</comment></comment><comment><USER10> Thank you, this was great! Both my work and side projects all run on Ruby (except the ones that run on js), and this has been extremely helpful. I actually wrote def(whatever, &block) ... all the time because I was told that it would be clearer that a block was needed, but if just dropping the &block means I can get a 4x speed upgrade... well, time for a bit of refactoring in various critical loop sections.

<comment><USER11> > if just dropping the &block means I can get a 4x speed upgrade

Well, __up to __4x. If you 're doing anything interesting or complex, or, god forbid, making a database call, then this might turn into an instance of that famous anecdote where Bill Gates wouldn't even bend over to pick up a thousand dollars laying on the ground.

<comment><USER5> This can't be emphasized enough. Do almost anything worth doing in that function or in the block itself and the 400% improvement on the 1% of that functions execution time becomes almost certainly meaningless. These kinds of performance improvements have very steep diminishing returns.

</comment></comment></comment><comment><USER12> I like posts like this from OmniRef exploring the RubyVM internals.

Is there anyway to search through all of these types of source code annotations across the site?

I wanted to learn about method dispatch in Ruby, there was a post earlier on HN about this using OmniRef, I don't know how to retrieve it from the site directly.

<comment><USER13> We've made a page with all of the tutorials we've done so far: [https://www.omniref.com/tutorials](https://www.omniref.com/tutorials)

I think this is the method dispatch one you're wanting:

[https://www.omniref.com/ruby/2.2.0/files/method.h?#annotatio...](https://www.omniref.com/ruby/2.2.0/files/method.h?#annotation=4081781&line=47)

</comment></comment><comment><USER14> Is this 400-500% true for more expensive operations inside of the block? It seems like he's just comparing the cost of procs to the cost of 1+1. I don't think the generalization has been established here.

<comment><USER15> You're right, he's comparing the cost for that very simple case. Do anything remotely complex and it quickly becomes just noise.

<comment><USER13> As with all things, it depends on context. If you're trying to write a graphics or audio system in Ruby, this kind of thing can really matter. If you're writing a Rails app, it's rounding error on the time waiting for I/O.

Profiling is essential when figuring out how to improve your code. What we're doing here is _explaining_ one weird benchmark result.

<comment><USER14> Except that's not what's being said:

"Why blocks make Ruby methods 439% slower" implies something that isn't happening here, at least to me.

</comment></comment></comment></comment><comment><USER16> Despite me having very little interest in Ruby this was pretty interesting to read, I would love to see some similar walkthroughs (?) with the Python interpreter source code.

</comment><comment><USER17> There was a post on a Reddit discussion of this that was quite interesting: [http://www.reddit.com/r/ruby/comments/2x9axs/why_blocks_make...](http://www.reddit.com/r/ruby/comments/2x9axs/why_blocks_make_ruby_methods_439_slower/coy5gcb)

Apparently, this is due to overhead from creating a Proc object. The performance is better with blocks in JRuby, and the same will apply to MRI 2.3 when that gets released.

</comment><comment><USER18> So, I know very little about the practical implementation of a non-trivial interpreter (read: next to nothing), but... it's difficult for me to understand why this would be the case. What is the reasoning behind the interpreters lack of semantic awareness? Can't it, in the most simple case, see that the block is not being modified or accessed in any way and optimize the reification out?

<comment><USER19> It seems like it's obvious that it should be able to remove the allocation of the block, however as with everything in Ruby there are edge cases.

What happens if you're halfway through executing this method, you've not allocated the block, and somebody wants to start a debugger? Then you have you go back and somehow recreate the Proc as if it was always there. Same thing if someone uses ObjectSpace to look for all live Procs.

<comment><USER18> Huh. Is it standard in interpreted language land to avoid optimizations in case for the debugger use case? Seems like that would rule out a ton of potential optimizations...

<comment> vertex-four > Is it standard in interpreted language land to avoid optimizations in case > for the debugger use case?

Yes. Otherwise, you'd have to have separate "being debugged" and "not being debugged" runtimes that keep track of different information and do different things, and it's not unlikely that you'd end up with programs doing different things as a result. You can actually access debugger information from inside the program, and it's not that uncommon to do that.

</comment></comment></comment></comment><comment><USER4> Interestingly, there's a comment there that indicates that the cost is _much_ lower on JRuby. Be interesting to see if this is true, and what the cost is like on Rubinius? Possible low-hanging fruit for MRI to improve?

<comment><USER20> I wonder if it costs less in JRuby or if JRuby's version of yield is less optimized.

<comment><USER5> It's probably that jruby is just much more likely to inline it either way, at which point whether it was reified or not doesn't matter, unless you call something other than .call on the Proc object.

</comment></comment></comment><comment><USER21> If someone cares about speed, why would that someone be using Ruby? It feels like optimizing a Ruby program is making "really fast slow code".

<comment><USER22> Perhaps because it's a nice language?

Languages are not the same as implementations, and languages are not fast or slow.

<comment><USER23> Languages are not fast or slow, but languages do have traits that make them more or less well suited to fast or slow implementations. Ruby's semantics do not make it well suited for a fast implementation.

That said, the question just becomes "why would you use MRI if you care about performance?"</comment></comment></comment>


Prime Minister of the World - <AUTHOR> https://www.the-tls.co.uk/articles/metternich-wolfram-siemann-book-review/ <comment><USER2> [https://archive.md/FPLXz](https://archive.md/FPLXz)</comment>


The Dalai Lama's Daily Routine and Information Diet - <AUTHOR> http://www.brainpickings.org/2015/06/09/pico-iyer-the-open-road-dalai-lama/ <comment><USER2> This article feels good to read, but I have my doubts about it's actual utility. Most profoundly, he leaves the question unanswered about what the Dalai Lama actually _does_ with the information he consumes. How does he act on it? Does he ever seek to contact someone that he reads about? Does it inspire writing about compassion? Does he ever get angry about the things that he reads, or sad? Does he get overwhelmed or frustrated?

</comment><comment> k-mcgrady Didn't realise the Dalai Lama was a controversial figure just judging from some of the early comments here he is. Why? Is this a silly 'religion/mysticism vs. science' thing or is there more to it?

<comment><USER3> There is a rumour that he used to own slaves. I've never been able to find any good research on it, though. If anyone has any, I'd love to read it.

Edit: I'm not too sure why I'm being downvoted, since I'm essentially asking for clarification on something. Should questions be looked down upon?

Here's a Wikipedia article dealing with what I'm curious about: [https://en.wikipedia.org/wiki/Serfdom_in_Tibet_controversy](https://en.wikipedia.org/wiki/Serfdom_in_Tibet_controversy)

<comment><USER4> This comment reminds me of South Park's "Dances With Smurfs" episode.

</comment></comment></comment><comment><USER5> Does the Dalai Lama really get up at 3:30 AM? Is this because of the massive Chinese time zone?

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

<comment><USER6> The Dalai Lama -- and the Tibetan government in exile -- are in Dharamsala, India which is GMT + 5 1/2\. He hasn't set foot in Tibet since his exile in 1959.

EDIT: If he were in Lhasa, the sunrise today was at 6:55 AM so he'd be up almost 3.5 hours before sunrise. In Dharamsala the sun rises at 5:17 AM, so he gets up only 1:45 before sunrise.

</comment></comment><comment><USER7> Why should I care about the Dalai Lama's daily routine? I don't care right now, so this is a real question.

For bonus points, should I also care what the Pope's daily routine is? Why or why not?

I'm not trying to be snarky, even though it may read that way.

<comment><USER8> Perhaps you should give the article at least a cursory glance, as this question is addressed in the opening paragraph.

 _" I suspect that our voracious appetite for the daily routines of cultural icons is fueled by a deep yearning to glean some insight on and practical help with this impossible balancing act, from people who seem to have mastered it well enough to lead happy, productive, creatively fruitful, and altogether remarkable lives."_

<comment><USER7> Yes, I read that, but I don't have any particular reason to think the Dali Lama would provide insight. Should I?

Right now I hold him somewhat (perhaps unfairly which is why I'm asking) in the same regard as Deepak Chopra. Deepak often provides "deepities," things that may sound profound, but are intellectually hollow.

<comment><USER9> He's a Nobel Peace Laureate and recipient of the Congressional Gold Medal. He's been meditating on compassion and the self for several hours a day for 77 years (since he was 2), almost 200,000 hours of meditation. He's authored over 50 books. And he's a very charismatic, joyful, warm spirit--I saw him speak and I can see why many want to learn from and emulate him.

But I guess that's a question you can ask of any posting on HN, "why should I care about so-and-so's opinion, daily routine, life, etc?" So perhaps the burden is on the person asking to question to say why we shouldn't care.

Also, I would say that the Dalai Lama's teachings aren't meant to be intellectually rich. He does have a high regard for science, but I wouldn't say his teachings are intellectual. They are practical and meant to help you observe the world without the intellect.

<comment><USER7> Thank you. Somebody willing to work at answering the question. Those are some possible reasons. Not good enough for me in this case, but definitely worth pointing out.

I've seen him in person too. Yes, charismatic. I don't think it is my burden to say that you shouldn't, because it is fine with me that _you_ do care. Obviously lots of people care about him. The whole point of my questioning is to get at, "why?" I don't know and so I ask the question. Really, no other motive. He seems to transcend and earn respect from people outside of his religion in a way that other spiritual leaders do not. _I want to understand that._

<comment><USER10> I think it mostly has to do with Buddhism being seen by the majority of people, especially in the western world, as an oriental philosophy and less as a religion like Christianity or Islam. So people outside of Buddhism feel sympathetic to the Dalai Lama and Buddhism in general, in a way that, for instance, an Islamic does not feel for the Pope.

It also helps that his messages are in general agreeable. The whole peace and meditation and good-will stuff has a very low potential for controversy.

EDIT: Also let me add that I don't see why you are being buried. You aren't being disrespectful or rude or in anyway breaking the guidelines by asking these questions. You even stated in the first post that you if you came across as snarky it wasn't intended.

</comment></comment></comment></comment></comment></comment><comment><USER11> That is one of the best non tech articles I have seen on HN this year. Personally I think the Dalai Lama is the real deal, someone who has compassion for everyone.

</comment><comment><USER12> Fun fact: the dalai lama was once the world's largest slave owner in feudal tibet.

<comment><USER13> That sounds like a worthless political factiod rather than an actual objective fact about the world or its history.

I can't think of any country in the world that has the moral high ground.</comment></comment>


LMAO: RIAA Website Wiped Clean by "Hackers" - <AUTHOR> http://torrentfreak.com/riaa-website-hacked-080120/ <comment><USER2> k, we all hate the RIAA, but how is this notable?</comment>


The Future of Video Marketing - <AUTHOR> http://threemotion.co.uk/the-future-is-video/ <comment><USER2> Video marketing is definitely the future of a content marketing. Video is certainly the best format to advertise business as 100 million internet users watch a video online daily. With such tools as [https://www.viosk.com/personal-video- marketing](https://www.viosk.com/personal-video-marketing), video creating is accessible to everyone.</comment>


NASA turns research to California drought - <AUTHOR> http://www.apnews.com/ap/db_15897/contentdetail.htm?contentguid=ZBuWu6oJ

<comment><USER2> I wonder of less "famous" states get similar support, and if NASA support could be a useful less corruptible for of development aid, compared to other aid programs.</comment>


Ask HN: What are your best life hacks/best tools in life/time savers? - <AUTHOR> I would like to know wich things you consider to give you and advantage in any area of life.
Some things I would add to the list:
1) Program launcher (launchy/quiksilver/gnome-do/katapult/etc) instead of icons
2) Vim as an editor (mastering its usage)
3) Gesture search in android
Not currently using but I want to try:
- Polyphasic sleep (perhaps everyman)
- Colemak keyboard layout <comment><USER2> Buy a starter pistol, you know the kind that they use at tracks. This is still considered a valid weapon for airport screeners so this "tip" applies only to non-carry on luggage. Put the pistol into your luggage and declare it before depositing it with the airline. It won't be lost, tampered with or diverted, ever.

The reason is simple. They have to treat luggage with firearms different from normal luggage. It goes into its own area and is placed in special locked compartments. There's a high level of security involved to protect passengers which ultimately aids you.

<comment><USER3> How does that work out in terms of the amount of time you have to spend vs the probability of having your luggage lost?

Also, don't you think it's a bit unethical? Applying the "what if everyone did this?" rule it seems to come across pretty badly.

<comment><USER4> I know people who do serious mods for classic arcade games. Serious mods as in: build custom PCBs for the three FPGAs needed to make an Atari 2600 generate VGA output. Those systems look like bombs: they're old machines bristling with wires and test equipment. Transporting them to arcade game conventions is a massive pain. You can't check them because you can't trust the airline/TSA not to destroy them. And you can't carry them on board because there is literally no way to convince TSA inspectors that you're not carrying a bomb. This seems like a very good solution. I mean, for some of these people, the choice may come down to the starter pistol idea or just not flying to conventions. Seems like a real win to me.

I'm not really seeing how it is unethical. The TSA decided on the security procedures. It might be slightly inefficient, but given the massive inefficiency of the entire airport security policy, I can't imagine complaining about this. There is no reason that people with delicate electronics should be forbidden from flying on airplanes. No reason at all.

</comment></comment></comment><comment><USER5> Life Hack:

Buy a box (10 or so) of small LED flashlights. Place one discretely behind anything you routinely have to peer behind. I have one behind my fridge, my television and inside my computer rack.

Work Hack:

When hosting a meeting, never schedule more than 30 minutes. This requires keeping things on point and moving ahead. Start on-time, state the point, tease that the meeting should only take 20 minutes. Avoid rehashing for late- comers, explain that you'll get with them after the call/meeting. Participation goes up when people have incentive and when you have a reputation for starting on time, people will arrive on time. The ones that don't probably don't need to be there.

If you're at a larger company, greet everyone you pass in the hallway regardless of title, position, or rank. Get to know their names and use it in the greeting (there was a famous book somewhere . . .). "Good Morning, Joe" is enough.

Completely disconnect for more than two days every once in a while, especially if you're in a rut somewhere (dead-end project, writer's block). I'd take short cruises and spend the majority of the time watching the water (this was back when cruises didn't have internet access or cell service, and even now the cost is prohibitive enough that you can tell work "You can reach me for $9.00 a minute"). The first day or so is discomforting, but after the third you stop thinking about what you missed on Hacker News.

You didn't say Vacation Hacks, but I have a few:

\- Schedule trips during the common first/last week of school. Parents usually can't take trips at this time, so resorts/cruises are usually under-booked and less expensive.

\- If you like cruises, watch NYC launches that happen over one of the big Jewish holidays, especially themed or promo cruises. Cruises are usually booked several months in advance. Cancellations are common, the cruise company gets paid partially and wants to fill the room. I got a $500 and $400 balcony on a 7-day in East Caribbean on a great ship this way. Both were themed cruises, so this may make a difference (much earlier booking, perhaps).

<comment><USER6> > watch NYC launches

Is there a site to keep up with this? I'm in NYC.

Similarly for air travel: what do you use to find good deals? Sounds like you've done research.

</comment></comment><comment><USER7> My best hack, hands down is: just don't go to meetings.

It's weird at first. Seems like you'll get in trouble, and people do get pissed. But they have a weird way of getting you just the information you need and little more.

I don't skip every meeting, just the ones that routinely offer me little value and waste a lot of time. I just stopped going and nothing changed except I have a lot more time to get things done.

BTW, I switched to Colemak a couple of months ago. If you're doing it to type faster, you might be disappointed for a while. If you are doing it for ergonomics, you'll be delighted. I switched because I started noticing fatigue in my fingers.

</comment><comment><USER8> If you want to force yourself to tidy your apartment, invite a girl over for dinner.

<comment><USER9> If that doesn't work, you can invite your parents over. I always clean my apartment for my parents, because they won't be shy in telling me immediately if it's dirty, and then they'll nag me about it the rest of the night - and I definitely don't want that.

</comment></comment><comment><USER10> Ditch your TV. I did this by accident (<http://blog.jgc.org/2010/02/year- without-tv.html>) and it's been an enormous change in my life.

<comment><USER11> Just be careful you don't turn into this guy:

[http://www.theonion.com/articles/area-man-constantly- mention...](http://www.theonion.com/articles/area-man-constantly-mentioning- he-doesnt-own-a-tel,429/)

Really though, I think it's a good idea. There's some good content on there, but it's a tempting easy distraction. I'd also add "limit your time messing around on the internet".

</comment></comment><comment><USER12> I rarely cook a meal for just myself. Either I cook for my housemates, or one of them cooks for me. It saves a lot of time, because cooking scales sublinearly. It's also cheaper and tastier (I put more effort in if I'm cooking for others).

<comment><USER13> Also, if you live alone (or have a diet incompatible with your housemates), try cooking for several days at once. Cooking and meal planning are skills you're guaranteed to be using for life, so put in the time to become at least moderately competent at them.

</comment></comment><comment><USER14> 1) 9 - 10 hours sleep

2) reduce multitasking

3) eat like a bird

4) exercise

5) don't commute more than 20mins each way

<comment><USER15> 1\. I understand sleep is important, but how in the world do you guys get 9-10 hours of sleep?

Between a full time job (8-10 hrs, salary so when a client needs help, off I go!) and trying to hack the latest and greatest of my ideas in my spare time, family, friends, chores, and relaxing for a moment at the end... I don't have 9 hours left before I have to be at work the next morning.

3\. Am I missing something, can someone enlighten me about this eat like a bird? If anything I need to gain weight.

5\. I live a block from the office :)

<comment><USER16> He didn't say he/she has a work. Anyway, you can decide to work on your projects on certain days and go out with friends in others (weekend perhaps). There's no way you can do everything in the same day and still sleeping 10 hours.

</comment></comment></comment><comment><USER17> Ledger - command line double entry accounting. A great way to keep track of your money.

Martial arts - beating people with a stick is good for the soul.

Aldiko - ebook reador for Android. It makes reading very easy; rather than carrying a book everywhere you go, just take out your phone.

</comment><comment><USER18> GNU Screen is the big new thing for me. While old hat for many programmers, I just recently started realizing the power of it, especially detaching and reattaching, or reattaching to a broken SSH connection.

<comment><AUTHOR> I agree, GNU Screen is great... but try tmux, I do prefer this one because of the ease of splitting horizontally and vertically without the need of a patch. If you want to stick with Screen... try Byobu

<comment><USER19> Is splitting terminals really that helpful? I tend to use 80 character wide, tall terminals so that I can have emacs sitting next to it (in similar dimensions). I guess if I used console emacs, having one terminal with it split would be fine, but when I'm using a tiling window manager, I don't necessarily see the benefit..

<comment><AUTHOR> Well, I sometimes have to work in a server without X Windows, but with framebuffer enabled and tmux it's a pleasure to work on it.

<comment><USER19> I guess it's been a long time since I've worked on a system without X. :)

</comment></comment></comment></comment></comment><comment><USER20> Python. I'm sure people will fill in the scripting language of your choice, but knowing at least one is a real time saver. I have lost count of the hours and hours and hours of drudgery I have saved because of being able to fire up a script in short order.Life is good when you can make a 2 hour task take several minutes :-) Especially if that task is something you have to do on a consistent basis

For life in general, exercise has been good. I'm in crappy shape now, but getting back on the wagon. Being in some semblance of shape does wonders for your health and well being. And strength training in particular makes you less of a victim in many life circumstances, like having your snack stuck in the vending machine or moving furniture. The downside, obviously, is that you get asked by people to tip vending machines and move couches...

</comment><comment><USER21> 1) A smartphone. I use it to record notes and random ideas as they strike me, read & answer emails, find directions, and all that other good stuff. The note taking is a huge advantage though.

2) An online calendar. For better or worse, I've freed up my brain space in favor of an online calendar to track my meetings, appointments, events, etc. I don't have to keep those in mind anymore. Personally, I love this, but it does make me overly dependent on the online calendar.

3) Goldtouch keyword. I love this thing. I was trying to stay away from brand names in my list, but I didn't know how else to describe it. It folds down from the middle allows you to touch-type in a very ergonomic position, at least for me.

4) Duct tape. It truly can repair anything physical. Just fixed my fan with it.

5) A towel. You always need to have a towel ;)

<comment><AUTHOR> Hahaha nice reference to "Hitchhiker's guide to the galaxy" in #5. Douglas Adam would be proud ;)

I agree with you on the smartphone, I use an android flavoured device myself.

The online calendar is a win as well, and it integrates great with the smartphone.

I would add Evernote (or similar)!! For online note-taking.

Didn't know about Goldtouch keyboard before, I'll have a look.

Duct tape!! McGyver lives in our heart ;)

Thank you

<comment><USER22> As long as your bringing up MacGyver, Victorinox "Tinker" Swiss Army knife. Duct tape to put things together, knife to take 'em apart. The Tinker is small enough for every day pocket-ability but versatile enough to do about anything you need.

<comment><USER21> Although I don't have a Swiss Army knife myself, a buddy swears by it. He even breaks it out when we're just grabbing a bite to eat. Other restaurant patrons always cast sideways glances at him, but hey, at least he's able to open his bottle of beer. ;)

</comment></comment></comment></comment><comment><USER23> When going out to eat in a group pay a bit more than you owe. A few extra dollars to have the meal end in peace is always worth it.

<comment><USER24> This can also get expensive really fast

<comment><USER25> Asymptotically, it's only O(N) for a meal priced N. In practice, since you only need to put in a few extra currency units, it's O(1). So it really can't get expensive fast.

<comment><USER26> Big O.

Sometimes it is nice to just bask in the way disagreements are carried out on HN as opposed to e.g. Yahoo news.

</comment></comment></comment></comment><comment><USER27> Whack a screwdriver blade against a strong magnet a few dozen times, all in the same direction. Presto, your $1 screwdriver is now a $2 magnetized screwdriver.

</comment><comment><USER28> There's a lot of great tips here, some I use every day. However, there's one conspicuously missing: whiteboards.

To me, whiteboarding is the best brainstorming tool possible. It's useful for just about everything, too. My whole wall is covered in them and they're almost always full. Get a whiteboard and you won't regret it.

<comment><USER29> Yes, yes, a thousand times yes. One thing that has worked really well is to take 3' x 2' whiteboard, rip off the frame and place it flat on your desk. It is fantastic for when you are talking to someone at your desk and quick diagram would help. At first people thought it was weird but people have gotten used to it and gets doodled on all the time.

It's also good for reminders and phone messages.

<comment><USER30> Great idea! Behance also sells some whiteboard paint that you can use to turn most any surface into a whiteboard. Thinking of picking up a batch for my room.

</comment></comment></comment><comment><USER31> 1\. Sharpie marker attached to my keyring, can't keep count of how many times this came in handy (Marker, Ready-to-Edit)

2\. Espresso + Emacs: former for fast HTML/CSS prototyping, latter for fast prototyping of everything else

3\. Wacom tablet when I don't use the keyboard a lot. Faster and more accurate for me compared to a mouse.

4\. KeyRemap4Macbook: rebinding the keys I don't use often to something more useful (caps lock to control, right command to escape, etc.)

</comment><comment><USER32> 1) a collection of autohotkey scripts (key remapping, fast toggling for show/hide hidden files, toggle selected text from upper/lowercase and a heap more)

2) sms reminders on google calendar (free!)

3) learning as many kb shortcuts to your software as you can

4) automatic filters and a well thought out label system in gmail

5) sumatra pdf viewer, or any really quick pdf program

6) electric blanket on a timer, makes going to bed when I should seem so much more appealing

7) sysinternals process explorer instead of the usual taksmanager

8) a large good quality whiteboard hung somewhere you cannot ignore it (I have 3 main sections: Do, Dates & Buy)

9) write well thought out shopping lists before you leave for the store

<comment><USER5> On #8 - Another option is to paint a full wall in your office with Dry Erase Paint (I used this, it works well: <http://www.rustoleum.com/CBGProduct.asp?pid=128>)

<comment><USER33> Or a whiteyboard for a super-cheap, mobile solution.

</comment></comment></comment><comment><USER34> Sorry, only computer/work related:

1) I am so used to a mac that makes me save lots of time compared to other systems I am not used to. That doesn't mean a mac is better or whatever, I just want to point out that using the same system for a long time is probably the best time saver there is.

2) notational velocity is the note taking application (for my mac) that I have been looking for years. I have to write something down every now and then and I can reach NV just with a key press, and get back to work. NVs ui is so intuitive and blazingly fast, that I fell in love with it instantly.

3) spotlight (as a program starter and a desktop search enginge) and time machine are IMO the most time saving things built into the OS (and the user interface, of course).

<comment><USER35> +1 for notational velocity -- it's my scratch area for infrequently used commands, random links, half-written blog posts, todo items... it's just simple enough to get the job done, and blazingly fast.

</comment></comment><comment><USER36> Turn your outside, rear view mirrors out on your car to completely expose your blind spot. When done right, you should have a continuous field of vision by scanning your eyes from your inside, middle rear view mirror to the outside mirror, and then by turning your head very slightly while still scanning your eyes to catch the cars directly to your sides. It's disorienting at first because you can't see the sides of your car, but that's rarely useful anyway, and when it is, you can just move your head until you can see what you need to (e.g. when parallel parking). You'll get used to the setup pretty fast. I can't count the number of times this hack has saved my butt on the highway.

<comment><USER37> agreed. I think the right way to do this is move all the way to the driver's window and adjust that mirror so that it just barely sees the side of the car on one side. Then move to the center of the car and do the same for the passenger side mirror. You'd be the normal distance from the dashboard in both cases.

I think State Farm sent me that tip once. It makes it very easy to set mirrors up when you're in a strange car. And you verify by making sure that objects leaving one mirror enter the next one.

</comment></comment><comment><USER38> I say 'no' to a lot of requests. Works great.

</comment><comment><USER39> Use a good social bookmarking service. I use Diigo, there are a few key things it does for me: \- Keeps a copy of a page (if it goes off the web, i've still got it) \- Lets you tag and keyword search all the content of my bookmarks (Useful when you have a few thousand built up over years) \- Lets you highlight/annotate text on a page

I actually don't really use the "social" aspects of social bookmarking at all.

<comment><USER30> \+ for Diigo. I want most stuff private, it does it. You can create private groups, which I use as folders, say if doing research on an idea I throw all the related bookmarks in a private group. Then I can also share the collection, by just letting someone in the group. They have very robust browser extensions as well.

</comment></comment><comment><USER40> 1\. Reading on the toilet 2\. Getting rid of the TV 3\. Exercise 4\. Sleep 5\. Org mode

<comment><USER36> Reading on the toilet is actually bad for your lower intestines. It can lead to health problems. You want to minimize (within reason) the time spent sitting over a hole like that.

<comment><USER41> [citation needed]

<comment><USER42> For god's sakes please!

<comment><USER41> I'm confused - are you saying my request for a citation was not well founded?

<comment><USER42> I'm saying I wholeheartedly want to see that citation for my own edification.

</comment></comment></comment></comment></comment></comment><comment><USER43> When asked to do things you do not want to do, say no.

Obviously you have to pick your battles, but this simple act is guaranteed to give you more time to do the stuff you do want to do.

<comment><USER44> I've noticed that I don't do this often enough. I don't know if it is because I've become conditioned to say yes to tasks and assignments at work, and that has bled over into my personal life, or just because I hate friction. Either way, I agree with this tip. If you don't want to do it, say no. Otherwise you're going to spend a long time making excuses.

</comment></comment><comment><USER45> Cheap program launcher for Windows users, but I've had something similar on Linux at one point:

1) Create directory "shortcuts".

2) Map path to that directory.

3) Drag shortcuts into there, for e.g. documents, folders, programs. The further-from-your-desktop the better, because that saves the most time. Rename them to 'ideas', 'timesheet', web', 'projects' etc - note that the shortcut name can be quite different to the file name.

4) Change IE setting for autocompletion in the URL bar to true. Probably Tools/Internet Options/Advanced/Use inline Autocomplete. This affects your start menu.

5) [Windows key]-R and the shortcut name. Your shortcut should execute. If you have done #4 above then in future you should only have to type one or two letters of the shortcut in future. 'ti' for timesheets, for example.

<comment><AUTHOR> Launchy is as cheap as free (as in free beer), and it indexes all the filetypes you want, and with a hotkey like alt+space or win+space it learns by usage, so you end up just typing one or two letters... plus there are plug-ins

</comment></comment><comment><USER46> If you have a hole, or a series of holes, to fill in a wall or anything wooden (a smallish hole that a screw needs to fit into), and you need to plug it to put a new screw in (say for example the hinges on a door need to be changed and you want to put the door in the same place) - a simple hack is to get a wooden pencil, shave it down and hammer it into the hole.

Where it stops, or starts to crack under the pressure from the hammer, break it off. Rinse and repeat for all holes.

Then simply use some glue in the hole (around the pencil) to make it fit snuggly. Allow to dry and re-screw.

At least you don't have to buy wooden chips/strips or anything fancy to plug holes. Good old fashioned wooden pencils (No. 2, e.g.).

</comment><comment><USER47> Amazon has lots more than books, so signup for Amazon prime. It's ~$80/yr but you can split it with up to 4 different accounts (so find some friends and it's $20/yr). Instead of all those trips to the store you can now use a few mins of your free time to order any items you need (batteries, shampoo, garbage bags - whatever) and they'll arrive within two days. Overnight orders are only $3.

Grocery delivery. Not a big fan of Safeway stores but their delivery is awesome. I get overwhelmed in grocery stores, buy things I don't really need, forget to buy others. Grocery shopping at home makes it very easy to compare your items and review your basket before finalizing your purchase. Works really well if you work at home and can schedule their 4hr delivery windows (cheaper).

Legal pads. Great for taking notes, sketching ideas, exploring ideas - lots of startupy tasks. They're high contrast and longer than traditional notepads. I know moleskins are generally the startupper standard, but give the legal pad a try one day.

Phonetag (<http://www.phonetag.com/>) I hated voicemail. Phonetag now handles all my voicemail, emailing me the transcription and MP3 of the audio. Now I can organize, sort and search my voicemail just as I do with the other items in my inbox.

</comment><comment><USER48> I can't recommend this software organizer heavily enough -

<http://mylifeorganized.net/>

It's minimalist and gets out of the way, but has lots of powerful features if you need them. But it stays out of your way if it doesn't. I had about 130 little tiny things to do a month ago on various lists, inboxes, etc, etc. Put them all into MLO, got it down to ~40 now. Very useful, worth trying out.

<comment><AUTHOR> Looks good! I'll try it out! I've tried many GTD software and organizers but none fully satisfies me (I liked Tracks).

I see there is an Android version, that is good!! But there is no Linux version... I use both Linux and Windows. Anyway, looks good!

<comment><USER49> I've been using Remember the Milk for GTD: [http://blog.rememberthemilk.com/2008/05/guest-post- advanced-...](http://blog.rememberthemilk.com/2008/05/guest-post-advanced-gtd- with-remember-the-milk/)

</comment></comment></comment><comment><USER50> Also, start keeping a separate google calender (subcalendar) for small daily routines you want to do (i.e. workout, check todo lists, etc). Set it up to SMS / push to your device, But don't sync the calendar on your mobile.

This way your calendar app on your phone only shows the important events in your month view, and you still get notified when to do daily things like "check todo list"

</comment><comment><USER50> humanized enso. I usually drop this in every "best tools" thread.

for windows users: I recently learned to like installing the console app and set the startup path in it to cygwin. I'm sure most of you HNers do this already, but I've spent a loong time looking for a decent console setup on windows x64, where andlinux/colinux isn't supported yet.

<comment><AUTHOR> Sure, while using windows I always setup Console2 + Cygwin killer combo. This way I don't need putty/Secure CRT/whatever and I can create tunnels so that I can connect to remote databases using TOAD.

<comment><USER51> I use a variant of this when running Windows: Ubuntu in VirtualBox is always running.

</comment></comment></comment><comment><USER52> Wall timers for my air conditioners. I have window units in my bedroom and living room. I'm on the top floor of my building, right under a black tar roof. In the summer my place would sometimes get so hot that I'd have to leave both air conditioners on all day just so the place was livable when I got home. Not cool, just livable. My asthma reacts badly to heat, and I'm addicted to breathing.

Then I bought a couple of timers. They're like the ones people use to turn lamps off and on, only these are heavy duty, and can handle the load of an air conditioner. Now the AC turns on in the middle of the afternoon, and things are fine by the time I get home. The living room unit turns off at midnight, so I won't accidentally run it all night if I drift off in my bedroom. The bedroom unit shuts off at 8:30 AM, so I don't accidentally leave it running all day. Not high-tech, but useful.

</comment><comment><USER53> 1) iMac 27"

2) Yoga + Meditation (everyday)

3) MixCloud (for fresh + awesome source of music playlist)

<comment><USER54> ++ for Yoga. You might also try Tai Chi.

<comment><USER55> I have found the physical demands of Tai Chi to be less extreme than Yoga. I have been in too many car accidents.

</comment></comment></comment><comment><USER56> Got rid of my car and moved to a city with good public transit. Lots of time and money saved.

</comment><comment><USER11> Vimperator for Firefox. Granted, this is mostly a time saver for time wasting...

<comment><USER36> I second that. I'm a vim lover anyway, but vimperator has been awesome for me. I had RSI problems and this really helped me to reduce my usage of the mouse. Like vim, there's a learning curve, but there are very useful corners to explore.

<comment><USER57> Tried VIMperator and loved it but had to kill it since it was incompatible with Gmail keyboard shortcuts.

<comment><USER11> Hit ctrl-z to pass through keystrokes. It works with Google Reader, but I'm not 100% that it works with Gmail. I know the issue has been discussed before, and I _think_ it was fixed, but I'm not certain.

<comment><USER36> You're right. In fact, I have my vimperator setup so that it automatically does this for Google Reader and GMail, and only for the relevant tab (i.e. if I hit "v" to view a Reader article, the pass-through turns off on the new tab). I did it with this statement in my .vimperatorrc (Linux):

autocmd LocationChange .* js modes.passAllKeys = /(google\\.com\/reader|mail\\.google\\.com)/.test(buffer.URL)

</comment></comment></comment></comment></comment><comment><USER58> Remember The Milk (<http://www.rememberthemilk.com>) is a life saver. It's a task list that runs on your phone and browser. I can't recommend it enough.

</comment><comment><USER59> Commitment devices. Bethany Soule and I just committed to staying on all of these "Yellow Brick Roads": <http://kibotzer.com/fitfam> . We did so by each auctioning off a security worth $2000 in the event we fall off any of those roads before August 1. Our friend David Yang won for $65 apiece.

</comment><comment><USER60> Think about ways you can spend a few dollars to save yourself time. By driving to my subway stop and paying to park instead of walking, I save myself over 5 mins each way every day. That comes to over 3 hrs a month I get back--about 40 hrs a year. I get exercise elsewhere and it is a pretty ugly walk anyway, so I don't miss it at all.

<comment><USER37> how much do you pay to park? and how long does it take to park?

I calculate my hourly rate after taxes to put a value on time saved when making such calculations.

Also, if saving 2% at Walmart means much waiting in line and dealing with a lot of junk that ends up having to be returned, shop at Target instead. Spending a little money to avoid suffering is often a better deal than spending a lot having a good time. It all matters.

</comment></comment><comment><USER61> Multi monitors and tiling window managers

</comment><comment><USER62> I can definitely recommend the Dvorak layout. If you think Colemak will be even better then go for it!

<comment><USER63> Something I've always wondered...

If you learn a new keyboard layout, does that make it hard to use a regular layout? And what about if someone else uses your computer?

<comment><USER64> I wouldn't say _hard_ , but it can take me a few minutes to get back to full touch typing. Before switching to Dvorak Type 2 (plus <Alt Gr> \+ homerow mapped to <[({})]> for programming) I did already have to switch between QWERTZ (German) and QWERTY (UK, sometimes US) on occasion, which may have prepared me for it. Though the differences between QWERTZ and QWERTY are pretty minimal compared to Dvorak.

</comment></comment></comment><comment><USER65> Don't drive. Ride a bike. Lot's of rest. Make a todo list start of each day. Ignore everything else.

<comment><USER30> I make my days to-do list just before bed at night. Since starting this I have had much more success utilizing to-do lists.

</comment></comment><comment><USER66> I used to ride Muni out of downtown SF every evening. The train would get really crowded and I'd have no place to sit. The hack was to ride Muni against rush hour traffic for a stop or two, cross the platform and jump on the next train which always had room to sit.

</comment><comment><USER67> 1\. Program Launcher: Rocketdock

2\. Notepadd++ - For all editing purposes.

3\. A diary to track and list everything work related, this works as a todo list, doodles, project discussions, lists.

4\. Evernote for dumping notes from across the web and emails.

5\. Combination of Firefox and Google Chrome

<comment><USER68> I'll second Evernote. It's the best place for dumping anything: links, notes, photos, etc.

</comment></comment><comment><USER69> My desktop uses a wireless network with an external USB radio. Having the ability to physically disconnect it a few hours a day works better at countering distractions than exercising self-restraint by not opening a browser.

</comment><comment><USER70> This is all pretty technocratic. I would recommend Peter Drucker's "The Effective Executive" for some useful thoughts on organizing your day and being more effective at work.

</comment><comment><USER71> If your living space is limited, ditch your dining table and get a folding ping-pong table with wheels. Do this before you find your life partner.

<comment><USER72> Wow, I'm glad somebody thinks alike. My living room has no furniture whatsoever except for the ping-pong table and a refrigerator.

And this was a joint decision post finding my life partner!

 _Advantages_ :

1\. Loads (and loads!) of fun, along with all the accompanying benefits of learning/improving at a sport

2\. The lack of furniture ensures random hangers-on who visit don't stay for too long, and only good friends who can appreciate our lifestyle stick around for eats and drinks and such.

 _Disadvantages_ :

1\. Hard to get work done at home

2\. Nothing else that I can think of!

 _edit: formatting_

</comment></comment><comment><USER73> Critical thinking is advantageous in many situations.

</comment><comment><USER74> An hourly incremental backup.

<comment><USER50> Any good suggestions on software to do this on windows? I have an unused NAS that I want to start utilizing with my laptop for this purpose.

</comment></comment><comment><USER75> BASH

</comment><comment><USER76> Generically: Learn your tools. Whether it's bash (can I recommend this? [http://www.catonmat.net/download/bash-history-cheat- sheet.pd...](http://www.catonmat.net/download/bash-history-cheat-sheet.pdf) ) with the ability to do very fancy stuff with the command line, vim, emacs, Eclipse, or the MS tools, _learn_ them. Backwards and forwards. You aren't done until you have hundreds of keyboard shortcuts memorized and in daily use. Learn how to use grep, find, less, xargs, and awk. The returns on learning these tools well are amazing.

Also, do less. In order to be good at something, no matter what that is -- programming, math, entrepreneurship -- you need to focus and spend a lot of time on it. In order to do that, you need to find that time, and the easiest way to find time is to prioritize what you are doing and do less. If something isn't important to you, then don't do it. For me that's TV -- I don't own one. South Park, all 14 episodes a year, are available online both legally and illegally.</comment>


Has technology lost its magic? - <AUTHOR> http://dischord.org/blog/2010/10/26/pump-up-the-volume/

<comment><USER2> I wouldn't say so. I use daily a hand-held device capable of browsing a media library of hundred of millions items and reaching about 1/5 of human population anytime, almost anywhere. That wasn't possible just a decade or two ago. It keeps fascinating me!

(This being said, I was born and mostly grew up before the era of ubiquitous internet. Would be nice to hear opinions from post-1990 generations.)</comment>


Rebase button for Bitbucket Server (paid add-on) - <AUTHOR> https://www.reddit.com/r/bitbucket/comments/5n3dg6/rebase_button_for_bitbucket_server_paid_addon/ <comment><AUTHOR> Here's my business model: go through the top-voted bugs in Atlassian's bug tracker and solve them one by one (I've done 3 of the top 10 so far): [https://jira.atlassian.com/issues/?jql=project%20%3D%20BSERV...](https://jira.atlassian.com/issues/?jql=project%20%3D%20BSERV%20AND%20resolution%20%3D%20Unresolved%20ORDER%20BY%20watchers%20DESC%2C%20priority%20DESC%2C%20updated%20DESC)

Just kidding. But I don't think many people realize how flexible Atlassian's add-on architecture is. I can put my own Rebase button right there in the PR screen, with its own dialog, and integrate right into all the pre-existing pre-receive hooks and branch permissions.</comment>


A fast PostgreSQL client library for Python: 3x faster than psycopg2 - <AUTHOR> https://github.com/MagicStack/asyncpg <comment><USER2> Seems like a dupe of this? [https://news.ycombinator.com/item?id=12227507](https://news.ycombinator.com/item?id=12227507)</comment>


Show HN: Simple, Readable, Experimental Blockchain in Python - <AUTHOR> https://github.com/halilozercan/halocoin <comment><USER2> Thanks, I have been waiting for something like this for quite some time, I didn't want to learn c++ "yet"</comment>