Yes, Estimate Software Projects - <AUTHOR> https://blog.pragmaticengineer.com/yes-you-should-estimate/ <comment><USER2> This whole article rubs me the wrong way. It's holding up their failures in software planning & management as best practices. And while they are normal practices in the industry it doesn't mean they are good practices.

They start off by talking about how important estimates are, and how they always meet their estimates across many types of projects/deadlines.

Then they admit that "delays are normal and expected" \- so you're not meeting your estimates.

Then they admit that "they delivered something different" \- so you're not building what you promised.

Then they admit that "they "spent too much time on non-deliverables" \- so you're spending the last months pre-deadline working hard to catch up on something that is already behind schedule and doesn't match the original spec.

But it's all OK because they kept the stakeholders updated with frequent communication and conversations...basically the same result as if they had _not_ estimated a date but instead focused on iterative delivery and constant feedback with the customer. Sound familiar?

> Suddenly, the whole team became focused, distractions were all gone, and we > moved at a faster pace than I've ever felt the team do so.

Why was the team not focused & distraction free from the start?

How could you achieve this efficiency without needing a deadline hanging over your heads?

<comment><USER3> As an engineering manager and director, I've found a lot of the value in planning (including but not limited to estimation) is having the team, stakeholders, and executives all engage in the exercise of thinking deeply about various ways the next 6-12 months might go.

Some folks tend to think that if a plan is produced but not followed exactly, then it wasn't worth producing the plan. But actually having produced the plan is sometimes what makes it easy to deviate when complications arise. If a new decision is made that affects the plan, everyone can see exactly what the compromises are and be on the same page.

<comment><USER4> > As an engineering manager and director, I've found a lot of the value in > planning (including but not limited to estimation) is having the team, > stakeholders, and executives all engage in the exercise of thinking deeply > about various ways the next 6-12 months might go.

I always despise these kinds of exercises.

We _know_ how to roll up estimates correctly with statistics--even moreso if we have historical data.

The problem is that management _always_ hates the _accurate_ number.

And that's where the dysfunction sets in.

While everybody else rolls things up "normally", I almost always roll up an "accurate" timeline and try to inform people up front. It rarely wins me friends, but it sometimes protects my team when things are going haywire later.

<comment><USER5> A co-worker and I were asked to write up an estimate for a new project. We sat down, walked through the components (best we could at the time) and came up with an estimate (which was likely smaller than the actual given the unknowns). We provided the estimate to leadership. They decided not to do the project. Next, I hear from the head of engineering, "You can't go giving huge estimates to leadership. It makes us look bad." It was one of those moments that reinforced my belief that the "image game" and reality are in conflict and people who enable the "image game" are one of the biggest problems in software estimation.

<comment><USER6> Yes. Let's rephrase the idea a little more formally.

Few hypotheses are necessary for a thought experiment that reproduces the issue.

Given a project:

* some people/teams produce accurate estimates

* some people/teams produce overly optimistic estimates

If decision-maker is not aware, it can easily conflate _optimistic estimate_ with a _more efficient team_ (or just more enticing).

If the possibility of overly optimistic estimates are not taken seriously, the more accurate team can seem just less efficient / lazy / trying to charge more for the same work / etc. For example if the decision-maker is actually a client comparing several suppliers.

Extra risk if decision-making is diluted among many people (harder to get clear and consistent view).

This puts the teams in a competition similar to the prisoner's dilemma. Honest estimates get punished, treacherous estimates are favored. No wonder so many projects are over-budget, when they are not too over-budget to complete at all.

The only actual hypothesis here is: "decision-maker conflating optimistic estimates with better value". It seems very common. If decision-maker doesn't fall into this trap, the problem disappears, right?

What can we do to shift the equilibrium? A manifesto?

</comment></comment></comment></comment></comment><comment><USER7> > Have you noticed how Apple ships most of their big bang projects at WWDC, a > date they commit to far ahead?

Is this why so many Apple products have been increasingly low-quality? Instead of committing to quality, they commit to arbitrary dates because some bean counter decides quarterly profits needed to be higher.

I don't disagree that we should estimate, but I think we should be realistic about just how difficult estimating software projects is, especially now that we're "agile", which really means "there aren't any explicit requirements but there _are_ requirements, we just don't know what they are and also they change every sprint so good luck".

If we want to estimate software, we need to have more predictability. I can estimate that it takes three days to fix a bug, but what happens when I pull those covers back and see an unholy Eldritch abomination? I could redo my estimate, but what if I run into an arbitrary quarterly profit-driven date? "Well, just get it done." Then we nail some more legs to the dog and the cycle continues.

<comment><USER8> > there aren't any explicit requirements but there are requirements, we just > don't know what they are and also they change every sprint so good luck

What a sad way to view your profession. The requirements aren't hidden from you, and they don't just randomly change. You can't get them up front because no one has any idea what we are looking for. Solving a small problem usually reveals more of the problem.

I don't think you believe in long requirement documents either, but I sometimes hear arguments very similar to yours.

<comment><USER9> What a sad way to hammer someone's view of his profession based on a comment.

> You can't get them up front because no one has any idea what we are looking > for.

Is this requirement implementation or R&D?

While it's understandable for R&D to be exist within the 'no one has any idea what we are looking for', to fit all software development into this paradigm is to have a pretty lax understanding of how most software operates...

> Solving a small problem usually reveals more of the problem

This is exactly what I think the parent post was arguing when shying away from estimates.

</comment></comment></comment><comment><USER10> I hate deadlines simply because organizations I have worked in tend to assign them indiscriminately without any reference to reality. Upper management wants to set a deadline for a big project? Then they need to be prepared to commit and compromise. While developers continuously deliver, product owners and stakeholders need to continuously review, reevaluate, and adapt.

In Thinking Fast and Slow, Daniel Kahneman offers my favorite object lesson on the topic:

[http://txti.es/kahneman-outside-view](http://txti.es/kahneman-outside-view)

He sums up:

 _This embarrassing episode remains one of the most instructive experiences of my professional life. I eventually learned three lessons from it. The first was immediately apparent: I had stumbled onto a distinction between two profoundly different approaches to forecasting, which Amos and I later labeled the inside view and the outside view. The second lesson was that our initial forecasts of about two years for the completion of the project exhibited a planning fallacy. Our estimates were closer to a best-case scenario than to a realistic assessment. I was slower to accept the third lesson, which I call irrational perseverance: the folly we displayed that day in failing to abandon the project. Facing a choice, we gave up rationality rather than give up the enterprise._

The suggestion that the enterprise should have been abandoned all together can be misinterpreted as fatalistic, even nihilistic. I take it to mean that you've got to do your research (the outside view), rigorously define your MVP, and then work from there. If your deadline is fixed, be ready to scale back.

His distinction between the inside and outside view is the key. For a project to have any hope of realistic timelines, it needs to be understood and the outside view needs to be applied.

<comment><USER11> > If your deadline is fixed, be ready to scale back.

True. Honestly, what else can you do if a deadline is approaching than to cut scope? Even enforced death marches aren't necessarily going to solve it...

<comment><USER12> You have the four knobs to turn. Resources ($, FTE), scope, deadline, quality. The dilemma typically is that the one calling the shots wants to fix three of them and does not accept the fourth knob has to be turned. Another is that close to a deadline the resources knob doesn't matter anymore unless the deadline knob is turned. And when the deadline knob is turned it makes the scope knob feeling very attractive suddenly to the same kind of people.

In such situations having people skills helps. You can say no in many ways but you have to try and understand their problems as well. That big conference, competitors having announced something recently, you name it.

</comment></comment></comment><comment><USER13> My current employer switched from SCRUM to KANBAN. We're broken up into person squads. Epics are created by product by engineers are involved in kickoff and story breakdown.

We use KANBAN cycle times to estimate delivery dates. For example, my squad completes 85% of stories in 5 days. Given that, the number of stories in the epic, and number of engineers, it's easy math to calculate an approximate completion date.

It's important to note that we've convinced management that these are approximate completion dates, not deadlines. The dates are used for planning upcoming features and which squad will be free first to take it on. However, there's still plenty of adaptability.

Of all the places I've worked, this model is one that I've found to be the most productive.

<comment><USER14> I really, really like Kanban as well. Seems the hardest part is selling it to upper management.

<comment><USER11> Because they want hard deadlines. I don't think this is something that can be "fixed". I think it's something you discover in an interview and use as a make or break join/pass decision if you truly care about it.

</comment></comment></comment><comment><USER15> I'm intuitively on team #noestimates but trying to have an open mind/not dig in my heels.

I feel like no one does a convincing job at communicating why estimates matter (and how much value you get out of how precise of an estimate).

Fundamentally, an estimate (or any piece of information) is really only of value if you're going to do different things based on learning it. E.g., given an estimate, you might:

* Prioritize one project over another based on ROI.

* Know when to communicate that something might be available to users (though that's still not _intrinsically_ valuable, you have to have some kind of marketing/sales-cycle based reason or something that it matters).

* Know when to begin supply-line stuff so that a factory is ready to build a thing as soon as possible (but no sooner, since then maybe you're holding up parts of the pipeline from doing other things? maybe?)

I feel like so often people try to underscore the importance of estimates but don't say anything remotely close to the above. A lot of times it's just "this is important/urgent". Ok, so? If it's urgent then that's even more reason to start actual work instead of spending time planning, if you can't point to a concrete thing you'll do differently having known the plan.

Even when people do talk about the actual reasons for wanting an estimate, it's always totally in the abstract. The precision of an estimate is always on a "delivery day" level, even if that level of precision is totally unnecessary for what this particular estimate was used for.

I think the real reason for this amount and kind of emphasis on estimating really has to do with:

1\. Deadlines make people work harder/faster.

2\. It gives people sticks with which to measure people/teams.

I think #2 is mostly straight-horseshit. #1 is maybe somewhat true, but I think it's not nearly as good as other ways of getting people motivated to work harder which have fewer negative externalities (e.g., more autonomy, instilling more of a sense of ownership).

<comment><USER16> One reason for rough estimates is for making investment decisions. If we have 10 things to do but can't do them all how do we choose which to do? The what the thing does points to the return piece but we'd need the investment piece too to evaluate which ones are better value.

<comment><USER15> For sure, that's what I meant by the ROI bullet.

I just often feel like people want estimates that go beyond the level of precision/accuracy you'd need to make a relative ROI call. And just in general don't do a good job motivating _why_ they want the estimate.

</comment></comment></comment><comment><USER17> I have to have all of the control system software ready for a power plant the second construction is finished enough to begin turning things on and commissioning them. This frequently overlaps with electrical, mechanical, and civil works still in progress. Not starting as early as possible means not finishing as early as possible which means holding up the transition from a construction project with construction loans to an operating asset earning revenue with much more favorable financing, which is significant in hundreds of millions of dollars projects.

All of the software needs to be ready to start commissioning on an unknown date. A lot of the programming can't start until equipment details are received, which makes the whole thing a game of identifying what information you need and pointing out that if you don't have it by x date your deliverables will be late, or you'll have to work overtime or bring more people on it which will cost extra.

Having a good estimate for how long each piece of the programming will take and what inputs are required to finish it is crucial to having everything ready to go on D day or a bulletproof paper trail of how you've been fucked over by other people who couldn't deliver, because those liquidated damages are no joke.

To me time estimates are a major component of engineering.

Edit: remove snark

</comment><comment><USER18> Cost, quality, and speed. Pick any two. You can't have all three. There are several modes of delivery. Some projects have fixed delivery dates because it's externally imposed. For example a regulatory requirement. Some are internally imposed - an executive imperative. Projects with fixed dates need dedicated resources and a highly functional scope management process. Others are "innovation/exploratory". For example "let's build a bitchen website". What does that mean? What is the definition of done? This requires an agile, "integrate until we are satisfied or run out of funding" project that may or may not have dedicated resources.

No matter what, in a corporate environment you will need to be accountable to cost, which is simply humans * time. So some type of estimate will be needed.

<comment><USER19> Sure, estimation is needed. But the more important thing is that project _management_ must involve the constant updating of those estimates.

After all estimates should be data based. As more data comes in they should get more accurate not less.

If they don't that's a sign of basing them on hope or whatever ideology someone found instead of hard truths.

</comment></comment><comment> awinter-py This is such an important topic and missing skill in the tech workplace.

It's impossible to prioritize work without estimating the cost & value of projects, and teams that don't prioritize are always overworked, playing catchup and are unhappy.

What the author says about 'we shipped different functionality to what we planned' is really important too -- beginning managers aren't willing to have this conversation but scope de-creep is the only way to deliver quality work on-time.

It's not enough to play planning poker, you need to have ICs in the room for spec design and make time to identify & resolve unknowns before committing to features / timelines.

<comment><USER20> > make time to identify & resolve unknowns before committing to features / > timelines.

I find it difficult to identify unknowns before I actually start working on it. Personally it makes sense to just give it a go as estimating it correctly may be as time consuming as completing it. Especially true for one off feature or bugs in large codebase.

<comment> awinter-py That's fine for smaller chunks of work, and you're right that resolving uncertainty is not cheap.

But if you're doing resource planning for a large organization and you need to decide between high-value, long-timeline projects, that decision is irresponsible without some homework up front to validate the timelines.

Large projects involve high- and low-uncertainty work and it's useful to do some of the former before spending resources on the latter.

Your estimate still won't be right, probably, but the chance of uncovering an important problem is worth it.

<comment><USER19> Agreed. Usually the problem is that technical folks are involved too late. (They are the ones that actually think through the requirements after all.)

</comment></comment></comment></comment><comment><USER21> I'm fine with either time- or complexity-based estimates _as long as they 're treated as estimates_. I've not worked at any software company that did.

What are the consequences of missing an estimate (especially one I did not create)? If it's "stay late until it's done" (with no OT because you're legally "exempt"), that sucks. If it's "your career is penalized, the same as if you were incompetent at the task itself", that sucks.

I'd rather go back to a low starting salary, and earn OT when my manager decides to keep me working late. The money isn't as important to me as aligning our goals.

</comment><comment><USER22> I think it's good to write down your guess for your own future reference in improving your own guesses, and at some point you'll be good enough to do this and not get burned (as a contractor, I'm assuming).

I have been doing this a while and am not good enough to avoid getting burned without building in a 3-4x buffer. Sometimes I end up finishing a project in 10% of the expected time, but at least it's not over 100%?

I don't think that's very healthy for anyone involved though, it's better if for projects I can't estimate well we just do hourly so that I'm incentiviced to spend lots of time making it great and they're incentivized to give me more work in updating the spec without needing to renegotiate anything.

But yeah, I'd say yes estimate and do it in writing but keep it to yourself until you're actually good at it. It takes practice, but honest logs of your past projects will elucidate over time. Like how whenever my biologist coworkers would plan an 8 hour project, 11 hours in I'm just like... how did you not plan for cleanup and prep?

Some things are just not obvious right away, but can become clear in retrospectives that inform future estimates.

</comment><comment><USER23> Reading the comments ( and the article ) I think people are forgetting about the customer causing problems.

For example, what do you do when you and your customer agree on certain features by a certain timeframe and then... that customer turns around and promises something to someone else, then asks you if you can do that _without_ _consulting_ _you_ _first?_

If you refuse, you cause trouble for your customer, and potentially yourself. And then there's cultural considerations. And then your customer gets distracted by this and that, and you lose control of you customer?

This kind of thing happens. Plenty of companies are square in the "customer is always right" camp, which I think is a _bad_ idea. The customer is not always right.

This is why I think planning and estimating is a good thing, but controlling your customer is also important to keep in mind. You have to be willing to compromise, yes, but you also need to say "no" sometimes, or at least say "Well, let's finish this first, get the product out the door, and put that in version 1.5".

However, I feel like a lot of people are too scared to do that.

<comment><USER24> It's not just customers. The same thing happens with internal stakeholders. I've seen products where there is basically zero actual software design because development is driven entirely by short term feature requests.

</comment></comment><comment><USER25> Being pretty young and just getting used to making estimates, this was a wonderful read!

Having to guess how long a project will take is still very scary for me. Is there any way to get over the fear of others disagreing? I always feel like I'm about to embarrass myself by either estimating to high or to low...

<comment><USER26> It sounds to me like what you really should be learning isn't how to estimate, but rather how to change your mindset on disagreement. Disagreement is a good thing, not a bad thing. Learning how to change your own mind is a very useful skill that requires disagreement. When organizational disagreement stops, so does organizational growth. Be friendly and kind to people who you disagree with, and ask lots of questions to better understand their thinking.

</comment></comment><comment> UK-Al05 One thing he misses out is that story points, eventually get turned into estimates using velocity. They are estimates, just a different approach based on past history.

<comment><USER27> They are used for forecasting

</comment></comment><comment><USER28> This article misses the biggest reason estimates are important: to make decisions between projects and approaches. Prioritization function is impact/effort. If you have Approach A for which you estimate 10 person-weeks, and Approach B for which you estimate 50 person-weeks, you should pick Approach A.

Real time estimates, rather than abstract story points, are necessary to calibrate your future estimates, by measuring how over-optimistic you were with past projects.

</comment><comment><USER29> I think estimates of effort required, estimates of timeline, and commitments to timeline (deadlines) are three different things with only loose relationships that are far too often conflated - to significant pain. I'm trying to play with this a bit in my personal process (and talking to my team about it) but don't really have any hard results yet.

<comment><USER30> Very much this. I try to never give an estimate without giving 2 values. The expected effort, and the expected calendar time. Sometimes I'll also add expected complexity since that adds a lot of risk to both estimates. There are lots of things I've done that were quite easy, then I spend lots of time just sheparding the feature into production. Especially if you're working with other teams, or vendors, and can expect 24hr delays for every email round trip.

In fact each department or vendor involved in a project will easily double calendar date, and often complexity as well. At a previous job we automatically increased our t-shirt size for every vendor just to keep our estimates honest. And there was only like one vendor who we would make exceptions for since they were always amazing to work with.

</comment></comment><comment><USER31> If you can't ESTIMATE your software project, then you have no idea what you're doing.

An estimate is NOT A DATE, an estimate is a DURATION.

If you estimate 50hours and other things come up that eat into your time, you continually adjust the DATE, the duration shouldn't change. If you depend on an external sys and you estimate N hrs, but that system takes N+M hrs, then your duration date moves forward M hrs.

If there were unknowns, risks, as you uncover them, you move the date and if you communicated the unknowns and risks, then you can adjust the duration by adding the new info.

Ideally what you wish to do is eliminate all the unknowns and risk by NOT doing them. You're doing DEVELOPMENT not RESEARCH. Development is simply pulling in all your prior knowledge on how to solve problems and tacking similar or new problems.

Don't mix your R&D.

<comment><USER32> I don't understand how solving a new problem that you haven't solved before is somehow development instead of research. All software is research. If someone had already solved it and built it, you could just copy their solution.

I've been doing dev work my whole life, and the only thing I can say about estimates is to underpromise and overdeliver.

</comment></comment><comment><USER33> I've worked at a company that took this too far and product managers used the release cycle clock to game the system by launching features that were not even half-baked but just outright didn't work but since they hit their official target of launching managed they to get promoted and the next person in line is responsible for fixing the problem. Instead of using the release cycle as a way to focus the product process it became a goal in itself. But this author seems to work with really top class people so maybe that level of stupidity in using the metric as the goal in itself is less of an issue in those circles

</comment><comment><USER34> I am glad it works for you but I am not comfortable or confident doing this, unless i have a really firm grasp on the technology and that is the exception rather than the norm, these days. Estimations tend to be driven by customer expectations rather than technical limitations. If i estimate too high I look bad. Even if that is based on previous experience. If i don't deliver in the hoped-for-timeframe i might get fired. catch-22. Much better to not do it at all, if the business allows it (if it doesn't then it's still important to make keep hammering on estimation psychology ).

</comment><comment><USER35> > 100 plus people to port Skype in 16 months.

To all employers out there: if you put me on a project with a hundred others to port a wee VOIP front-end to another platform, I too can get it done in a year and a half.

<comment><USER36> I don't know Skype but it can be easy to understate the scope of some programs.

Like a web browser: why do we need that crap to be that large and complicated again?

And that's a valid question (be it about voip software or web browser or pretty much anything), but _even then_ it is still naive to pretend complexity (whatever its origin and justification) does not exist and everything could and should be completely rewritten in 3 weekends by 2 interns.

So: why don't you just go work at MS and see by yourself? Seems like they have some kind of ideal conditions in your opinion.

<comment><USER35> You missed the, admittedly subtle, point of my post.

</comment></comment></comment><comment><USER37> The article seems contradictory. Is it really estimating if you drop features you can't finish to ship by a deadline? Is a 16 month estimate worthwhile when you screw around for 12 months before getting serious and then getting it done? If the upshot is just to keep a conversation going with stakeholders and always be working on the most important functionality, isn't this mostly accomplished by 2 week sprints with a touch of externally set deadline pressure (e.g., WWDC)?

</comment><comment><USER38> > Why the sudden productivity change? We had a big deadline coming up, and > there was no option of not shipping. Suddenly, the whole team became > focused, distractions were all gone, and we moved at a faster pace than I've > ever felt the team do so.

Uh, what? Sounds like at the end of the day you ended up busting your ass trying to meet some incorrect estimate. I was hoping to hear something about how making better estimates made your life better and didn't happen.

</comment><comment><USER39> The advice to not give estimates is just to work around engineers bad soft skills. So if you have engineers who can keep a healthy relationship with stakeholders then estimates are not a problem, but if you have typical engineers then someone else will have to do the estimates for the engineers without consulting them. Ultimately someone has to do the estimates so if the engineers can't handle it someone else will be forced to.

</comment><comment><USER40> I thought I would hate this article, having years of delivering software with and without estimates, and preferring the latter. But it makes a compelling case!

<comment><USER17> Of course it is more fun to work with out any deadlines!

</comment></comment><comment> UK-Al05 The problem is is that most businesses refuse to negotiate on scope once deadlines have been agreed.

Getting a manger who is willing to do that is great.

</comment><comment><USER41> The problem isn't estimates per se but how estimates are used:

1\. A commitment that can't change

2\. Manipulated to pressure people into work unreasonable hours

3\. If something will take "too long", estimates will conflate level of effort with duration and be used, again, to manipulate people into doing unreasonable things

4\. Used to cover up a failure to manage projects well

</comment><comment><USER42> [https://youtu.be/sh7A8UChBTI](https://youtu.be/sh7A8UChBTI) funny, true and fully related: stdout - stimates(software developers rap)

</comment><comment><USER43> 100+ teams for Skype on xbox?

<comment><USER44> Skype was 1 of the 100+ teams.

</comment></comment><comment><USER45> Do it if you want but in all my years I've never seen a company sunk by a missed deadline. At best it's a minor set back. At worst checks get delayed or contracts terminated. Maybe that's enough to sink your tiny startup when you're first starting out. For most companies that have made it past their first year it's not the end of the world.

Empirical studies on the causes of errors, delays, etc in software projects of different stripes and knowledge work in general suggest that _stress_ and _sleep_ are the most important factors [0]. In video games deadlines are paramount and yet, ironically, _crunch_ as the systemic form of over-work has become known correlates strongly with review scores and sales: the more a team is forced into meeting these arbitrary deadlines the lower the review scores and overall sales of the game [1]. I don't think this is unique to the games industry. I've seen enterprise development shops put in crunch time to meet customer driven deadlines agreed to by the sales teams with similar results: developers burn out and leave the company, tech debt runs rampant, and customers get frustrated.

The article doesn't touch on the different kinds of projects one may be asked to give estimates for.

A speculative project shouldn't be estimated. This is where the team doesn't have the skills required or has never shipped any software with a similar scope or feature set. There are so many unknowns between where you are and the end goal that an estimate is only a dangerous guess. The only way you can make an accurate estimate is to begin work and get close to the goal. Some where between starting and finishing you will have enough information to make an informed and reasonably confident estimate. Along with good release planning this can be a relatively low-stress process. Estimates at the beginning of the project create poor expectations and can lead to stress.

The enemy of a good plan is a perfect one.

Stress is so bad that it won't matter, much, that you do code review or have automated CI and CD gates and checks. Your engineering team will simply not be as effective as a team that isn't stressed or tired. Anything you can do to keep your team from being stressed out or tired is going to translate into better outcomes. If that means relaxing on deadlines and focus more on results and progress than do that instead.

One thing I can agree with is that communication is key. And a good night's sleep.

[0] [https://www.ncbi.nlm.nih.gov/pmc/articles/PMC2656292/](https://www.ncbi.nlm.nih.gov/pmc/articles/PMC2656292/)

[1] [https://gamasutra.com/blogs/PaulTozour/20150120/234443/The_G...](https://gamasutra.com/blogs/PaulTozour/20150120/234443/The_Game_Outcomes_Project_Part_4_Crunch_Makes_Games_Worse.php)</comment>


Why you shouldn't use Elixir for your startup - <AUTHOR> http://boffinism.com/why-you-shouldnt-use-elixir-for-your-start-up/ <comment><USER2> Except that Elixir is basically Erlang/OTP with some really awesome macos. 1) The BEAM is an engineering marvel. 2) The Open Telecom Platform has been around and in use since the late 90's by Sony-Ericsson. This isn't some podunk language framework that was created by some academic with no real world engineering experience while working on their doctoral thesis. This was developed by an established company for real world problems. And as for Elixir itself, quite a few consultancy shops have thrown their weight behind Elixir. (plataformatec, thoughtbot, and dockyard to name a few.)

</comment><comment><USER3> Ugh.</comment>


Microsoft could move jobs abroad because of US immigration policies - <AUTHOR> https://www.cnbc.com/2018/07/12/microsoft-might-be-forced-to-move-some-jobs-abroad-brad-smith-says.html <comment><USER2> Meanwhile, Microsoft hasn't replied to my job application in weeks.

</comment><comment><USER3> I've seen many companies hedging their bets and having satellite offices in Canada, Ireland, India, Singapore, Australia to be able to retain international talent.

At some level, these immigrant workers are not factory workers to be easily replaced. They tend to have lots of institutional experience and drive (demonstrated by the fact that they uprooted their lives elsewhere to live in a new country in the first place).

I've had the pleasure of working with many such people. But the signs are clear. There are fewer Americans who want to do tech jobs and the administration isn't allowing highly educated immigrants to come and work. Even the ones they allow have a miserable time just managing paperwork and following the law.

What do execs do to retain these folks? Just move jobs to where the talent is at. Talent lost, taxes lost, model immigrants lost, vibrancy lost. :(

</comment><comment><USER4> All this has played out before - a hostile policy diving work overseas (China) and eventually uplifting said overseas territory into an economic superpower.

Whether the US sees it or not, if more software work moves overseas, in the long run, it's harder for the US to lead economically. Have you noticed Baidu's AI chops lately?

Cheers</comment>


Six years later, xkcd homepage is still thwarting ask.com - <AUTHOR> http://blog.xkcd.com/2007/04/19/billboards/

<comment><AUTHOR> I hope Randall clears up the page from blog spam, though.</comment>


Funlinkat - <AUTHOR> https://oshogbo.vexillium.org/blog/63/ <comment><USER2> There is a thread about this in Linux here [https://bugzilla.kernel.org/show_bug.cgi?id=93441](https://bugzilla.kernel.org/show_bug.cgi?id=93441)

OP suggests adding AT_EMPTY_PATH support to unlinkat, question is whether an fd refers to a path after it is opened.

</comment><comment><USER3> The mind boggles at what a _sanitary check_ could be, but the article keeps talking about them instead of _sanity checks_.

</comment><comment><USER4> F·unlink·at ;)</comment>


Cat-proofing a cat feeding machine - <AUTHOR> http://quinndunki.com/blondihacks/?p=3023 <comment><USER2> I recently got a SureFeed RFID feeder. It can read your cat's microchip or an RFID collar tag. When an authorized kitty approaches, a flap raises and lets the cat eat. I got it to prevent other family pets from stealing my cat's food. It works well for that purpose and seems well designed. The feeder has clear side "walls" and the flap itself acts as a wall on the rear of the feeder, helping prevent food theft during authorized feeding.

I'd like to hack it and add timer functionality. See, my cat is always trying to get breakfast early and is always underfoot from 4 A.M. until I feed him. I tripped over him and broke my ankle last month because of this. I figure, if I can load up breakfast's meal before I go to bed, and only "unlock" the feeder after 7 A.M., my cat may eventually learn to stop bugging me at night. The joke will probably be on me though, darn cats.

I'd like to use an ESP8266 for this so I can also have an IoT feeder that reports usage statistics. =P

<comment><USER3> Don't feed your cat until 7am no matter what. Ignore all foot rubs and meows. He'll eventually learn and give up.

Operant conditioning.

Watch out though for that extra-hard last ditch effort he will put out before giving up. Stay strong.

<comment><USER4> How long is "eventually"?

My cat is almost 5 years old. She is the type to overeat to obesity, probably because she was abandoned at ~1yr by her previous owner. For half her life my partner and I have been feeding her like clockwork 3 times a day, minus all of 2-3 weeks of vacations where our roommate took over.

I have to exert a constant effort to maintain our bedroom door and the rubber that I lined on the jamb to prevent her from rattling the door at 5am to ask for food - the paint is a lost cause. We have a white noise machine. We ignore her cries for food. We ignore her pawing things off our desks. We have a system to keep track of food we give her so she can't "trick" the other person. She knows exactly when we feed her (the meows get cranked up a notch about an hour before food time) but despite not giving in, she keeps acting like meowing at us is going to go anywhere.

No luck. And we know we're not underfeeding her - she's getting the calories appropriate for her (currently normal) weight, is being fed wet food, has fresh water, lots of attention and toys, all that stuff.

Unfortunately we have to give this up because we've got a baby on the way, and it's just so frustrating to lose 2+ years of effort put into having her not weigh 18lbs...

<comment><USER5> Try an automatic feeder. I have the one mentioned in the article and didn't need to do any extra hardening to protect it from our two cats.

Even though we kept a tight feeding schedule, our cats used to start meowing and pestering us an hour before dinner time. Now, they just sit quietly and stare at the automatic feeder until it dispenses their food.

<comment><USER6> Second this. Our cat was clearly able to outlast my patience. At one point early-ish into our cat's tenure in our home, during a particularly persistent meowing session I said to my wife (jokingly!), "holy shit I'm going to kill this cat." To which I quickly had the sad realization that some people probably do abuse or kill their pets. So I decided to check for advice from the ASPCA.

All the kitty guides on webbernets say, "be firm and don't give into kitty's demands." Whereas I read on the ASPCA website, "buy an automated feeder."

Guess which worked? Happy automated cat feeder owner, and our cat mostly doesn't drive me insane around feeding times.

For reference, I also own this model of cat feeder and have not needed to harden, though I do have it wedged up next to a wall to lessen risk of tipping.

<comment><USER4> Fine, fine, I just ordered the Petnet feeder :) Not my first pick, but it supports the 1/16 cup portions I would need to maintain my cat's weight on the dry food that she likes most. I shall see on Christmas Day if she'll tolerate it :D

</comment></comment></comment></comment></comment></comment><comment><USER7> Wait until you get children. Those bastards have the same brain as yours and tiny tiny hands.

Preventing them from opening closets, garbage cans and cabinets is an arms race. You know you will eventually lose, the only thing you can do is slow them down.

<comment><USER8> Yes, but with kids, you can at least have the hope that they'll eventually learn to know better. With cats... not so much.

<comment><USER9> Yes it gets better. My 4 year old tidies up after her 2 year old sister. She even get's angry that she is making a mess.

<comment><USER10> So now the 2year old will learn that she can do all the mess she wants because she has her own cleaning maid... Just wait for it.

<comment><USER11> Well, you've got to get _some_ benefit out of older siblings...

</comment></comment></comment></comment></comment><comment><USER12> The problem, as in most difficult hacking operations, is that the attacker has physical access.

I would have put the machine in a base cabinet, run a chute out a small hole cut in the toe mould, and if necessary, put a child lock on the cabinet.

<comment><USER13> That's topologically equivalent to what OP did.

<comment><USER14> And OP is topologically equivalent to a bagel (disregarding nostrils)

<comment><USER15> If we're going to arbitrarily ignore orifices, then I'm a sphere.

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

</comment></comment></comment></comment></comment><comment><USER17> I had a simple auger-fed model for our cat. I realized very quickly she could reach up there and get food meant for the next cycle... and eventually realized I didn't care. If she takes the food intended for the next cycle, less comes out next, and if she goes into the next meals portion again, she's getting the same amount of food, and some stimulation for free trying to get it out.

<comment><USER18> I thought this too! Except our cat never lost any weight, and seemed to be getting fatter, until we put the feeder in a laundry basket, and now they can't get access anymore and have slowly been losing weight.

The laundry basket is the tall type, with a hole cut in the bottom and a funnel installed, plus a chute screwed on for good measure. It's mounted on the wall, raised about 1ft, so they can't get their grubby little paws in there.

</comment></comment><comment><USER19> The problem-solving abilities of that cat are pretty impressive. I couldn't imagine my cat bracing himself against a table and picking up the whole feeder with his teeth, I wish there had been a video of that.

The creativity and versatility of even a "simple" biological intelligence is a humbling reminder of how much work we have ahead for AI research.

<comment><USER20> Let me Dungeon Master this for you: You're trapped in a few rooms all day, every day. You don't know how to read. Your best friend is gone or asleep for 17 hours a day. You're a little bored, but you're also not very smart, so it's kind of okay. But you do have a lot of time on your paws.

There's a weird contraption that feeds you twice a day. And you can see food still up there, on the conveyor belt.

How would you like to spend the next 7 hours?

<comment><USER21> Well said.

My wife and I personally think it's borderline inhumane to keep a dog by itself all day, since they are extremely social.

While we usually don't keep solitary cats, I don't think it's that uncomfortable for cats to be alone, though per your DM interpretation, they will commonly get into things. Which they will do in groups too.

<comment><USER22> Some cats do much better when they have other animals or cat friends to socialize with. It depends on a number of factors, and much like human, not every cat is the same.

The amount of desired human attention sought from cats in our household has has decreased as the number of cats in the has increased. That's not to say they don't still want our attention, or that we don't give it to them. Having friends to keep busy seems to make the days go by easier.

<comment><USER23> I have a pair of cats (sibling boy and girl), girl cat is cuddly and wants attention, boy cat is solo and likes been on his own and rarely wants a fuss, both miss the other if they aren't their even if they rarely bother with each other.

When the boy went to be neutered, the girl spent the whole day going from room to room meowing and looking in his usual spots.

When she went to be fixed, he did the same.

I'll probably never have a single cat again (some of that is that they are used to each others presence I'm sure) since they are excellent company for each other.

</comment></comment></comment></comment></comment><comment><USER24> I'm impressed by both of the adversaries in this story.

</comment><comment><USER25> My ex girlfriend's cat was a fat cat and would nip the back of our legs when he was hungry. I spent one night building an Arduino feeder that rationed his food out throughout the day, and by the next morning it had been destroyed. He also loved to "experiment with gravity" by pushing things off tables and windowsills, for which he also destroyed most of the engineering work I did to deter him. So I know firsthand what an impressive feat it is to cat-proof _anything_.

<comment><USER26> > So I know firsthand what an impressive feat it is to cat-proof anything.

The fact that it took 1/8" steel plate to cat proof it is an amazing testament to the ingenuity of those little serial killers.

</comment></comment><comment><USER27> One of our greedy cats used to attempt to get into the Andrew James automatic feeders, even though he never could. He'd do this noisily at 4 in the morning. We've had to go back to manual feeding, and for this our cats have tried pulling the carpet up, chewing off our hair, dragging our hair, batting us in the face, meowing incessantly from a distance, chewing the MP3 player in the room, chewing the window handles, chewing the lamp, rocking the wireless phone backwards and forwards so that it beeps, chewing the phone charger, digging our slippers into oblivion, digging through my wife's handbag, clawing the bannisters, jumping onto the banisters whilst shouting in a catlike manner and precariously wobbling around (I fear he'll fall down onto the ground floor and damage himself badly, he'll fall on the stairs), pulling bifold doors open (he can grab them with his paw underneath), biting our hands. British Shorthairs are STRONG. Anything to get us up!

Our golden wonder cat Sponge has never done anything to get us up. He patiently waits. He's lovely.

<comment><USER28> Of course sponge never does anything, he/she's got a guy for that!

<comment><USER27> Ah so he's an evil mastermind with his naughty minions to do his dirty work eh? I had never thought of that...

Oddly he never made a fuss even when he was a kitten (before we got this other gang of pests). He's just such a calm cat and actually calms you down if you pick him up [slows your heartbeat down] (he'll purr if you just look in his direction normally)

</comment></comment></comment><comment><USER29> When people talk about how their pets are acting funny, I always wonder whether they realize that it's because of the boring habitat their pets have been put in. Asking them about it is delicate because it implies that their pet might be unhappy about its situation.

<comment><USER13> You must entertain your cat(s). I find it best to do so consciously for fear of what the cat will deem entertaining otherwise.

<comment><USER30> Or let your cat out - it would rather entertain itself killing the local wildlife.

<comment><USER31> Or maybe a bunch of dogs will entertain themselves by killing the cat.

<comment><USER13> I wanted to downvote you, but this is part of why letting cats out is cruel. They're best off living a life of leisure indoors. Make sure it's a good life by entertaining and caring for them. That's what pets are supposed to experience in the modern era.

<comment><USER32> > but this is part of why letting cats out is cruel.

Because they might die relatively quickly and painlessly at some point? How is that cruel?

Given the choice, cats always prefer to go outside, even after being exposed to hostile animals outside. Presumably their walnut brains have evolved heuristics w.r.t. the utility of being eaten. Plus, I think I'd rather be killed by a dog than slowly grow arthritic, tumorous, and blind until I can't eat anymore and I have to be taken to that place I hate so they can stick a needle in me and kill me. If that's "what pets are supposed to experience in the modern era" then I want none of it.

I've had a number of cats, and the outdoor ones don't usually live as long as the indoor ones, but they seem a lot happier about it. Live fast, die young.

<comment><USER31> In my case I got sick of cats coming into my life and then promptly dying within a year of that.

As far as keeping them happy goes, I have found that they tend to do well if they have other cats for company. Solitary cats usually don't make great pets.

I am however, talking about stray cats with no breeding history. I have heard that many pet cat breeds are bred for specific behavioral traits which make them better suited for an indoor only life. I also don't condone such practices.

</comment></comment></comment></comment></comment></comment></comment><comment><USER33> This is the best up-armoured cat feeder I've seen this week. Kudos to Quinn for never giving up.

I'm terrified to think what the next step will be once Sprocket chooses to escalate.

<comment><USER34> "Today I came home and found my cat using a plasma cutter"

<comment><USER35> Mine found easier to use my desktop pc to order cat food from Amazon...

/me does not (any longer) own a cat.

<comment><USER36> It's a joke, until you get one of those Amazon wifi buttons that orders things automatically...

</comment></comment></comment></comment><comment><USER37> I went through a similar sort of battle with my cat. I lucked out on an ugly, but thus-far impenetrable solution.

[http://imgur.com/wQNebLM](http://imgur.com/wQNebLM)

I bought that feeder at the last minute before we left town for a weekend, which was just long enough that we needed the cat to be fed, but just short enough that it didn't make sense to bug friends or a service. Ran to the store and grabbed the only one they had, which is to say, no real research was involved beyond necessity.

It's an OK feeder. I don't love it. But I _really_ love having an automated feeder. It literally improved our lives. There were issues, which I'll explain, but for the $80 I spent on it, I couldn't just chuck the thing. I had to at least try to work it out.

First problem was that the bowl is detachable. So almost immediately, the cat would knock the bowl off trying to get under the feeder for more food. And when feeding time came, it just emptied onto the floor. Tape fixed that.

And then he realized that if he lifted the feeder with his face, it would drop a few pebbles of food into the bowl. And so he started knocking the thing around when he got hungry. This wasn't a huge deal at first. He'd do it a couple times and then go back to sleep.

And then we went away for another weekend. When we got home, the feeder was on the other side of the apartment. "Cute", we thought, put the feeder back and went about our day.

The next night, at about 2am, the cat spent a full hour trying to get in. He was lifting the feeder about once per minute, sometimes more. So just a constant banging for a full hour until I got up to do something about it. I tried to leave it be as I got some work done, but it got worse and louder. Just as I arrived on the scene, he'd popped the top off - though he hadn't realized he could get the food from the top.

So, at a loss for time as I needed to get back to work, I did what's shown in the photo. Taped the lid under a tall chair. I figured that would buy me some time to get back to work and I could try to work on a better solution in a day or so. It's been that way for about 4 months now.

The magic of it is that the cat can't get enough leverage on the feeder to knock it around and get food out. And if he lifts the chair (with his face), the tape has enough give that the chair moves, but the feeder remains unmolested. It looks ridiculous, but it solved the problem, so we're leaving it as is. That chair is now part of the cat feeder.

</comment><comment><USER16> Jeff Atwood also wrote an interesting article about cat feeding machines but with a slightly different topic:

"This Is All Your App Is: a Collection of Tiny Details"

[https://blog.codinghorror.com/this-is-all-your-app-is-a- coll...](https://blog.codinghorror.com/this-is-all-your-app-is-a-collection- of-tiny-details/)

</comment><comment><USER38> do not feed cats from a machine. Even if you are super busy, give her food in the morning and after you get home from work, that's more than enough. Perhaps at the same time as your breakfast and your dinner. Despite the common perception of cats as 'loners' , they still want to be part of your 'gang' not a lonely creature feeding from a machine.

Ideally you would want to play with the cat before feeding her so she associates food with hunting not as a cure to boredom. Even if you are too busy to do that, the act of giving your cat food can be a bonding experience for a cat that's stuck indoors 24/7\. Many cat health issues can be diagnosed by keeping an eye of food habit since cats famously hide their weakness (to not signal weakness to predators, i would imagine). Free feeding cats would hide their illness till its too late to do anything about it.

Same with litter even if you use 'litter robot' keep an eye on the poop when you change the litter, common kidney diseases can be instantly identified by glancing at poop.

<comment><USER39> Unfortunately your common sense is in the minority of opinion here. HN is plagued by overeager engineers who endlessly discuss the _how_ without addressing the much more important _why_.

Why bother having a pet at all if you're not going to personally care for it?

<comment> nommm-nommm Give me a break.

The author was giving two meals a day and often got home late in the evenings. Only the evening meal was from a machine. Don't act like the cat is being abused. The author looks like she is providing the cat with a very nice life.

"Whys?" It helps prevent tripping incidents when the cat knows its food time and is rubbing on your feet as you walk. It helps with anxiety associated with irregular feedings. That's just two reasons I thought of off the top of my head.

<comment><USER38> >The author was giving two meals a day and often got home late in the evenings.

"An automated feeder would save me one chore per day, and I wouldn't have to worry about getting home late in the evenings."

You seem to have ignored "save me one chore per day" which is what my original comment was in response too. Occasional late meal is not a big deal at all, you don't need to go about inventing ridiculous machines for that.

<comment> nommm-nommm >Occasional late meal is not a big deal at all

How do you, personally, anonymous Internet commenter, know how much stress _this specific_ cat has when the evening meal is late?

You can give constructive comments about the benefits of manual feeding vs auto feeding without being rude and speaking in absolutes. There's certainly benefits of both options that differ with individual cats and circumstances.

<comment><USER38> >without being rude

def not my intention. Can you point out where i was rude so i can keep that in mind for future.

What I said of course is not true for special needs cats, do whats best for your cat if its special needs. I assumed we are talking about the 99% general case because original article didn't mention any special requirements that her cat had. I doubt anyone reading that blog would get the impression that her cat is special needs. Would you tell you someone "not speak in absolutes" to if she says "don't don't declaw your cat" ?

I know many cat owners who "play" with their cat by dangling a feather on its head, telling them to improve the play by creating intrigue and mystery during the play by hiding the source of noise is not an insult, I wouldn't think so. I made many pet owner mistakes myself. Unfortunately cats have the misguided 'easy maintenance' reputation which works against their well being.

</comment></comment></comment></comment></comment></comment><comment><USER40> This is amazing, but I have to say, I really don't think it will work for my cat. He would learn to use an acetylene torch if there was food as a reward.

</comment><comment><USER41> Had similar problems with our cat who was able to retrieve food from every automatic feeder we tried, apart from the perfect pet feeder [1] which was the only model that defeated him.

[1] [http://www.perfectpetfeeder.com/](http://www.perfectpetfeeder.com/)

<comment><USER42> Why not just leave the dry food out? Most cats won't overeat.

<comment><USER43> Exactly, most. Mine, however, do, and then they get sick and nauseous and barf.

<comment><USER41> This. Mine will eat and eat and then I will manage his weight back down from 21 pounds again.

</comment></comment></comment></comment><comment><USER44> That is amazing. I'm so glad I can just free feed my cat with out her getting obese, or even fat.

<comment><USER45> Haha, I know! _chucks a week 's worth of food in 5 bowls_ "peace out cats, see you next week!"

<comment><USER46> ours are usually like that but the bigger one... if he can even see the bottom of the food bowl? his little cat world is upside down. i can usually just shake the bowl and set it back down and he's happy.

</comment></comment></comment><comment><USER47> "You might say I've won this battle. However I just spent 20 hours armor- plating a cat feeder. I think we know who's really in control here, don't we?"

</comment><comment><USER13> Someone in the other thread suggested the problem is she can smell the rest of the food. I'd bet that's a huge contributor.

<comment><USER48> I thought the same when he said the cat was no longer interested in trying to defeat the metal box -- I bet the cat can't smell the food as strongly as it did without the box.

I've always found it easier to trick cats rather than force them to do things. But to trick a cat you must think like one. :)

</comment></comment><comment><USER49> All of the attack vectors of that specific cat feeder have been addressed by mine.

I applaud the ingenuity, but fear she spent far more time and money "fixing" this one instead of doing a little amazon shopping.

I also hope that she unbolts that bowl to clean it every week.

<comment><USER50> I suspect this is one of those cases where it starts out as just a quick fix, and soon turns into a challenge where buying a better feeder feels too much like cheating.

</comment></comment><comment><USER51> Somewhat relevant and got some attention on HN recently:

[http://theoatmeal.com/comics/cats_actually_kill](http://theoatmeal.com/comics/cats_actually_kill)

<comment> hash-set Wow. That's...disturbing...

</comment></comment><comment><USER52> This is an excellent example of why AI safety can never work by listing bad outcomes.

And the cat is not even superintelligent.

<comment><USER53> The cat also has fairly easily understood goals.

If, instead, the cat were trying to turn everything into paperclips it might be harder to combat its efforts because you'd never figure out what it was trying to do beyond causing chaos.

<comment><USER52> Wait, I fail to see how "converting everything into paperclips" is a more complex and hard to understand goal than "getting food"

<comment><USER54> Imagine what a cat _trying_ to turn everything into paper clips would look like.

</comment></comment></comment></comment><comment><USER55> My plan if I were to ever build a robot I'd use a cat's brain as the AI template for the brain.

Move something 1mm the cat comes into the room and seems to be thinking "Hey who messed up the place? What's going on?"

Cats are little pattern recognition machines.

</comment><comment><USER56> Compare to cows, who after being trained by real cattle guards, won't step on painted lines that simulate them.

<comment><USER57> But on the other side, compare with pigeons who could pilot a glider bomb into WWII enemy ships:

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

(As the owner of both a cat and parrot, I've learned not to underestimate their intelligence.)

<comment><USER58> Relevant short story by esteemed science fiction author Ted Chiang (author of /Story of Your Life/, which got turned into the movie /Arrival/): The Great Silence. [http://supercommunity.e-flux.com/texts/the-great- silence/](http://supercommunity.e-flux.com/texts/the-great-silence/)

</comment></comment></comment><comment><USER59> This should give a moment's pause to anyone who thinks we could keep a superhuman AI in a box.

<comment><USER60> You're joking, but let's not forget that we had to reset the universe the last twenty-three times this happened.

</comment></comment><comment><USER61> Man did I get lucky with my cat when reading all these comments here... She always has a bowl of food available, only touches it when she's hungry and rarely finishes it completely. I fill it up once or twice a day, and she mostly ignores me when I do. The most she does is come and smell the freshly poured food from time to time, but with little interest in actually touching it at that point - even when her bowl had been completely empty. And when she eats, she's always very calm about it, like there's no rush.

And it doesn't stop there. She knows how to use the litter-box, but she prefers to go outside - which means I rarely have to clean it - like once every month at most, only when she has been left inside for too long. I should find something to notify me when she actually used it.

She probably spends 70% indoor, 30% outdoor, which is when she terrorizes the other, more tame (but much larger) cats of the neighborhood or goes hunting. I should also find something that addresses here hunting nature, because the rate at which birds and mice are dropped at my back-door is quite alarming. A collar with a bell didn't seem to affect her hunting success-rate at all, and only gave her an allergic reaction to the collar - so we removed it.

</comment><comment><USER62> Wonder what would happen if you just gave the cat unlimited access to a large bowl of unguarded food all day every day. Would the cat eventually self- regulate the amount it ate? Or would you just end up with a really fat cat? Or both to some degree?

<comment><USER63> Depends on the cat. Some will self-regulate and maintain a healthy weight but many will over-eat.

<comment><USER64> This is correct. I had some cats who self-regulate and some who will overeat. The overeater was a stray cat initially which explains the behaviour.

</comment></comment></comment><comment><USER65> I'm not much of a hardware hacker but it'd be interesting to work on a wet food cat feeding machine.

<comment><USER66> i was always a big bowl of dry food pet owner, but when my cat got older and couldn't keep her weight up, i had to get her on wet food.

i don't think it would be hard to dispense from the puck cans, or extrude out of a plastic sack.

but it seems like portioning would be hard with the cans.

i can't imagine how it would clean itself though. even if you were wasteful enough to use disposable feeding dishes you'd be functioning as much as a bio reactor for flies and bacteria as much as a feeding station.

incineration? alcohol? steam cleaning and a sewer hookup?

</comment></comment><comment><USER67> He/she needs the Feed and Go.

[http://www.feedandgo.com/](http://www.feedandgo.com/)

It is expensive but impregnable. My cat can smell the food in there, so for the first couple of days he relentlessly attacked it. But he can't get in so he has given up.

He can figure his way into many things, including most trash cans, so we put kitchen trash into a 5-gallon bucket with a screw top lid.

Most pet feeders are cheap, poorly thought out, and easily penetrated by cats.

</comment><comment><USER68> _Mostly foiled by this copper, she then went back again to the lift-and-drop strategy. This time she figured out she could rotate my hold-down clamp out of the way, and again the machine was free to lift._

Is this an indication of cat cleverness, or tech person's engineering ineffectiveness?

If I ever design a cat feeder, then I'll design one with discrete feeding compartments, and holes tapped in a bottom plate for hold-down screws.

</comment><comment><USER69> I highly recommend the PetNet SmartFeeder. I've had two for both of my cats for the past year, and they work great. It allows you to setup automated timed feeds for several meals a day, then pings your phone each time a feed goes off (for peace of mind).

The product design is about as nice looking as you can make a feeder, and the mobile app's UI has improved a lot over the past few months to a good state.

<comment><USER70> I have the PetNet and my cat has no problem detaching the bowl. Bane of my existence.

<comment><USER69> How? Do you have an older model? The entire feeder sits on the metal bowl and to remove it requires that I lift up the entire feeder.

<comment><USER70> The beta model and the production model are both quite easy to remove with a small amount of pressure. The production model takes a bit more work but not much.

This video is from when I had the beta feeder but the same principle applies: [https://youtu.be/YHq1xHL8p2o](https://youtu.be/YHq1xHL8p2o)

</comment></comment></comment></comment><comment><USER71> After about the second failure I would have gotten one of those auto feeders that let out as much as they want and some weight control cat food.

<comment> nommm-nommm Cat was eating so much _volume_ she was vomiting. Weight control food doesn't help with this issue.

Additionally, my obese cat was on a very controlled amount of "diet" food for years, it doesn't actually work. Switched him to Blue Buffalo and didn't observe any weight change.

And before anyone asks, yes, the cat has been to the vet and has gotten all the blood work and I've tried multiple meals and everything. Don't even go there.

</comment></comment><comment><USER72> How common is it to need to restrict a cats eating? I always just keep dry food constantly available for my cat. She is around 14 years old and is a dainty little thing. I've never had any issue with her overeating or anything. When I'm away from home for a couple days, I'll just fill a really large bowl and leave it for her and there's usually a bunch left when I get back. Is this terribly unusual?

<comment><USER73> It seems cats have a range.

Some, like yours, will just eat as hungry. Daintily. One of my cats is like this.

Some cats tend to be chubby. They will eat on cues, and eat often. I have one of these cats as well. He's also a somewhat finicky eater - he'll eat lots or refuse to eat. He's been a bit large since he was born, but I don't have a need to restrict food yet.

And some cats will just eat until they throw up. Sometimes it is because of food insecurity, sometimes just personality. For these cats it is pretty vital the food is regulated.

Sidenote: There are other reasons to regulate food as well. I once had a cat with allergies and was fed prescription dry food, twice a day, as per vet instructions. Sad that I had to put that cat down due to health.

</comment></comment><comment><USER74> Running a background check on your partner is the anatomist rule of dating . ascertain if they are who they claim to be in the first place and best smart about it by hiring professionals via www.consultanthackers.com

</comment><comment><USER75> > You need opposable thumbs to remove a bolt (even a finger-tight one), so I'm > confident this is secure.

> You might say I've won this battle. However I just spent 20 hours armor- > plating a cat feeder. I think we know who's really in control here, don't > we?

I find this very disturbing... That said, the final result looks very well- made. Nice hacking!

</comment><comment><USER76> Simpler solution? Place cat feeder on top of refrigerator, long tube to direct falling food down to bowl on floor.

<comment> nommm-nommm The top of a refrigerator is an easily accessible location for a feline.

Additionally, putting any expensive gadget up high above a hard surface is a recipe for disaster.

<comment><USER77> > Additionally, putting any expensive gadget up high above a hard surface is a > recipe for disaster.

Machine parts and cat vomit (because the explosion will have dropped all the dry food through the room) not your style?

</comment></comment></comment><comment><USER78> Wow I had the same problem with the exact same feeder. This solution is awesome! I just ended up tying the unit to a table and called it a day. I also adjusted the food output, knowing he was going to get extra food from reaching up inside the feeder.

</comment><comment><USER79> I had 10+ cats at some moment and feeding them was a challenge.

I used to form lines with cat food. Looked a bit like farming.

Birds then would try to eat the remains, only to become additional cat food.

I've heard some vegans force their cats to become vegans as well. I think it is not healthy.

<comment><USER73> > _I 've heard some vegans force their cats to become vegans as well. I think > it is not healthy._

You are correct. I'm mostly vegetarian (I eat fish), but I won't do that to a cat. They need meat for health, and not doing so is cruelty.

I truly wish that these folks would give the cats away to someone that can feed them properly and invest in a vegetarian pet that fits their lifestyle: Birds, iguana, and so on.

</comment></comment><comment><USER80> After reading, I can't help but think that the problem is that the cat knows there is food inside.. is there a leak where the scent gets out?

I would try sealant around all the seams And revert back to so lesser security measures to test it.

</comment><comment><USER81> Obviously all the software development managers are going to gravitate to this thread..

</comment><comment><USER82> Could one draft a NN-Algorithm from this? One NN as a antagonistic force, trying to overcome a machines original purpose, one as a deterring force, that alters the CAD-model?

</comment><comment><USER83> "It's almost as though there's a psychological effect of the imposing structure that is keeping her from even trying."

What like being able to see how much cat food is still in the machine?

</comment><comment><USER84> Has he tried a increase in the cat's food intake? Seems low cost, low risk, and if it does not work you can resume armor plating the robot.

<comment><USER12> This causes weight gain. My dog gains weight if I walk her any less than I usually do, but still clammors endlessly for food.

<comment><USER85> I've tried this experiment on myself with much the same results.

</comment></comment></comment><comment><USER86> Wonderful article, I howled aloud when I passed this "It was the best and worst day for Sprocket.".

</comment><comment><USER87> anyone with more money than time and metal working skills might consider just getting a super feeder: [http://www.super-feeder.com](http://www.super- feeder.com) (nothing but a satisfied customer, here.)

<comment><USER88> Dissenting opinion: I owned a Super Feeder before upgrading to the feeder pictured in the original story. My cat was able to produce food from the super feeder continuously, just by lightly smacking the tall column on the top. Perhaps the kibble my cat eats is below the minimum supported size?

The new PetSafe feeder is better: it will produce a little food when kicked, but it will only drop out a bit of the next meal from the top of the ramp; in contrast, the super feeder could drain its entire reservoir through continual knocking. I also find the PetSafe a better machine in other regards (battery operated, much larger reservoir, easier to program a serving by volume).

I do think the super feeder is more hackable though, so if you're looking to do metalwork maybe it's the better fit.

<comment><USER87> huh. usually a solid rap will drop a bit of loose stuff from our super feeder, but a second one doesn't drop anything more. basically behaves as you're saying your petsafe does.

> Perhaps the kibble my cat eats is below the minimum supported size?

i do think it has some issues with sufficiently small kibble. i noticed a bit of increase in portion size variability when we moved to a smaller kibble.

did you have any luck with reducing the gate opening?

> I do think the super feeder is more hackable though

controlling it by applying power is certainly convenient. i've got an rpi which dispenses on a schedule, and lets us hit a web page to dump out some more food when the cats are complaining.

</comment></comment></comment><comment><USER89> I love it that there's people in the world who are so nerdy as to document such a thing.

</comment><comment><USER90> ...

<comment><USER91> Did you even read the article?

</comment></comment><comment><USER92> This seems like a classic case of over-engineering the wrong problem.

The problem isn't that the cat is getting into the machine, the problem is that the human is neglecting to feed the cat.

Solve the right problem.

<comment><USER93> A) the human feeds the cat, with delicious wet food, every morning. Many cats are only fed once daily anyway, this cat is fed twice daily.

B) When traveling, one is not at home to feed the cat, at all. If fed, cats are quite content to have the house to themselves for a few days. If a cat is disciplined about eating, you can just put a lot of food in the bowl and leave it alone while you travel. If not, you need to build a machine to dispense food, or pay another human to come by and feed the cat.

C) I often enjoy reading stories about the process of engineering (iterated problems, solutions, new problems, etc.), even if the final result is 'over' engineered.

<comment><USER92> I have a cat. I know how it works. Part of having a pet is dealing with the fact that you have to take care of it. Many people have pets and go on vacations.

>even if the final result is 'over' engineered.

This is a major issue though. It's why a lot of engineers can't translate ideas and solutions into elegant businesses...

Of course there is nothing wrong with this project, so long as you understand it completely misses solving the actual problem at hand.

<comment><USER94> "Can't" create an elegant business, or "don't care to"? Different people are motivated by different things.

Seems to me the person undertaking this cat-feeder project is the one who gets to decide whether or not they have solved the "actual problem at hand", since they are the one who decided what the problem was in the first place.</comment></comment></comment></comment>


Formatting F# source code for the Web - <AUTHOR> http://tomasp.net/articles/fswebsnippets-intro.aspx

<comment><USER2> One of the joys of working in F# is how the stronger type system combined with the type hover-overs allows for a sort of debugging-as-you-type that allows you to think with the help of the type system. It really helps unwind difficult problems and when there are errors you can easily see inline how to fix them. This is an impressive use of that facility, though it's even more useful when trying to solve a problem.

</comment><comment><USER3> Very cool. The tool tips are amazing. The snippets are making me think whether an online version of Visual Studio might be possible.</comment>


Ask HN: What Are Some Useful/Nifty Design Patterns in Programming? - <AUTHOR> I have seen a general disdain for Design Patterns (GoF etc.).  But are there any design patterns you have found very useful in programming?
They could be one of the standard design patterns  defined by GoF or others, or patterns that you had to create on your own to solve a particular problem.
These could be Object Oriented or Functional Design patterns.  I am not talking about any System level or Web scale design patterns here. <comment><USER2> Visitor pattern is highly useful for tree like data.

<comment><AUTHOR> Thanks. I have personally been trying to understand the Visitor pattern and its implementation since a few days. But I cannot for some reason wrap my mind around it. Any good article/video to explain it?</comment></comment>


Show HN: Gevva.com – the new do engine - <AUTHOR> http://gevva.com

<comment><USER2> How is this useful when we live in a Googlized world?

<comment><USER3> Hi seshakiran, I'm a cofounder of Gevva.

Our angle for Gevva, in a truly Googlized world as you say, is to 'do' where Google 'searches.' In other words Gevva skips the middleman for daily internet tasks with clear, standard input. For example, instead of finding one of millions of conversion tools, just tell Gevva to 'convert to pdf' and it uses the fastest and most reliable API to complete your task.

Thanks for the question, we get it a lot and it's definitely a question we think about often.</comment></comment>


Ask HN: Review my startup (vivapixel.com)  - <AUTHOR>

I read HN every day and would love feedback from the community on vivapixel.com. Vivapixel is a new photo sharing site that provides users a safe and fast place to upload, edit and share photos. We have been working on the service for about 3 months and we're looking for feedback/comments/ideas.
Some of the features: -Albums can be public or private. -Albums can be shared (allow friend/family to upload photos with a password) -You can upload photos to your albums via email, each album can have it's own @vivapixel.com email address (this is great for allowing friends and family to email photos to your albums, it's also great for camera-enabled phones like the iPhone or blackberry) -Site is optimized for speed and ease of use (tring to make the site mom-friendly) -You can upload videos and share videos.(250mb limit right now) -Supports: comments, tags, html embedding codes, exif information etc.
Anyone can create a free user account. Thanks and we appreciate any feedback from the HN community. <comment><USER3> So here are my thoughts:

1) You give me no reason to use you rather than Flickr or Facebook. What is the reason YOUR site is better? I'm not saying it isn't, but that needs to be on your frontpage. You have to assume your customer is going to have photos online elsewhere.

2) Frontpage signup button took me to an Oops page, so I can't even register to try the service. Looks like it goes to signup.php rather than /signup

3) A pet peeve. If you're going to allow me to login without authorizing my account, just log me in after I register. Why make me re-authorize myself.

4) Creating an album before upload is an extra step. Allow me to create the album in the upload process, sure require it, but I want to begin uploading images right away.

After playing with the site some, I still don't have an understanding what makes your site a killer site in the crowded market. What is it that makes you better than Flickr, Facebook or Myspace for my photos?

<comment><AUTHOR> Flickr is a good service, don't get me wrong, but I'm not a big fan for big brother or someone trying to stuff ads down my throat all the time (just my 2cents)

Facebook, don't keep the originals, only the cropped versions of the photos... also what about the millions of folks who don't have a facebook account ?

Frontpage button: Sorry. fixed it !

I never claimed my site to be "killer", it's new and will get better over time... It's by having users who use the site and want a better experience that the site will evolve.

What would make the site "killer" in your opinion ?

thanks for the comments.

<comment><USER3> I don't have an answer for you, my point was that the majority of users who will find your service will have their photos elsewhere already and it requires something to make them move.

Photos are a saturated market. I don't have any killer features to suggest, and I don't mean to make it sound like you're dead in the water - far from it. You're a young startup with a fairly solid site from the looks of it, it just didn't show me anything which would entice me to move photos to your site.

As for your feedback on Flickr, you and I may feel that way, but the millions of users they have are in love with the service. Swaying someone who loves a product is like trying to convince someone to switch religions, it's nigh impossible.

I'll look forward to seeing how your site shapes up over time.

</comment></comment></comment><comment><USER4> Your logo's border looks particularly thick. It doesn't look very good on such a minimalist site.

"Vivapixel helps you store and share your photos and videos !"

There shouldn't be a space before the exclamation point. Furthermore, there shouldn't be an exclamation point at all. You're not making us excited right now, you're selling your product. It looks better if you're confident enough to stick to a period.

The checkboxes look very generic. Why not use a font-specific checkbox, if you need checks at all?

Bold fonts to me suggest slovenliness. Any reason you can't use a normal font thickness, and experiment with sizes to emphasize?

Work on the quality of your writing. If you've got three bullet points, it helps if they're about equal in length. "Crystal clear photos & videos" is overlong and doesn't say anything: aren't all photos crystal clear online? Does crystal clear video mean HD? (I'd also tell you to hyphenate _crystal- clear_ , but it would be better to go with another phrase entirely.) "Safe and Fast" should see the f in "Fast" lowercased. Furthermore, these aren't points you should be making. I don't think of photo sites as unsafe or slow. You bringing these up makes me wonder just how fast and safe you are. (It's like the proverbial restaurant that advertises "Our meat doesn't come from cats.")

I notice all the photos up front were taken by Dave. Any chance of getting other photographers/some spoof accounts to look better? Also, for the love of Pete remove the border from that photo. Nothing adds to slightly disorienting clutter than vaguely noticeable borders around things that should remain borderless.

The "create new account" button isn't clickable. Make it so I can click that button.

Don't give us a tour using thumbnails on the front page. That's cluttered. If you had more going on, thumbnails would be fine, but as it is it looks pretty cluttered. Also, work on the spacing. If you've got to have thumbnails, give them some space. Don't jam text up against the photo. Again, work on spacing (between commas in the second thumbnail) and punctuation (the first thumbnail has a sentence that doesn't end in a period) and capitalization (a lot of offenders here).

There are a few other things - the spacing of the top links, the links in the footer - but those are minor compared to your main problem, which is that this splash page doesn't make me want to sign up. I don't see the advantage, beyond having a cool web site URL, to using this above Flickr.

Remember that a good design means convincing people they want to use you. Right now, that's not happening, and that's a problem.

<comment><AUTHOR> Thanks for the comments, spend so much time on the code that we sometimes forget the look and feel (as well as punctuation)

</comment></comment><comment><USER5> It looks interesting... But can you please make a demo video, or make a demo version that would allow us to make a fast test without requiring creating an account?

EDIT: Also consider providing users a way to transfer their photos from their current service to yours, and to share the photos through multiple platforms... such as facebook.

Also consider letting users to login using their facebook account - <USER2> connect.

Also if you require users to sign up, then consider making a small registeration form at the front page, to accelerate the signup process, and make users feel it's easy to do.

EDIT: If you are interested in learning about the user's experience, then consider adding a feedback form, that's easy to be filled.

<comment><AUTHOR> Working on the transfer function now, hope to be done ASAP.

Facebook connect, hmmm will look into this...

thanks for the comments</comment></comment>