sheriff | 3 years ago | on: Learning to Love Myself
sheriff's comments
sheriff | 5 years ago | on: A lot of free software is free as in piano
sheriff | 5 years ago | on: Nq – A simple Unix job queue system
sheriff | 5 years ago | on: Eddie Van Halen has died
sheriff | 5 years ago | on: There Are No Bugs, Just TODOs
* who reported the issue * what they reported happening * what they expected to happen instead
For many reported bugs, it is clear what the actual problem is and what needs to be done to resolve it. In this case, it can feel like unnecessary overhead to track the bug in a separate system from the rest of the development work queue.
But it's worthwhile to have a place to track bug reports that can't yet be acted on by writing code. Sometimes it's not immediately clear what is happening or what should be done about it. Sometimes you need to reach out to the reporter(s) for more information or to let them know progress has been made.
Even with well-understood bugs, there can be a many-to-many relationship between the bug and the development work to be done. Sometimes you have many people reporting the same issue in different ways, and it's not initially clear that there's a shared root cause. Sometimes one bug report is best addressed in multiple phases of development work.
I'd argue that there's always someone who's managing all of the above, even if they're not using separate bug tracking software to formally do so. But as a team grows, making the investment to "show your work" a little more can make it a lot easier to collaborate and delegate.
sheriff | 8 years ago | on: Git, Graphs and Software Engineering
sheriff | 8 years ago | on: Git, Graphs and Software Engineering
Alice and Bob both branch off of master at the same point. In Alice's branch, she moves function `foo` into a different module/file. In Bob's branch, he changes `foo` to handle a new condition. Both wish to merge into master.
Whoever merges later is going to have a merge conflict, and have to resolve it manually, using their human understanding of the semantics of both changes. It's clear to me how that conflict should likely be resolved, but as long as those changes are presented as text diffs, I don't expect my VCS to be smart enough to figure that out on its own.
It would be interesting to explore other ways of representing changes, such that a computer would understand how to compose them in more situations like this.
You can quickly come up with examples of changes which conflict in a way that should probably always require human intervention: Say Alice and Bob each wish to assign the same constant to different values.
So, I don't expect that you could completely remove the need for developers to manually resolve tricky conflicts. At least, not without completely changing how we express changes to programs, which may well be a non-starter for practical purposes.
sheriff | 8 years ago | on: Git, Graphs and Software Engineering
sheriff | 8 years ago | on: Git, Graphs and Software Engineering
It's powerful for Git to treat changes as line-by-line text diffs, because it allows us to manage changes to any textual data. But what if, instead, we borrowed an idea from distributed databases, and implemented all changes as commutative operations on a Conflict-free Replicated Data Type (CRDT)?
I think almost every example of difficult rebasing would get significantly easier, but at what cost? We'd have to completely rethink how we write programs, because this would drastically limit the types of changes to a program that were valid. I wouldn't be surprised if this would require us to develop in entirely new languages.
There might be some meat to this idea, but again, I don't think we'd get there by mining existing Git graphs.
sheriff | 9 years ago | on: Deficit shrinks by $1 trillion in Obama era (2015)
I found a more up-to-date data set at http://federal-budget.insidegov.com/ which is consistent with the reported years, and includes both earlier years and an estimate for 2016. Unfortunately, it seems the deficit is growing again, with an estimate of -$616 billion for 2016.
It's also worth looking at earlier years -- nothing before 2009 was higher than $464 billion. Looking at a longer timeline, it seems clear that the general trend is towards a bigger deficit, but the impact of the subprime mortgage crisis means we can play games with statistics by framing our timeline around that year.
This is similar to the trick used by Ted Cruz to argue against climate change, by insisting on presenting the data on an 18-year timeline, so that it would start in 1997 and include that year's abnormally high temperatures caused by an El Niño weather pattern.
http://www.cbsnews.com/news/fact-check-ted-cruzs-claims-abou...
sheriff | 9 years ago | on: New Cities
For instance -- there's no need for me to sleep in an expensive part of town, but there's also no need for me to be awake while my bedroom is shifted out into the outskirts. This would be something like Bruce Willis' character's apartment in The Fifth Element, but I don't think we have to wait until we're building cities in space to start working on this.
Similarly, if there's a diner that closes after 3PM, why should I ever have to walk past its empty storefront later in the day? The popularity of food trucks is evidence that there is value in being able to move supply around to find the demand and that we can reorganize our cities on a short time-scale. We don't even need to wait for the parts to be self-driving, as nice as that would be.
sheriff | 10 years ago | on: Twitter open-sources a high-performance replicated log service
https://engineering.linkedin.com/distributed-systems/log-wha...
sheriff | 10 years ago | on: Hiring Is Broken – My interview experience in the tech industry
def findSum(array1, array2, sum)
complements = array1.map{|x| sum - x}.reverse
i = complements.count - 1
j = array2.count - 1
while i >= 0 && j >= 0
return true if complements[i] == array2[j]
if complements[i] > array2[j]
i -= 1
else
j -= 1
end
end
false
endsheriff | 12 years ago | on: The weirdest design trick I know
sheriff | 12 years ago | on: When TDD Doesn't Work
sheriff | 12 years ago | on: This Man's $600K Facebook Disaster Is a Warning For All Small Businesses
The motive for someone running a farm to also send likes to non-customer pages is to make it harder for Facebook to detect the fraudulent likes.
sheriff | 13 years ago | on: The lightbulb reinvented
sheriff | 13 years ago | on: Why I now, unfortunately, hate Hacker News..
The first use-case is "Person A discovers Thing X on the Internet and wants to discuss it critically with the people on HN."
The second use-case is "Person B wants to share Thing Y that they made, in hopes that the people on HN will give positive feedback."
As a reader, you can choose to treat the two types of posts differently, but without a conscious effort, I think the default behavior is to use a consistent approach to all posts on the site. The result is that either real industry news doesn't get reviewed very critically, or personal projects get reviewed more critically than the poster would have hoped.
sheriff | 13 years ago | on: Normal Plasma Cholesterol in an 88-Year-Old Man Who Eats 25 Eggs a Day
sheriff | 14 years ago | on: You half assed it. That is why your PhoneGap application sucks.
Thanks for posting this example. It's pretty responsive... not sure if I would have known it was PhoneGap.
One bug report: Divide-by-zero seems to act as if nothing happened, rather than reporting an error or NaN value.