Ask HN: Review my startup, http://UpOut.com - <AUTHOR>

My room mate and I started on this website in mid February whenever we weren't working on client stuff and/or school. For the past two weeks, we've really put our best effort to release a second/better version. It's called UpOut and it's a city guide built by users. We make it super easy to post awesome stuff pulling maps and pictures for you.
As an avid HN reader, I'd love to get some feedback! Please take a look at http://www.UpOut.com or to learn more http://www.UpOut.com/about
I'll also be on Convore for as long as I can.
EDIT: Please try out the logged in portion. Either create your own acct (super easy) or use username:teststeve pass:testing999 We specifically want to see if the form is easy enough to use and that the profile editor is also easy. <comment><USER2> Great work! Though I have couple of suggestions from SEO perspective.

* Please, please, please change your URL from <http://upout.com/a/YRlIYk> to <http://upout.com/new-york/candle-vegan-food> (you can't imagine how important URLs are)

* Please include the city name in page title. So, your title "Candle Vegan Food | UpOut" becomes "Candle Vegan Food in New York"

* Add related activities tab and list activities there to build strong interlinking between various pages

* Give a small widget on the page so people can embed these activities on their blogs/websites so you get backlinks from there

Rest looks awesome! Good luck.

<comment><AUTHOR> Thanks so much for the advice, this is really helpful. We are planning on SEOing our website sometime soon. We originally did the random short YR1YK for short URLs but we're realizing now how useless that is. Users can currently change the URLs too themselves!

</comment></comment><comment><USER3> <http://UpOut.com>

<comment><USER4> Downvoted by mistake. Sorry.

<comment><USER5> Serious question - how do you downvote? Do you mean flag?

<comment><USER6> Some features of HN are karma limited. You need to have several hundred points to down vote.

<comment><USER5> Ahh - thanks!

</comment></comment></comment></comment></comment><comment><USER7> On the signup screen, I typed in my email address, then reflexively hit 'tab' before looking at the next field. That cleared the field and I didn't know what field I was in. I had to tab out and back in to figure out it was the password field.

Otherwise, it looks pretty cool, and I'm looking forward to having a Chicago version.

<comment><AUTHOR> Thanks. We'll be doing more cities as soon as NYC is done right.

</comment></comment><comment><USER8> I love this!

How do you get the listed places? had a similar idea once (for a different market though) but we couldn't find a way to get them. Or you've got a person phoning all local businesses?

As for feedback:

* your urls are not SEO friendly

* so when I find an experience, where do I go from there? I think you should have a hard look at monetization. One easy way is to just let people click a big orange button "I am interested!" and then you can sell that qualified lead to the business. Lots of $$$ to be made there and you also get satisfied users.

<comment><AUTHOR> That's funny because it's kind of the purpose of the orange like button below. We played around with a lot of different words for that... would "I'm interested" be a lot better.

As far as turning that into a qualified lead... we plan to do this soon especially when we enable sponsored listings.

<comment><USER9> "I'm interested" sounds a lot better than "Like this" to me. Like this suggests either: facebook, or that you would like to see more results like this.

</comment></comment></comment><comment><USER10> This is probably not what you are going after but consider solving the problem of... What can me, my wife and young kids do for fun this weekend.

That is something I would pay money for.

<comment><AUTHOR> Everything on this site is user generated and tagged. Users can create their own tags like we have one called #family. You can consequently follow those tags to get a custom list of things to do for families. Alternatively, click #family then filter to this weekend (not many items yet but send me an email at martin at up out.com and ill send you stuff to myself)

</comment></comment><comment><USER11> Great idea + execution. I'm always looking for a simple answer for what there is to do. I have been surprised that the net really hasn't answered the question in a simple manner :)>

<comment><USER11> Small nits: \- clicking on nyc pops up a pop up that it isn't easy to get rid of \- I would suggest defaulting all views to today, rather than forcing a person to based upon date on the left hand side

Large nit: I see in your about page: "Deal/coupon aggregation and maps. Integration with Facebook, Twitter, Foursquare and Gowalla.Local Questions/Answers. Mobile application." - I would suggest to do one thing and do it well. I think just answering the question what is going on in town is a tough one to answer but answering it will make you a useful service. Trying to do everything at this stage will probably mean you don't do any of them that well...

<comment><AUTHOR> Thanks... I appreciate the advice. QandA is a big thing for us because (if you register) you can see a question at the top of your profile page that asks "What's awesome to do in NYC?". In the upcoming weeks, we'll pose questions ourselves/directly to users in that space like "What's your fave sushi place?". Eventually, other users can ask questions too.

Deal aggregation can get us some affiliate revenues to help pay for food and we've almost completed it. Integration with the social networks is just to help increase user sign ups and shouldn't be too difficult (at least for FB).

</comment></comment></comment><comment><USER12> Speaking about the UI/UX only...great job. The site is very slick and easy enough to use. There's some cleaning up you have to do but mostly it works very well.

<comment><AUTHOR> Thanks. Any specifics as far as clean up?

</comment></comment><comment><USER13> Lovely site, the UI is very easy on the eyes and I love the filter style.

My only complaint is with content really; it seems like a large percentage of the activities are already just business listings (mostly restaurants). How do you intend to weed out the hundreds of simple business listings that will crop up and make the site look like the Yellow Pages?

<comment><AUTHOR> The main idea is that things should get sorted by tags. So for example #random [http://upout.com/at?v=g&st=t&s=Random](http://upout.com/at?v=g&st=t&s=Random) has more things to do rather than just restaurants. You can consequently follow #random or users who post your type of events and you'll get a stream of those related ones.

<comment><USER13> Great, I can see that working; thanks for the reply!

</comment></comment></comment><comment><USER14> I tried to submit my city, but it didn't do anything. I checked for JS errors, but surprisingly there were none.

</comment><comment><USER15> @martinshen Great job on the site. Congrats. It looks very slick. Here's a few things that could probably help make it even more awesome:

1\. Rich text editing capability for description--at least with
 tag so it can be more readable than just a big block of text. 2\. <http://upout.com/auth/s_profile> and <http://upout.com/auth/s_customize> don't seem to add the "active" class correctly 3\. <http://blog.upout.com/> make the logo go back to upout.com rather than the blog root

What are the technologies behind this? Again, good luck!

</comment><comment><USER16> Wow, this looks great! I love the concept, as well as the design/UI/layout. I didn't login, but I can tell that you put lots of thought into every inch of the user interface. The entire site is pleasant to use and easy to navigate. Best of luck with this!

<comment><AUTHOR> Thanks! If you logged in, you'd see our killer form that doesn't even make you upload an image (we pull them from Flickr)

<comment><AUTHOR> No, this site does not use any frameworks. We only use jQuery I suppose...

<comment><USER17> Only use jQuery? Would love to hear more about the tech stack.

</comment></comment></comment></comment><comment><USER18> Hey looks very nice! Do you have/will you provide RSS or an API to get at this data? I would love to include it in a small side project (mobile app for kid- friendly activities and restaurants in NYC), of course with proper crediting/linking, etc.

</comment><comment><USER14> This is more of a question, but how do you know which state a city that a user submits is for? I guess you don't really care about the limited city submissions for small cities as much as the metro areas, e.g. Phoenix vs. Tempe.

<comment><AUTHOR> We just added the city picker last night and honestly could have put more effort into it (like making it work). We're fixing it now and will probably make it more functional.

<comment><USER14> No problem, working correctly is overrated :)

<comment><AUTHOR> We're pushing city request now so that it works.

</comment></comment></comment></comment><comment><USER19> Interesting idea, do you have a mobile application? This seems perfect for the mobile market.

I can imagine sitting in a pub after a meal with friends wondering whats next and perhaps using an application similar to this one.

<comment><AUTHOR> A mobile application is under development (aka starting tomorrow). The best we have right now is a map view.

</comment></comment><comment><USER20> I've been working on a similar project in my spare time. I have a different mentality to it, but similar concept. I wish you the best of luck, while secretly hoping for your demise. Muahahaha! But seriously, good job!

<comment><AUTHOR> Thanks! There are a lot (like a lot) of people in this space.. It still hasn't been conquered yet!

<comment><USER21> Get the hipsters on your side and you're all set.

I'm serious.

</comment></comment></comment><comment><USER22> Nice domain.

I don't instantly get that it is user-powered, although that is clear on the /about page.

Perhaps consider using social sign-in rather than standard account creation.

<comment><AUTHOR> That's exactly what's next. We figured that most users would just want to browse than post but we provide a small call to action for every user at the bottom of the page to sign up (or learn more). Please try posting something... we tried to make it easy to post incorporating the Flickr and Gmaps APIs

</comment></comment><comment><USER23> Cool! You guys don't have Toronto yet, but your signup form for other cities doesn't seem to be working.

Let me know when it works, or when you have Toronto! :)

<comment><AUTHOR> Thanks. As a Toronto born kid.. it was my #1 choice but we settled on NYC

<comment><USER23> Traitor!

Kidding. What's this written in?

Also, not sure if you noticed, but the signup for city form is broken. Not sure why.

<comment><AUTHOR> It should work now...

</comment></comment></comment></comment><comment><USER24> This is awesome!! Killer idea!! Going to be big! concentrate on what you good at! Enabling people to discover (things to do). Less on social aspects!..

<comment><AUTHOR> We want to be more city guide than ANOTHER FACEBOOK. That being said.. I want people to be able to send each other their top things to do in a city. As in if you were coming to NYC, go to UpOut.com/ini (ini is my username) to get my stuff to do.

</comment></comment><comment><USER25> As well as listing events, I suggest you allow people to collaboratively write articles about things to do with the city in question, Wikipedia-style.

<comment><AUTHOR> This is a good idea but has issues as people have huge variance in opinions about different places.. We're trying to find an elegant solution to duplicates.

</comment></comment><comment><USER17> Awesome. Love the name/domain. Beautiful UI that will clearly keep getting more so. Couple of thoughts re design: 'Love sharing great things to do?' box should line up on the right side with the right side of the boxes above (using Safari.) I'd also try making the width of the sign up bar at the bottom the same as the footer bar (Home | What is This?, etc.) Keep up the sharp work.

</comment><comment><USER26> Your UI looks good. I would change those black icons at the top, though. It's not immediately apparent that the marker icon = map view.

<comment><AUTHOR> Thanks. I'm debating between words or tooltips. What do you suggest?

</comment></comment><comment><USER27> Wow. Well done -- the Filtering UI is awesome. Two minor things:

 _The "map view"/"tile view"/"large screen view" were not intuitive to me.

_ How tough would it be to make the selections persistent, so that if I've selected "Thursday Morning, Family" and then want to see what a different category offers on Thursday Morning, the filter didn't re-set?

T

<comment><AUTHOR> That's a great idea! I was thinking about implementing something along the lines of <http://www.equipster.com/> to have saved or common searches.

</comment></comment><comment><USER28> Signing up to be notified of "my city" doesn't seem to work in Opera 11 or Chrome latest on Windows.

<comment><AUTHOR> Thanks for letting us know. We're fixing this as we speak.

</comment></comment><comment><USER29> This is great, I want to get in there and add my small town (it's raining and snowing here, so I can't really do it now) but when it gets nicer, I'm all over it.

Where's your FEEDBACK button???? I would like to send in some typos I found in your tutorial images.

<comment><AUTHOR> The feedback button is to the right side (on nearly every page other than About which we'll add). We use UserVoice for Feedback

<comment><USER30> Why UserVoice instead of GetSatisfaction or Ideaffect?

<comment><AUTHOR> UV is cheaper than Get Satisfaction and is nicer than Ideaffect.

EDIT: Just checked GetSatisfaction again... that's not necessarily true.

<comment><USER31> Interesting side-note: UserVoice just rolled out per-admin pricing on all plans, so premium features that were $589/month now start at $95/admin (lower plans start from free to $5/admin).

<http://uservoice.com/plans>

</comment></comment></comment></comment></comment><comment><AUTHOR> We made a quick demo video for the accelerators we applied to. <http://www.youtube.com/watch?v=Izo08tV45cI>

</comment><comment><USER32> There is no way to close the "Currently available cities". You should add an X or allow it to disappear when the user presses Esc or clicks outside

Really great site though!

<comment><AUTHOR> Yeah.. we need to fix that part up. We'll make it a lot better esp. when we have more cities. Thanks for the feedback though!

</comment></comment><comment><USER33> This is an excellent idea! I have been wishing for something like this for LA. Let people post cool spots in real-time (maybe you do), so I know whats going down! :-)

<comment><AUTHOR> This is exactly what we're doing for UpOut. We'll hopefully push LA by mid- summer (I have a few friends who want it there). You can follow the specific tags/users (like #indieconcerts or #sushi) that you're interested in to get a stream of the best stuff to do.

<comment><USER33> You need it more in LA than any place else, why: sprawl = time and effort invested in getting anywhere around the city is the highest. NYC, you get up and move 2 blocks, on foot, LA you gotta drive, pay for parking everywhere, deal with traffic and cops if you drink, and then find out the spot sucks. I travel b/w NYC and LA a lot, and in NYC its a nice-to-have (don't like this spot go necxt door, or next or next... or take a $10 cab and go across town), in LA its a must-have (no walkable areas except 2 blocks and we just have 3 or 4 of those in a city that is HUGE).

</comment></comment></comment><comment><USER34> Its 11 pm here and the Homepage asks me to Get up, Go out!

</comment><comment><USER35> ???? Sorry. We aren't compatible with IE yet. ????

<comment><AUTHOR> Sorry... minimum viable product. We didn't have the time to do IE compatibility. We will probably work on this in a few days.

<comment><USER36> Odd you would completely block all IE users (not just IE6) instead of letting them see a site that may have some issues but still mostly works.

<comment><USER37> you make that sound like ie6 is the only browser that ever had compatibility issues.

</comment></comment></comment></comment><comment><USER38> Follow UpOut's profile on StartupList! <http://startupli.st/up_out>

</comment><comment><USER39> Great execution! I did immediately look at your domain name and think "you pout". Was I the only one?

<comment><AUTHOR> I agree that the name does have its faults. We tried to focus on UpOut by capitalizing the U and O as well as distinguishing Up from out in our logo. We liked the name because it kind of explained what we did and was short/easy to spell even as upout (you pout)

</comment></comment><comment><USER40> Looking good, hope it takes off!!

</comment><comment><USER41> Great job! I will use it when I am in NY for blogworld expo:)

</comment><comment><USER42> OK, and how do you make money with this?

<comment><USER43> They could go along the same path as Foursquare and get as many users as possible and worry about monetization later. Although I think ianl is right, adding an intuitive mobile app with a killer UI is essential for your success/adoption. I would be down to use an app that had the activity list of TripAdvisor (with more unique user provided up to date options) integrated with the geo/social characteristics of Foursquare. I feel like you can't underestimate people's narcissism. If I am doing cool stuff all the time it would be great for people to be able to recognize it and make me, or someone cool (sticking with the Foursquare reference) "mayor" of awesome stuff to do. You could also look at the whole coupon based concept once you go mobile. Something like: "Awesomeness going on at location x come within the next hour and get ½ off amazingness!" I will keep an eye out for an app.

</comment></comment><comment><USER44> yelp clone?

<comment><AUTHOR> We're trying to focus more on "What's fun to do?" (aka a city guide). We hope to integrate Yelp and other review sites as part of the tabs where comments are (if they'll let us). We're more trying to compete with TimeOut and other city guides.

<comment><USER45> I like it. The only problem is getting people to submit content. You may want to focus on one tech savvy city, troll Craiglist for events, go to REI to get events, go to StubHub for events, etc.

<comment><AUTHOR> This is an issue we're trying to address. We figured we need about 5% of our users to post stuff. We've also made it absurdly easy to post where we get the images, tags and maps for you. Try it!

</comment></comment></comment></comment><comment><USER46> Your page is too wide. At least with the scribbled text on the left hand side that distracted me.</comment>


Asciinema: Archival of unclaimed recordings - <AUTHOR> https://blog.asciinema.org/post/archival/ <comment><AUTHOR> Stumbled upon the imminent archiving by chance.

I suspect those that have asciinema demo links embedded in places like repo Readme pages will generally have linked them, but if not then they could get archived in the near future (starting 31st January)</comment>


Period. Full Stop. Point. Whatever It's Called, It's Going Out of Style - <AUTHOR> http://www.nytimes.com/2016/06/10/world/europe/period-full-stop-point-whatever-its-called-millennials-arent-using-it.html?_r=0 <comment><USER2> I'm not really sure what the big deal is about it not being used in text messaging and one line statements - because as the article stated, it really isn't necessary. This is just evolving style, and right now it is somewhat needed in paragraphs or multi-sentence messages for readability. That could just go to the wayside as well, however, since the period is more of a habit than anything I'm not sure if a double space followed by a capital letter is any more difficult to read It is, however, slightly easier to type Especially if you are typing on the phone. All that said, my habit is to write sentences with periods when they are in paragraphs, so typing the previous took a bit of thought. I'm sure over time I could get used to it - after all, when I learned "keyboarding" they still wanted us to use two spaces after a sentence. That is no longer the style.

<comment><USER2> And unfortunately, HN doesn't register the double spaces after a sentence.</comment></comment>


The Least Surprised (Ruby comic by _why) - <AUTHOR> http://the-least-surprised.judofyr.net/

<comment><USER2> Brilliant.

My fav:

"Even when the house is totally clean, I have the kids go through the motions of vacuuming and rinsing -- we call it UNIT TESTING"

<comment><USER3> How about:

"I gave my kid Harry Potter 5 MARSHALLED! I've never seen a kid deserialize that fast!"

<comment><USER2> Yeah this is even better.

_why is a genius! :D

</comment></comment></comment><comment><USER4> There are some awesome videos as well, at _why's Youtube page: <http://www.youtube.com/user/whytheluckystiff>

</comment><comment><USER5> Not to derail this post, but did concrete evidence that _why is alive and well ever surface?

<comment><USER6> Also, it proves that his name can be spelled without the underscore.

<comment><USER7> If I recall correctly, the underscore is only added if the name would cause confusion otherwise.

<comment><USER8> generally _why causes confusion with or without the underscore.

<comment><USER9> Yes, but why cause more?

<comment><USER10> I can't decide if I should upvote you or downvote you for that pun.

Either way, I will definitely whack you for this the next time I see you.

</comment></comment></comment></comment></comment></comment><comment><USER11> This makes me feel stupid. Just like Final Crisis, when everybody was saying that Grant Morrison was awesome and I couldn't understand a panel of it.

</comment><comment><USER12> Anyone know where the pictures in this comic are taken from?

</comment><comment><USER13> I miss _why.</comment>


Intel Has a Ton of Developers Working on Their Linux Graphics Stack - <AUTHOR> http://www.phoronix.com/scan.php?page=news_item&px=Intel-Dozens-Linux-Graphics <comment><USER2> With 40 guys that would make it about 3 tons actually...</comment>


Say goodbye to usernames in Atlassian Cloud - <AUTHOR> https://confluence.atlassian.com/x/Sje-O <comment><AUTHOR> This applies to Atlassian cloud products like Bitbucket, Jira, Bamboo, Hipchat/Stride, etc.

But don't email addresses usually leak at least as much information as the user's own username might? (Seems like all of this data should be editable by the user anyway.)</comment>


Ask HN: Anyone have experience selling software to federal law enforcement? - <AUTHOR> <comment><USER2> A couple of experiences:

Not federal but a long time ago my partner and I tried to sell an RFID solution to a jail in NY. Something that I learned from that is that _they actually don 't care about saving money_. If they save $100K this year, next year they will get $100K less from their sponsoring organization.

Another experience was working for a tiny company trying to sell to 3 letter federal agencies. In that instance, the process was so drawn out that the company went out of business before they could get any money from them. This also happened to another friend of mine. Nothing happens fast with the government.

</comment><comment><USER3> Not federal law enforcement, but government and major corporations generally have preferred vendors who can help sell the product for some percentage off the top. In my experience this is a much less time consuming process than going through the process of getting set up as an official vendor.</comment>


Introducing Airskul - <AUTHOR> http://airskul.com/ <comment><AUTHOR> I'm sure you've heard of Google classroom, Well Airskul is a classroom management system that is sort of like Google classroom but with more features and awesomeness..</comment>


Document Stores: Please Give Me A Standard API - <AUTHOR> http://kirkwylie.blogspot.com/2009/12/document-stores-please-give-me-standard.html

<comment><USER2> Yes. SQL should be that standard API.

Most document- and KV-stores only support a subset of what can be expressed with SQL. In fact, I have yet to see a feature that can _not_ be expressed in SQL.

Thus, the advantages of using SQL are obvious:

      * SQL is well understood and mature

      * People already know SQL

      * SQL parsers and clients are dime a dozen

      * SQL lends itself reasonably well to interactive
        use by humans. Much better than typing raw
        javascript into a console (MongoDB) or having to write
        actual code for every little data-manipulation task
        (most others).

      * Existing SQL-infrastructure can be leveraged.
        For example your favorite ORM could easily grow an
        adapter for a "NoSQL"-Db when it's just a slightly
        different SQL dialect instead of a completely
        distinct API.

<comment><USER3> > SQL should be that standard API.

Unlikely. How will SQL deal with low-level semantics that do not provide transactions in the way SQL-users understand them but requires the user to understand the concepts of the CAP principle? How well does SQL deal with conflicting data being returned from retrieval operation? If SQL is being used as nothing more than a small set of verbs (a la memcache) then why bother?

I certainly hope that document-store developers do not take the lazy route and prematurely converge on a standard like SQL. Fortunately it seems that few of them are particularly interested in this route and the more likely path seems to be providing multiple interfaces with RESTful HTTP, memcache, and a programmable/functional interface using JavaScript and/or the language the DB is coded in (Erlang and Java primarily.) Other possible candidates here are things like LINQ, Hive's QL, and Pig.

<comment><USER2> _Unlikely. How will SQL deal with low-level semantics that do not provide transactions in the way SQL-users understand them but requires the user to understand the concepts of the CAP principle?_

I'm not sure what you mean. SQL Databases have varying feature-sets already and SQL copes just fine. A "NoSQL" backend would simply be yet another type of database, lining up with e.g. MySQL and Postgres.

It's just a matter of applying the verbs (SELECT, CREATE, INSERT, UPDATE) in a meaningful way.

The individual stores could even extend the language to a degree, just like the RDBMS flavours do today. The important wins would be a common baseline (select foo from bar), a standarized way for human interaction (adhoc queries in a console are very useful) and a much easier migration path from traditional RDBMs.

 _How well does SQL deal with conflicting data being returned from retrieval operation?_

Again I wonder what you mean?

If you're referring to versioned stores, or stores with particular semantics, then I'd imagine things like that to be simply embedded into the response. I.e. all tables returned by a select-statement could simply contain an additional column containing the tuple version. The user can then deal with that meta-data using the usual, time-tested SQL machinery (select .. where version=, group by, etc.)

Yes, this means every store needs slightly different treatment. But that's no different to how we treat RDBMs today - a common baseline with variance in the more specific features (column-types, indexes, triggers etc.).

 _I certainly hope that document-store developers do not take the lazy route and prematurely converge on a standard like SQL._

That's a strange wish to have as it only makes life harder for everyone. I don't see anything bad about SQL (the language) that would prevent it from taking this role.

Moreover the query language doesn't need to have ties into the underlying implementation - it's merely a common vocabulary.

SQL seems like a natural choice due to its ubiquity.

LINQ, in my book, is an ORM and operates at a different level of abstraction. Pig and HiveQL otoh are exactly what I have in mind - SQL dialects.

<comment><USER3> _[Not converging on SQL] only makes life harder for everyone._

No, it makes life harder for people trying to use off-the-shelf ORMs and other RDBMS tools. I would much rather make life harder for them than make it harder for the developers of these databases.

 _I don't see anything bad about SQL (the language) that would prevent it from taking this role._

I, for one, do not think that it is expressive enough to cover all of the different paradigms being explored. It is based on a row/column view of the data that may not be appropriate and which may require additional hoops to be jumped through in order to get the data presentable for the assumptions that SQL makes. Who would be responsible for these transformations? IMHO it should be the end-user, but if SQL gains traction any time soon the db developers will be repeatedly browbeaten by DBAs who can't comprehend why anyone would not share their viewpoints regarding data structuring and could you please make things look like the RDBMs systems we are used to kthxbye...

Adding SQL seems to offer very little at this point except future headaches.

<comment><USER2> _I, for one, do not think that it is expressive enough to cover all of the different paradigms being explored._

You are not alone with that opinion, I've seen it a couple times in similar discussions. Yet I'm missing a concrete example for a piece of functionality that can't be reasonably wrapped.

Browbeating is irrelevant in either direction. What matters for adoption is a sane interface for day-to-day use and that includes proper tooling for interactive use - an area where many of the contenders are still sorely lacking.

</comment></comment></comment></comment></comment><comment><USER4> A standard might lead to slower innovation at this point.

</comment><comment><AUTHOR> The author focuses on document stores, but the same argument can be made to key/value stores.

It is time for NoSQL community to come up with a standard key/value API. Is anyone working on it?

As one commented said "JDBC came out ~25 years after SQL was created.". By today's standards 2.5 years should be about right time to expect a standard :)

<comment><USER5> Can't talk for the other NoSQL players, but for Redis this is more or less impossible since the key-value business is something like 10% of the current API. How to cover the other 90%?

Maybe in the future Redis may be able to listen in another port to talk the memcached protocol, but this is not an high priority feature for now.

What I think people should do is to abstract the interaction with the DB _in their code_. So that it's just a matter of writing adapters to support new KV stores, and this adapters can take advantage of peculiarities in specific stores.

For instance if using Redis one can use Redis Sets to take the list of friends. When using something different will serialize data as JSON, and so forth.

<comment><USER6> Since a lot of these different data stores have fairly different semantics, I'm not sure how much value there is in trying to create a common set of abstractions in your code.

<comment><USER5> There is a lot of value if the DB API is abstract enough, like:

        (id) addBookmark(title,url,taglist)
        (bookmark) getBookmark(id)
        (array) searchBookmarksByTag(taglist)

And so forth. You can switch from SQL to a NOSQL solution and so forth without to touch the app but just a single file with all the DB API.

If it's at very low level like Db.get(), DB.set(), ... is still useful if the application just using a strict common subset of features (get/set/exists/expire/incr).</comment></comment></comment></comment>


Developer CEO vs Sales Guy CEO - <AUTHOR> http://jmlite.tumblr.com/post/38548502524/developer-ceo-vs-sales-guy-ceo <comment><USER3> I've been trying to figure out why this piece sticks in my craw.

I am, for all intents and purposes, Developer Guy. I'm analytical. I write code. I solve problems, often with math. I've been "this way" my whole life. I've also been in many tens of thousands of conversations, with all kinds of people. Yet, despite having been in many conversations about everything and nothing at all, I've _never_ been tempted to question my conversational partner's ability to reason analytically based on their decision to ask non- technical questions:

\- If we talk about the weather, I assume we're making small talk.

\- If we talk about family and friends, I assume that they want to talk about something with greater personal meaning.

\- If we talk about their vintage peruvian bottle cap collection, I assume that they _really like_ peruvian bottle caps.

Likewise, when someone comes up to me and asks me some very intense technical question, I _don't assume_ that they aren't also evaluating my tone, posture, volume, poise, choice of words, etc. We're all human. It's all part of the game.

Sales Guy seems puzzled that Developer Guy isn't spending time on non- technical issues. But how does he know that? Is he assuming that Developer Guy doesn't care? Developer guy might just be _intensely interested_ in sales guy's specific knowledge. It happens.

What strikes me about this writing is not that Developer Guy and Sales Guy are different, but that Sales Guy is reconciling a stereotype of Developer Guy with his actual experience. And that's bothersome.

<comment><USER4> _I've been trying to figure out why this piece sticks in my craw._

Because it makes the _Sales CEO_ (whatever the fuck that means) sound like a Douche CEO. If he can stereotype people from a conversation, I can surely stereotype him from a blog post. Though that also makes me a Douche CEO...

In all seriousness, stop labeling people. Treat them as human beings. See the person behind the title. Most of the time, you will find someone who is geniunely smart, but absolutely has no fucking idea about what he/she is doing (like the rest of the world). Be it a sales person, a developer, a mechanic, nurse, lawyer, or a janitor. Human beings.

</comment></comment><comment><USER5> Developer CEO thinking = "How do I make this work?"

Sales CEO thinking = "How do I get his money?"

For many tech people, the product is the goal - getting some techie thing going. The other things (like: funding, getting some type of customer) are just tasks that have to be done but they don't really know or care about. Between them, the tech people are quite open (as the tech culture is based on Internet and open source) so any kind of question is fine - and when they find somebody that knows how to do the "other tasks" they try to get into details, as they don't have them.

For many sales people, the customer is the goal - attracting the customer to get his money. The other things (like: product/tech) are just tasks that have to be done but are done by someone else. Usually sales people are not talking shop (customers) between them, even if they work at the same company, so every time you ask them something they immediately wonder why did you ask that question, what is your hidden purpose and how they can benefit from it.

<comment><USER6> I would actually break successful CEOs into Developer CEO, Product CEO, and Sales CEO.

The Sales CEO tries to figure out what problems people have, and convince them that his company/product can solve those problems.

The Product CEO takes the hundreds of problems that exist in the market and come up with a product that solves a decent subset of those problems.

The Developer CEO figures out how to actually build such a product. They're responsible for solving hard technical problems and pushing the limits of what's possible.

(There is also a lot of overlap-a good CEO is usually an extreme generalist)

<comment><USER7> This is a good description of sales people, product people and developer people, but how does it relates to CEOs?

<comment><USER6> Every successful founder-CEO I know of is a generalist who's especially good at one of these 3, and their cofounders or early hires make up for their weaknesses in the other two areas.

That said, at large companies the dynamic is different. I know of one excellent CEO at a 5000 person company who spent almost no time on product, market, or operations. Instead, he spent all his time on the human element. Making sure that there were strong training programs, making sure that it was easy to transfer from one department to another (and instituting policies that managers _had_ to transfer star employees every two years or less), cutting through a lot of bureaucracy to make sure that star players could get promoted commensurate to their talents, etc. The company's performance and stock price skyrocketed during his tenure, and he was considered one of the best CEOs the company ever had.

</comment></comment></comment></comment><comment><USER3> _"I, on the other hand, find myself answering questions and wondering 'That's a great question. I wonder why he asked that question?....Whereas he based the value of the meeting on the quality of the data I focus on how much I think I got an accurate snapshot of how the person thinks and operates....It did make me wonder if the best leaders are capable of doing both."_

Yes, they are.

Dear, "Sales Guy CEO": if you again find yourself in the situation where you're in a conversation with a deeply analytical person, it's probably in your best interest _not_ to assume that your conversation partner is socially clueless just because she is asking good, specific, actionable questions. If they're smart enough to ask good questions, it probably means they're smart enough to read your reactions and personality, as well. You don't corner the market on that particular skill.

Honestly...this is why "sales guys" get a reputation for arrogance amongst nerds. People who grew up as social outcasts are often _keenly aware_ of the social dynamics of the world around them.

<comment><USER8> I didn't get the impression from the tone of this post that there was anything adversarial about their meeting, that the OP was saying he was better at social skills than the technical CEO, or that the OP was even judging his companion's approach, so much as observing differences and trying to learn something from them.

Your comment "you don't corner the market in this particular skill" is the most interesting part, it sounds like you are irritated that the assumption that technical and analytical people are somehow less sensitive but then your comment exhibits exactly the lack of understanding and immediate condescension which earns this perception. I doubt you intended it, but it's something to think about.

<comment><USER3> _"it sounds like you are irritated that the assumption that technical and analytical people are somehow less sensitive but then your comment exhibits exactly the lack of understanding and immediate condescension which earns this perception. I doubt you intended it, but it's something to think about."_

Well, that's a fine _ad hominem_ , but it doesn't address what I wrote. I'm clearly irritated by the post; that's not a mystery. But to argue that I'm being _patronizing_ , you have to ignore what I'm actually saying: we all have innate social skills, and that the author starts from the opposite premise. He's trying to figure out why this "developer CEO" is so _different_ , when the difference appears to be trivial (one person is asking analytical questions).

The original post was clearly phrased in an adversarial manner:

 _"Sales Guy"_ vs _"Developer Guy"_

 _"I, on the other hand..."_

 _"Whereas he based the value of the meeting..."_

 _"Where he took my generalized questions and drove them to specific topics - that was the interesting part. That let me know what's on his mind."_

Plus, there was the hint of a "gotcha" tone:

 _"That will give me the context for assessing future activities by his company."_

Basically, he's starting from the premise that this other person is somehow _not_ making these social judgments; that they're _not_ building a mental model of how their conversational partner operates. That's wrong, and it's (IMO) arrogant: his thinking rests upon the implicit assumption of The Other as a stranger. Not everyone makes this assumption -- many (if not most) people will start from an assumption of similarity on matters of human nature.

<comment><USER9> Actually think dmor nailed it, and your counter-examples here are just you putting them in your own context. I didn't pick up any of those innuendos at all.

<comment><USER10> I disagree, I think timr is correct, and despite him being criticized for poor socialization, he is in fact picking up the subtle but obvious social and language cues that you and dmor either fail to notice or choose to ignore.

This is clearly a compare and contrast piece. He is contrasting what he took from the meeting with what the Developer CEO took from the meeting, with a heavy implication that those benefits were exclusive to each other. He says it more or less explicitly:

"I suspect in his mind the benefit of meeting was directly related to his perception of the quality of data in my answers."

Also look at the language construct used:

"Whereas he based the value of the meeting on the quality of the data I focus on how much I think I got an accurate snapshot of how the person thinks and operates."

The google definition of 'whereas' is "In contrast or comparison with the fact that.".

To possibly overthink social cues, I think that timr wrote a true but slightly condescending response to a slightly condescending article. Since engineers commonly are condescending to sales people, and since HN is filled with contrarians, someone felt obligated to stick up for the sales guy.

<comment><USER11> >since HN is filled with contrarians, someone felt obligated >to stick up for the sales guy haha.. nice touch but going back to the article, look like a description from a meeting with a alien creature from another planet, and a sociological perspective of the meeting with this new race coming to the town of the bosses.. The Nerd Ceo

Is natural that the old school yuppie feel threatened by this new specie of ceo.. this new species are the one who will replace them in a near future..

Of course the tech ceo will need to suck the knowledge from the generation that were in the battle front.. thats his nature.. he is a hacker, he learn fast, he thinks fast..

this is not just about different points of view.. this is a generational clash.. two different generations meeting each other while they are all in the game..

this is the dawn of the salesman, and the rise of the geeks of course they are all afraid, they should be :)

<comment><USER12> Usually a large part of a ceo's job is human interaction. While it's not strictly necessary to have strong social skills to be a CEO, it sure is helpful.

</comment></comment></comment></comment></comment></comment></comment><comment><USER13> Interesting, and perhaps related, is the tendency of people who aren't socially inclined (and tend not to enjoy small-talk) to employ the ask-a- million questions technique. This is how many-an-engineer can muscle through the most awkward social interactions with ease. The upsides of this approach are: 1) you will seem genuinely interested and come across as personable, and 2) you get to learn new things.

<comment><USER14> Tip: if you're like me and not great at small-talk and so you find yourself falling into the ask-a-million-questions trap, try this.

Follow your mundane questions with a form of "do you like it?". It will usually break the conversation right out of 20-questions mode.

Example:

        A: What is your major?
        B: English
        A: Do you like it?
        B: Well, yes, but what most people don't understand about English majors is...

I picked this up on Reddit, and it really works. Give it a try!

<comment><USER15> That helps, but what a socially-adept person is usually looking for is for you to make a statement that relates their answer back to yourself and then gives them an opportunity to follow up:

      A: What is your major?
      B: English
      A: Oh, cool, I took an English course in college.  Probably nowhere near as detailed
       as your studies, but I enjoyed it.
      B: Oh?  Which course?
      A: Science fiction.
      B: Never took that one.  Which books did you read?
      A: A bunch of Heinlein, some Ursula LeGuin.
      B: I never liked Heinlein - thought he was a sexist pig.  I love LeGuin though.

The problem with asking a lot of questions is that there's unequal emotional investment between a question and an answer: the answerer is putting themselves out there a lot more than the questioner. (This is one reason why he who asks the questions controls the conversation.) If you're trying to build a relationship, this feels very awkward. Instead, the point of most conversations is to find & build a connection between the two people, one that lets both of them feel safe simply volunteering information and knowing that the other person is interested. By relating topics back to yourself, you a.) give both parties a chance to ask questions, and b.) show that you're in the same boat as them, and so they can feel free to open up to you.

Notice that conversations between close friends rarely have questions - <USER2> consist of people taking turns volunteering new information, often rather animatedly if they have good rapport with each other. Also look at Hacker News comment threads: people rarely ask direct questions, they just contribute additional information along the same lines as the original comment.

<comment><USER16> I think it's really rude to pretend interest in another person by asking questions, and then to start talking about yourself as soon as you can...

</comment></comment></comment></comment><comment><USER17> It is awesome that a Sales Guy CEO can be this perceptive and open minded. It is hard enough to find a Sales Guy CEO that isn't openly condescending to technical people...let alone one that listens to them instead of barking commands.

<comment><USER18> ... and of course the Sales guys have the opposite experience with Dev CEOs ;-)

</comment></comment><comment><USER19> He's taking a systematic approach to de-risking areas of the business that he doesn't feel comfortable with.

This is the same thing you do when you jump into a large code-base.

He's resisting the temptation to use sales skill on _himself_. Being able to create a reality distortion field is a useful skill for a CEO, but this skill shouldn't be trained on yourself.

When someone asks you a question you don't know the answer to (about your market, etc.), take note! Don't be that guy who just says: "Stupid investor. He doesn't get it." and ignores the question. Give the smartest reply you have, but let your lack of knowledge become a weakly held hypothesis. Then, attempt to validate or controvert this hypothesis.

In short, as a CEO, don't sell yourself too much. It blindsides you against what you should be learning.

</comment><comment><USER20> The developer CEO is trying to prove or disprove the model in his own head.

Whereas the Sale Guy CEO is trying to allow a model to form in his head.

I think you will learn more using the second method. But for a programmer to accept the second view is very hard. It requires us to shut the eff up.

<comment><USER15> Which one are you doing with your comment? ;-)

I didn't get that impression - I got the impression that _both_ CEOs are trying to form a model in their heads. But the developer CEO is building his from the bottom up - he seeks information on the details, and then will let general principles coalesce out of that data. The sales CEO is building his from the top down - he wants to understand the gestalt of the conversation first, and then he'll fill in the details later.

Computers teach us to pay attention to the details first, because they're very unforgiving if we get them wrong, while people will often fill them in for us if we provide a compelling-enough top-level vision. I find I thought much like the sales CEO up through college, while I'm much more inclined now to trust my intuition to produce a top-level picture once I've assembled a bunch of disparate facts.

<comment><USER20> With a bottom up approach you are trying to prove or disprove the model in your head. Or at least only slightly mold it.

There's no way to learn more than that because you've already fixed the foundation. This is a good strategy when you've already been working on something for a while and you have made some firm bets or if you've done this thing before to some relative success.

The sales guys is usually going to be better if you really want to understand a new customer from ground up.

Ie direction matters.

</comment></comment></comment><comment><USER21> Sales CEO: Ctrl+f "economoics" on your LinkedIn profile.

I think the difference is in your end goal. From the article, it seems that the sales CEO is more interested in the person, hence questions about the flow of conversation while the developer CEO seems interested in the product and domains that have a structure associated with them.

</comment><comment><USER22> From my experience, the sales guys seem to recognize the importance of engineering and product. It's we engineers who generally fail to see the value of sales. I cite this blog and this HN thread as evidence.

</comment><comment><USER23> Having been a Developer CEO, for me the best setup would be a Product Guy CEO, a Sales Guy CMO and a Developer Guy CTO. I want to focus on the tech, still have a say in the product and marketing areas but at the end of the day i want to build the thing from a technical perspective. YMMV

As the CEO there are just so many other things you have to take of, especially in small businesses. I have done it and always felt its stealing my time from coding and getting work done.

</comment><comment><USER24> I don't understand this article. I've reread it twice, and all I can glaen from it is "sales guy CEO" doesn't know how to ask questions, or is not of the analytical mindset.

Steve Jobs was the best salesman ever... but he was clearly of the analytical mindset, and not a developer CEO. Steve Jobs knew how to ask all the right questions.

I mean, yes, I know its unfair to compare people to Steve Jobs, but what am I missing?

<comment><USER25> Jobs was analytical? Brilliant, sure. But, perhaps more instinctual than analytical. Witness the endless tales of him not asking for input, not listening, not taking the advice of (undoubtedly analytical) others. Add killer instinct & stubbornness and you have something entirely different than either of the CEO's at breakfast.

</comment></comment><comment><USER26> There are few generalists. A good CEO is somebody who understands his limitations and keep his sides armed with best in breed personnel who are better at tackling those limitations. A some what developer+product CEO here :)

</comment><comment><USER27> not sure why but the title reminds me of www.thewebsiteisdown.com

<comment><USER28> I thought the same thing. I only recently found that series and I thought this link could be to a new episode. I wonder if a link to that series would be acceptable content on HN or would it be one of those things that should stay on Reddit.

I'd say, since it was so popular and well done, there's room on HN for it but I'm curious to hear what others think.

Edit: clickable link for those interested <http://www.thewebsiteisdown.com>

</comment></comment><comment><USER29> Vapid and hollow. An anecdote about one particular "developer" CEO's style compared to one particular "Sales" CEO's style.

Thanks for wasting my time.

</comment><comment><USER30> How does one without sales experience break into tech sales (b2b)?

<comment><USER31> Talk with people. It's really just that simple!

I'm stumbling into picking up b2b skills myself. That said, I'm lucky that I have a super technical biz where I'd only allow core engineers to be running the b2b sales convo with customers.

<comment><USER32> As if b2b Customer actually involve Engineers in the decision making process

<comment><USER31> Most businesses you are correct. My customers are not most businesses and never will be! :-)

Having customers you're excited to help succeed can not be underestimated as a valuable motivator. Most businesses aren't interesting to me, so I'm incredibly lucky that I'm in a space with really cool businesses. :-)</comment></comment></comment></comment>


Building vs. Buying an eSignature API - <AUTHOR> https://www.hellosign.com/blog/building-vs-buying-an-esignature-api <comment><USER2> I built a very rudimentary digital / electronic signature tracking app in Django several years ago and I would have gladly paid for this product.

Just like stripe, offering a service with a developer friendly API-first approach is great and I happily pay for someone else to be the domain expert.

Sucks when services go down or are complete black boxes but I've been using HelloSign for several years as a consumer and it's always been fantastic. This was a neat article and I'll be sure to use them the next time I need to integrate signing in an app.

</comment><comment><USER3> We built our own because it was about the same work to use an api as it was to just build a canvas solution. Inline pdf signatures are a little harder but we will be building that next. The first build literally took a few days. I understand paying $50 a month for docusign but it's baffling why anyone would pay $50k or $100k per year for what is essentially a feature.

</comment><comment><USER4> Realistically, probably _most_ organizations out there really don't need to spend the time or resources building a solution when super-customizable options like this exist. Just gotta get out of that mindset.</comment>


Six Key Principles to Set Your Startup Culture - <AUTHOR> http://www.caycon.com/blog/2011/05/six-key-principles-to-set-your-startup-culture/ <comment><AUTHOR> You cannot create a culture, only the environment necessary for the culture to thrive in. It is up to a leader to make this environment possible so as to attract the highest quality employees.

</comment><comment><AUTHOR> Definitely true: creating an environment where a culture can be created is a huge part of being successful and recruiting great employees.</comment>


Low Level Bit Hacks You Absolutely Must Know - <AUTHOR> http://www.catonmat.net/blog/low-level-bit-hacks-you-absolutely-must-know/ <comment><USER2> I was asked #1 "Check if the integer is even or odd" in an interview once. Not worded quite that way but that was the answer they were looking for.

12 years later not a single person I have hired could correctly answer that question[1] and most of them (almost all) have been great productive software developers. So "absolutely must know" is entirely dependent on the type of software you write.

[1] I don't ask it in the interview, I ask it after they are hired and have been with us a few weeks just for fun.

<comment><USER3> What did they usually say? I know the bitwise trick, but I would say "x % 2 == 0" if asked because it makes a lot more sense and will (almost) always compile to the exact same code.

<comment><USER4> In fact, newer gcc versions are unable to optimize (x & 1) == 0 at level -O1, and require -O2. I assume that the code emitted at -O2 and -O3 for both constructs is the more efficient version than the literal translation, even though they are the same number of instructions.

<comment><USER5> Apparently not true, at least in a simple function.

[https://godbolt.org/g/hfpHz7](https://godbolt.org/g/hfpHz7)

      int isEven(int number)
      {
          return number & 1;
      }

gcc 7.3, -O1, -O2 and -O3 (identical codegen for all optimization levels):

      isEven(int):
        mov eax, edi
        and eax, 1
        ret

<comment><USER4> that function checks if a number is odd, not even.

[https://godbolt.org/g/7Khcg9](https://godbolt.org/g/7Khcg9)

<comment><USER5> My bad. Didn't even check it at any point.

Anyways, you still prove my point. All those three are pretty close.

-O1 sete instruction is _very_ slightly unoptimal, but even it is just a fractional clock cycle.

</comment></comment></comment></comment></comment></comment><comment><USER6> The following is my go-to for bit hacks

[https://graphics.stanford.edu/~seander/bithacks.html](https://graphics.stanford.edu/~seander/bithacks.html)

<comment><USER7> Yes! This and only this! The posted "bit hacks" are little more than bit level manipulations exactly as intended. The Stanford hacks are truly excellent. My favourite is: [https://graphics.stanford.edu/~seander/bithacks.html#RoundUp...](https://graphics.stanford.edu/~seander/bithacks.html#RoundUpPowerOf2Float)

<comment><USER8> Of course, casting that int * to a float * is undefined behavior…

<comment><USER9> Yep the correct way is:

union { int i; float f;} u; u.i=*i;

Now u.f contains the same bit pattern as the integer pointed to by "i" but interpreted as a float.

Compilers know how to generate code efficiently out of this.

Iirc this is implementation defined behavior, e.g. things like endianness alignment or padding, but it's not undefined behavior, whose evil effects can bubble up in unexpected parts of the program that apparently don't even touch the bad cast.

<comment><USER10> Wow, never realized the pointer cast version is undefined behaviour in C. Is C++ equivalent via reinterpret_cast undefined behaviour too?

Back in my C++ days, I would much prefer pointer-cast to union-struct, because the latter was subject to alignment/padding issues you mention, while for the former, I know of no desktop architecture that could mess up a int* -> float* cast.

I'm also doubly surprised because being able to do that stuff is what I'd consider the selling point of C/C++ over higher-level languages.

<comment><USER11> Pretty much all pointer casts where you would use reinterpret_cast in C++ are undefined behavior, in both C and C++. The underlying rule for strict aliasing is essentially the same in both languages (you can only access an lvalue via a pointer of its type, with possibly differing signedness, const, volatile, or via a char pointer, or via a field of a struct that has the same initial layout if you're in that same initial layout portion).

Yeah, C and C++ aren't the language most people think they are, and the strict aliasing rules are the most clear manifestation of that.

<comment><USER12> Trouble is, C was that language. Lots of people came to depend on this. The world needs a language with this ability.

The replacement is often "gcc with inline assembly" or "gcc with lots of __attribute__ extensions such as __may_alias__" or "gcc with optimizations disabled".

The need doesn't go away, despite the wishes of a language committee now dominated by compiler suppliers. From day 1, long before the language was standardized and even before the original (not ANSI) book was published, C was being used with aliasing. It was, after all, developed to support the creation of Unics (before that became UNIX).

</comment></comment></comment></comment></comment></comment></comment><comment><USER13> The first one (check if an integer is odd or even) is a hack, sure. But I can't think of anywhere you'd use it in the real world over (n % 2), which almost everyone will understand much quicker what you're doing.

The rest aren't hacks, they're bit manipulations, which are crucial for those who need them, and just about useless to those who don't.

<comment><USER14> Strangely enough, I often find my self impulsively writing (n & 1) to check for even/odd numbers. It just feels natural to me -- maybe because the first C programs I wrote were for µCs, where this kind of bit-twiddling tends to be used everywhere, and, correspondingly, people know what (n & 1) does. Sure enough, even on microcontrollers (n % 2) has no overhead compared to (n & 1) when optimisations are turned on.

It only ever caught my attention that writing (n & 1) is weird when some TAs looking at my code didn't understand what I was doing during my first college year.

<comment><USER15> It feels natural to me...but I also like writing emulators, so I've probably got more experience in common with µC devs than most other software developers do.

</comment></comment></comment><comment><USER16> This stuff is now second nature to me after a couple decades hacking C, but boy if it was hard to find information on this stuff as a teenager in the early 90's.

It is easy to forget how much the internet, and the WWW in particular, has changed programming.

<comment><USER17> > It is easy to forget how much the internet, and the WWW in particular, has > changed programming.

It really hasn't. It's just that web programming gets all the attention. Those who write hardware controllers or do embedded use bit manipulation every day.

But, really, if web devs aren't familiar with this, why not? Do they not have settings to toggle in their apps?

</comment></comment><comment><USER18> I'm sure many will disagree, but bitwise operators and operations should be common knowledge for programmers. Why? Because it is linked to understanding how data is stored and manipulated by computers. Computer scientists and Engineers generally understand these operators, hackers and "coders" do not. With this opinion, the title does not match the content.

<comment><USER3> Is this not already common knowledge? It's taught pretty extensively in one of the required lower div CS classes at my university, and it's usually in other schools' curriculums from what I've seen.

<comment><USER19> So is calculus, yet apparently most CS students can't really integrate shit by the time they get to graduation...

<comment><USER20> Learned to integrate in High School, never used it again for years. Used in like 1 out of 5 Math classes at the start university. Haven't needed it for a good.. 13 years I guess?

Indistinguishable from "can't really integrate shit" without some hours of relearning.

</comment></comment></comment></comment><comment><USER21> Check out Hacker's Delight (2ed) by Henry S. Warren for more of this kind of stuff.

<comment><USER22> A _lot_ more, if the Amazon preview is any guide. It covers this ground with just the first couple of pages of chapter 2.

</comment></comment><comment><USER23> What is this now, junior programming lessons?

You absolutely must know these because they're dead obvious and if you're just starting out with learning programming these are some of the first things you will/should learn, right after how computers store data.

<comment><USER24> While yes, these are pretty simple statements, most of them only being 2-3 operations, I think you might be interested to know that not every programming curriculum even covers "how computers store data". I know a fair few programmers who came from backgrounds that either never touch the difference between an integer and float, or if they did, it was only to the point of "this one stores fractions, this one doesn't".

For example, no python course for scientists is going to go on in-depth about the difference between big and small endian - it just doesn't matter when you're trying to make a simple graphical model, it's far too low level. Binary operators work and are useful in JavaScript, but how many 6 week frontend bootcamps are going to cover them?

What I'm getting to here is that I don't think you can just dismiss things like this because your coding background covered them - there's some pretty clear gaps in a lot of peoples' knowledge and educating them is likely only a good thing.

<comment><USER25> > "this one stores fractions, this one doesn't"

This sounds like a fast trip to the land of direct comparisons of floating point numbers.

Further info: [https://randomascii.wordpress.com/2012/02/25/comparing- float...](https://randomascii.wordpress.com/2012/02/25/comparing-floating- point-numbers-2012-edition/)

</comment></comment></comment><comment><USER26> Here I thought this was going to be something like finding the next power of two[1].

Like a few other posters have mentioned, this is all basic bit manipulation stuff that you'd see in any perf sensitive/memory constrained codebase.

[1] [https://graphics.stanford.edu/~seander/bithacks.html#RoundUp...](https://graphics.stanford.edu/~seander/bithacks.html#RoundUpPowerOf2)

</comment><comment><USER27> Also useful to generate subsets since possible the number of subsets of a set of n elements is 2^n.

       for (int i = 0; i << n; i++) {
          ...
       }

(won't work for a large n)

Also... dividing by 2 is (n >> 1) and multiplying by 2 is (n << 1).

<comment><USER28> looping in order of subset size can be done easily too: [https://en.wikipedia.org/wiki/Combinatorial_number_system#Ap...](https://en.wikipedia.org/wiki/Combinatorial_number_system#Applications)

</comment></comment><comment><USER29> This assumes negatives are represented as two's-complement, but that's implementation-defined. Testing whether a negative number is even by ANDing it with 1 won't work in a system that uses one's-complement.

<comment><USER30> Which systems don't use two's complement?

<comment><USER31> [https://en.wikipedia.org/wiki/UNIVAC_1100/2200_series#Archit...](https://en.wikipedia.org/wiki/UNIVAC_1100/2200_series#Architecture)

"I'm not dead yet!" [https://www.unisys.com/offerings/clearpath- forward/clearpath...](https://www.unisys.com/offerings/clearpath- forward/clearpath-forward-products/clearpath-os-2200-software)

[https://en.wikipedia.org/wiki/Ones%27_complement](https://en.wikipedia.org/wiki/Ones%27_complement)

<comment><USER32> A handful of ancient legacy systems. Very few people today need to worry about their webapp being ported over to UNIVAC.

</comment></comment></comment></comment><comment><USER33> If you like this, you should check out [https://graphics.stanford.edu/~seander/bithacks.html](https://graphics.stanford.edu/~seander/bithacks.html) as mentioned elsewhere and also the book Hacker's Delight.

I would love to see these updated for SIMD and modern architectures (which change the equation quite drastically for bit hacking with 1 uop PEXT/PDEP/LZCNT/TZCNT), but that makes for a pretty huge area.

</comment><comment><USER34> See also: The Aggregate Magic Algorithms page

[http://aggregate.org/MAGIC/](http://aggregate.org/MAGIC/)

For example, Population Count instructions exist. But may actually be microcoded to count one bit per cycle.

Vectorizing your tallies can yield log time speedups:

Faster Population Counts Using AVX2 Instructions

[https://arxiv.org/pdf/1611.07612.pdf](https://arxiv.org/pdf/1611.07612.pdf)

</comment><comment><USER35> I'd recommend anyone who's into bit-level hacking to have a copy of Henry Warren's Hackers Delight [1]

Many of those nifty tricks are found in production systems today.

[1] [https://www.amazon.ca/Hackers-Delight-2nd-Henry- Warren/dp/03...](https://www.amazon.ca/Hackers-Delight-2nd-Henry- Warren/dp/0321842685)

</comment><comment><USER36> Amateur k user.

      /k3
      bh01:{*-1#(2 _vs x)&1}
      bh02:{(|(2 _vs x))y}
      bh03:{n:|(2 _vs x);n[y]+:1;:[x<0;-8#|n;|n]}
      bh04:{n:|(2 _vs x);n[y]-:1;:[x<0;-8#|n;|n]}
      bh05:{n:|x;:[n[y]=1;n[y]-:1;n[y]+:1];|n}
      bh06:{n:-1#& x;x[n]-:1;x}
      bh07:{n:-1#& x;m:& 8;m[n]:+1;m}
      bh08:{n:(*|& x)+1;m:n _!#x;x[m]:1;x}
      bh09:{n:|x;m:*&0 = n;n:& 8;n[m]:1;|n}
      bh10:{n:|x;m:*&0 = n;n[m]:1;|n}

      /examples:
      bh01 -98
      bh02[-133;5]
      bh03[120;2] / 120 set 2nd bit
      bh03[-120;6] / -120 set 6th bit
      bh04[127;4] / 127 unset 4th bit
      bh05[0 1 1 1 0 1 0 1;5]
      bh06[0 1 0 1 0 1 1 1]
      bh07[1 0 1 1 1 1 0 0]
      bh08[0 1 0 1 0 0 0 0]
      bh09[1 0 1 1 1 1 0 0]
      bh10[1 0 1 1 1 1 0 0]

Appreciated the help last time e.g. use of dyad # (take), indexing into list via juxtaposition (bh02) and use of dyad ? (find).

<comment><USER36> bh01:{*|2 _vs x=1}

</comment></comment><comment><USER37> \- A little off-tangent maybe, but are there other professions where this kind of once important but today less important (as some claim) knowledge exists? Is this kind of "knowledge degradation" common in other industries?

\- On a different note: how much of mem-space bloat can be attributed to this low-level neglect? Which of course is partly caused by modern languages / programming paradigms abstracting away this low level details for sake of higher level abstractions (which only seldom break, right ;)

\- honorable exception: erlang bit-level pattern matching and all the power that comes with it. Btw. did any other language/lib even try to imitate that feature?

</comment><comment><USER38> i dunno. only like 2 of these are "hacks". the rest are sooo basic. and he doesn't even have the classic swap 2 bytes/words (3 xors).

</comment><comment><USER39> Surprised I didn't see this one on the lists.

Shifting left by n bits on a signed or unsigned binary number has the effect of multiplying it by 2^n. Shifting right by n bits on a two's complement signed binary number has the effect of dividing it by 2^n, but it always rounds down (towards negative infinity).

</comment><comment><USER40>
      > if (x & (1<<n)) {
      >   n-th bit is set

Yeah, don't get a habit to do that. Instead:

      if ((x >> n) & 1)

if x is wider type that int or n, the result of (1<<n) may be UB, and in practice the generated code will be buggy.

</comment><comment><USER41> Years ago I recall reading a SIGPLAN paper where someone was trying to create a programming language where they represented bitwise operations and bitfields without primitive types.

For the purposes of doing bit packing and other manipulations, they treated the data as an array of booleans.

<comment><USER42> Hardware languages such as Verilog work this way natively.

</comment></comment><comment><USER43> Maybe I'm just off in my own little world but this seems a bit table stakes. Am I out of touch?

<comment><USER23> No.

<comment><USER44> While I am with you and the GP, other responses in this thread make it sound like we _are_ in fact out of touch. Or grumpy old greybeards now... Kids these days...

<comment><USER23> I suspect part of this is that hardly anybody that gets into programming professionally has any experience with digital logic, whereas the two used to go hand-in-hand.

But the level of this post is so low as to be next to useless, I clicked fully expecting to be amazed. The title could definitely do with an upgrade.

</comment></comment></comment></comment><comment><USER45> This is the most clickbait programming article title I've ever seen.

<comment><USER23> Agreed. I've flagged it.

</comment></comment><comment><USER46> As a Python developer who recently wrote a pure Python ECDSA/bitcoin library, these are very helpful. However performance is not always better. For example I had this function:

        def point_mul(p, d):
            n = p
            q = None

            for i in range(256):
                if d & (1 << i):
                    if q is None:
                        q = n
                    else:
                        q = point_add(q, n)

                n = point_add(n, n)
            return q

but when i changed the loop to this :

        for i in reversed(format(d, 'b')):
            if i == '1':

I found out it performed much better.

<comment><USER44> I 100% expect you're correct in your assertion, but here's the big question: do you know why the latter is faster than the former?

</comment></comment><comment><USER47> >y = x & (x-1)

Couldn't you also do: y = x & (~1) ? I'd think that would be slightly more efficient.

<comment><USER48> No, that unsets bit #0, not the lowest set bit in x.

Aka. that brings 01101₂→01100₂ correctly, but 01100₂→01100₂ instead of 01100₂→01000₂.

<comment><USER47> Ah, I completely misunderstood what the author was doing there.

</comment></comment></comment><comment><USER49> I can't imagine any use for #6 on.

<comment><USER48> It's useful when you want to find the next free slot in some contiguous store. Normally you'd use ctz, but sometimes you only want 1<<ctz. An example is n-queens, eg.

[https://codereview.stackexchange.com/questions/75517/n-queen...](https://codereview.stackexchange.com/questions/75517/n-queens- brute-force-bit-by-bit)

</comment></comment><comment><USER50> How often is this doing work that the compiler is going to do for you anyway?

<comment><USER51> I'm not sure I understand the question. The first one about detecting if x is odd or even is usually what the compiler will optimize the more common (x%2) == 0 to.

Other than that, these are things that you have to do yourself. You can't call compiler.setMySeventhBit();

If you need to be able to flip and check bits, you have to do it yourself.

</comment></comment><comment><USER52> How are these hack? This is standard bit masking/manipulation? Every CS student learns it and the C Programming Language has examples of it.

</comment><comment><USER53> Nice, but hard to read and compiler does it anyway.</comment>


Why Was Apple Late To The PRISM Party? - <AUTHOR> http://techcrunch.com/2013/06/17/apple-nsa/ <comment><USER2> Rather than this stupid speculation (NSA bought NeXT hardware; therefore, they gave Apple immunity -- chew on that idiocy), perhaps Apple simply didn't have sufficient data to interest NSA?</comment>


A Walk Through to Building Your Website with HTML5 and CSS3 - <AUTHOR> https://medium.com/@iamraymondke/a-walk-through-to-building-your-website-with-html5-and-css3-3f056ede29fe <comment><USER2> Mozilla Developer Network has a much more comprehensive (and useful) tutorial that isn't subject to Medium's paywall.

[https://developer.mozilla.org/en- US/docs/Learn/HTML/Introduc...](https://developer.mozilla.org/en- US/docs/Learn/HTML/Introduction_to_HTML)</comment>


Bottender 1.0: An Elegant, Robust, and Powerful Chatbot Framework Is Born - <AUTHOR> https://bottender.js.org/blog/2019/12/05/bottender-1 <comment><AUTHOR> Bottender is a framework that helps you develop your chatbot with multiple channels in mind and you can at the same time benefit from the flexibility that other frameworks don't have. And also Bottender is the first framework I seen to use declarative API for chatbot, just like web frontend and mobile app do now (React, SwiftUI...). IMO, conversational user interface is a kind of user interface, so it should be treated the same way.</comment>


The Ethics of Biologically Enhancing Soldiers - <AUTHOR> http://www.theatlantic.com/technology/archive/2012/02/more-than-human-the-ethics-of-biologically-enhancing-soldiers/253217/ <comment><USER2> Telepresence, at least in terms of overall kinetic impact, is going to easily trump bioenhancements.

In other words, it's not the bio-engineered solider with the special enhancements that should concern thinkers. It's the remotely-controlled soldier of 2050 operated from thousands of miles away. Our bio-enhanced guy will be sitting in a Starbucks in Deluth slurping down a double-latte, not marching off to war somewhere.

As robotics takes off in 20-40 years, we're going to see a very real division between countries that can field robotic armies and countries that cannot. All the engineering the world isn't going to make a human emit less infrared radiation, or stop having the electrical signals that form a heartbeat. The history of warfare is just as this article indicates: a tool-using species coming up with more and more efficient ways to slaughter each other. Robotics offers the ultimate tools in this area: targeted lethality, impervious to human frailties, and an Information Age cleverness. They'll make chemical and biological weapons -- and enhanced ground pounders -- look like a day in the park.

You really don't want to be a freedom fighter in the year 2050. Or piss off a major world power.

<comment><USER3> _Telepresence, at least in terms of overall kinetic impact, is going to easily trump bioenhancements._

Combat AI makes much more sense, since they can react faster than a human sitting behind a computer separated by a further thousand miles away. The latency will add up, and reaction speed is going to be a decisive factors between combat robots. Telepresence might makes much more sense if you can decide on a slower time frame such as strategic or tactical decisions but those will be increasingly be made by the AIs or the humans near them.

<comment><USER4> "they can react faster than a human sitting behind a computer separated by a further thousand miles away"

Maybe. The problem is identifying friend and foes. An AI might need more time than an actual person. Beyond that, losing a robot is not a big deal compared to losing a person, so the mistakes made in the field (ex. killing an innocent person who happened to get in the way) can be lessened because the fear of death is no longer there for the soldier.

<comment><USER5> > Beyond that, losing a robot is not a big deal compared to losing a person, > so the mistakes made in the field (ex. killing an innocent person who > happened to get in the way) can be lessened because the fear of death is no > longer there for the soldier.

"Friendly fire" from remote-operated robots would be pretty hard for people to cope with.

'Robots killed my dad, a hero soldier who fought for this country' is a headline no-one wants to read.

<comment><USER6> FWIW, here are the causes of death of US soldiers in Iraq [1]:

      2573 Hostile action
      2496 IED
      665  Non-combat
      402  Helicopter accident
      361  Vehicle accident
      63   Unknown
      39   other-unknown
      31   Airplane crash

Over 800 are accidents, and IEDs are just enemy robots.

1\. <http://apps.washingtonpost.com/national/fallen/>

</comment></comment></comment></comment></comment><comment><USER7> Today's submission,

[http://www.theatlantic.com/technology/archive/2012/02/more-t...](http://www.theatlantic.com/technology/archive/2012/02/more- than-human-the-ethics-of-biologically-enhancing-soldiers/253217/)

is an older article (February 2012) from the same author as

[http://www.theatlantic.com/technology/archive/2013/01/could-...](http://www.theatlantic.com/technology/archive/2013/01/could- human-enhancement-turn-soldiers-into-weapons-that-violate-international-law- yes/266732/)

(4 January 2013), submitted to HN

<http://news.ycombinator.com/item?id=5010370>

with a confusing altered title.

</comment><comment><USER8> Ethics is a luxury for limited wars where you can't fundamentally lose anyway - where if you start losing, you can pack up and go home like in Vietnam, and BAM - no more deaths for you.

However, if a total loss (say, genocide of your people) is a possibility (as in parts of WW2 or the cold war mutually assured destruction) then the ends may justify the means. Quite a lot of means.

</comment><comment><USER9> You know the thing about majoring on the minors? Don't get me wrong, I'm all for intellectual pondering of almost any question, but let's not forget that before dealing with the ethics of enhancing soldiers, we might also need to consider the ethics of using them at all.

<comment><USER10> Yes. I see war as just about the ultimate unethical human activity.

The (non)ethics of enhancing soldiers and using robots pale in comparison to the (non)ethics of participating in warfare and weapon design and manufacture in the first place.

</comment></comment><comment><USER11> Why such an article on such a topic start with torture is beyond me. The question we should be asking, I think, is when (the "how" is no longer relevant now is it) we start engineering humans, how we avoid the situation that has been "documented" in every post-apocalyptic sci-fi where a superior species arrives (or created) and wipes out the weaker, non-engineered humans?

I am far less concerned with philosophical question, such as whether a person engineering to be the smartest would be smart on his own right; would a person engineered to be the strongest & fastest be a successful athlete in his own right, or is it simply an unfair inter-species competition which is no different than pitting a disabled person vs. a healthy one; etc.

<comment><USER12> Was this issue with atheletes not debated recently in the London Olympics with the man who had a blade replacement for a leg who was allowed to compete with non-augmented athletes?

I don't want to get into whether I think letting him compete against regular athletes was a good idea or not for that specific event. However I think there needs to be care because where is the line drawn? How advanced do his blades need to become before it's just not fair any longer?

<comment><USER5> > the man who had a blade replacement for a leg

Oscar Pistorius. He's a multiple gold medal winning Olympic athlete. He has two blades. (<https://en.wikipedia.org/wiki/Oscar_Pistorius>)

</comment></comment></comment><comment><USER13> Given our historically poor treatment of veterans, my main concern with biological augmentations is what happens to the hosts after they leave active service.

</comment><comment><USER14> Yes, these are fascinating new ethical questions.

 _watching legions of homeless, mentally ill vets mill on the street below_

</comment><comment><USER15> From where I sit, those "primitive" IEDs seem to be giving America and allies all we can handle in Iraq and Afganistan...

I get that technology is changing the world, and that drones HAVE changed the battle field already, but on balance it seems well known that one day we'll walk out of both of those countries either having lost or fought to a draw - how ever you want to spin it.

I don't see how an action shot of a solider leaping with metal assisted legs, never sleeping and eating grass will change that.

</comment><comment><USER16> Forcing modifications on a soldier is arguably ethically questionable but if these types of enhancements turn out to be safe enough (for some level of safe) then I and many others will voluntarily enhance ourselves.

I would like the gene that let's me eat without getting fat. I don't want to eat more. I just want to enjoy food.

Needing less sleep sounds awesome. I enjoy sleep but I could mostly skip the unconscious part. Would like to keep the dreams though honestly I hardly have any.

Stronger or more alert sound like awesome enhancements.

Telepathy is already here. It's called a cell phone with wireless headset.

</comment><comment><USER17> "our absurd frailty"

This framing devalues much of the content of the article. We are not frail.

</comment><comment><USER18> This Nature Future immediately came to mind:

[http://www.nature.com/nature/journal/v491/n7424/full/491488a...](http://www.nature.com/nature/journal/v491/n7424/full/491488a.html)</comment>


Congress passes bill for web accessibility - <AUTHOR> http://voices.washingtonpost.com/posttech/2010/09/congress_passes_disabilites_bi.html

<comment><USER2> And notice how they changed "requirement" to "objectives" in: [http://frwebgate.access.gpo.gov/cgi- bin/getdoc.cgi?dbname=11...](http://frwebgate.access.gpo.gov/cgi- bin/getdoc.cgi?dbname=111_cong_bills&docid=f:s3828rfh.txt)

Does that mean it isn't manditory? This is basically what I was saying here:

<http://news.ycombinator.com/item?id=1718230>

imo politicians are all about talk and bills, but when it comes down to making things easier on the handicapped, lobbyists win out.</comment>