Students are almost as effective as professors in university teaching - barry-cotter https://www.sciencedirect.com/science/article/abs/pii/S0272775719300767 <comment> barry-cotter > In this paper, we further explore the effectiveness of the lowest-ranked > instructors: students. We confirm that students are almost as effective as > senior instructors, and we produce results informative on the effects of > expanding the use of student instructors. We conclude that hiring moderately > more student instructors would not harm students, but exclusively using them > will likely negatively affect student outcomes. Given how inexpensive > student instructors are, however, such a policy might still be worth it.</comment>


Joint Allocations in C++ - <AUTHOR> https://turingtester.wordpress.com/2015/09/13/joint-allocations-in-c/ <comment><USER2> Sadly, this is representative of the new trend of C++ programmers. I will get down voted, hated, and laughed at, but I do prefer the original version of the code. It is infinitely more simple and readable, and the layers of abstraction added are of pretty much no value here.

If I stumbled across the latter version, I would just scratch my head. And I've seen sooo many projects just end up in a big code bloat just because some programmers wanted to add tons of "new" features like this that add nothing and just complexify the code for no reason.

<comment><USER3> Post author here. Sorry you feel that way. I'm surprised you don't think that moving out the messy code into make_contiguous is a win. Isn't it good to factor out clearly reusable code into functions, so you can reuse it? Would you really prefer writing out code like that in a dozen places for a dozen classes that needed contiguous storage, to writing one function, testing it, and then calling it from all those other places?

<comment><USER4> Hi, Another Game dev here. Firstly, neat article, thanks for writing it.

I'm curious as to the problem you're exploring/solving here?

"Concatenated struct's in single chunk" is a neat trick. The use case seems a bit broken[1], but I'm assuming that it's from the original video, and your c++-ifying it? Or at least trying to find a nicer way to write this style of code?

If you'r going this route, I'd be tempted not to use pointers at all, and just use offsets and accessors.[2]

      * Lack of pointers means you can load in 1 read. (endian needs to be watched, and assumes you can get the entire size elsewhere)
      * You can also shuffle it around in memory should you be doing something fancy. (defragging heaps might be useful if doing a sandbox)
      * Better encapsulation? maybe..

But the basic point I'd like to make is, there is no nice way to write this type of code, because c and c++ gives us no nice[3] way of expressing it.

[1] Verts and Indices are generally uploaded to a GPU then discarded, but this has the counts, which is needed CPU side for draw calls, in the same chunk so would need to be copied before freeing.

[2]

      struct Mesh
      {
      	int32_t num_indices,
      		num_verts;

      	// inline to this struct..
      	// assumes Vector3 is aligned 4 bytes.
      	// and that Mesh has been alloced to same alignment.
      	//
      	// Vector3 positions[num_verts];
      	// int32_t indices[num_indices];
      	// Vector2 uvs[num_verts];

    	inline const Vector3* PositionsBegin() const { return reinterpret_cast<const Vector3*>(this + 1); }
      	inline const Vector3* PositionsEnd() const { return PositionsBegin() + num_verts; }
      	inline const int32_t* IndicesBegin() const { return reinterpret_cast<const int32_t*>(PositionsEnd()); }
      	inline const int32_t* IndicesEnd() const { return IndicesBegin() + num_indices; }
      	// etc
      };

[3] Maintainable, fast at runtime, low mental friction to people other than the author, etc

<comment><USER3> Hi, thanks yassim. Yes, the use case is from the original article. Yes, that is certainly another way to go, you could just provide the unique_ptr and a bunch of integer offsets. In this post, my data structure is trying to balance performance and code cleanliness, it's advantageous to provide standalone ArrayView which can't just be two integers. In the follow up post I'll be trying to make the data structure itself generic, so it will more easily allow for space optimizations.

I guess we'll agree to disagree, I think that C++ gives us some nice ways of writing it, I think that's what the post shows :-)

</comment></comment></comment></comment><comment><USER5> I watched the linked original video to understand the motivation, and read the article, and I think this is a misguided solution to a real problem.

These "joint allocations" seem to be "a small pool of heterogenous types." The motivation is that heap allocations are expensive, so we want to coalesce them. The only way this would matter at all is if we are creating lots of these Mesh objects.

The given solutions make one heap allocation per Mesh object, as opposed to three. Create six million Meshes and you get two million allocations.

Instead, one pool should be created for each of the three array types: Vector2, int, and Vector3. Now, create six million Meshes and you can do somewhere between three and a few dozen allocations, depending on your pool's initial size and growth strategy.

<comment><USER6> _> , create three million Meshes_

I didn't watch the presentation so I may be wrong but it's possible you're misinterpret how Mesh was intended to be used.

The "million" objects is meant to be _inside_ one Mesh. Mesh is singular. The vertices are plural (millions).

If there's more than one Mesh, it would be dozens or hundreds of Mesh (per video game characters).

<comment><USER5> But if you only ever create a single Mesh, then you wouldn't care to coalesce the allocations, because three allocations instead of one is inconsequential in the course of an entire program lifetime. I agree that there are many vertices and edges within each Mesh, but there better also be tons of Meshes within one program, or there is no problem to begin with.

<comment><USER7> I believe that the main problem is not allocation time (games already have loading times, that's not a problem), but fast access and not breaking the cache.

<comment><USER5> The title of the first slide in the video is "Heap allocations are expensive!" And using a pool the way I'm proposing does not fragment the heap. It might be slightly worse if you serially touch a lot of Meshes which have only a few vertices and edges each, but this is a corner case and a trade-off anyway.

</comment></comment></comment></comment></comment><comment><USER8> Or you could just use C++11/14 allocators instead which fix this in a much more transparent way...

<comment><USER9> Exactly. Stateful allocators were added to the standard library especially for this sort of problem. Before, allocators were assumed to have no internal state, which made it problematic to manage memory from an arena or pool.

Perhaps there's a reason allocators wouldn't work here, but if so, it deserves a little discussion.

<comment><USER3> I did discuss stateful allocators. They're nice, I'm a big fan. But as I said, they would impose pointless space overhead of one extra pointer per array. Also, you now have more complicated issues: each of the arrays is now an owner. What if you try to make a copy of it? Move construction? What if the container tries to deallocate, how does our allocator handle that? When I copy Mesh, would I need to change the allocator's state in the copies? How would that even work? I think that once you think about trying to accomplish the very specific and relatively simple thing being done here with allocators, you'll see that it would be quite a bit more complexity to no benefit.

I think I did give it a "little" discussion :-). Guess it depends on your definition of a little. I didn't want to talk more about it because I didn't want to get sidetracked, and this is ultimately the way I chose to do it.

Hope that sheds some light on the post and the choices I made with it.

</comment></comment></comment><comment><USER10> I was recently bit using a similar technique to the original code for an intrusive type in C. Using manual non-typesafe raw offsets for things can definitely lead to nasty bugs.

Automating the calculation of offsets and assigning pointers definitely eliminates a lot of potential bugs, but I do wonder if this isn't a bigger deficiency in C++. Why force storing an extra pointer per _array_? I am still not sure why C++ doesn't allow FAMs [1].

There's probably a question of which would be more efficient, storing pointers in the object and calculating the offset from the pointer, or dynamically calculating the offset within the object. Still, it doesn't seem like a problem developers should need to solve.

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

<comment><USER3> It's not really an extra pointer, unless you assume there are no alignment issues. If you assume that there's zero padding between members, then yes, you can do 1 pointer for storage + 1 per view. In the follow-up post, I plan to either do one pointer per view, or one integer per view, haven't decided which.

The thing is, who should solve it? The different approaches you listed have different advantages, there isn't one right answer. If the language itself solves it for you, you are stuck with whatever solution the language picked. This would be fine in a higher level language, but not in C++.

You're right though that individual devs shouldn't be solving it, it should be in a library. If there's enough interest in these posts, I'm happy to put up my work (fully fleshed out and documented) on a github for people to use.

<comment><USER10> I suspect the compiler will be better able to optimize offsets than pointers just because of the semantics required by the language, but I think you're right that it isn't necessarily one size fits all. Another possible solution might even be storing static bounds at specific intervals. Without numbers, I can only guess which would give optimal performance though.

I think the library approach is right. It would be nice to see the language transparently support contiguous array members, but supporting it in a library will allow more people to use it regardless of compiler. It avoids the standards approval process and implementation as well, which take non-trivial amounts of time. The 0x/1y features definitely make it a lot more feasible.

It would probably give people a better chance to play with the source if you could post a link to it somewhere. I'm not sure what you plan to license it under.

I'll keep an eye out for the next post.

</comment></comment></comment><comment><USER11> If you ever start from something like this, you should be asking a lot of more-basic questions first, such as:

1\. _Why_ is the goal to put everything in one block with a single allocation? Could everything still work if they were separated?

2\. What do Vector2 and Vector3 look like? What if they say "int a, b" and "int a, b, c" respectively? If a perfectly-aligned "new int[total]" would have fixed the problem, it should have been tried from the start and the code refactored accordingly to not necessarily use structure types to look up the data.

3\. Conversely, are Vector2 and Vector3 complex classes with special constructors (or equally important, _could they someday become that way_ )? If so, even a "fixed" memory-allocation solution will be equally fragile to maintain because there is a responsibility to ensure that constructors are called correctly.

4\. What is the memory profile of the rest of the application, e.g. how many Mesh objects themselves are created and _is the entire approach to managing Mesh objects wrong_? Maybe the focus on optimizing one piece has missed an entire problem somewhere else that is more fundamental.

Clearly the original code has bugs but it is also only 14 lines, the fixes for the bugs are straightforward and the right solution (after other analysis) may well have been to remove the code entirely instead of doing the same thing in a different way. Beware of the tendency to "fix" things without looking more deeply at the actual problem.

</comment><comment><USER12> Vertex attributes should probably be interleaved anyway.

<comment><USER13> The whole point is that they shouldn't, because there are multiple loops over the different attributes and for best performance they should be in individual contiguous memory regions. Remember that you only have a few milliseconds per frame in a game and those things can matter here.

<comment><USER12> The two attributes are pos and uv, which are almost always tied to each other (and therefore be updated together). The GPU will access attributes by index hence they should be interleaved otherwise you are just forcing cache misses.

Indices are _not_ vertex attributes and thus should not be interleaved with the other data.</comment></comment></comment>


Be happier: Rent Everything - <AUTHOR> http://georgesaines.com/2010/08/10/be-happier-rent-everything/ <comment><USER2> Yeah it sounds great but have you ever been to one of those places that rent out furniture and TVs? They are great if you want to make your room look and smell like a seedy motel room that rents by the hour. You are better off financially and aesthetically getting a bunch of cheap stuff from IKEA and assembling it yourself.

As far as renting housing, as a proud home-owner I would say definitely rent.

<comment><USER3> This has become my philosophy. You can buy the Ikea stuff almost as cheap as renting that crummy rent-a-center junk for a few months.

When we move, we just make sure we find a rental close to an Ikea, Craigs List all of the Ikea stuff before we go and then buy it again when we get there, saving thousands on moving expenses.

I'm wicked good at assembling the entire "Lack" series...

I'm about to try this with our biggest jump ever. From the USA to Australia. Selling _everything_ and starting over is hard but has been strangely refreshing.

<comment><USER4> What have you found to be the biggest cultural hurdles in moving to Oz?

<comment><USER3> Compared to my other overseas adventures, Downunder is a much easier adjustment. I have a family now and we're all going so I'm happy about this. Good to ease them into the whole expat thing.

We'll be starting down south, in Adelaide, coming from DC. What struck me most about the difference in these two places is just how laid back and casual everything is down there. Right-hand drive is stressful for me though!

I'll be back down there in a weeks time looking for a place to live and finishing immigration paperwork. Any HN folks in SA who might want to meet up for a quick pint some idle evening, drop me a line.

<comment><USER4> Interesting. My wife and I have friends down there. I've often thought about immigrating. The way our economy is tanking here (I'm near Philly) and comments like yours are encouraging this line of thought. I'm wondering how difficult it is for an American to immigrate there compared to less friendly countries.

</comment></comment></comment></comment></comment><comment><USER5> Even better, if you're going to go to that extreme to restructure your life, is to simply attack the problem directly. If you're concerned about your possessions owning you, just fix _that_. Watch a few episodes of "Clean Sweep" to get in the mindset, then clean your place out, and make sure you do this periodically.

Ownership has benefits too. In my opinion when you rent everything you are simply trading a situation in which your possessions metaphorically own you for a situation in which your possessions more literally own you, or rather, the person who actually owns them owns you. Everything you rent has a contract attached to it; what's the fun in that? My house is full of things repurposed; an entertainment center with the top cut off, chairs with customizations induced by pets, a couple of doors I've added internal cat doors to. Chunks of the "house" I've sold, chunks I've added. And I'm not even "handy".

Don't treat the symptoms, treat the problem!

<comment><USER6> Excellent point; once you're good at "ruining" or getting rid of stuff, the stuff you have doesn't bother you. The more you get rid of, the easier it gets, because you realize you don't regret any of it. Once you've got over the horror of throwing away valuable things yourself, you can exploit it in other people. "Hey, do you want...? If you don't, I'm just going to throw it away." Your stuff ends up in their closet instead of yours. You can also donate stuff to friends who enjoy having garage sales or selling at flea markets.

Bottom line, as with alcohol, there's no need to avoid it unless you know you can't handle it.

</comment></comment><comment><USER7> Good timing on the article -- I actually ran the numbers early this evening to see if (financially) ZipCar + public transit was cheaper than TCO for the car I sold 6 months ago. I looked at 6 month of each, living in Nob Hill. Owning a car ended up being $2700 and ZipCar about $1600. The cost savings, while validating, is not the biggest gain. Not worrying about parking tickets (or towing!), finding a parking spot (always the worst part of my day), getting broken into (happened once already), mechanical problems -- it's hard to put a price on that burden being lifted.

Outside of that, since I moved to SF a little over a year ago (to a smaller place) it made me realize how much junk I have that I don't need and have been actively trying to minimize my possessions. So far, I've shed a lot of extra weight and my entire life feels a little less cluttered. It's very re-assuring that articles like this keep coming up on HN.

<comment><USER8> Motorcycle is an under-considered car alternative. Fuel is peanuts and total annual costs only a few hundred; a small fraction of car ownership. Only a few grand of capital is tied up in the bike.

It's great if you only need to drive a couple times a week and can resort to other means if necessary.

<comment><USER9> I love the idea of motorbikes, but find the risk of death off-putting. E.g. <http://www.numberwatch.co.uk/risks_of_travel.htm>

<comment><USER10> While motorcycles are clearly not quite as safe as cars, every study I've seen found that the vast, vast majority of motorcycle accidents involved at least one of the following:

\- untrained rider \- failure to use safety equipment \- drunk

My conclusion is that a properly trained and equipped motorcyclist who stays 100% sober while riding is pretty safe. My 15 years of riding on the streets has borne that out -- I've had a few close calls due to insane drivers, but keeping up with safety training has given me the skills to deal. Without having taken the safety classes, no question I would have had multiple crashes.

<comment><USER11> In driver's ed they also told me that since they're smaller and drivers are used to looking for cars, drivers often don't see/notice motorcycles. There's nothing you can do about the fact that other drivers suck.

The real issue is that even if you only get in as many accidents on your motorcycle as you would have in your car (which is probably nonzero, even if you're a great driver--other drivers suck, remember), each one is _way_ more likely to kill you or cause serious injury when you're not surrounded by a ton of steel.

<comment><USER10> The visibility problem is one of the first things they mention in any safety training. You definitely don't belong on a motorcycle if you don't understand that & don't have the skills to deal -- it's not for everyone.

</comment></comment></comment></comment></comment></comment><comment><USER12> This only makes sense if you place a high value on mobility.

Many people value putting down roots and committing to a city or neighborhood. This often comes from having many tangled connections to other people.

My life isn't just about me anymore. It's about my wife, kids, and our extended family. If we were to move around a lot, each move would require the whole family to change their lifestyles, as opposed to just one person.

Don't get me wrong, there are plenty of nomadic families, but they are more rare than nomadic individuals because of the increased complexity.

For those of us who aren't as passionate about the nomadic lifestyle, settling down makes sense. And, if you're going to settle down, ownership is the way to go, especially of your house.

A great neighborhood is worth a lot of money. Good neighbors, good schools, good transit to work, and so on. If you're renting a house which provides those things, the idea that a landlord can take it all away isn't pleasant.

<comment><USER13> Nomadic implies you barely spend a couple years in one place at a time. Homeownership to stay put implies that you stay put for decades, because mortgages are usually 30 years. Isn't there anything in between?

<comment><USER14> Sure, buy a house when you get somewhere, sell it when you are finished there and accept the losses due to that suboptimal process as costs of the lifestyle. You can't be picky when you buy it, you'll have to sell in a hurry, you may have to pay fines for paying of mortgages at an increased rate, etc. However, it can be done.

<comment><USER13> But it can be done just as well, or in some cases even better, by renting. No fines, no selling (worst case scenario you have to rush to sublet, which is a lot less paperwork and hassle), and depending on the area you even get to be picky. You can move every 5 to 10 years buying and selling property, but it sounds like you have to throw away a lot of money to do so, and I thought the point of homeownership was to avoid throwing away money.

<comment><USER12> At this stage you're beyond rules of thumb and down to evaluating each deal on a case by case basis, factoring in everything from interest rates to how long you think you'll be in that particular place.

</comment></comment></comment></comment></comment><comment><USER15> Renting isn't the real goal here, only one of many possible solutions to being nailed down to one place.

For example, I own a duplex, and furnished the top unit rather nicely and lived in it for a few years. But I decided to move abroad for a while and rented it furnished and got a property manager to take care of the duplex.

The key is just to plan for not needing income. I knew that I'd reach the break even point on my duplex pretty quickly vis-a-vis rent and mortgage, so although I own property, it isn't really an anchor, instead an investment.

I agree with some of the other posters, seems like if you are frugal and buy off of CL you are probably going to do just as well. You can also rent entire houses or apartments furnished for less than the cost of renting stuff separately, so that's another option.

Keep your options open, that's the real goal.

</comment><comment><USER16> How is leasing a car less stressful than owning? I own my car, and at least I can put it on Craigslist whenever I like. If I was leasing it, who knows what I'd have to go through to get rid of it. I guess you could actually _rent_ a car... for $70 a day.

And if I was renting all my furniture and appliances, God, I'd be broke right now from the payments. If I had enough money to rent everything, I'd just buy it and save the rest. Or buy better stuff. Or go on vacation. If I want to move and not take stuff with me, I'll sell it.

<comment><USER17> Article argued for using public transportation instead of an owned vehicle.

I think you missed the point of the article, which was you can focus more on your passion (work, family, hobbies, start up) if you don't bind yourself to ownership. If you own a house, sure, you have an appreciating (???) asset, but you also are responsible for fixing every little thing that goes wrong. The "extra" you pay in rent vs owning is for having a landlord to worry about investing time and your extra money to fix things.

<comment><USER18> yeah, but the problem is that you have to worry about shit you rent. Really, you have to worry about it more than shit you own. My stuff is, well, mine, and nobody else will give me trouble if I destroy it.

Rented stuff belongs to someone else. I need to take due care, and if I do happen to break it, I usually have to pay more than what getting the equivalent thing off craigslist would cost me.

Also, when you rent, you usually commit to renting for a certain number of months (or sometimes years) - in many ways a lease is much less flexible than owning, because I can't sublet, and I can't force the landlord to lower the price, so if I want to leave, and the market prices of the rental is lower than what I paid for it, I'm potentially on the hook to pay off not only the difference between market value then and market value now, but instead the entire value of the lease.

<comment><USER19> That is what insurance is for.

<comment><USER18> yeah... but, for example, buying insurance on your rental car doubles it's cost. And getting anything out of insurance is such a hassle. If I had a nice new leased car and my brother put a dent in it learning to drive, I'd have to deal with it. even if it didn't jack up my insurance premiums, which it would, dealing with a little dent is probably going to cost you at least 5 hours. But the thing is, I don't rent; I own a jalopy. so the kid put a dent in it... so what? It wasn't the first dent, and won't be the last dent. Driving a car that is worth a weeks pay is a much lower stress experience, for me, at least, than driving a car that is half of a year's post-tax earnings. Sure, the thing will die one of these days. but who cares? Push the thing to the side of the road and call a cab and a wrecker to haul it off to the junkyard. borrow a friends car (because I'm free with loaning my jalopy, I have some credit) or rent until I find my next jalopy. It's been pretty good for the time I've had it.

Another example; a while back I stepped on my thinkpad. Now, being a 200lb guy, the monitor cracked. Will insurance cover "A fat man stepped on it?" If they do, they'd probably pay retail to replace it (lenovo wanted $700 to fix it, and that'd be factored into premiums.) I think I ended up paying $80 for a new LCD and spent two hours installing it. Probably less hassle than dealing with insurance would have been.

Insurance is best for risks that are beyond your capability to deal with... Usually for small things, it's cheaper, long term, to deal with it yourself. And unless you /enjoy/ bureaucracy, it's usually less work, too.

</comment></comment></comment></comment></comment><comment><USER20> My ideal living space would be a medium-sized house almost entirely devoid of any "stuff". No art hanging on the walls. No stack of crappy DVDs I never watch. Just a bed, a computer desk, a nice TV, and some kitchen-ware.

But I have a wife, and she stuffs our house full of all kinds of stuff.

BTW, I'm not trying to start a gender flame-war; I'm sure plenty of guys annoy their wives with stupid toys.

<comment><USER21> I don't think I could do without some kind of art on the walls. Bare walls make a house feel cold and sterile. That's not some place I would want to spend a lot of time.

<comment><USER22> The grandparent should remember you don't have to hang any old art on the walls. It's really cheap to get your holidays photos blown up on to canvas these days, and the cheap-ish cameras are certainly up to it.

</comment></comment></comment><comment><USER23> I agree with Bruce Sterling. Buy an expensive bed and office chair (you spend most of your time in those and you only have one body). Then only keep stuff that's

\- Extremely beautiful.

\- Have an extraordinary emotional value to you. We're talking the watch in Pulp Fiction type of items.

\- Highly practical.

Throw away everything else.

<comment><USER24> I'm sure you'll find many hoarders who can justify their entire collections with those three rules.

<comment><USER23> Bruce Sterling talks about that here: <http://boingboing.net/2009/07/09/bruce- sterlings-clos.html> It's a great speech filled with nuggets about life in the coming decade but the parts related to this starts at about 36 minutes in.

<comment><USER25> Great stuff in that video about knowing if something's beautiful or meaningful.

And some great stuff at the beginning about not wasting your time doing something you can do better when you're dead, like conserving water or electricity or reducing your carbon footprint. Flawed logic, but an interesting way to think about things.

</comment></comment></comment></comment><comment><USER26> Just remember that renting is like SAAS.. you don't really own your stuff and don't have control over it. For 90% of use cases - that's fine. But remember the 10%.

<comment><USER27> This is important; to me at least. I'm a tinkerer, and I like to mess around with things I own. While it might be worth avoiding ownership for the decrease in stress, the fear of damaging someone else's equipment by toying with it would be nightmarish.

My old earphones started dying the other day; they'd cut out whenever the moulded 3.5mm jack moved. So I cut it off and resoldered a new one, and now they work just fine. If I'd rented (a bad example, I know), they'd probably be sitting in a dump right now because no doubt the economies of scale dictate it's cheaper to simply manufacture a new pair.

Similarly, I live in a rented house with flatmates at the moment, and the things I'd like to do - install a couple of solar panels, run Cat5e through the house (instead of running it down the halls), rig up some neat project ideas I have with an Arduino - I can't, because it's not mine.

I guess my point is that we shape the world we live in, and we can't do that to other people's stuff (at least, not within social norms anyway).

<comment><USER28> Yes! Glad someone echoed my sentiment.

A parallel from my own world. I bought a new truck - only if I buy something that I truly invest in will I care enough about it to care FOR it for the 20 years I expect it to last. I do all the maintenance myself more out of a love- hate relationship with that type of work. But damn it is nice to drop in a new set of speakers or a beefier tow hitch when I get a wild hair up my ass.

</comment></comment></comment><comment><USER29>
      Owning a pet can be a delight,
     but it is also a burden.
     When my girlfriend visits she has
     to get a cat sitter and she worries
     when she can't get a hold of them.

If I were going to buy his thesis, I'd want it to be a little better researched. One of the few things that is pretty well proven to make you happier is a pet, pet sitting annoyances aside.

<comment><USER30> Obviously, the author is advocating pet rental.

OK, maybe not. But perhaps this represents an unfulfilled need in the marketplace? You can certainly get some benefits of having a pet without having it live with you long-term (or hospitals wouldn't bother with pet therapy). And you only need to look to Japan to see the urban future:

[http://www.telegraph.co.uk/news/worldnews/1570493/Japanese-p...](http://www.telegraph.co.uk/news/worldnews/1570493/Japanese- prices-for-pet-rental.html)

Edit, after more reading on this fascinating topic: Apparently there was a pet rental business in the US, but it folded under pressure from animal rights groups. Pet rental is now illegal in Massachusetts, and maybe the UK and elsewhere:

<http://www.newsweek.com/2008/07/28/a-dog-for-a-day.html>

Oh well... Perhaps there is still hope for cat cafes:

[http://www.globalpost.com/dispatch/japan/090406/tokyos- cat-c...](http://www.globalpost.com/dispatch/japan/090406/tokyos-cat-cafes)

<comment><USER31> I've got to agree with the animal rights groups. Maybe not for the same reasons though.

An animal can be damaged by an irresponsible renter- killed, traumatized, injured, de-socialized. Unlike a rental car or TV, we cannot simply throw out the broken ones (I should hope you agree with me there)

Complicating things even more, the odds that you're not going to know how to interact with a pet go way up if you don't HAVE a pet!

While animals are not people, they are similar enough to people as to be completely different from 'stuff', and if you cannot deal with the responsibility of caring for a pet I do not think you should have one at all.

(In a controlled environment that can include supervision and a responsible figure who knows what they are doing, perhaps it could work, but not if you're taking them home for a week or such)

</comment></comment></comment><comment><USER32> The author makes a lot of claims about renting, but then backs them up with points that aren't specific to renting at all. For example:

 _Speaking of which, having a car is convenient (and sometimes necessary), but is a monetary black hole and a source of stress if it's having problems. My old Subaru got me from A to B but probably raised my blood pressure by more than the mileage as I worried about what would go wrong next._

And? How is that any different than leasing a car for X years?

The bigger issue is that the author goes on to talk about the stress of owning things vs the happiness of not doing so. But at the end of the day, knowing that a.) you don't owe money on an item (it _really_ belongs to you) and b.) you are the only one that needs to be answered to for the status/condition/usefulness of an item brings a helluva lot more piece of mind than holding other people's property.

That being said, don't waste your time collecting junk, either.

<comment><USER33> > And? How is that any different than leasing a car for X years?

It's not, but it's certainly different than using public transportation or biking.

<comment><USER13> Bikes are _awesome_. For a month or two worth of gas, or probably less than a month of expenses (amortized, all-things-considered) you can buy a used bike. It's not as convenient, and is harder work, and it sucks going uphill unless you're in great shape, but on the other hand you can completely total your bike twice a year and still come out hundreds of dollars ahead compared to driving.

(What sucks about bikes is the infrastructure, at least in the US. "Bike friendly" means the city gives you a lane right next to the parking lane, and expects you to run headfirst into opening car doors and cars turning across your lane.)

</comment></comment></comment><comment><USER34> Best case where owning is _way_ better than renting for me: ski boots.

Rental ski boots are instruments of torture as far as I am concerned.

<comment><USER35> Absolutely. I've got custom foam injected liners and footbeds and will never ski without them again. Changed my (ski) life.

</comment></comment><comment><USER36> This seems like massive fluff - the "stuff" part I agree with garages full of random products is wasteful. Pets and houses as being burdens sounds a lot like "I just got out of college and am afraid of responsibility"

<comment><USER37> _"I just got out of college and am afraid of responsibility"_

For such a person, his advice is very sound.

</comment></comment><comment><USER38> I agree wholeheartedly with this article, and the PG article that preceded it. I try very hard to avoiding owning more than I must.

Big moves and traveling help tremendously with this. When I moved to New York city from southern California, I got rid of everything but a box (shipped), and what I could bring on the plane. I'd been traveling with much less than that for a few months before, and that helped me realize how little I really needed.

Tools and electronics are my weak points. Home laptop, work laptop, workstation+monitor (high power), bastion machine (low power). Power drill, a bunch of screwdriver extensions, multimeter, connectors for god-knows-what, etc.

NYC is very amenable to this philosophy: owning my apartment is out of the question. I have no need for a car (and my commute has become much less stressful). Apartments are small and don't give you much space to accumulate needless stuff.

I haven't considered the idea of renting furniture, but perhaps it's reasonable. I know services like that exist.

</comment><comment><USER39> Ryan Bingham, played by George Clooney in 'Up in the Air' lives out of his suitcase and thinks he loves it. This sounds like something Bingham would say in one of his motivational speeches.

</comment><comment><USER17> You don't even need to pay Rent. There are a few resources out there to lead you to living rent-free:

<http://www.caretaker.org/> \- House sitting and property caretaking newsletter. Basically live in someones house in exchange for taking care of it.

<http://www.couchsurfing.org/> \- Find reliable people willing to let you sleep on their couch for free. I always look here when needing a place to stay and don't want to pay for a hotel. Search in advance if you know your travel dates and length of stay.

<comment><USER13> Evidently, the market value of awkward social obligations to strangers combined with having to move around a lot is several hundred dollars a month, because I can't imagine doing either of those for free rent unless I was desperately broke.

</comment></comment><comment><USER3> The real trick in life is finding the balance between what one can acquire and what one can _use_.

</comment><comment><USER40> I've also grown pro-renting and pro-disowning.

I bought an apartment a few years ago, then relocated and rented a new apartment for myself, leased my own apartment to an acquaintance of mine, never went back myself, and finally had _an enormous relief_ when I finally sold it.

I don't think I'm owning again any time soon, if ever. Even if I lived there myself all the time this time.

I think that it's sensible to own small stuff, like your pots and pans, furniture, clothes, and you know, _personal stuff_. You're probably not going to Europe on a whim _all the time_ and there's always some place you can stash a few boxes while you're away.

It's just that I've also learned to own very little, to minimize the burden of owning stuff. So far I've recycled more stuff out of my home than hauled new stuff in. I'm quite ruthless in choosing what to give out: if I haven't used or needed something for some time, it's out. It always feels good. Books are a notable exception, though.

Then, personally, car is a bit of a borderline case for me. I'd definitely lease if I had to drive a new car. On the other hand, I drive little and only leisure-like trips that I could simply choose not to drive. So it makes sense for me to own an old car which is what I've done for the past decade. While I actually enjoy taking care of the car maintenance, should it happen to break down it would just remain broken until I would get to fixing it (or have it fixed). So I don't stress about its ownership either: my car is a convenience but not at all a necessity.

</comment><comment><USER41> I'm sure the practice won't be greeted here with open arms, but I often 'rent' items from big chain stores with long return policies when I need to and just return the items before the time goes up. 90% of the time I don't keep the purchases, but the 10% of items I do keep I use very often and am very happy with. Call it using the system.

<comment><USER7> Are these items that couldn't be legitimately rented from somewhere else? I'm personally very opposed to the practice, but am curious why people feel OK doing it.

<comment><USER41> I'm a student so the return policy way is really the cheapest out there. As to why people feel OK doing it, why shouldn't we? Costco, in particular, offers an unusually long return policy. I don't exactly return underwear or dirty plates, but electronic devices I don't see a problem with. A good example would be needing a good laptop for about a week or two when the university Debian based towers just don't cut it anymore.

I mean, anyone who's used an IDE written in Java will agree.

<comment><USER7> It feels to me like living outside of one's means.

<comment><USER41> If there is an opportunity to have something you temporarily need and likely wont need beyond the given project, then how is that not simply utilizing the system in place? It's a life hack.

<comment><USER22> >> It's a life hack.

No, it's unethical and cheap.

<comment><USER41> Cheap? Definitely. Unethical? Its in their policy. I pay the annual Costco membership after all.

<comment><USER42> You know what? Just because it's legal doesn't make it right.

If too many people do this, then the policy will change, and ruin it for everyone else.

You pay an annual membership so that costco can locate their businesses in cheap areas zoned for wholesale/warehouse outfits, not regular retail, saving them a ton of money. They have to charge you a membership fee - it's members only shopping.

</comment></comment></comment></comment></comment></comment></comment></comment><comment><USER43> I did something similar and took off to Argentina for a year. Took with me only one backpack and and my laptop. Got rid of all my other stuff.

Now that I'm back state side I'm trying to maintain minimal amount of stuff because it was fairly nice. Two words: furnished apartment.

<comment><USER22> >> Two words: furnished apartment.

Speaking as someone who went the other route (unfurnished, buy stuff), I wish I'd tried this. If you're going to be paying the money for a nice place anyway, it's probably worth going furnished.

</comment></comment><comment><USER44> >>Finally, owning very nice things makes using them less pleasurable because you have to be extra careful not to damage them (as Paul Graham says in his essay "Nothing owns you like fragile stuff").

clearly we have different ideas of what constitutes "very nice" cause in my world very nice implies dependable and nigh invincible.

</comment><comment><USER45> Probably the better general advice would be not to own or rent, but rather just do without.

<comment><USER46> The problem for me with wearing a hair shirt all the time is not that it itches, but that it's boring. Asceticism advocacy is a nice applause light, but not very good as practical advice.

<comment><USER45> I wasn't refering to that extreme, but rather as in do I really need an (iPad|second car|fancy tv|another video game|nicer house|newest laptop|etc.)? I've lived in some different places to see both sides of this and found if you can answer no more than yes you'll be happier.

<comment><USER46> Heh, I wouldn't know what to do with another car or a TV, but I can measure the ways in which my shiny new iPhone 4 has made my life better; and I'd love to have a house with a project room and a garage and a yard large enough to grow all the herbs and vegetables I'd like.

</comment></comment></comment></comment><comment><USER47> What sense does it make? If you rent apartment(s) for 10 years, you give money out and you have nothing afterwards. Mortgage, on other hand, is more investment: you will have something valuable after paying it back.

Is renting everything a new way to be cool?

<comment><USER48> Buying isn't always better than renting especially when you take into account interest payments, maintenance, closing and selling costs, taxes etc. So basically if the house doesn't increase in value enough to cover these costs than you are better off renting.

Check out this cool calculator for some more details: [http://www.nytimes.com/interactive/business/buy-rent- calcula...](http://www.nytimes.com/interactive/business/buy-rent- calculator.html)

<comment><USER42> This depends on whether you are buying for investment reasons or other reasons.

We buy plenty of things for non-ivestnemtn reasons - a house COULD be one of those things, depending on your situation.

</comment></comment></comment><comment><USER49> The author is advocating renting stuff instead of buying it. This suggestion doesn't help much in the long run, because you become addicted in the same way. A better suggestion would be using less stuff, period.

</comment><comment><USER31> Disclaimer: Renting everything doesn't work if you're broke.

</comment><comment><USER50> I would change it to:

Rent/Lease in markets where prices are probably going down, buy in markets where prices are probably going up.

Of course, this rule has lots of exceptions, like computers.

</comment><comment><USER51> _Don't let yourself get attached to anything you are not willing to walk out on in 30 seconds flat if you feel the heat around the corner_

</comment><comment><USER52> This would be a non-issue if he owned a badass diesel truck.

</comment><comment><USER53> Be happier, find or borrow everything.

</comment><comment><USER8> I dunno. Craigslist has made the market for "stuff" pretty liquid. I can get rid of most of my crap for a healthy fraction of what I paid with way less than an hour of effort per item. Hell, a whole lot of my stuff came from craigslist.

Just deliberately live in a small place, don't buy a lot of crap, and regularly cull. Buy only high quality and durable items and do it after a couple day's deliberation.

I'm pretty sure I could be liquidated and out of here in under a week. This seems to be the goal he's shooting for. I guess that's a good thing if you're rootless. But it makes one wonder about the days when people bought or inherited heirloom furniture, made to last over 100 years. The culture of disposable and cheaply made crap, and rootless people, is ... questionable.

<comment><USER16> Exactly. And if you buy it on Craigslist, you can usually sell it again for almost no loss.</comment></comment>


Will Apple's rumored 4-inch iPhone 5se be a premium or value-priced smartphone? - <AUTHOR> http://www.networkworld.com/article/3026460/mobile-wireless/4-inch-iphone-5se-rumors-apple-event-march.html <comment><USER2> I know a smaller (4") iPhone would actually sell well. I know a lot of people that preferred the smaller form factor pre-iPhone6. That being said...I'm worried about Apple adding all these different sizes of their devices...it's a very anti-Steve thing to do since it complicates things for potential customers.

<comment><USER3> Is small, medium, and large really too complicated for a customer to understand? In particular if they're all identical otherwise (aside from battery remaining proportional); it will be an easy decision: pick the phone in the size you want. I can actually imagine Jobs releasing three sizes, but parity is key to promote simplicity.

I'd argue naming convention is important. They should just call it the iPhone [whatever] S, M, and L respectively. None of this iPhone 5se or 5sx which have been rumoured. Too confusing.</comment></comment>


Cappuccino Turns One - <AUTHOR> http://cappuccino.org/discuss/2009/09/08/cappuccino-turns-one/

<comment><USER2> First off, congrats to the team. Has anyone on HN used the framework extensively to give an opinion and compare experiences with other frameworks?

<comment><USER3> I'm using it for my current project, currently ~6k semicolons.

Stream of thought time! Forgive the sloppy writing, which will be full of interjections.

Obj-J is more verbose than regular JavaScript. More use of objects and method selectors than callback functions. I usually prefer callbacks to delegate objects. It's easy to just make a catch-all object and use that with an anonymous function if you'd rather not specify a class for something that requires a delegate method, though it's not idiomatic Cappuccino/Cocoa.

Cappuccino is almost identical to Cocoa. If you have experience with Cocoa you can just switch off the part of your brain that wonders how you should be doing something and just do it like you would have with Cocoa, and it'll just work, as they say. Not terribly exciting, but it _works_ – and frighteningly well. I spent over a month working on my app, testing exclusively in WebKit and Firefox. Lots of what would be called advanced behavior "for a browser app" (but nothing that would be called advanced for a desktop app from 5 years ago) and making it work in IE required just a few tweaks, most of which were unrelated to Cappuccino (comet longpolling library I was using, Orbited.)

Good stuff:

Awesome, responsive, feels-right GUI stuff. Can't break objects by clicking and dragging around. No weird jumping around behavior. Stuff doesn't get dislodged, misaligned, etc.

Don't have to work with the DOM. At all. This is a huge deal if you have a background in desktop GUI stuff – if all you've ever used is the DOM you have no idea what you're missing. It's pretty terrible for anything except vertically scrolling pages of text. Working with the DOM was like having someone beat on your shins with a baseball bat. "No I want the box to go there. There! THERE! ARGHOSOIJSD"

Built-in serialization for Cappuccino classes. Canvas/vector abstractions. GUI building in Apple's Interface Builder. IE, WebKit, Opera, Firefox all work from the same code without apologies. Much more finessed event handling.

Bad stuff:

Awful debugging. Worse than regular JS debugging. Usually can't even easily tell what line a syntax error is on.

Still has tons of stupid JS problems – implicit globals, type coercion _everywhere_ (with JS primitives), slow as molasses.

About a 10% performance hit on tight loops if you use Obj-J message sending in them.

Mostly non-existent documentation. Still in rapid development, things change a lot. If you don't already know how to use Cocoa, expect to be totally lost.

Other stuff:

Has its own event loop. Allows for more flexibility than only DOM events, but it might cause problems if you use other JS code that uses events.

Building Cappuccino in Linux had a few hiccups, but I got it working (they were related to Ruby 1.9.) Just Works in OS X without any tweaking necessary.

Best reason to use it: Cocoa is not perfect by any measure, but we know it works for GUI apps. Cappuccino is like Cocoa; it works.

A lot of effort has gone into Cappuccino. Behind the scenes, a lot is going on to maintain the transparent layer of browser compatibility that you get to work with. There are warts and issues, but you can absolutely build something with it _right now_ and it will work.

<comment><USER4> Some comments; I'm focusing on the negatives below, but I'll note that Cappuccino is a _truly fantastic_ idea and exactly what web development should be.

 _Obj-J is more verbose than regular JavaScript. More use of objects and method selectors than callback functions. I usually prefer callbacks to delegate objects. It's easy to just make a catch-all object and use that with an anonymous function if you'd rather not specify a class for something that requires a delegate method, though it's not idiomatic Cappuccino/Cocoa._

I have to agree here -- delegates are a really poor replacement for closures, which is one thing JS can do pretty well. Delegates are definitely idiomatic Objective-C (although, Obj-C now has blocks), but it'd be nice if the standard libraries embraced closures.

 _Awful debugging. Worse than regular JS debugging. Usually can't even easily tell what line a syntax error is on._

I found this to be an enormous issue, especially due to the fact that without a compiler, I tended to have stupid type errors cropping up that took _way_ too long to debug.

 _Mostly non-existent documentation. Still in rapid development, things change a lot. If you don't already know how to use Cocoa, expect to be totally lost._

The lack of stable releases, a clean binary installation (don't clutter up my system), proper documentation, et al, makes the project fairly difficult to approach -- especially without a type-checking compiler and poor debugging support. It's a bit of a moving target if you're going to try and use it, and there's a lot of gotchas that will require you to go to the source to figure them out.

<comment><AUTHOR> Not sure what you mean by lack of stable releases. Are you saying that the releases are not stable, or that the release schedule is not stable?

I believe our releases have been fairly solid, but I do admit they don't follow any predictable schedule. We'd like that to change, but there are higher priority problems for us at the moment.

We also do offer a clean installer. First, all of cappuccino works without installing anything. It's self contained in a single app folder. Second, the tools all come bundled in one installer, which puts files wherever you like, defaulting to /usr/local/share/objj. We ship the documentation with the same download.

And as for the type-checking compiler part, we actually have an experimental type-checking runtime available on github. Improvements are, as always welcome. But not having a type-checking compiler is certainly par for the course in the JavaScript world, so I don't quite see how it counts against Cappuccino.

All that being said, yes it is young, yes it is a moving target, and yes there's a lot of work left to be done.

<comment><USER4> _Not sure what you mean by lack of stable releases. Are you saying that the releases are not stable, or that the release schedule is not stable?_

Both -- the releases were generally infrequent and tended to have issues that require running the latest versions from git to resolve.

 _We also do offer a clean installer. First, all of cappuccino works without installing anything. It's self contained in a single app folder. Second, the tools all come bundled in one installer, which puts files wherever you like, defaulting to /usr/local/share/objj. We ship the documentation with the same download._

My experiences trying to build from source (which was necessary as the releases fell considerably behind the development with requisite bug fixes) resulted in a bit of a mess in my home directory and the destination root (as well as interdependencies between), rather than just building cleanly in- place, but perhaps I was operating it incorrectly.

 _And as for the type-checking compiler part, we actually have an experimental type-checking runtime available on github. Improvements are, as always welcome. But not having a type-checking compiler is certainly par for the course in the JavaScript world, so I don't quite see how it counts against Cappuccino._

The primary count against Cappuccino vs straight JS is the difficulty in tracking down issues when they inevitably emerge. It sounds like things might have improved for Safari 4 users, however.

Not that I wouldn't mind type-checking for JS, too.

 _All that being said, yes it is young, yes it is a moving target, and yes there's a lot of work left to be done._

Absolutely. Please don't take my criticism as anything but friendly intent.

<comment><USER5> Note that you don't actually need to run the installer. You can just add "Tools/objj/bin" from the download or "$CAPP_BUILD/Release/env/bin" from the build to your PATH.

We probably don't make that clear anywhere, sorry.

</comment></comment></comment></comment></comment></comment><comment><USER6> I saw this a long time ago and thought, "cool, but what about scalability, performance, etc..." But now there is back-end support. I'd like to see how this performs with the Lift framework. Cool project.

</comment><comment><USER7> Great work! I'm really looking forward to using cappuccino for my next project, I think it will be a perfect fit.

In the blog post, you mentioned several backend solutions to work with cappucino. Which would you say is most mature, and which would you recommend? Using Objective-J on the backend would certainly be preferable, so that the developer can stay in one context the whole way.

Also, many solutions are going to end up having a model layer in the UI and a model layer on the server that will need to stay in sync. Are you guys working on any solution to automate this?

<comment><USER5> Objective-J on the backend is still in it's infancy, so I'd recommend it if you enjoy being on the bleeding edge.

We don't have any sort of Objective-J server-side framework, but you can use emerging JSGI-compatible JavaScript ones, like ActiveJS (Rails-like, <http://activerecordjs.org/>), NitroJS (<http://www.nitrojs.org/>), Bogart (Sinatra-like <http://github.com/nrstott/bogart/tree/master>) or just write raw JSGI application using Jack or custom middleware, which is actually perfectly adequate in many cases.

<comment><AUTHOR> Worth noting that 280 Slides runs the entire app on the server as well as the client.

<comment><USER8> Can you expand on what you mean by this? It could mean a lot of different things...

Thanks.

<comment><USER9> Essentially, we run the same code on the server side as we do on the client side in order to unarchive the objects that get archived on the client, and then operate on them. For example, when you hit "export", the presentation is archived, sent over the wire, unarchived (using the same exact model code), then converted to PPT or whatever.

You could also for example make an entire UI in code on the server, complete with connections to abstract objects, then send that entire object graph over the wire and show it on the client.

</comment></comment></comment></comment></comment><comment><USER10> First time I see that - is there any particular reason why would one use that for applications instead of, for example, GWT?

edit: I am watching screencasts now from <http://cappuccinocasts.com> (I'm not Ruby guy though - PHP, but doesn't matter) - and I am wondering how the hell are you

1) how to debug/profile this? What, a hunch or traces and alerts?

2) .j files are in plain sight to anyone, not obfuscated

3) Why .j at all in production, why not compile down to javascript?

4) It seems nice from a perspective of a desktop guys viewpoint (here is one!)

5) holy spaghetti code

<comment><USER11> GWT is a java library. To me it seems sick and crazy to code java that generates javascript. It's like using assembler to generate C code.

<comment><USER10> Have you actually tried to write anything with GWT and/or used Java and it's wonderful tools? And how does it make more sense to basically have a pseudo-VM running on top of JS than to spurt out heavily optimized JS code like GWT does? I'm really interested in answers to both questions.

<comment><USER12> I work in gwt everyday and there are lots of pluses to it such as the easy communication between the client and server and taking away a lot of the dom headaches. However, I have several issues with it. Compile time from java to javascript is very slow, simple app takes a few minutes to compile. You typically will work in a hosted mode browser so changes are on the fly, in many scenarios things work in the hosted mode browser, but fail inside a normal browser, regex and bigdecimal use are two such pain points.

A big issue that I have with it is that developers end up putting way too much business logic inside the gwt portion of an app, simply because its just java anyway, right? You can't really blame gwt for bad programming, however, because of the notion of its just java it easily allows developers to not think and just put business logic in the ui. If this was javascript developers would much rather do the more complicated business-y things on the server side (typically where it should belong), rather than in javascript because most people really dislike working in JS. I personally feel that its very difficult to build a gwt app while maintaining a clean well refactored codebase and doing TDD is also very difficult with the framework. I say difficult and not impossible, because I have done it in the past, but its not easy and really takes time and care. Again because its not easy to do these things developers tend to not do them, thus leading to messy, hard to change apps.

<comment><USER10> >simple app takes a few minutes to compile >You typically will work in a hosted mode browser

I thought those issues are now thing of the past. At least that's what I saw in google i/o presentations.

For the other part it seems more like an issue with development approach and not GWT per se. I have only dabbled a bit with it and like it more than writing JS for full blown web apps.

Cappuccino intrigued me because of my background in desktop apps - albeit not Cocoa. There are many idioms I am used to, so I'll give it a spin.

</comment></comment></comment></comment></comment><comment><USER13> I've spent a small amount of time working through the Cappuccino docs and tutorials, but never used it to build a project because it feels like it is so different from the typical JS I'm used to writing. That's not a criticism, just a description of the major hurdle I've encountered working with Cappuccino.

Instead of having a smattering of tutorials and example apps, what would be really help would be a set of real world problems and solutions to those problems using Cappuccino (a list of N perhaps?). It would be especially compelling if it could be shown that those problems are more elegantly or simply solved by the use of Cappuccino.

<comment><USER9> I'm not sure if this is more along the lines of what you mean, but this tutorial got written recently which explains specific problems/solutions in building an entire app: <http://blog.springenwerk.com/search/label/Cappuccino> .

Perhaps an explicit list of when you would and wouldn't want to use Cappuccino is a good idea though

</comment></comment><comment><USER14> what ever happened to atlas?

<comment><AUTHOR> Still in development.

<comment><USER15> I can vouch for this.

</comment></comment></comment><comment><USER12> I'm considering using cappuccino for a startup idea I have, but the lack of people using it and info out there on it makes me a bit gun shy. It makes me think I'll spend more time hacking away with capp rather than focusing on delivering a product quickly to see if people like it. For anyone else out there considering using it do check out <http://cappuccinocasts.com>

</comment><comment><USER8> I've been watching the Capp project with great interest since its debut, and hoping against hope that it turns into a serious alternative to the mess that's out there today for web dev.

Now I'm worried that the combination of the Atlas delay and lack of serious Capp-based public websites is going to hurt its initial momentum.

<comment><USER9> We'll be announcing some Atlas news soon, we try not to post about it on cappuccino.org since it is a separate commercial product.

<comment><USER16> That's missplaced idealism. You should very much use the soapboxes you created to tell people about news. This is "industry" news for people who are interested in capp. I go to capp.org regularly and see no changes and assume that progress has stalled.

</comment></comment></comment><comment><USER17> Has anyone who also used SproutCore have any thoughts on how they stack up? SproutCore also stabilized into 1.0 recently it seems.

<comment><USER18> I developed a few toy projects to learn each framework.

Cappuccino is an incredible technical accomplishment. I've done iPhone development, and it's true that you can easily map your Cocoa experience onto Cappuccino. However, when I hit a corner case such as embedding a SWF, the abstraction leak was a nightmare.

Sproutcore feels safer because it doesn't hide the fact you're working with HTML/CSS; you need to write it to create custom views. Inserting a SWF was straightforward.

The other reason I favor Sproutcore is the feeling Cappuccino has cargo cult issues. For example, Sproutcore uses namespaces while Cappuccino just prefixes initials. In Sproutcore you have "SC.Object" while Cappuccino uses "CPObject."

Cappuccino is still pre 1.0, so all of this could change, but if I had to choose a framework to write an app today, I'd go with Sproutcore.

<comment><AUTHOR> I'm not sure what "cargo cult issues" are, but Cappuccino uses prefixed globals because they are strictly faster than using "namespaces" (which really aren't namespaces).

It makes a big difference in IE.

</comment></comment></comment><comment><USER19> Congrats on making it through the first year. Looking forward to Atlas!</comment>


Inside the Dev Team Death Spiral - <AUTHOR> https://medium.com/javascript-scene/inside-the-dev-team-death-spiral-6a7ea255467b <comment> what-no-tests It's less about `class` and inheritance than it is about misuse of code reuse.

Even without the `class` virus infecting your team's code, you can end up with too many tools built upon an inner platform.

For a really great writeup about this, see "Patterns of Failure": [http://thedailywtf.com/articles/Patterns-of- Failure](http://thedailywtf.com/articles/Patterns-of-Failure)</comment>


Election can be stolen in under a minute with Diebold machines - <AUTHOR> http://www.homelandstupidity.us/2006/09/14/election-can-be-stolen-in-under-a-minute-with-diebold-machines/ <comment><USER2> I really hope news.yc doesn't fill up with a bunch of "the election was stolen" posts like reddit has.

That said, I do think the issue of electronic voting security has a place here.</comment>


President Obama to visit Hiroshima - <AUTHOR> http://www.bbc.co.uk/news/world-asia-36258866 <comment><USER2> I used to believe that the bombings were necessary but on my last trip to Japan I learned about Joseph Grew ( on a stupid variety show no less) and completely changed my mind. Truman is a dickhead.

</comment><comment><AUTHOR> Too be clear he is not going to be making an apology. Interestingly, Japanese leaders themselves are not very enthusiastic about receiving one.</comment>


CSS Rounded corners: 7 lines of code, without any images - <AUTHOR> http://ashko.blogspot.com/2008/05/just-simple-css-code-of-7-lines-for.html <comment><USER2> At this point in time, it is far easier to just rely on CSS extensions well supported by Firefox and Safari, for instance:

-moz-border-radius-topleft: 0.4em; -webkit-border-top-left-radius: 0.4em; -moz-border-radius-topright: 0.4em; -webkit-border-top-right-radius: 0.4em; -moz-border-radius-bottomleft: 0.4em; -webkit-border-bottom-left-radius: 0.4em; -moz-border-radius-bottomright: 0.4em; -webkit-border-bottom-right-radius: 0.4em;

This doesn't mess up your HTML with divs, and degrades seamlessly to "not rounded corners" in any other browser.

<comment><USER3> most people, excluding hackers of course, probably use ie.

<comment><USER4> so let's give them more reasons to switch :-)

</comment></comment></comment><comment><USER5> This is what YouTube used to style their box headers until maybe a year and a half ago.

Note that if you're using it to make a vertically compact title box, you'll have to do even more CSS funny business. That's because the rounded-corner header is a separate entity from the box below it, so you need to tweak the text to appear above its normal position in the box.

Confession time. Yes, I know because I myself admired YouTube's rounded corners enough to peek at their CSS and implement this technique as well. Hugs, not drugs, kids.

</comment><comment><USER6> We have been using this technique on the Freshbooks login pages for a while now. (example: <http://reason.freshbooks.com>) It enables our customers to customize their account colors while maintaining the elegance of rounded corners.

<comment><USER7> you aren't serious are you? Please tell me you website is your own pet project and that you didnt build it for a paying client or your employer

<comment><USER8> Please. Check the absolutist pedantry at the door. If the technique works and doesn't affect the content management process (which, remember, is the _real_ reason that people want non-semantic markup out of the HTML -- it's so that there's a single place to look for the semantic stuff) then by all means go for it. With just a few lines of jquery you could automate this process based on a single class tag for the "rounded corner" divs or whatnot, and everyone wins.

I'm not completely sold that this is easier than image mangement (it probably is for developers who fear graphics work, less so for designers who fear code hackery), but it's awfully clever to my eyes.

</comment></comment></comment><comment><USER9> don't know who came up with this first, but it looks strikingly similar to 'nifty corners': <http://www.html.it/articoli/nifty/index.html>

Here is a technique I have used before to add a 'snazzy border': <http://www.cssplay.co.uk/boxes/snazzy.html>

<comment><USER10> Yeah it is essentially the same technique that all those JS rounding libraries use. The nice thing about the libraries is that you don't have to see all those extra horseshit DOM elements you need to make this work.

Either way you're going to make a standarista cry.

</comment></comment><comment><USER11> Cool. How many browsers does it work in?

<comment><AUTHOR> Did a quick test. Works in IE6 and FF2. Anyone willing to give it a try in IE7, Opera, and Safari?

<comment><USER12> works in opera and safari.

<comment><USER13> Konqueror too!

</comment></comment></comment></comment><comment><USER7> why would any developer who didnt want to lose their job use this? There are lots of things you can do that you shouldn't. So what I can do with one background image and 2-3 divs and look good, you can do with a series of bold tags to look bad. Sorry to be critical, but this is not the quality of content I have come to expect from HN. Digg maybe.

<comment><USER3> because hackers like to do things with less work. creating images means work. the code does look long though. it should probably be abstracted into a server-side view helper function.

<comment><USER14> Less work in this case = horrible results. You're ruining the semantics of the DOM to use a crappy method for creating rounded corners. Want to create a fluid box with rounded corners and even less work? Use Javascript. You're not writing crappy HTML and it's even less work; just tag the <div /> with a class.

If the quality of the implementation weren't bad enough, this method isn't even _new_.</comment></comment></comment>


Top Blender Artworks from 2012 – open source 3D renderer - <AUTHOR> http://www.blenderguru.com/top-20-blender-artworks-from-2012/

<comment><USER2> Blender is primarily a 3D modelling tool. It does come with two renderers though (Blender internal and Cycles).

<comment><AUTHOR> I hadn't known about it previously. Looks like the core is Python, which seems neat.

</comment></comment><comment><AUTHOR> Mostly for animation, but good for stills too.</comment>


Show HN: All your team's contacts in one place - <AUTHOR> https://www.submarinecrm.com/

<comment><AUTHOR> Hi HN - I've just shipped the first iteration of Submarine, a CRM that's built to store all your team's marketing contacts. It auto-archives conversations over email and Twitter, and has a Chrome extension that brings up contact data if you're on a contact's website (or Twitter, Facebook, Linkedin, G+ or Pinterest page).

I'd love some feedback on the landing page, and on the app itself (there's a free 30 day trial, and you don't need a credit card to try it out).

</comment><comment><USER2> Take with a grain of salt since I'm not the target audience.

I read "All your team's contacts in one place" and think it's a shared address book. However, it's not the contact information that interesting, it's the aggregation of the data related to the contact that's interesting.

Perhaps that's too complicated for a tag line though.

<comment><AUTHOR> Thanks - I agree with you, and you're right, finding an elegant headline is tricky. I'll keep thinking.

</comment></comment><comment><USER3> Not knocking the product but just curious: How is this different from Highrise? ([https://highrisehq.com/](https://highrisehq.com/))

<comment><AUTHOR> Submarine has a slightly different approach to Highrise - it focuses on minimising data entry, so emails with a contact are automatically stored without having to remember to bcc the app. Similarly, it also auto-archives conversations you have with contacts over Twitter, which I don't think Highrise does.

It's got quite a big focus on search too, so you can run reasonably complex searches like "journalist twitter followers > 2000 covered:yes last emailed more than (1 year ago)", which will show you (as you might expect) all the journalists that have more than 2000 twitter followers, who've previously written about you but that you haven't spoken to over email in more than a year. There are other commands too, and I'm planning on adding more over time.

Finally, I think the Chrome extension is pretty cool - the image on the homepage does a better job of showing it than I can explain, but it gives you a little button in Chrome that, when clicked, pops up with a contact's details if you're on their website (or Twitter, Facebook, Linkedin etc profile).

</comment></comment><comment><USER4> Looks good for first iteration. What platform it's built on and how long the this iteration took?

<comment><AUTHOR> Thanks - it's built with Ruby on Rails, and it probably took around 5-6 months, working off and on on it alongside client work.</comment></comment>


Heroku launches Postgres as a standalone service - <AUTHOR> https://postgres.heroku.com/blog/past/2011/11/21/announcing_heroku_postgres/

<comment><AUTHOR> Ok, seems like I missed the announcement last week. You should read the discussion there if you are reading this comment: <https://news.ycombinator.com/item?id=3267006></comment>


How Google's New Photos App Can Tell Cats From Dogs - <AUTHOR> https://medium.com/backchannel/how-google-s-new-photos-app-can-tell-cats-from-dogs-ffd651dfcd80

<comment><USER2> The photo labeling feature is a dancing bear. Yes it's impressive it dances at all, but it's quite bad it it. I have tons of kids soccer pictures they were labeled Football, Rugby Football, Baseball and Golf. Worse though it doesn't have any duplication detection or it's severely broken. I have a lot of near- duplicates because I use Picasa and I have both it's inputs and output (cropped, etc).

So nearly ever "auto created" college it suggests contains all duplicate photos. It even created an animation cycling through duplicate photos (with slightly different lighting). It's a great start but I think it's 5 years from being "good".

<comment><USER3> Maybe the most pity rant "soccer vs football" I ever read. If it's the only issue you have, then service if 100% fine.

</comment></comment><comment> nevi-me A number of people have said that Photos has grouped their photos by people, with Google saying that the feature can recognise faces over time ... I don't have that, and I want to try it. Anyone know a way of forcing it to show me People? I only have Places and Things.

I like what Google's done! I can search for 'baby' and get all the photos with babies (few false positives here and there). Hopefully in the near future they'll add feedback options so we can point out errors in classification.

<comment><USER4> They mention in the fine print somewhere that the People grouping is only available in certain countries, presumably due to legal issues.

</comment></comment><comment><USER5> My problem with the hype around this auto-tagging is that Microsoft had this in OneDrive months ago:

[http://www.pcworld.com/article/2876548/microsoft-onedrive- ad...](http://www.pcworld.com/article/2876548/microsoft-onedrive-adds-super- intelligent-searching-of-document-text.html)

<comment><USER4> Google Photos (as Google+ photos) has had auto tagging for several years, it was announced back in October 2013 - [http://googleblog.blogspot.co.nz/2013/10/google-hangouts- and...](http://googleblog.blogspot.co.nz/2013/10/google-hangouts-and-photos- save-some.html)

<comment><USER6> 2008?

[http://techcrunch.com/2008/09/02/picasa-refresh-brings- facia...](http://techcrunch.com/2008/09/02/picasa-refresh-brings-facial- recognition/)

2009 even better?

[http://techcrunch.com/2009/09/22/picasa-adds-facial- recognit...](http://techcrunch.com/2009/09/22/picasa-adds-facial-recognition- and-geo-tagging-to-its-desktop-app/)

</comment></comment></comment><comment><USER7> I've found Google Photos to be fairly bad at this, actually. Here's a few results from searching my photos for "dog":

[https://goo.gl/photos/pDwHPzcG3w541ubV6](https://goo.gl/photos/pDwHPzcG3w541ubV6)

<comment><USER8> Mine is surprisingly amazing at picking out partial dog parts. What's weird is that the interface (as far as I can tell) has no button for "no this is not a dog". Same thing for face clustering, where I have like two (or more) clusters of certain people.

<comment><USER9> It's random enough, a blurry cat, head down, in the night can be tagged properly, while a nice walking cat in normal daylight conditions but behind open window blind won't be flagged. Not that surprising though.

</comment></comment></comment><comment><USER10> As others have said it is kind of meh.

However, what really bothers me is the fact it tried to 'opt me in' to backing up my photos [again] to Google, despite the fact I had the option turned off already. Additionally, many of the prompts [even with it turned off!] imply some level of syncing/communication with Google.

And the fact I regularly find the Google+ app "re-enabled" mysteriously when I've had it disabled for months.

Can Google stop "resetting" my privacy settings and hoping I don't notice yet with these updates?

It really is starting to irritate me to the point where I'm thinking of dumping Google products altogether, honestly.

</comment><comment><USER11> yes give google all your photos so their ai can analyze them.</comment>


Who Got Accepted For Interviews? - Post here if you did - <AUTHOR>

<comment><USER2> Not quite accepted - but yes, we're going to Mountain View.

<comment><AUTHOR> Meaning what?

<comment><USER2> Got the interview; not the funding, yet(obviously)

<comment><USER3> Ah ok, then congratulations and best of luck with the interview.

</comment></comment></comment></comment><comment><USER4> Got selected as well. I wonder how many teams are interviewing?

<comment><USER5> Well, there are 3 days and each team gets 15 minutes. Assuming they give about 5 minutes interval between the breaks, that means 3 teams per hour. So assuming they do 8 hours of interview every day, that is 3x8x3 = 72 teams. This is not including those teams which are local and have been moved to the weekdays. So all in all, those who are selected, don't be too happy yet, there's still only about 1/7 chance of getting into the final 10.

<comment><USER2> As far as I know there isn't any particular cap on how many teams are picked. Idea I got from one of pg's post is they pick _all_ interviewed companies that they think can succeed from what they've seen and heard.

<comment><USER6> That they think can succeed in YC's particular approach to startup building, you mean.

pg has a fairly clear set of factors that he thinks indicate success -- being physically in a startup hub, for instance; having multiple founders; the sort of thing he recommends in his essays. Rejection from YC can mean that they don't think the project can succeed; it can also mean that they don't think the project, even if it succeeds, will give them the kind of return on investment they want.

So (to make the math easy) suppose they have a company that they own 10% of, that they've invested $15K in. This means that for them to break even, the company has to eventually have a value of $150,000. A rule of thumb for business valuation is that the sale price of the business is 3 to 5 times its annual earnings -- which means that the business has to earn $30,000 a year to $50,000 a year in profit for that to be worthwhile.

Now, a micro-ISV, for instance, that treats its founders' salaries (appropriately) as expenses may be a terrifically successful business from the point of view of the founders, especially if they pay themselves acceptably well and like the working conditions. But unless it makes $30,000 to $50,000 in profits a year, it's a losing proposition for Y Combinator.

There are other ways it can be a winning proposition without those profits -- if it's just before the tipping point of a big trend, or if the founders are especially skillful. A company that isn't making any profits at the moment but has the potential to make really big profits, or the potential to be sold for a lot of money, might be a worthwhile investment.

</comment></comment></comment></comment><comment><USER7> Got selected. Where's the good food at in Mountain View?

<comment><USER8> Well done! Shivas is an awesome Indian place - a bit expensive, but _really_ nice.

<comment><USER7> I love me some Indian food. Thanks for the advice.

<comment><USER9> I haven't been to Shiva's, but Amber India on El Camino Real is excellent. It's also pretty pricey, but the lunch buffet is a great deal. Godavari (formerly Sue's Indian Cuisine) on Castro St is also very good, and more reasonably priced. I've only been there for their lunch buffet ($10).

I'm pretty picky when it comes to Indian food because I'm ethnically Indian and I benchmark the restaurants against mom-cooked meals. :)

Castro St has a bunch of other good restaurants, and a number of crappy ones too.</comment></comment></comment></comment>


A Visit to FARC's Jungle Lair - <AUTHOR> https://www.spiegel.de/international/world/farc-preparing-for-renewed-fighting-deep-in-colombian-jungle-a-1286296.html <comment><USER2> Slightly related: the co-author of this piece, Juan Moreno, has discovered that his colleauge, an award-winning Spiegel author, instead of doing honest journalistic work, completely invented his stories (including the ones he got the awards for). He discovered the fraud, collected evidence, and called it out despite resistance from inside the newspaper organization (who wants to admit that they have been printing fradulent stories for years and not noticing it). Amazing guy! More reading: [https://en.wikipedia.org/wiki/Claas_Relotius](https://en.wikipedia.org/wiki/Claas_Relotius)

</comment><comment><USER3> Surprised they are using American weapons (looks like M4 variants in the photos).

I would have thought the FARC would have historically held onto Russian / Chinese AK platforms due to their reliability in Jungle environments.

Unless they source most of their weapons from cartels?

<comment> saiya-jin 2nd page of the article:

> He is very eager to have a Kalashnikov like Lorena's, a comrade having told > him that there's no better rifle for the jungle. Unfortunately, those rifles > are currently hard to find, so Carlos has to make do with an American M16.

US is very happy to sell arms left and right, so its either through cartels or just good old arms dealers.

<comment><USER4> For sure, putting gun runners out of a job

</comment></comment></comment><comment><USER5> Didn't Colombians vote against Amnesty for farc in 2016? How is this not mentioned in the article

<comment><USER6> We didn't votate against amnesty, but against the full bunch of laws derivated from the process. Anyhow, after some discussions, the peace process was implemented and now over 95% of the guerilla members left the guns behind. There are a few remaining in narcotics business.

</comment></comment><comment><USER7> Fascinating.

Jungle ops always intrigues me. So do insurgencies. But a _jungle insurgency_ ...? I mean, good luck countering that if you're averse to burning down the entire forest. It takes some fanatically dedicated fighters to put up with that kind of life and still maintain even a rudimentary level of combat effectiveness.

<comment><USER8> Hmm except that's what the Colombian military has been doing for almost two decades.

At least 10 head commanders of FARC were killed through out the years, when the Colombian Military found their location and bombed their camps deep in the jungle.

<comment><USER7> I don't think that's an exception. That's exactly what I'm saying. These guys are the real deal.

<comment><USER8> Gotcha. I read it differently. I thought you were saying that because they were hiding on the jungle it was hard to fight them.

The Colombian Military is probably the best military when it comes to fighting in this terrain.

</comment></comment></comment></comment><comment><USER9> And how does Alvizú expect the government to fix any problems if they're fighting a war against guerillas?

<comment><USER10> The problem is many in the government are right wingers hell bent on continuing the same war, same with many Colombians, just ask any of them, they don't support doing anything with the FARC.

Kind of a sad story if you ask me, seems like Colombians don't learn from their own mistakes even though the FARC have been operating on the same premise for more than 2 decades.... their Government doesn't take care of their own people and it's not hard for plenty of farmers to see.

<comment><USER11> Here is a web developer pretending to understand a multi generational gap of power. The complexities of this armed conflict cannot be possibly explained in a line as rude as `colombians don't learn from their own mistakes`. For those of us the grew up in the midst of it, everyone you'll ever talk to wants better and more often than not, working on it. It's not just 2 decades. It's closer to 60 years.

<comment><USER12> > Here is a web developer pretending to understand a multi generational gap of > power.

Don't you know that computer science is the only degree program to make you an expert in math, physics, history, economics, and politics?

<comment><USER13> Do not forget arts, nutrition, and exercise.</comment></comment></comment></comment></comment>