&! (and bang), project management for teams - <AUTHOR> https://andbang.com/ <comment><USER2> I don't like to be that guy, but your landing page is a tragedy.

It's visually gorgeous, yet completely fails at explaining what the product does and how it's different from the two dozen competitors. Remember rule #1: Show, don't tell (hint: screencast, live-demo).

Don't promise "LET'S CUT THE VAGUERY" when all that follows is cropped screenshots and breathless marketing copy.

ALL YOUR TEAMS ARE A CLICK AWAY, TEAM STATUS & PRESENCE AT A GLANCE, MINIMALLY DISTRACTING GROUP CHAT ...

I can't help but respond: O RLY?

Skype has all that. Minus the breathless marketing copy...

<comment><USER3> I think you make some fair points. 100% agree we desperately need a better demo on the front page.

I think the landing page needs help, too, but we've gotten _mostly_ positive responses to it. I personally didn't expect this, because I wanted a nice demo and we just flat haven't had time to put one together.

We launched it on the same day as our realtime web app conference (krtconf) and I wrote the bulk of the copy at about 2 a.m. the night before. Not my best work, but no excuses--sometimes you just have to ship! :D

<comment><USER4> A brief (snarky) reflection:

 _"Our team at &yet has been building &! for a year, using and improving it for nearly 6 months."_

Approximately %0.00023 of the time spent was on the landing page copy on the night before the deadline. Perhaps a project management system would help here.

</comment></comment></comment><comment><USER5> I don't get it. What's this?

Could this be explained without requiring me to sign up?

<comment><USER6> I thought the landing page explained it pretty well.

<comment><USER5> Here is Copy-Paste from the home page. At what point should I start understanding what this is? I think I get that there is a suspense point and make me curious, but not strong enough to make me sigh up. In fact I will rather never sign for anything unless I have to.

TONS OF TIME GETS WASTED KEEPING YOUR TEAM ON THE SAME PAGE.

MEETINGS STRANGLE PRODUCTIVITY.

NOBODY GETS IN THE ZONE WITH MORE EMAIL.

NAGGING IS A DRAG FOR EVERYONE INVOLVED.

WHAT IF SAME-PAGIFYING JUST HAPPENED AUTOMAGICALLY?

GET READY TO MEET &!Realtime mind-meldification for teams.

Wooooo! Sign up now!let's do this thing Or read on...

LET'S CUT THE VAGUERY SHALL WE?

IT'S ALL ABOUT SHIPPING

Finishing's the hardest part. &! keeps you focused on the most important things—there's no room for anything else. Ship stuff today!

DON'T ASK, DON'T TELL "What are you working on?" and "Are you busy?" are the most pointlessly painful questions when you're just trying to get something done.

Never do it again. Ever. Ever!

etc etc ...

<comment><USER3> Cool. Thanks for the feedback. It's definitely not as clear as it could be. We'll do better.

</comment></comment></comment></comment><comment><USER3> Hi, Adam Brault, &yet CEO here. Thanks for trying &bang. Our team has worked hard on it and we have a lot more work in store for it.

We've gotten some incredibly useful feedback so far (lots of "Well, duh!" moments).

We certainly would be grateful for any feedback you have and would be glad to answer any questions.

<comment><USER7> It's wonderful that you have "give us feedback" as one of the initial tasks in the first team created. It's less wonderful that there is no obvious way to give you that feedback. Five minutes in and already I'm falling behind on shipping!

On a different note: I actually need to recruit people I don't previously know to my team. Would it be possible to add a landing page for a team that signs up the person and then auto-ads them to that team. This would have a hard-to- guess URL, so I would have confidence that only people I recruited (or their friends) would show up.

Finally, I just need to ask, are you fans of <http://www.mspaintadventures.com> ?

<comment><USER3> Good point and cool idea about the custom invite URL.

I've seen mspaintadventures.com and was entertained... why? :)

</comment></comment></comment><comment><USER8> The service itself looks awesome, but let me just say that the landing page is _fantastic_ \- just the right balance between humor and information to keep me reading to find out details as they occurred to me, gave me an option to sign up right at the top, but then kept explaining more without making me click to another page to do it.

I am truly in awe of that landing page.

<comment><USER3> Thanks. :) There are definitely tons of places it needs to be improved, but we appreciate the kind words!

</comment></comment><comment><USER9> This is really very awesome. The keyboard shortcuts [1] are particularly well done and worth trying out.

Just a really great version 1. Down the line, it'd be amazing to have some sort of Github/Github Enterprise integration and/or Salesforce integration.

[1] Too few people focus on these, but they are absolutely key to get power users for webapps or apps in general. This is why Gmail is irreplaceable if you need a webmail ui and can't use gnus for some reason.

The funny thing is that it's not that hard to build an app around keyboard shortcuts if you design it that way from the beginning. Hopefully we'll see more of this.

<comment><USER10> Keyboard shortcuts are awesome[1], though they do tend to interfere with keyboard-based browsers. Right now I use Conkeror, which is Emacs-inspired Mozilla-based browser, and encountered some problems with webpage and browser shortcuts interfering witch each other. Sometimes it's annoying (Twitter, SMBC), sometimes it renders the webpage keyboard shortcuts unusable (&!) [2].

I know that people using keyboard browsers are probably the 0.005% of users and thus not worth optimizing Internet for; however as the keyboard shortcuts become more and more popular among webpages, it might be interesting to talk about how to make them well. Should everyone design their own shortcuts, or are there operations so common across webpages, that it would be better to have universal keyboard shortcuts configured browser-side?

[1] - I got addicted to keyboard shortcuts in GMail, they're great! :).

[2] - fortunately, all of this is (AFAIK) solvable by writing a major mode for given webpage.

</comment></comment><comment><USER11> This absolutely needs an interface demo. While the page looks nice, I have no idea what the product actually does, and I'm not really interested in giving up my email address just to find out...

<comment><USER12> or at least larger screenshots

</comment></comment><comment><USER13> Someone went to far with the web-design-marketing ;-) Pink, contrasts too much caps makes the site difficult to read.

<comment><USER14> I like the pink, in principle; it really draws your eye. The problem is that it draws your eye to disjointed phrases that don't make sense unless you read some of the surrounding non-pink context, creating a confusing effect to readers who are skimming the page.

</comment></comment><comment><USER15> This looks a lot like a successful project status approach I've used on a previous project: everyone kept their status on a wiki, with a very short list of currently active work and a slightly longer list of pending work. Effectively, everyone shared their TODO list, and from the combined list you could tell at a glance what everyone worked on without having to ask or have status meetings. (Thus, meetings only existed to deal with actual blocking problems, and remained short.) Management within the team learned to look at that TODO list rather than asking for status reports; when management outside that team wanted a report on recent accomplishments, they got a rolled-up copy of completed TODO items with a few highlights called out at at the top.

I like the idea of having a tool built around the same approach, assuming I've understood it correctly.

A few bits of feedback on your launch page: While I found phrases like "mind- meldification" amusing, the first instance of such a phrase occurred when you said "same-pagifying", and that one in particular didn't so much strike me as amusing as pointy-haired-bossish; I almost closed the page right then. Also, do you _really_ want to use the politically charged phrase "don't ask don't tell" in marketing copy? And finally, while I liked the repeated links to the register page, the one with the text "Try using it right now!" somehow made me expect an instant demo page without having to sign up; this seems like the kind of interface where 30-60 seconds playing with it will tell me if I want to use it.

(One other thing: you say at the bottom "absolutely free for teams of 2", but honestly this looks like it might make a perfect TODO list application for a team of 1; have you considered that use case?)

<comment><USER3> You're pretty much dead on.

We built the tool based on a completely stripped down paper process we created. We made a set of Post-It notes that we put on a shared space. Then we would put what we were actually working on the door to our office. It worked really nicely, except you had to physically be in the office and it required you to get up from your desk a lot. &bang was literally taking that approach and making it a web app.

Thanks for the feedback on the launch page. All valid points. We plan on making it easier to try out as well.

Regarding your last point, we are going to improve the one-user experience, too.

</comment></comment><comment><USER16> Can't even see site intro because my mobile browser doesn't support websockets. Please fix so I can at least read about why I might want to use your app when I get to a pc with a modern browser.

<comment><USER3> Good point. Forgive the dirty websockets check. We're going to do this better.

<comment><USER17> Same thing here (as a non-mobile Opera user). But it's understandable for such a new site.

</comment></comment></comment><comment><USER18> You should fire your web developer... How can your homepage not work with IE9? Seriously - WTF do you need websockets for on your homepage? I can _maybe_ (notreally) see it for your application but product sites should be available for all browsers and not discrimiinate.

<comment><USER3> I'm disappointed it pissed you off so much. But I made that call.

Why? Because we were getting people pissed off that they didn't find out until they went to sign up. We flat haven't had time to do a more complex and friendly/informative solution, but we want to. Forgive us.

Here's the backstory on the websockets decision on an app level: [http://andyet.net/blog/2011/nov/14/we-shipped-an-app-that- re...](http://andyet.net/blog/2011/nov/14/we-shipped-an-app-that-requires- websockets-heres-w/)

<comment><USER18> Well I agree with Hanselmen:

"The 10,000 people on the planet that care about Web Sockets are not your customers, and while using Web Sockets might get you mentioned on TechCrunch, supporting only Web Sockets is a great way to cut your potential audience in half."

But it all depends on who you're looking to as your market. I'd go as far to say that the group of people who DON'T support web sockets is exponentially bigger than the ones who do...

<comment><USER19> As PG has said more than once, it's better to make a small group insanely happy than to make everyone "meh" about your stuff. The geek side of me is really happy to see long polling finally getting thrown out the window like the hack that it is, and if you want to make a stand against it, I'll love you more for it.

Pragmatically, though, you probably want to eventually have a fallback mode in this case, with a note telling people that they should probably use a better browser. Team apps are one of those least common denominator problems, after all.

</comment></comment></comment></comment><comment><USER20> I test drove it a few days ago. I really liked the UI (with keyboard shortcuts!) but found that it really didn't add value since we already use Pivotal Tracker. PT already has a notion of the story you are working on along with tasks for each story that you can quickly create and check off as you complete them.

The group chat feature feels pretty simplistic and isn't even in the same ballpark as Campfire or HipChat.

It's a promising design and feature set but still needs a lot of work to justify the high price.

</comment><comment><USER21> Since the landing page point has been beaten to death, here are a few things I think about the app itself after messing around: the keyboard shortcuts are awesome and just make the application fun to use, but the amount of real screen estate being wasted is criminal. With the window maximized on a 1920x1080, the taskbar is crammed to the left side while the rest of my screen is simply a gaping gray hole.

On the task management side of things, I tried to add a task for both members of a team using "$ @all task description" but it seemed to just go to my shortlist. It was difficult to distinguish, as a result, between different shortlists and the team shortlist. I was also confused by the presence of a lightning bolt icon next to one of my tasks that I might have accidentally added when messing around with keyboard shortcuts. The icon seemed to have no clear meaning and there was no helpful tooltip waiting for me when I hovered over it. I also wish there was some way to rank my tasks based on their priority.

That being said, this actually looks really cool, and I'd love to support it as the kinks get worked out.

<comment><USER22> &! user here. Try it as a Fluid app if you have a Mac, then size the window to fit the app so it takes up the space of a slightly larger IM window. I actually zoom it out using Fluid so it takes up a little less space. &! sends Growl notifications for tasks and directed chat through Fluid which I like as it lets me background the app and still use it.

</comment></comment><comment><USER23> Something I've always wanted at work is an "internal Twitter" so that people can share quick status updates without forcing anyone to read them. I would personally just write a quick script to archive and webify the IM clients' status messages, but I suppose if you don't want to program and don't like your current chat system, you could use this.

I think one of the problems with this, though, is that only people younger than 30 feel the need to tell a computer what they're doing with their day. Most people would rather go home five minutes earlier than communicate with their team electronically. That's the hard problem to solve here.

(Incidentally, automation could work. I remember writing a CPAN plugin that detected which module you were installing and it changed your IM status to show that, kind of like the plugins that show which song you're listening to. Enough incoming data like this and enough filtering for humans, and you could get a pretty good idea of what your team is doing without requiring them to explicitly communicate.

Please develop this further :)

<comment><USER24> Yammer does a nice job of this (albeit it is full featured enough to be more like an "internal Facebook").

</comment></comment><comment><USER25> very minimal and simple. it's basically a chat + to-do-list... i'm not gonna compare it to Trello but that's what we use right now and so far it has turned out to be great not to mention it's free.

$10 a month per team member is WAY over priced for such a minimal app. for a 10 member startup it's $80 a month or $960 a year for a chat app!

<comment><USER26> Our team use Trello too, and it works great. This seems very similar. Why not compare it to Trello?

<comment><USER25> you can, and probably should i didn't want to start a this vs that game and take the spotlight away from these guys

</comment></comment></comment><comment><USER27> To my cranky old self, the overbearing similarity between this product (aimed at productivity) and services like Twitter and Facebook (aimed at fun), combined with the overly cheery, flippant color scheme, make it difficult for me to take my work in &! seriously and actually get things done.

</comment><comment><USER28> > "What are you working on?" and "Are you busy?" are the most pointlessly > painful questions when you're just trying to get something done.

So true. I don't believe this solves the problem though. I rarely got asked those questions. But when I did, the person just wanted more and more information: so how long is it going to take, when did you start, at what stage are you, does anyone else need to get involved, is there something to be prepared, etc. This is crazy and tools could not help.

Everyone else knew that, yes, everyone is busy with something and that they can just look at what's "in progress" on the bug tracker... Technology won't always solve personality problems.

Also - Teambox seems to be similar and also provide the facebook/twitter-like status updates.

</comment><comment><USER29> Ajax username checking makes the field sluggish (<https://andbang.com/register> with FF 8.0) - when I type username fast, most of the letters don't show at all. I believe the reason is at: register.js line 24 =)

<comment><USER30> had the same issue when registering.

</comment></comment><comment><USER31> I left feedback, but it got stuck "Submitting..."

The short version: \+ The graphics are great. \+ The usability can be improved. \+ Add a graphical button to access the shortcut/hotkey guide. \+ Add tooltips for any non-conventional icons (sections, thunderbolt, rocket ship)--include shortcut [esc], etc. \+ Add non-modal feedback/confirmation when stuff happens: \+ After adding a task: "woebtz added 'Research cheese puff API' to shortlist." \+ After thunderbolting a task: "woebtz is working on 'Test meatloaf' now." \+ After rocket shiping a task: "woebtz shipped 'Deliver milk to client!'" \+ Keep up the great work.

</comment><comment><USER32> I've registered but after clicking the "and bang!" button I get nothing.

I also noticed that tabbing between the username field causes a delay. Probably to do with the username availability check.

<comment><USER3> What browser?

</comment></comment><comment><USER33> I applaud you for having a business model. As well as one that does not involve ads. That said, I can't see myself (or anyone else for that matter) spending $10 a month (per user) on the current version of service. Basically, you've implemented a relatively basic 'wall'.

There really just isn't enough there to warrant spending that much money. I think you need to spend some more time on adding features than repeatedly posting to HN as a way to drum up business and feedback.

<comment><USER3> We didn't post this. I was a bit surprised and it made for a completely unexpected and a bit stressful day.

No doubt, it's a nice surprise for anyone to be pinned to the top of HN for most of the day, but we haven't put out a press release for &bang for a reason: we have some things we kind of wanted to do first.

As far as price goes, businesses spend money on software that they use when they get value out of it.

We've bootstrapped our way from just me to a team of 15+ and while we carefully watch our budget, we don't handcuff our team when it comes to hardware and software expense.

We subscribe to web apps that run $15, $25, even $45 per month per user. At the end of the day, all of those combined are a ridiculously small part of our budget and we don't even think about the expense. They help us get the job done and that's what we care about.

With &bang, we're going to work hard to know our customers and deliver them value by making it easier and more fun to work together efficiently.

I absolutely appreciate your sentiments and believe me: we have a lot more we are excitedly eager to do with this product. :)

</comment></comment><comment><USER34> Just signed up and the user interface isn't clear to me. The jumping left bar is terrible, I don't understand how to use this (and I really wanted to for some reason).

Put in more effort to make clear to your users how you want them to use your site. I wasn't able with the starting version to make something appear on the right side and the annoying left menu kept on jumping.

As it is now, I'm really not going to use this (even the free version).

</comment><comment><USER22> I'm using this with some projects and enjoying it. Overall I agree it's a very fast way to know what everyone's doing. It is suited for a desk environment since it is desktop-only. (It's closest to working on the iPad but has some bugs.) The price seems a bit much, but we haven't fully ramped up usage and we'd happily pay for anything working well for us.

</comment><comment><USER35> Hey cool! We're a team of two so I'll be trying this out for sure. Your landing page lured me in perfectly. By the way, your <article> tags are rendering with a white background-color, but I assume they're meant to be transparent/#202020. I'm using FF 7.0.1.

<comment><USER3> Yeah, suddenly border-image rendering changed in Chrome between versions and Firefox got the short end of the stick. Sorry!

<comment><USER35> Hm, maybe it's the border-image. For me, specifying `background-color: transparent;` to `#home article` fixes things right up, at least in firebug.

<comment><USER3> Yep, and then, if I recall (and without looking), it removes the background on Chrome entirely (leaving it transparent and grey and unreadable instead of white in the center).

I messed with it for a couple hours to get Chrome and Firefox to render the same and eventually gave up and moved on to more important things, but it's on my list to investigate.

</comment></comment></comment></comment><comment><USER36> I signed up, created a team, skipped watching the screencast/demo and can't find it again. Now I don't even know what I'm supposed to do. The UI is just confusing. I imagine you have spent a lot of time working on how it looks and not on how it works.

</comment><comment><USER37> Overall very well done!

I agree with some of the sentiments here regarding launch page copy. I found the repeated use of words like "awesome" a little annoying. I would cut it to to basic "here's what it does and why it's better..." type copy and limit all the hype text.

+1

</comment><comment><USER38> Well call me incorrect by my team would laugh if I presented them a webapp with sooo pink buttons.

</comment><comment><USER39> Screencast: <http://vimeo.com/31586105>

<comment><USER40> Lol, this screencast is horrible. It's just one guy talking, but they edited the cuts so close to each other that he's overlapping himself talking. I guess it's "saving time" or "is stylish and cool". Obviously it was a conscious decision on their point, but it's a horrible idea. I don't think I'd trust a company that would put out something this bad as an official video.

<comment><USER41> it's apparently been deleted

</comment></comment></comment><comment><USER42> just signed up and so far it's working great. really appreciate the _teams of 2 are always free_ mentality. didn't realize how many tag-team ventures i had that actually make sense with this model. looking forward to giving this a good run.

</comment><comment><USER43> I love the design! Museo was a great choice. Are you using TypeKit?

</comment><comment><USER44> This may be useful for our daily scrum meetings to document tasks.

<comment><USER45> Howdy Zac! yeah, it's basically fallen out of our evolved scrumlike process. We'll likely add more features and polish in that direction.

</comment></comment><comment><USER46> Doesnt work on my safari, might want to add a version #?

<comment><USER47> I confirm, this doesn't work in safari 5.0.3.

Lots of trace garbage in console, doesn't do anything when i type things in and press enter.

<comment><USER3> Wow. That's news to us. Thanks for the heads up.

</comment></comment></comment><comment><USER48> I hate the word "automagically"...

</comment><comment><USER49> Looks great, but less caps.

</comment><comment><USER50> Yet another IRC copy?

</comment><comment><USER51> a confusing app ... all the way from the landing page ...

</comment><comment><USER52> Wohooo!

</comment><comment><USER53> It's .... it's ..... it's beautiful! :O</comment>


ASK PG : Reason for not using gzipping on Hacker News content? - <AUTHOR>

just noticed that Hacker News content is not gzipped on my chrome browser, while it accepts gzip'd content. I want to know the reason that would help me in general. <comment><USER2> I'd guess oversight or it being seemingly unnecessary due to having enough hardware/bandwidth available to them.

Adding far future Expires headers and ETags would also help the perceived user download/render time. Neither are HUGE deals mind you, but easy to do for a bit of extra snappiness.</comment>


How PHP's foreach works - <AUTHOR> http://stackoverflow.com/questions/10057671/how-foreach-actually-works/ <comment><USER2> As far as I can tell from my reading, the strangeness stems from the fact that:

> Arrays in PHP are ordered hashtables (i.e. the hash buckets are part of a > doubly linked list)

And that iteration is done using a "internal array pointer":

> This pointer is part of the HashTable structure and is basically just a > pointer to the current hashtable Bucket. The internal array pointer is safe > against modification, i.e. if the current Bucket is removed, then the > internal array pointer will be updated to point to the next bucket.

Which together require some complex copying rules to allow for some simple things like iterating over the same array in nested loops.

I'm not very familiar with the implementation details of many other languages with these constructs, but in python a `for` loop (which operates similarly to the described `foreach` loop in php) simply operates over an iterator, which have a well defined implementation [1]. I don't know about the implementation any deeper than that, however.

I'm curious how other languages implementation of foreach type constructs stack up and how the choice of implementation for the standard list/array datatype affects the interface.

[1] <http://excess.org/article/2013/02/itergen1/#iterators>

</comment><comment><USER3> Is this actually Stackoverflow or an impostor phishing site? I don't see the "Question has been closed as not constructive" notice even though this question meets all the requirements for it.

<comment><USER4> Really? It's a purely technical question with one correct answer--exactly the sort of questions that StackOverflow wants. It is _not_ a question that would breed discussion, have a list of answers or have no correct answer, which is what gets closed.

<comment><USER5> I wish that were true. Useful stuff is closed _all the time_. Which is good, because _we are totally running out of bits on the internet!_

</comment></comment></comment><comment><USER6> If anybody feels like explaining something else that's also puzzling about the Zend engine and PHP arrays; I had a few hours spent the other day on a WTF moment writing a PHP extension in C and querying array zvals.

I was doing something fairly simple, trying to extract values passed as named argument to a function and turning them back into simple C types (char * and int):

        // capturing hash keys as zvals
        zval **salt_hex_val;
        zval **key_hex_val;
        zval **iterations_val;
        if (    // getting values
                zend_hash_find(hash, "salt", strlen("salt") + 1, (void**)&salt_hex_val) == FAILURE ||
                zend_hash_find(hash, "key", strlen("key") + 1, (void**)&key_hex_val) == FAILURE ||
                zend_hash_find(hash, "iterations", strlen("iterations") + 1, (void**)&iterations_val) == FAILURE ||
                // checking types
                Z_TYPE_PP(salt_hex_val) != IS_STRING ||
                Z_TYPE_PP(key_hex_val) != IS_STRING ||
                (Z_TYPE_PP(iterations_val) != IS_LONG && Z_TYPE_PP(iterations_val) != IS_DOUBLE)
            ) {
            php_error_docref(NULL TSRMLS_CC, E_WARNING, "Could not extract and check types on required values in hash: salt, key, and iterations.");
            RETURN_NULL();
        }

        char *salt_hex;
        char *key_hex;

        if (Z_STRLEN_PP(salt_hex_val) != salt_length * 2 ||
                Z_STRLEN_PP(key_hex_val) != key_length * 2) {
            php_error_docref(NULL TSRMLS_CC, E_WARNING, "Key or Salt length incorrect.");
            RETURN_NULL();
        }

        salt_hex = Z_STRVAL_PP(salt_hex_val);
        key_hex = Z_STRVAL_PP(key_hex_val);

        int iterations = (Z_TYPE_PP(iterations_val) == IS_LONG ?
            (int)Z_LVAL_PP(iterations_val) :
            (int)Z_DVAL_PP(iterations_val));

The part that I still don't understand (but that I figured out by trial-and- error) was why `zend_hash_find` takes a `void••`[1] as argument, which should actually be a `zval•••` cast as `void••`. What's the purpose of the triple pointer here?

        zend_hash_find(hash, "salt", strlen("salt") + 1, (void**)&salt_hex_val)

[1]: Imagine the • there is a star / asterisk.

<comment><USER7> Here's my understanding of why each pointer is needed, from reading the Zend source code for a while:

1) The innermost pointer is needed because Zend hash tables actually store a "zval* " (pointer to zval), not a zval directly. The zval is allocated separately, then its pointer is stored into the table.

2) The second pointer is needed because Zend tables internally malloc storage for whatever they store (zval* ) in this case, then access that data as a pointer. The "zval* " pointer is memcpy'd into the malloc'd area. This data is accessed through a "zval* * " pointer. This allows users of zend_hash_xxx to not only access the "zval* " pointer, but also change it.

3) In C, one way for a function to return a value is by passing a pointer to a variable that will store the result. Since zend_hash_find returns the internal "zval* * " data, you need to pass in a "zval* * * " pointer to a "zval* * " pointer that is the actual return value you want. Through this "zval* * " pointer, you can read and also change the "zval* " data stored in that hash table cell.

<comment><USER8> 1) Symbol tables store double pointer, not single, see my comment to the parent for the reason why. There may be hash tables that store single pointers, but not symbol tables.

</comment></comment></comment><comment><USER9> I think the interesting thing that this highlights about php, perhaps especially for people who've never worked in it, is the fact that php is an extremely rare example of a scripting language that has value semantics for complex objects.

I've always found that an interesting choice.

<comment><USER10> > perhaps especially for people who've never worked in it

At my last job, one of our interview questions for an experienced PHP programmer was "What makes PHP arrays different or unique, from a computer science point of view?" Not a single one ever got anywhere close to the right answer (that they're ordered hash tables, not arrays).

Pretty sure this applies to by-value and by-reference semantics too.

<comment><USER11> Most of the time, getting the right answer is a matter of asking the right question. If most experienced people can't ask a fairly simple question, then maybe the question is to blame. That bit about the "computer science point of view" may be a little bit vague. Asking for implementation specifics may be more appropriate. I do know that arrays in PHP are implemented as hash tables as this is a common rant about it. But from your question I did not understand what you mean.

I'm still curious what do you mean by "ordered" because the PHP arrays don't order their keys. The common rant previously mentioned aka having to use asort() for getting a proper array:

      php > $arr = array();
      php > $arr[2] = 2;
      php > $arr[1] = 1;
      php > var_dump($arr);
      array(2) {
        [2]=>
        int(2)
        [1]=>
        int(1)
      }

<comment><USER9> Most hash tables have a semi-random order dictated by the hash algorithm in combination with the bucket count. PHP Arrays are ordered by insertion order (each slot in the hash table has a next pointer, the last of which is appended to on insertion).

The order may be unusual or even non-obvious, but it is predictable.

<comment><USER12> Ruby 1.9 hash tables are also ordered by insertion order.

</comment></comment></comment></comment></comment><comment><USER13> So basically it operates on a copy unless it determines it doesn't need to?

I'm not sure why this is interesting.

<comment><USER14> It's even less interesting because PHP arrays have value semantics so someFunc($array) and foreach($array..) aren't really that different. The whole thing is pretty intuitive.

The answer to the question is pretty deep though.

</comment></comment><comment><USER15> Wasn't this a given when working with PHP? You can afterall send the reference so that you are modifying the array as you go, rather than at the end.

$array = array(1,2,3,4,5); foreach ($array as &value){...}

<comment><USER16> Just always be sure to unset $value afterwards :)

<comment><USER17> I can't count the times that references have caused wierd errors in my PHP code. Definitely a good recommendation.

<comment><USER16> I hear ya. In fact, I got burned by that problem enough times to make a test for it in my PHPCS 'coding standard'... which is basically a handful of standards that look for my stupid, repeated, coding errors :)

<comment><USER18> My own standard is this:

        foreach ($array as & $ref) {
            // Do something with $ref
        } unset ($ref);

i.e. put the `unset()` call on the same line as the closing brace, forever "welding" it to that block.</comment></comment></comment></comment></comment>


Most Alien-Looking Place on Earth - <AUTHOR> http://www.darkroastedblend.com/2008/09/most-alien-looking-place-on-earth.html

<comment><USER2> pretty but more like rediff material. isn't it?

<comment><USER3> lol, did you mean reddit material ?

<comment><USER2> yeah - reddit.

</comment></comment></comment><comment><USER4> Neat, but I suspect there are underwater worlds that look even more alien.

</comment><comment><USER5> I was in Kapadokya (<http://images.google.de/images?q=kapadokya>) earlier this year. Very strange place, too.

</comment><comment><USER6> How do you know what alien places look like as a point of reference for the claim that it's "most alien-looking".

To me this is one of the most evolutionary pretty places on Earth.

</comment><comment><USER7> From the article:

"Dorstenia gigas - apparently does not require any soil and sinks roots straight into the bare rock"

It seems that this is some form of fig tree.

</comment><comment><USER8> Really amazing pictures. Glad you put this up :)

</comment><comment><USER9> "Ia! Ia" Cthulu ftaghn!"

:-)</comment>


Twitter Open Sources Clutch - <AUTHOR> http://www.infoq.com/news/2012/10/Twitter-Clutch

<comment><USER2> Hot damn I love when companies open source their code!

If its not a core competency or a competitive advantage, open it up and see if the community will help you maintain and advance it.</comment>


On Being 40 - <AUTHOR> http://chadfowler.com/blog/2014/05/11/on-being-40/ <comment><USER2> When I turned 40, I was heard to say that had I known how great 40 was, I would have turned 40 ten years before. I felt I was at the top of my game: Training regularly, mentally sharp, marriage good, daughter good, career good. Awesome!

I'll be 49 later this year. My advice: Keep training, it is the best and most important thing. I stopped for a while (long story) and ended up with Old Man back problems (10 minutes to fall out of bed, 5 minutes to crawl to the toilet, peeing in the toilet a gymnastic accomplishment, not to mention getting back down...).

Second most important thing: Don't have a bullet list, just do shit. Do act in a play. Do learn an instrument. Do be in a movie. Heck, be in several movies (play many different characters, from hero to clown to psycho). Do abandon a successful 12 year solo career when offered a partnership in a small but growing firm (now I have 4 spouses, yay! And growing pains. Yay!).

Always say "yes, that would be cool", never be afraid _1_.

 _1_ Still working on that, haven't been bungee jumping yet. But my firm will have 10 or so employees in a few months, with almost as many subs, and I'm in 5 DVD/Netflix releases planned for 2014.

The 40s rock. The 50s are going to be awesome.

<comment><USER3> "small but growing firm (now I have 4 spouses" \- business was successful enough to expand your polygamous marriage?

<comment><USER2> I have three business partners. That's a lot like three extra marriages: You have to "learn" the other person, understand their wants and needs (often unspoken), learn how to communicate effectively with each, etc.

They have spouses, and we all have kids. And we have employees. My extended family is far larger than I'd ever dreamed....

</comment></comment></comment><comment><USER4> Awesome article. Love the gratitude man. It is one of the finer emotions.

At 43 here is my experience:

-I can't stay awake as long as I used to either. Nor do I want to anymore.

-My body doesn't hurt all the time... I have heard this from others but it hasn't happened to me. Still, I can't do what I used to without it really wiping me out and requiring rest. And, I'm not as fast as I used to be. But, I find I am still as strong as ever... I think even stronger.

-I certainly know more, but feel I don't think as fast as I did 15 years ago. I'm at peace with that. One offsets the other for me.

-I'm more jaded and cynical about life but, paradoxically more patient. What used to be unforgivable sins in others are just not as grating anymore. At the same time I expect the worst from others more than I used to I believe.

-Ditto on appreciation. Didn't used to have it as much as now. Maybe because I expect the worst and am pleasantly surprised when it doesn't show up.

-I don't think I'm wise... not going to claim that, but I do feel I have more control over my life and my reaction to events. I'm certainly less impetus.

I wouldn't think this will be the outcome for everyone. YMMV.

</comment><comment><USER5> It's frustrating being very late 30's and still not having reached any major successes. All I really want is to be able to have my own single entrepreneur business. It shouldn't be so hard to find at least one idea that will support me and my family as a software engineer.

This guy is a CTO, so he's hit that milestone I guess. I'm still hungry.

<comment><USER6> I essentially lost my career right before I turned 35 - it was the only job I had for more than a year, and I had it for a decade. It was an existential car crash. Here I am about to turn 37 and I'm back in school again, fighting off the constant fear in the back of my head that my entire life will amount to a tale told by an idiot, only without even sound or fury.

I've more or less given up on major success. I just kind of want to not live hand to mouth now. But you never know. The one thing i've learned not to do is fool myself into thinking I know what shape the future will take. Cynicism is a lot easier when you think you're immortal.

</comment></comment><comment><USER7> Mid life criss used to hit at 40.. now its lot earlier.

I had mine around the early 30's. Had done it all and was wondering what next. Marriage, kids decent job, good pay, low expenses, decent house.

Got rid of the job and pay and living off savings now. Will be 40 soon. Hopefully I will figure out the meaning of it all. For now I focus on living.

<comment><USER8> I think I'm having mine right now and I'm 26.

I've pretty much got everything I've ever wanted out of life. Make enough money to live comfortably and have leftovers every month, have published a book, have started a business, am debt free, have complete freedom from everything.

Really the only thing I still haven't done is publish in an academic journal. But my life has taken on a trajectory completely outside academia, so not sure that's likely to happen anymore.

Everything else, it seems, is just a matter of degree. Eventually I will be financially more successful than I am now, but that will only get me a bunch of things I don't care for. I will publish more books and they might end up being more renowned or not, but there isn't really _that_ much you can do with renown other than turn it into even more financial success, or enjoy it out of pure vanity. And I guess I will start more businesses, launch more products, and some might even become hugely successful ... but that's just a matter of degree once you've passed the barrier of having done it once at all.

Guess I could eventually start a family, but I've never wanted one of those. If I do start one it's going to be out of pure boredom and wanting to try new things. And that is probably the shittiest reason to start a family.

Pretty much everything left on my bucket list is pure hedonism. But that seems like a shitty thing to strive for in life.

<comment><USER3> "will only get me a bunch of things I don't care for" \- you genuinely wouldn't want a (extra) house by the sea or make a trip to space or launch some physical product just for the fun of it?

<comment><USER8> I wouldn't even know what to do with the first house, let alone a second one.

I mean sure, I could always do with more stuff, but it doesn't bring me deep joy. I only enjoy it for the novelty ... and then I might as well just borrow it for the first two or three times until I get bored, then move on to the next borrowed thing.

Ownership is meh. Too much hassle. Not enough novelty/excitement.

Really the only reason to own things is so the taxman takes less and you "keep" more. Even if you keep it in a form you don't particularly need.

<comment><USER9> My previous response was about finding meaning from interpersonal dependence, I totally get not wanting to develop a dependence on "things." However renting a home means you're paying someone else's "taxman" for them and paying for the privilege for doing so. If you've done really well financially, you get to the point where you pay off the bank and it's _only_ the taxman you owe to keep a roof over your head.

You're already saving, that's good, for the time many years in the future when you can no longer work. Also think about saving for a time when you'll feel differently about owning things and/or having kids.

</comment></comment></comment></comment></comment><comment><USER10> _" At this age, I'm becoming aware of just how long and short 40 years is. Literally everything that has ever happened to me can fit into 40 years. If I do another 40, twice as much can happen in total."_

One of the interesting things about aging is the realization how short life is. When I started considering the frame of mind that I had less life to live, than I had already lived, it made it easier to focus on the important stuff. I too was fortunate to find someone at a young age who was compatible with my quirks. And while many folks I have met eschew the notion of marriage and even family, I find that without my wife and kids I have a hard time contextualizing what, if anything, I've contributed in exchange for the raw materials I've consumed. That was not something I expected to feel when I started out.

<comment><USER11> About the significance of family as I grow older -- When I was younger, I would hear the expression "The only thing that matters is love," and I would literally not understand what it could be referring to. It was devoid of possible content for me. I assumed it was just something people said, like "have a nice day".

What mattered back then was to always be smarter, to always know that already (for any value of "that"), etc. I'm still that way sometimes, of course. The alpha nerd does not just disappear.

Well, it took 20 more years, but I get it. When it's all over, it may be that all that mattered was love.

</comment></comment><comment><USER12> He seem to be at peace, and it surely does count more than anything else. Happy 40th birthday man.

</comment><comment><USER13> >> religious holidays for faiths we don't hold

So, a human is born, lives and dies and that's it? Earth, planets, solar systems, galaxies, the universe, all just some big accident. Wow. Of all of the above, no signs of life from any planet out of billions and billions but ours and it was just an accident. Wow.

<comment><USER14> _" Of all of the above, no signs of life from any planet out of billions and billions but ours and it was just an accident. Wow."_

If it's simply a rare phenomenon, this is what we'd expect to see. _If_ intelligent life arises on one planet in billions and billions, it is _not surprising at all_ that it will be on the one planet with intelligent life looking around and asking the question.

<comment><USER13> Good point, except, would that rule show symmetry with other planetary events on the billions of billions scale?

<comment><USER14> I'm not sure what you're asking.</comment></comment></comment></comment>


Hackers, architects, and superheroes: 3 ways to be an excellent programmer - <AUTHOR> http://reprog.wordpress.com/2010/03/21/the-hacker-the-architect-and-the-superhero-three-completely-different-ways-to-be-an-excellent-programmer/

<comment><USER2> Excercise for the reader: which of the 4 classes do you think you most closely fit (Hacker, Architect, Superhero, Mixed)?

<comment><USER3> No, "mixed" is a cop-out (as well as violating the AD&D rules for multi- classed characters). You have to pick only one -- othewise we'd _all_ end up saying "mixed", with some degree of bias.

<comment><USER2> Point taken (my bad!) - mixed should definitely be off the table. Replace with "student" :)</comment></comment></comment>


Ask HN: How to convert 5 star ratings to up/down voting? - <AUTHOR>

I've got a site with close to a million ratings on thousands pieces of content. I'm redoing the site and I want to scrap the 5-star rating system and go for a like/dislike thing--sort of like what YouTube did.
The system will display how many votes there have been and the score (up votes minus down votes).
I want to keep all those ratings from the current setup, and still be at least a bit accurate with the scores (aka content that had higher star rating to have an appropriately higher score--of course this also depends on the number of votes which is why I don't exactly know how to go about it)
Suggestions? <comment><USER2> Do you store each individual rating by each user or only the aggregate? If you store each individual rating you could go two ways: A) \- If a rating is 3 stars or more, count as an up vote. \- If a rating is 2 stars or less, count as a down vote.

B) Multiply the number of ratings for a given content by the .2xnumber of stars aggregated for that content.

<comment><AUTHOR> Unfortunately I only store the total score and the number of votes

</comment></comment><comment><USER3> [http://www.aaai.org/ocs/index.php/ICWSM/09/paper/download/22...](http://www.aaai.org/ocs/index.php/ICWSM/09/paper/download/227/521) may help. The polarization into "strongly like" and "strongly dislike" ought to help.

<comment><AUTHOR> Yea it does help.

I can say the star rating is just an average of up and down. So if there were 10 votes and the rating was 3 out of 5, I can assume that means there were 6 up votes and 4 down votes for a score of 2.

This sounds promising.</comment></comment>


Amazon patents method to prevent comparison shopping - <AUTHOR> http://gizmodo.com/just-in-time-amazon-patents-method-to-prevent-comparis-1796195563 <comment><USER2> One of the comments on the article:

> I thought a redirect would be the same as malware and as such illegal?

Any thoughts on this?

<comment><USER3> If you compare redirects to malware tben yhe whole system is infected</comment></comment>


Show HN: Kwery – Schedule, view and email reports from datasources using SQL - <AUTHOR> https://getkwery.com/ <comment><AUTHOR> Hello, I am the founder of Kwery.

Kwery aims to simplify the process of scheduling and emailing reports from datasources using SQL. There are existing tools which let you generate reports from datasources, but a lot of them are missing the bells and whistles when it comes to emailing those reports, Kwery aims to solve this problem. Also, Kwery stores all the generated reports and lets you search reports that were generated on a so and so date, so, no more foraging through emails for old reports.

Happy to answer any questions you might have regarding Kwery.

</comment><comment><USER2> Cool! Looks nice. And it's great to see something like this bundled as a jar instead of an SaaS, given the nature of private data.

How do you enforce licensing?

<comment><AUTHOR> Thanks for the kind words.

Licensed users will get a separate jar. If you want to discuss more, please reach out to me at email@example.com.

</comment></comment><comment><USER3> See also: [https://monique.io/](https://monique.io/)</comment>


Michael Abrash Valve: How I Got Here, What It's Like, and What I'm Doing - <AUTHOR> http://blogs.valvesoftware.com/abrash/valve-how-i-got-here-what-its-like-and-what-im-doing-2/

<comment><USER2> An amazing read for someone who has been waiting to pull the trigger on switching to the more interesting side of the industry for a while.

</comment><comment><USER3> This is a repost: <http://news.ycombinator.com/item?id=3838880>

<comment><USER4> It was posted here, then someone saw it and posted it on proggit, then someone saw _that_ and posted it here... and the Great Internet Aggregator Cycle marches forth unhindered.</comment></comment>


Plead HN: Please build a startup glossary - <AUTHOR>

An important and glaring problem is that it is very difficult for me to explain what I'm doing to my mom. Startup Lawyer has the start of a glossary (http://startuplawyer.com/startup-law-glossary) but a lot of the definitions are missing. In true Hacker News fashion, we should solve this with a webapp.<p>I'm thinking:<p>* A freeform glossary with basic, starting definitions filled in by a handful of trusted volunteers.<p>* Instead of simply being a wiki (which will lead to rampant spam), registered users can propose new terms and updated definitions to terms.<p>* Proposed changes (diffs) are listed under each definition and voted up/down, like Stack Overflow. Eventually proposed terms/changes are applied if they reach enough votes.<p>* Markdown and links to other sites are allowed, but links use rel=nofollow<p>* A good, SEO-able and paste-friendly URL structure, like startupglossary.io/convertible-note<p>* Open-source and hosted on Heroku, of course ;) <comment><USER2> Moms can be a great way to get down your public relations pitch. Moms want to understand what you are doing at least to an elevator pitch level. Moms are often asked what their kids are doing these days so they will usually want enough details for a solid sound bite.

Is this a important and glaring problem? I'm assuming you have tested this assumption somehow such as asking friends/potential users.

I would imagine most people are googling terms that they don't know and are not directly searching startuplawyer. Is that not a good solution? Why is what you are doing better?</comment>


Campaign for Germany to Offer Snowden Asylum Over NSA Leaks - <AUTHOR> http://www.theguardian.com/world/2013/nov/03/germany-edward-snowden-asylum?CMP=twt_gu

<comment><AUTHOR> It's tomorrow's Der Spiegel cover story:

[http://pic.twitter.com/gscZWhCryq](http://pic.twitter.com/gscZWhCryq)</comment>