I was lucky enough to meet Clay Christensen once when he came to speak at a company I worked at.
First he delivered a brilliant lecture on how companies repeatedly found themselves put out of business by new technologies, even after having made only decisions that actually increased their profits (his famous theory of "disruption").
Then he went on to talk about how easy it was as a driven, career-focused person--like most of the folks in that room--to invest too much in your career and not enough in your family. He pointed out how you can see whether your efforts in the office are paying off after a year or two, sometimes even shorter--while you don't really know whether you raised your children well for 20 years or so. Since so many smart people are addicted to feedback loops of quick success, he argued, that put them in special danger. You could easily spend year after year making choices that increased your success in your field, only to discover--too late--that you hadn't been paying enough attention to things that mattered more.
He was one of the best speakers I've heard, picking precise words and moving smoothly from topic to topic, but every once in a while he would hold up his hand, bring his fingers together as if he were gripping a pen, and then twirl his hand in a circle as if he were asking for the check. After the fourth or fifth time, he stopped and apologized. He'd had a stroke recently, he explained, and occasionally he couldn't remember the words he was trying to say unless he pretended to write them in the air.
A brilliant, humble man, whose essential goodness was impossible to miss.
We were working for a client who used self-hosted svn and had no code review system.
As for GitHub API: there's a (beta-ish) import from a pull request into a diffscuss file ("diffscuss github-import" for more), but currently nothing to push it back, which is a tricky problem (since what's displayed on a github pull request is actually a mixture of pull request comments and comments made directly on the commit diffs). But if there's sufficient interest we'll take a look!
If the tricky part is that comments are a picture of PR comments and diff comments, it seems like that would be more of a problem for import than export.
It's tricky to figure out where replies should go, especially if, e.g., there's multiple comments from different sources on the same line.
There's also the whole "what if there are comments from multiple authors to write back" problem, since you're presumably only going to have access to the API on behalf of one user.
I came away from the time I spent looking at this thinking that you'd probably be better off implementing a separate mode that talked more or less synchronously to GH as you replied etc., rather than working on an import / export cycle.
Good question, we did consider using #, the main benefit of which would have been that diffscuss files were still legal diffs.
Against that benefit was the consideration that there could have been comments that weren't diffscuss threads in a diff, and that would have meant that you could have legal diffs that would have terribly confused any diffscuss parsing.
Add to that the fact that you can get a legal diff back just by piping a diffscuss file through a single grep -v, and we decided not to use # (which I think was probably the right call--overloading comment syntax for functional stuff always creeps me out a bit anyway).
I disagree with that decision, FWIW. I think overloading comments with a special syntax such as #%- for example is better than having incompatible formats.
IDK if it's too late to discuss this, but a third possibility could have been to use the second character or more of a # comment as a marker for diffscuss.
I like this idea. And how I see it this isn't really mixing comments and functional stuff, since the code reviews and replies are really just comments on the diff, which is the intended purpose of the # comment
But the diffscuss modes parse the comments into functional structures--threads--to decide where to insert replies, etc., which is in fact functional--just not functional for the diff part.
Here's another way to think about it:
It sounds exciting to think that "all legal diffscuss files are also legal diff files!" In fact, very few diffscuss files will be used as diff files, and those that are can be trivially transformed.
It's not awesome on the other hand if "not all legal diff files are legal diffscuss files," which is where piggybacking on the diff comment syntax gets you, because every diffscuss file starts its life as a pure diff file and there's no way to transform an offensive (but legal) diff file into a legal diffscuss file without data loss.
Just FYI, there's a "diffscuss github-import" command (which is beta-ish, but should work) that can import a pull request (or series of pull requests) into diffscuss format.
According to a friend of mine who is relatively knowledgeable about this law, it was originally intended to target enterprise companies that were essentially selling software for next to nothing and then charging like mad for the "installation and configuration" to avoid sales tax.
The wisdom of even that approach is debatable, but the actual language of the law is far from conveying that intent and is a total, indecipherable mess. No one has the remotest clue what is actually covered under the language of the law.
I'm part of a small software consultancy in MA, and we've now got 30 days to decide which of our customers this crazy language applies to, and which it doesn't. Is Django "pre-written" software? Does spinning up and customizing an instance count?
>intended to target enterprise companies that were essentially selling software for next to nothing and then charging like mad for the "installation and configuration" to avoid sales tax.
Such is what happens you impose high tax rates: people relabel transactions so they fall outside the tax. The. You have to issue new rules that try to make the relabeling not work. Then, the regulation books start to explode in length to cover the all the blooming techniques, and with it, he regulatory agencies...
Or you could just implement sensible taxes in the first place, e.g. by not exempting ‘services’ from a (then-renamed) ‘sales tax’. It is rather easy to have a loophole-free tax on sales and services, unless you have specific requirements not to charge X, Y and Z because A, B and C – then it quickly can get complicated if people try to squeeze W and V into X and you have to build up regulation books :)
I bought a new kitchen countertop through Lowes a few months ago, and this is exactly what they did. The countertop is priced by the square foot, but they write up the total cost as labor so that they don't have to charge sales tax.
I think the idea is a fairly reasonable one, taxing large enterprises for charging insane support/servicing fees. Their implementation of it sounds really crappy though.
What on earth about this is "reasonable?" How is this any different from other professional services? We're supposed to live in a free market society where customers have the choice to pay those "insane" fees if they want to. You're advocating that the government stick their noses into the business decisions of the private sector.
It's funny that this takes place at the site of the first tax rebellion.
Professional services taxes similar to sales taxes are not unheard of, nor are gross receipts taxes that vary based on what kind of business you're in. There are as many tax systems as there are tax jurisdictions.
The problem here is somebody wrote a "services tax" without the first clue what they were actually doing. It's like intending to impose a new cigarette tax, but writing it such that anything which burns might fall under the definition of cigarette.
Also, the main point is that they're not following the spirit of the law. The primary value is the software, but they're under-charging for it and over-charging for related services in order to avoid taxation on the true value of the software. That's what someone was ham-fistedly trying to fix.
There are as many tax systems as there are tax jurisdictions.
And this is one of the main problems. Not only are governments (local, state, federal) trying to find creative ways to siphon money from the private sector, but the inherent nature of software services make this impossible to manage or track.
What's wrong with allowing a company to charge $1 for their software, then $100k for customization? Yes, it's a sales tax loophole, but how would this be different from a custom electronics or plumbing supply company from charging $1 for the parts and $100k for labor?
I don't know that a gross receipts tax is the answer, or what is. MA is free to do what they want, I'm just worried that this will spill over to IL, who is much more in debt.
It's not different, and if that's happening in those industries, it should be halted there, as well. Either that isn't happening (or happening to the same extent) in those industries, it hasn't been brought to the legislature's attention, or, as someone brought up elsewhere, other industries have better lobbyists.
Don't look for me to defend sales taxes in general, they're regressive evils and should be ripped out and replaced with progressive income taxes. But so long as they exist, I'm happy to see loopholes like this closed. Just not closed stupidly.
@nknighthb, I can't seem to reply to your last comment, but I'm curious... why are sales taxes "regressive evils?" The more you consume, the more you pay (at least for physical products). This makes sure everyone has skin in the game.
I would argue that an income tax is a moral "evil", but realize we're way past ever abolishing it. There's no inherent reason a governing power should ever know how much income you produce, even though it may be convenient (and popular) to impose. I suppose that's where our worldviews differ.
HN delays reply links based on how deeply nested replies are. Though you can find your way around that...
A regressive tax has a specific definition. It's a tax whose effect is to take a greater percentage of income the poorer you are. Sales taxes, like all flat taxes, are inherently regressive. If I make $10,000/year, all of it is getting spent, which means that less any exemptions (which vary by state, but may include things like staple foods), an 8% sales tax eats 8% of my income.
If I make $100,000 year, I may well only spend half of that, which means only 4% of my income is taken.
This is evil in general because I believe, as you clearly do not, that "governing bodies" are simply instruments of civilized society, and those making the most money are reaping the greatest rewards from that society, and should be required to contribute back a correspondingly greater amount.
But it is especially evil because if I'm making $10,000, I'm just trying to survive, and the sales tax makes that harder, while if I'm making $100,000, I'm way past survival, and well into luxury territory.
Governments usually try to work around that, including the staple food exception you mentioned, but that makes the whole system a mess of exceptions and exceptions-to-exceptions.
So glad you enjoyed this, and "The Little Bank"! I just started the process of moving things out of the drawer and onto the site. There's a big backlog but I'm posting every week or two to avoid a "verse bomb" effect. However there's an RSS feed if you're interested.
Thanks again for the response. It's great to see that there are other hackers out there interested in poetry.
First he delivered a brilliant lecture on how companies repeatedly found themselves put out of business by new technologies, even after having made only decisions that actually increased their profits (his famous theory of "disruption").
Then he went on to talk about how easy it was as a driven, career-focused person--like most of the folks in that room--to invest too much in your career and not enough in your family. He pointed out how you can see whether your efforts in the office are paying off after a year or two, sometimes even shorter--while you don't really know whether you raised your children well for 20 years or so. Since so many smart people are addicted to feedback loops of quick success, he argued, that put them in special danger. You could easily spend year after year making choices that increased your success in your field, only to discover--too late--that you hadn't been paying enough attention to things that mattered more.
He was one of the best speakers I've heard, picking precise words and moving smoothly from topic to topic, but every once in a while he would hold up his hand, bring his fingers together as if he were gripping a pen, and then twirl his hand in a circle as if he were asking for the check. After the fourth or fifth time, he stopped and apologized. He'd had a stroke recently, he explained, and occasionally he couldn't remember the words he was trying to say unless he pretended to write them in the air.
A brilliant, humble man, whose essential goodness was impossible to miss.
May he rest in peace.