Show HN: S – a tool for ssh like z for cd - <AUTHOR> https://github.com/haosdent/s

<comment><USER2> It's amazing to me how many people use ssh and don't have an ssh config. It would be easier to maintain a .ssh folder in version control then to install this on each host and ssh until it learns.

Your auto provision of servers with chef or puppet should be adding them to you .ssh/config with a pointer to the ssh key and special requirements like tunnels through jump hosts/ bastion hosts.

<comment><USER3> Are there any resources you recommend on maintaining a .ssh folder? I've done a little reading, but I've never really needed to worry about working with multiple servers before, but I'm going to need to learn soon for a project at work.

<comment><USER4> My set up dotfiles in a git repo (~/configs) with a Makefile that symlinks them to the correct location.

I'm hoping someone chimes in with a bit of a better solution but there's no reason you couldn't have ~/.ssh/config symlinked in the same way.

Make sure you know which version/s of ssh you'll be dealing with and make the config work with the lowest version

Some HN articles/discussions:

[https://news.ycombinator.com/item?id=4677049](https://news.ycombinator.com/item?id=4677049)

[https://news.ycombinator.com/item?id=7658459](https://news.ycombinator.com/item?id=7658459)

Some stuff changed in OpenSSH 6+ so read the manpages, too.

<comment><USER5> There is actually a reason you can't have ~/.ssh/config symlinked the same way: ssh refuses to read a symlink for this file (for security purposes it is strict about the file type and permissions). My workaround is to copy the file instead of symlinking in my dotfile-setup script.

<comment><USER6> I version control the entire directory (ignoring the known_hosts file) somewhere like ~/config/ssh and symlink it to ~/.ssh. It contains a Makefile with a target that runs this command:

        ln -s ${PWD} ~/.ssh

Just make sure the directory is chmod 700 and the important files in it are chmod 600.

<comment><USER2> Also ignore any private keys. For security, but also each host should have a different key so you can burn one without burning them all.

</comment></comment></comment></comment></comment></comment><comment><USER6> Just my 2 cents, but I feel strongly that publicly released programs should be named with a minimum of 3 characters, reserving shorter names for user aliases and local commands.

</comment><comment><USER7> This is nice, but I also like the way fish ([http://fishshell.com/](http://fishshell.com/)) handles auto-completion:

When I type `ssh<tab>`, I get a list of hosts from my ~/.ssh/config plus hosts I have previously used.

I can actually use `ssh hn<tab>` and it gets auto-completed to `ssh hostname` because "hostname" is configured in my ssh config. The same works for `ssh user@<tab>`

<comment><USER8> fwiw, bash autocompletion does this automagically, too, but you might need to enable it. .ssh/config is definitely the canonical place to keep this stuff, but I like @haosdent's ranking concept. some of my boxes I rarely log into, and others I log into all the time.

</comment></comment><comment><USER9> I had to look up what z for cd was, so to save others the trouble, here's a link (hopefully the original...):

[https://github.com/rupa/z](https://github.com/rupa/z)

SSH hosts tend to be long, so this seems like a good idea. I realize the .ssh/config exists, but this doesn't require setup per server.

<comment><USER2> > but this doesn't require setup per server.

Well you have to ssh to the serer a few times?

</comment></comment><comment><USER8> Userify supports jump box creation[1] (automatic .ssh/config coming soon as well) and with bash autocompletion, you can hit any host in .ssh/config.

Is there any way to add ranking variables to .ssh/config that a regex or autocompletion script like this could read but plain SSH would ignore? 'bad configuration option' if I stick in an unrecognized variable name. Embed in comments?

1\. [https://userify.com/docs/tips/jumpbox/](https://userify.com/docs/tips/jumpbox/)

<comment><AUTHOR> I think we could add rank like this:

Host xxx

        Rank 2

</comment></comment><comment><USER10> Wouldn't you just use vssh and be done with it? [http://www.velestar.com/Pages/VSSHOSXPage.aspx](http://www.velestar.com/Pages/VSSHOSXPage.aspx)

Or am I missing the point?

</comment><comment><USER11> Nice! I use warp [0] to manage ssh hosts, but I could see myself using this too.

[0] [https://github.com/jpalardy/warp](https://github.com/jpalardy/warp)

<comment><AUTHOR> Looks nice!

</comment></comment><comment><USER12> I usually do "CTRL-r ssh" to accomplish this. Maybe not as complete, but enough for me.

</comment><comment><USER8> this is fantastic work @haosdent - I'm working on adding automatic .ssh/config generation to Userify shortly. Could this read .ssh/config and build initial db for that?

<comment><AUTHOR> Let me try :-)

</comment></comment><comment><AUTHOR> s is a tool for ssh like z for cd

<comment><USER13> just like there is .ssh/config for ssh, there is $CDPATH for cd.</comment></comment>


Ask HN: What is your 'end game'? What kind of life are you striving to live? - <AUTHOR> Something that's been on my mind lately. I enjoy the depth of thought on HN, I always learn the most here. <comment><USER2> Waking up to a (very good) cup of coffee.

Donning a favorite old band t-shirt, some ragged hoops shorts, flip-flops, and sipping my coffee on the back deck of a VERY modest, but paid-off, house. Watching the deer from said deck.

Then riding my bike into town (TBD, but someplace with <50K people) to a part- time job at the local supermarket. Plan B: doing the same at a local, for- young-people rural incubator & being the wise software sage. Making enough to pay for a Lagunitas Lil Sumpin or two.

At night: dinner with friends. Probably a bowl of pho. Steakhouses (and the requisite dress codes) are for other folks.

Twice yearly: taking the trailer to a coast. Probably alternating between Port Aransas, Texas and the North Carolina barrier islands.

<comment><AUTHOR> I like you. I'm halfway there already and will soon have the rest. I'm 28.

I drink coffee I got from Colombia or Guatemala in the morning. While the coffee is brewing, I go through everything I'm grateful for and brush my teeth.

I drink my coffee while I check my email, reddit, HackerNews. I make a list of everything I need to do or continue the list from the previous day. I don't have Facebook, rarely check Twitter or Snapchat, save Instagram for later in the day or bathroom breaks. I turn on some good music that isn't overwhelming too sometimes.

I'm a consultant/creative director, I work remotely. I wear a comfy tee (band, Star Wars, plain) and sweat pants or basketball shorts.

I'm scaling my agency/consultancy at the moment by adding bigger and more interesting clients. I have gotten out of debt and started saving money to reinvest into some side projects that can become income streams.

The end goal: to own a camper van and travel all of North America with my camera while running this company from coffee shops and BnB's. It would be nice to share this with a dog and a woman, but the latter is optional. I can save money from my income streams to travel the world and eventually buy a cabin/farm out West somewhere, live a quiet and peaceful life away from the hustle and bustle of the city but still have good wi-fi and good shipping times from Amazon.

In the last year, I've quit drinking, smoking, and meat. I've added meditation, yoga, and grown closer to my family. I don't feel the need to 'change the world' or 'be the best' anymore. I just want to be a nice person, enjoy my day, create value for others.

I'm so glad I asked this question, I don't feel weird for not wanting the 'SV dream' anymore.

<comment><USER2> Good for you. It's quite liberating to actually put this stuff to paper. Thanks for posting the question!

</comment></comment></comment><comment><USER3> 10 million GBP to eliminate need for money.

Retire and use my data engineering and deep learning skills to help genetics and drug discovery field. I think this area is ready for vast technological improvement, and we can help alleviate a lot of suffering here.

Almost at the 10M, maybe in 1-2 years I'll be there

<comment><USER4> The time is right for applying data engineering to drug discovery. Probably the best time ever to work in this field, and markets like this don't last long.

Why not start pursuing this right now and earn a smaller paycheck (presumably compared to what you do now given your net worth :) rather than wait until you hit your net worth threshold?

<comment><USER3> I'm working on it part time. The largest problem at the moment is datasets, I have crawling infra that has about 280GB of molecular data pulled from universities and every public dataset I can find.

I've also gone quite far into novel vectorization and auto-encoder spaces, and have several models now ready

I need to sell my company soon, that'll push me over the line, then I will get to work.

Do you work in the field? We should keep in touch ...

<comment><USER4> Not bad for a side project :). I work in drug dev and dont understand the technical side of Ai one bit, but from conversations with folks who do (at big companies and universities) the compute resources and models certainly are challenges, but the lack of good datasets is the real bottleneck

What's your thesis / search space if you dont mind me asking? Ie virtual structure or ligand based screening with structure or affinity data, machine vision for analyzing cell based assays or histology slides etc, lead optimization, mining annotated genomic data etc

</comment></comment></comment></comment><comment><USER5> To own a house. To not be on abject poverty as I grow old. Two goals that should not be this hard, except we are now in a society of rich and poor and I'm not rich, I'm poor.

<comment><USER6> May I ask why you want to own a house? I am kind of realizing that the majority of people in the world do not own a house.

<comment><USER7> Because then it's yours. If all else fails you have 4 walls and a roof over your head. Also it's not fair to compare an individual to the rest of the world due to the large and varied place that it is.

<comment><USER8> But in the US, some people argue that the house is not completely "yours" \- if you don't pay your (ever increasing) real-estate taxes, the house may be taken from you.

</comment></comment></comment></comment><comment><USER4> I was thinking about this the other day. I'd like to provide my family with all they need to be happy (but not necessarily all they want), to live somewhere near nature and have a small farm / garden, and spend my time learning about science, software and medicine and applying that knowledge to solve problems

Then I realized I'm doing a lot of that now, but without much financial security and with a lot of stress. I live in a small apartment but my gf and I have a nice outdoor garden in our complex, I volunteer at a ranch working with kids with disabilities on weekends, and all of my work is at startups trying to use science and software to solve medical problems. I make a small fraction of what I did working in finance, at the moment not enough to save much even with low expenses, and the stress of trying to make super early startups work is real, but I really enjoy my work and have almost complete control over where and how I work. My biggest worry is not making enough to provide for the family at this point. I have a few years to see if I can make it work until this issue trumps all others and I'm forced to get a "real" job, make enough money, and then retire to do what I'm doing now :)

</comment><comment><USER9> I haven't really come up with the perfect endgame yet, but some ideas I've had:

      Teaching in an university or such (I love teaching)
      Traveling the world to meet my friends
      Financial freedom to do things I'm interested in (racing, VR)

<comment><USER10> I'd love to have enough $$$ to spend 3-4 months each summer living and driving the Nurburgring. This is what I'm working towards in life.

Right now I go once a summer and it costs about $3000 - all in. That includes hotel, food, track car rental and lap tickets.

When I have more capital I want to build a car for the ring and get a lease on a house, but that requires about $50,000 disposable income (Year 1) that I don't have at 25YO.

Disclaimer: I am British and live in the U.K., prices in USD because of the wider international audience on HN.

<comment><USER9> Sounds great! I'm looking to race a little closer to where I live, maybe karts or something like Legends Cars.

</comment></comment></comment><comment><USER11> My end game is the same as everybody's: to die and eventually be forgotten, along with whatever I may have done while here.

</comment><comment><USER12> Financial freedom so I can work on whatever I want.

<comment><USER6> And what do you want to work on?

</comment></comment><comment><USER13> I'd like to be a good role model for my kids and help some people along the way.

</comment><comment><USER14> Goal 1: make $25 million to take money out of the equation for my work plans

Goal 2: hit the three coma club (billionaire) and ensure long-term cryogenic storage for me and my wife at EOL

Goal 3: solve the global food and clean water crisis

<comment><USER15> Ambitious. So, how are you doing ?

<comment><USER14> Currently at my third startup, first one with a steady revenue stream.

</comment></comment></comment><comment><USER16> Be healthy and rich. Live in NYC.

Build a startup in the field of AI.

Spend my free time writing comedy (and get really great at it).

Maybe teach the stuff I've learned about startups/CS (through articles/books/video courses).

Find a group of good friends. Get a dog.

Invest in life extension and cryonics so I'd get to enjoy my life for as long as possible.

Really long term:

Live long enough to upload my brain, and merge with AI. Explore the universe, learn everything there is to know. Create a universe that doesn't suck (or fix this one).

</comment><comment><USER17> Get a remote job (and keep getting them) that's interesting enough, move to a smaller town. That would free up so much time and energy to help experience life with my family by spending time with them, travelling etc. while also allowing me to have both the time and energy to learn about stuff, which is the only other thing I care about really.

A somewhat hedonistic pursuit but whatever works.

</comment><comment><USER18> As soon as the "internet form space" becomes a reality in the next few years, I am selling my house (my kids are almost out the door) and buying a catamaran and sailing around the world with my wife for the next 10 years (or whatever we feel like), until I find a place I like to spend my golden years, reading, fishing, etc...

</comment><comment><USER19> If there is somewhere the meaning of life, we did not discover it precisely yet. It means, it must be beyond our scientific knowledge. Therefore, anyone who helps to expand the knowledge in any way, helps to find the meaning of life. The catch is to take part in this process hoping that the answer might appear already during the life.

<comment><USER6> Meaning of life isn't going to be found by scientific knowledge. Sorry to burst your bubble.

<comment><USER19> You, of course, may be right. But if you cannot prove it, you shoudn't be too sure.

<comment><USER6> This is such a silly way of thinking.

Everything in the world cannot be proven. Everything that cannot be proven sufficiently to you right now shouldn't be assumed to be untrue.

<comment><USER19> This reply is quite rude. I will ignore the insulting part.

Scientific knowledge [0] is in principle the only true knowledge in the word. It is repeatable and testable, which means it is reliable and can be applied. (By the way, too many people do not know what science means. They think it is just one of the ways to discover the world...)

If the meaning of life exists, it must be possible to find it with science. I see no contradictions here. If you see, you are welcome to reveal them if you will.

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

<comment><USER6> >It is repeatable and testable

Except when it isn't and when it isn't.

A vast majority of articles published right now will never even be reproduced and yet we take nearly all of them as if they are gospel.

>If the meaning of life exists, it must be possible to find it with science. I see no contradictions here. If you see, you are welcome to reveal them if you will.

Science is based on some kinds of assumptions taken on faith (like every thought system). Here are a few (there are more surely).

1) Everything is observable to us as human beings.

2) Everything scientific will be reproduced and confirmed by someone else despite there being very few financial incentives for anyone to undertake all this costly reproduction and confirmation.

For (1), we know that there can be multiple dimensions, yes. A 2d figure can never really experience and observe the third dimension. He can only wonder about it, ponder about it, conjecture about it, but never know it because his physical senses will not let him understand that third dimension. Observations are powerful but they are limited by our observing senses. For (2) there have been countless hoax papers snuck into scientific journals, I don't need to cover this too much. Most scientific work is not reproduced, but posting it online will make most people think it is true.

You also forget that the meaning of life may exist and yet operate in a way we cannot sense. Just as there are planets we cannot see and may never be able to confirm.

<comment><USER20> >we take nearly all of them as if they are gospel.

No we don't. You are projecting. Look up "projecting" if you don't follow what I mean.

Science is not what you seem to think it is. Anyone who says science operates on faith is mistaken and ignorant.

Many such people like you are insanely overconfident about their knowledge and refuse to consider that they might be utterly wrong.

>Observations are powerful but they are limited by our observing senses...

omg this is so wrong I don't know where to begin. There is such a thing as tests which can be devised to go way beyond our senses while still giving us the ability to falsify theories...

</comment></comment></comment></comment></comment></comment></comment><comment><USER6> End game is to move back home and bring back the share of the first world which was stolen from my home and planted there.

<comment><USER7> I'm confused.

</comment></comment><comment><USER21> Bare-minimum, subsistence (+laptop +internet) lifestyle, fully supported by independent game programming.

</comment><comment><USER22> FIRE and move to the Netherlands. Work on open source projects.</comment>


60 best open source tools to do DevOps - <AUTHOR> https://elasticbox.com/blog/devops-open-source-tools/

<comment><USER2> Missing Nix/NixOS/NixOps :( Which is build, continuous integration, deploy, configuration management and provisioning. Everything with a single language.

</comment><comment><USER3> I miss GNU Make in "build & test automation" section.</comment>


Google's Competitors Falsely Claim Google Dominates Because It Was 'First' - <AUTHOR> http://www.techdirt.com/articles/20110921/14190816043/how-quickly-we-forget-googles-competitors-falsely-claim-google-dominates-because-it-was-first.shtml <comment><USER2> It was the first one that didn't suck and it was the first one that made money.

Infoseek was the first search engine I saw. They were thinking of charging people for subscriptions.

Altavista came out with a bigger and fresher index, for a year or two they were the best, but they were being totally rolled by spammers, just like the others.

Then there was Google, which was spam resistant and much more relevant than the competition. Then Google figured out how to make money and nobody's caught up since.

Arguably Bing "doesn't suck" but it doesn't make money.

<comment><USER3> "It was the first one that didn't suck"

That's also untrue. I remember being viscerally mad at Yahoo for moving away from Inktomi because Inktomi results were much better for what I searched for...or I had gotten my searches to work for Inktomi. Who cares? Eventually, Google got better, and I started using them.

I use a lot of Google services, but when I search the web I use Google because it works. Searches have very little traction. The only thing it takes to move my searches elsewhere is consistently better results. All it takes for me to try a new search engine is Google not working well a few more times a month.

<comment><USER4> Lycos was ok in the super early days but as the amount of content increased a simple search engine was no longer effective. Inktomi was great because it didn't have portal-bloat and it had pretty high quality results. But when google came around it blew everyone out of the water because not only were the results generally of higher quality but it was enormously faster. Combined with a smart datacenter strategy and a smart advertising strategy they dominated the market with ease.

Edit: To follow up, google was able to deliver better results (due to pagerank) faster (due to map/reduce and sharding) cheaper (due to highly automated data centers filled with commodity hardware). This combination set them up for dominance, the ability to generate better, more context appropriate ads (due to pagerank, map/reduce, etc, etc. and an effectively massive excess of processing power per search) and the ability to be profitable at a much lower CPM for ads (due to cheaper operations) was what allowed them to become a multi-billion dollar company and leave all other search companies in the dust.

</comment></comment></comment><comment><USER5> Wow, the arguments as to why google is a monopoly are almost surreal. It seems that the main argument is that they have a better/popular product and hence they should be punished for that. Whomever is pulling the strings from behind is really playing dirty. I hope it comes back to bite them in the ass big time.

This whole thing looks too much like a witch hunt.

<comment><USER6> You are offended because Google is being held to a different standard, and you are right. That's the whole point. Monopolies are held to a different standard. This exercise is about determining whether a) Google enjoys a monopoly and b) has abused it to the detriment of competition. The nature of this process is ugly, and everyone involved is self-interested. But I don't think it is a "witch hunt".

The question is not whether Google does good work, or that its search engine is popular on its own brand & merit. It does and it is. The question is whether Google is using its dominance in one area (telling people where things are) to gain dominance in other areas (telling people to use its products over others).

Even if Google's non-search products are _objectively better_ , it can be a bad thing in the long run as the next generation of competitors are locked out by Google's dominance in search.

Defenses like "competition is one click away" are disingenuous, in my opinion. Clicks follow a power-law distribution. But I don't know what the right answer is. This might all be sour grapes. That's what the hearings and investigation are supposed to reveal.

<comment><USER7> > Even if Google's non-search products are objectively better, it can be a bad > thing in the long run as the next generation of competitors are locked out > by Google's dominance in search.

The problem is in how you try to fix this. You could just as easily end up hobbling google with nothing to show for it but enabling the last generation of middlemen to stick around even longer.

(Nextag and Expedia come to mind...)

> That's what the hearings and investigation are supposed to reveal.

Here's hoping. These proceedings aren't big on subtlety, so unless there's a smoking gun, I'm expecting mostly innuendo and posturing from everybody.

<comment><USER6> The remedies tend to be forced divestiture (eg, Google forced to some portion of DoubleClick, I forget which one), full breakup (a la AT&T), or huge fines (as with Intel in Europe).

None of those are surgical. The breakup of Ma Bell may have helped competition, except that instead of a national monopoly we were saddled with a dozen regional monopolies. It's all a huge mess and I wish I knew the answer.

</comment></comment></comment></comment><comment><USER8> First?! Geez louise, I still remember the day when I first heard about Google while talking to a computer nerd friend of mine over AIM. We were probably discussing an article on Slashdot. I still remember the days when I was constantly evangelising the awesomeness of Google and secretly changing the default home page for everyone else in my family. Good riddance Yahoo, Infoseek, Lycos and Altavista. Good riddance sneaky sponsored search results.

</comment><comment><USER9> When people testify before congress like this, is it under oath? Lying to congress should be considered perjury.

<comment><USER10> It is under oath. This is not the kind of thing that should be prosecuted. Jeez.

<comment><USER11> Why not? A paid mouthpiece saying something false in order to mislead Congress into doing what his paymasters want seems like a serious issue to me.

<comment><USER12> He might be saying something false, but he's saying something he believes is true. They're not asking him for an account on some event that took place, they're asking for an opinion.

Lying under oath has to be a clear and deliberate misrepresentation of the truth. That can't be proven in this case. It's a perfectly valid opinion to believe that Google is successful because it was first, whether you agree with that opinion or not.

<comment> brown9-2 Is believing that the sun revolves around the earth a valid opinion?

<comment><USER13> It is if you accept relativity's statement that there is no privileged reference frame.

That said, you'd have to be clueless to think that there were no search engines before Google. Haven't they at least heard of Yahoo?

</comment></comment></comment></comment></comment></comment><comment><USER10> By "got there first" he could quite likely mean that they were the first to achieve search market domination, which is entirely true.

<comment><USER5> Is there any indication that that is what he meant?

<comment><USER14> It seems like a pretty ridiculous definition considering the words chosen. Getting there first implies doing something first. Google didn't invent search nor did it invent the business model of PPC (GoTo/Overture did it - who were bought by YAHOO).

</comment></comment></comment><comment><USER15> > _Being first to market does grant a significant advantage._

This was the first comment I saw on the article and I immediately began to cringe. This is so dead WRONG! For the life of me I can't find the reference but I believe their is a book that talks solely how being first in a market is a massive myth.

<comment><USER16> Not intended to come across as aggressive, but have you started a business? How about one that competes with entrenched players in an existing space? Or one that appears on page seven or eight in Google for relevant search queries when your competitors are on page one?

There is a reason most YC companies are trying to disrupt markets rather than compete head-on-head with existing business models. Because while it isn't impossible to break into markets dominated by competitors, it is much harder and you are at a severe disadvantage. How do you reach consumers? How do you build brand awareness? How do you advertise profitably? And why should the NYT or RWW or anyone write about your business when there is already a bigger story out there?

There are ways around these problems, but they all involve tradeoffs that work against small startups and that take time and money to overcome. Blogging heavily to try to overcome SEO problems will take at least 12 months in the best case to see any results and gets less effective every year, while requiring quite a bit of work up-front that does not drive revenue. Viral loops can take time to function effectively in the real world. And meanwhile you have to be building something that _will_ drive revenue eventually in addition to addressing user concerns, iterating and improving your product.

Your best bet is often just to produce something really good and aim for word- of-mouth. But even in this case, your speed of growth will be much slower than initial entrants ceteris paribus, and you'll often need to compete by giving more stuff away for free. If Google didn't have VC funding they wouldn't have been able to spurn the sponsored placements that their competitors used and would have ended up with an internal marketing department. Would their product have seemed so much different/better then? So ask yourself -- can you give away your product for free for four or five years while you find a better way to make money (AdSense)? And do you really have an advantage in this search compared to your profitable competitors who are also looking to innovate and improve their products, and who also have non-trivial budgets to back their development efforts?

<comment><USER15> Not aggressive at all. Yes, I've started two actually (completely boot strapped mind you). One was a creative agency (huge market saturation) and one that is a niche social network (another huge market saturation). I haven't technically started my third, but I am essentially responsible for growing a consulting practice right now.

> _There is a reason most YC companies are trying to disrupt markets rather > than compete head-on-head with existing business models._

I also think the reason most YC companies disrupt markets is because they are generally younger and less experienced entrepreneurs who have little to no market network. And in many cases either sell B2C or sell to B2B to the same tech companies that sell B2C. Many small businesses (the one I worked for currently) are created by individuals who have massively entrenched business networks. The practice I currently am growing has gone from 3 people to 10 by the end of the year. We compete with IBM, Accenture, Capgemini, etc. in the professional services industry. We do ZERO SEO or generate word-of-mouth. Are we disrupting a massive services industry market? Yes.

Honestly I feel like you've gone off on a little tangent here about my original point. While you've raised many wonderful and valid points (that I don't have the time to give my answer) it doesn't negate the fact that being first really doesn't mean anything other than "I learned a lot". Ideally I want to be third or fourth, so that way I can just take all of the painful (read->expensive) learning experiences that the first guy did when trying to capture his product/market fit and just run off from there.

Categorically, let's look at some successful companies/products - Apple's iPad/iPod/iPhone - not first / Google's search - not first / Ford's Automobile - not first / Reddit - not first / Microsoft Office - not first

Being first as a qualifier for success is a myth. Doing it RIGHT first will make you successful.

<comment><USER17> Your experience is much more representative and more likely to succeed. Noting that there is a shortage of Italian restaurants or exploitation of a scaling problem in advertising and so on is how most successful companies get built.

More deeply, it is a strange incoherence: "only disruptive companies are successful" leaves you wondering what there'd be to dirupt, since everyone else went bankrupt years ago.

<comment><USER16> I'm not saying only disruptive companies are successful. Nor am I saying first movers are. I'm saying that it is more difficult to be disruptive if you aren't among the first solving a particular problem.

<comment><USER15> When then you're technically no longer disruptive because the market is already established.

[http://steveblank.com/2009/09/10/customer-development- manife...](http://steveblank.com/2009/09/10/customer-development-manifesto- part-4/)

</comment></comment></comment></comment></comment></comment><comment><USER18> That's besides the point, even if the writer is 112% correct. What you do with the power you have now, no matter how you got it matters. But advertising based search engines are biased, they will want you to click on ads and will favor their partners (brands.)

Larry and Sergey were right, it's a shame they fell for a few $billion more:

"Currently, the predominant business model for commercial search engines is advertising. The goals of the advertising business model do not always correspond to providing quality search to users."

"But less blatant bias are likely to be tolerated by the market. For example, a search engine could add a small factor to search results from "friendly" companies, and subtract a factor from results from competitors. This type of bias is very difficult to detect but could still have a significant effect on the market. Furthermore, advertising income often provides an incentive to provide poor quality search results."

<comment><USER18> For those that didn't notice, this is from Larry and Sergey's original PageRank paper <http://infolab.stanford.edu/~backrub/google.html> , before Eric Schmidt showed up as the "adult." Google is now the largest advertiser on earth.

I agree 100% with them here!

</comment></comment><comment><USER19> "They dominate just because they got there first"

An argument quite often used by those who can't compete on the same level.

Google is leading not because they were the first, but because they serve their customers well and continue to evolve. Go to the Google blogs and you will see great examples about how they spend lot of time trying to understand what users are meaning with their queries and refining the search to provide more relevant results.

</comment><comment><USER20> Using their search home page recently to promote their new social network, for example? Pretty hard to compete with that kind of marketing coverage if you were trying to launch your own social network...</comment>


Toyota and JAXA plan to send space rover to the moon in 2029 - <AUTHOR> https://www.japantimes.co.jp/news/2019/03/12/national/toyota-jaxa-plan-send-space-rover-moon-2029/ <comment><AUTHOR> Here's a short news video of the vehicle :

[https://youtu.be/97gsm3TFd4E](https://youtu.be/97gsm3TFd4E)</comment>


A Verizon Billing Classic: $0.002 = 0.002c - <AUTHOR> https://www.youtube.com/watch?v=D2isSJKntbg

<comment><USER2> If the guy actually wanted to get the price he was quoted, he would have been able to, but instead he wanted to be a jerk and make a video

<comment><USER3> He was quoted a rate (0.002c per kilobyte data) and have already been charged $0.002 (per kilobyte data) instead. The total charge amounts to about $71.60 instead of 71.60c ($0.7260).</comment></comment>


ARM immediate value encoding - <AUTHOR> http://alisdair.mcdiarmid.org/2014/01/12/arm-immediate-value-encoding.html <comment><USER3> Thumb-2 immediate encoding is even more gleeful--in addition to allowing rotation, it also allows for spaced repetition of any 8-bit pattern (common in low level hack patterns, like from [1]) to be encoded in single instructions.

For those interested, check out page 122 of the ARMv7-M architecture reference manual[2]:

      // ThumbExpandImm_C()
      // </comment><comment></comment><comment></comment><comment>
      (bits(32), bit) ThumbExpandImm_C(bits(12) imm12, bit carry_in)
        if imm12<11:10> == '00' then
          case imm12<9:8> of
            when '00'
              imm32 = ZeroExtend(imm12<7:0>, 32);
            when '01'
              if imm12<7:0> == '00000000' then UNPREDICTABLE;
              imm32 = '00000000' : imm12<7:0> : '00000000' : imm12<7:0>;
            when '10'
              if imm12<7:0> == '00000000' then UNPREDICTABLE;
              imm32 = imm12<7:0> : '00000000' : imm12<7:0> : '00000000';
            when '11'
              if imm12<7:0> == '00000000' then UNPREDICTABLE;
              imm32 = imm12<7:0> : imm12<7:0> : imm12<7:0> : imm12<7:0>;
          carry_out = carry_in;
      else
        unrotated_value = ZeroExtend('1':imm12<6:0>, 32);
        (imm32, carry_out) = ROR_C(unrotated_value, UInt(imm12<11:7>));
      return (imm32, carry_out)

[1] [http://graphics.stanford.edu/~seander/bithacks.html](http://graphics.stanford.edu/~seander/bithacks.html) (worth a read on its own if you're into this kind of thing)

[2] [http://web.eecs.umich.edu/~prabal/teaching/eecs373-f10/readi...](http://web.eecs.umich.edu/~prabal/teaching/eecs373-f10/readings/ARMv7-M_ARM.pdf) (no-registration link)

</comment><comment><USER4> The set of representable ARM immediates is really nice. It's wonderfully useful for writing soft-float and math library routines, where you have very common values with just some high-order bits set:

        0x3f800000 // encoding of 1.0f

The set of immediate encodings, together with "shifts for free on most operations" (which are closely related features, as the OP points out), went a long way toward preserving my sanity when writing assembly.

Worth noting: thumb-2 immediates have a different (and even more interesting) encoding scheme. arm64 immediates are pretty interesting too (there the set of representable immediates is different depending on the instruction domain).

<comment><USER5> Honestly, with so few bits, I was expecting it to be a lookup table. (Yep, I've never wrote ARM assembly.)

But then, this way you have a nice set of imediates (as you said), and can set any value at all with at most 3 instructions at the rare case you need something different.

<comment><USER6> > I was expecting it to be a lookup table.

There's one ISA I've worked with before that does have -2, -1, 0, 1, 2, and some other "commonly used constants" like powers of 2 encoded specially in the immediate. I think it was an 8-bit, but I can't remember exactly which one. Anyone know what I'm referring to?

<comment><USER7> The MSP430 has a constant generator register, which depending on the access mode used will generate offsets and zero. I'm sure there are a few others.

<comment><USER6> That's the scheme. Although probably MSP430 took its inspiration from the one I had in mind since I was thinking of an 8-bit MCU from the early 80s - might've been Motorola.

</comment></comment></comment></comment></comment><comment><USER8> The Tensilica guys took this thing an extra step. ie- profile real code to find out what constants are most typically used, enumerate the top n constants, encode the constant with 0..n-1 in the immediate instruction - <USER2> immediate value is a hardware based lookup. You can still do arbitrary immediates with longer instructions but you can apparently get some nice code size reductions using this technique.

<comment><USER9> The flipside of that is that the scheme described here will take less silicon, fewer transistors and thus . . . use less power, if you happen to optimise the code appropriately.

Code size reductions are good, but for power purposes it is a case of balancing them against decoding complexity.

</comment></comment><comment><USER10> Holy crap. ARM's encoding makes so much sense... compared to what I have waded through at sandpile.org.

<comment><USER11> The x86 encoding actually makes sense once you begin to write its instructions using octal instead of hexadecimal numbers: [http://www.dabo.de/ccc99/www.camp.ccc.de/radio/help.txt](http://www.dabo.de/ccc99/www.camp.ccc.de/radio/help.txt) (this isn't mentioned in the Intel or AMD docs).

</comment></comment><comment><USER12> This encoding is nice given that they've already paid the price of having the 32b barrel shifter, but it was a non-obvious choice to have the barrel shifter to begin with. Most instructions don't benefit from the optional rotate, but they pay the price in the encoding and in the data path.

Interestingly, the website uses svg for illustrations, IE 8 and under be damned.

</comment><comment><USER13> I was left with one question after reading the article: the purpose of the condition field in the instruction.

<comment><USER4> In the ARM instruction encoding, _every_ arithmetic and logical instruction is "conditional". The destination register is either updated or not depending on the four bit condition field and the state of the condition flags in the processor.

As a simple contrived example, consider the following C code:

        int a[100], b[100], count;
        ...
        for (int i=0; i<100; i++) {
            if (a[i] > b[i]) count++;
        }

without conditional execution, one might compile this to code that uses a branch to either increment count or not; on ARM it would be more idiomatic to use conditional execution. Here's a very literal translation as an example (not tested, apologies for any inadvertent errors):

        // setup: a in R0, b in R1, count in R2, i in R3.
        loop: LDR   R4, [R0, R3, LSL #2] // load a[i]
              LDR   R5, [R1, R3, LSL #2] // load b[i]
              CMP   R4, R5               // if a[i] > b[i]
              ADDGT R2, R2, #1           //     count++
              ADD   R3, R3, #1           // i++
              CMP   R3, #100             // if (i < 100)
              BLT   loop                 //     continue loop

The fourth instruction, ADDGT, is _conditional_. Count is only updated with the result of the addition if the "greater than" condition is satisfied (the flags were set by the preceding instruction). To be more precise, all of the instructions here are conditional, it's just that for most of them the condition field is 1110, meaning "always".

Many instructions also have an "S" bit, which toggles whether or not they update the flags on which conditional execution depends. Taken together, these two features allow a clever assembly programmer to do some really clever things (but historically not too much effort has been directed at getting compilers to make really clever use of these features).

For low-power parts, this is a cute trick, as it allows a programmer to avoid stressing a limited branch predictor with lots of small branches. It does add some complication to the implementation however, especially when you get into designs that retire multiple instructions per cycle or support out-of-order execution, as conditional execution basically adds additional dependencies to every instruction.

<comment><USER6> I remember there was a "never" condition, which was present just for completeness; it turns out ARM eventually found that having 2^28 different NOPs would not be a good use of opcode space, so it's now a special extension for newer instructions...

<comment><USER14> I seem to recall from my ARM Assembler coding days that there was _also_ a noop instruction, which of course could be conditional itself, so if you didn't actually want to do the NOOP, you could do NOOP-NE, which wouldn't do anything twice over.

<comment><USER15> From my days coding ARM assembly on the Acorn Archimedes, NOP was typically an alias for MOV R0,R0 (which effectively did nothing) rather than being its own instruction.

<comment><USER16> And if you ever needed to manually patch in an easy-to-remember NOP, 0x00000000 was ANDEQ R0, R0, R0.

</comment></comment></comment></comment></comment></comment><comment><USER17> Very cool and clever scheme. But what happens to immediates that can't be encoded that way?

<comment><USER18> Here's what you can do to add a "complicated" constant stored elsewhere, in hand-crafted assembler:

        add_something:        ; function starts here (argument r0 == some number)
    	ldr r1, __tmp     ; get complicated constant, store in r1
    	add r0, r0, r1    ; do the addition r0 = r0 + r1
    	bx lr            ; == return result (in r0)
        __tmp:
    	.word 0x12345678  ; store complicated constant here

You can play with your compiler, if you call gcc as "gcc -Os -S -o- file.c" if will spit out generated assembler code (-S) on stdout "-o-" for the c-code in file.c.

(but then, gcc prefers to have 4 "compact" adds, instead of loading a constant...)

        $ cat dummy.c
        int
        add_random_number(int a)
        {
                return a + 0x12345678; /* guaranteed to be random */
        }

        $ arm-none-eabi-gcc -S -o- -Os dummy.c
        (...)
        add_random_number:
                @ Function supports interworking.
                @ args = 0, pretend = 0, frame = 0
                @ frame_needed = 0, uses_anonymous_args = 0
                @ link register save eliminated.
                add     r0, r0, #301989888
                add     r0, r0, #3424256
                add     r0, r0, #5696
                add     r0, r0, #56
                bx      lr

<comment><USER19> In at least the ADT assembler and gas a few years back, the assembler provided syntactic sugar:

        ldr r0,=0x123456578

assembles to

        ldr r0,pc+xxx
        ... and then somewhere later ...
        .word 0x12345678

The assembler had some default places it would put constant pools (end of a module?), or you could explicitly tell it to generate a constant pool if the default place would be outside the limit of the pc-relative addressing mode.

</comment></comment></comment><comment><USER20> Article begins by praising RISC as "elegant" and "a good design decision", goes on to describe limitations of RISC immediate values.

<comment><USER15> You're being a little disingenuous. It describes the _ARM_ architecture as 'elegant', and 1/4 of the way through the article describes the common use of fixed length instructions in various RISC architectures as 'a good design', and explains why this is mostly a win. And _then_ it explains how the ARM manages to encode a wide range of useful immediate values using a very elegant and simple scheme.

In all my years coding in ARM assembly language, the range of immediate values it supported was rarely if ever an issue.

</comment></comment><comment><USER21> I agree that this clever and useful, but I get the feeling that it could have been more so.

I haven't done much assembly in a while, but I was heavily into it once upon a time, and I recall that values with lots of 1s were useful. There is not quick way to generate those here. This means that we can write a single instruction to set any single bit using an inclusive OR and the proper immediate value, but we cannot write a single instruction to _clear_ any single bit.

The reason I think a bit more cleverness might have helped is that there are so many values with multiple encodings. Anything where the 8-bit value ends with 0 has a different encoding as well. For example, a rotation of 0000 and an 8-bit value of 00000100 gives the same result as a rotation of 1111 and an 8-bit value of 00000001 (right?). Perhaps some of the redundant instructions could have been used to represent things ending in lots of 1s?

Regardless, an interesting and informative post. :-)

<comment><USER3> Clearing an arbitrary bit actually _is_ supported (as mentioned in the article: "you can set, clear, or toggle any bit with one instruction").

The specific details require you to dig a bit past explaining just the immediate encoding, but in the clearing case there's a dedicated instruction for clearing the bit specified by the immediate:

      BIC - Bit Clear (immediate) performs a bitwise AND
      of a register value and the complement of an immediate
      value, and writes the result to the destination register.

As I mentioned in my other post, zero-rotation encodings _are_ gamed out as well (to allow byte repetition).

<comment><USER21> > BIC - Bit Clear (immediate)

Ah, didn't catch that.

</comment></comment></comment><comment><USER22> I love that the author described the ARM as "elegant, pragmatic, and quirky." It reminds me of Gordon Bell's PCP-6/PDP-10 architecture, but applied to the RISC rather than CISC philosophy.

(well, the PDP-10 was pretty RISC for its day and gave us things like BLT, hence bitblit).

</comment><comment><USER23> So arm compilers must prefer to, for example, XOR with 0x10000000 rather than AND with 0xEFFFFFFF?

<comment><USER4> AND with 0xefffffff would become BIC ("bit clear", aka "and not") with 0x10000000. But yes, the basic idea of your comment is correct. Fortunately, compilers are quite good at this sort of thing.

<comment><USER18> And if you need something like ~(byte << N) for any purpose there's still MVN (move-not).

         MVN r0, #0x10000000 ; ro = 0xefffffff

Oh, the joy :-).

<comment><USER4> CMN is the real gem. It's an endless source of bugs in the time between when compiler writers discover it and when they figure out how it actually sets flags. ARM would have done well to provide a "here's how you actually use this instruction" guide in the architecture reference manual.

</comment></comment></comment></comment><comment><USER24> This is clever. However...

The problem as I see it with this sort of cleverness is that it's difficult to optimize to this. It leads to quite variable best-case and worst-case scenarios and general unpredictability. As, say, a C programmer and not a compiler designer, you might unintentionally pick lots of values that won't fit into the "immediate" scheme (worst-case). Or you might force your design to use numbers that DO fit into this scheme (best-case, but a bleed of lower- level design decisions affecting higher-level design decisions).

<comment><USER9> These days if what you're writing is in C then you should really know the behaviour of the architecture underneath.

ARM really isn't that hard if you're already thinking like a low level programmer. Things like MIPS were (better) designed for being targeted from higher level languages, but the consequence is a much messier machine language. It's always struck me as amusing that the conventional view is MIPS is minimal, when ARM is really much more so, but it's from outside the Berkeley/Stanford RISC bubble so didn't really get on to their radars for some time.

<comment><USER25> There is lots of C code that is written to be portable, and trusts the compiler to generate optimized assembly. But those are probably ok with spending a couple of extra cycles for some immediate values.

</comment></comment></comment><comment><USER26> Why is this cool and clever? It still only encodes 12 bits of data, it is just different to using the normal 12 bits of data.

Is this a more useful subset? I am guessing it is so, since they went to this trouble.

<comment><USER27> It can generate 4096 different slightly useful 32-bit values. For others, you may assemble them using a variety of methods.

<comment><USER12> It generates fewer than 4096 unique values, as some values map to the same thing. The most obvious being that 0 shifted any number of places produces 0, but also 0x10 shifted left 0 is the same as 0x04 shifted left 2 is the same as 0x01 shifted left 4.

<comment><USER27> Makes sense. Well... It produces less than 4096 interesting 32-bit values.

</comment></comment></comment></comment><comment><USER6> If I've interpreted this correctly, it means that all values between 256 and 65535 can't be encoded this way since they all have the form

0x0000nn00

with a nonzero nn, and those are the bits that can't be gotten to from rotating.

<comment><USER4> Anything of the form 0x0000nn00 is representable, as it has at most eight contiguous non-zero bits starting at an even bit position (i.e. these values are 0x000000nn rotated right by 24). Maybe you're wondering how a rotation of 24 can be encoded in four bits? To get the rotation amount, you _double_ the value of the four-bit field. Only even rotation counts are representable.

<comment><USER6> Thanks, overlooked that detail. Very interesting encoding scheme.

</comment></comment></comment><comment><USER28> Nice but somewhat obsolete I think: AFAIK the ARMv8 (64bit) ISA is different..

</comment><comment><USER29> THAT Barrel Shifter, son!</comment>


Making Architecture Work in Microservice Organizations - <AUTHOR> http://tech.gilt.com/post/102628539834/making-architecture-work-in-microservice-organizations

<comment><USER2> Microservice architecture seems like the most common sense architecture possible. There are very few reasons _not_ to employ it. LinkedIn and Amazon both rely havily on a microservice architecture (LinkedIn with the additional emphasis on Kafka as a central event stream), and those two companies are extremely well positioned because of it. Microservices greatly increase flexibility of the architecture, reduce dependencies, and allow bizdev to move faster. Honestly, complete no-brainer all around.

One piece conspicuously missing from the literature on microservice architectures is a critical one: How do you emulate the architecture on local dev machines? Docker is obviously a big step forward in this regard, but the tooling around local MSA is still developing.

I would love to read about how companies are solving the problem of emulating MSA in the local dev environment.</comment>


Wcc: The Witchcraft Compiler Collection - <AUTHOR> https://github.com/endrazine/wcc <comment><USER2> I had to scroll way too far before encountering some basic description of wtf this is. "binary black magic" is cute and entirely unhelpful.

It appears to be: ' _The primary use of wcc is to "unlink" (undo the work of a linker) ELF binaries, either executables or shared libraries, back into relocatable shared objects._'

<comment><USER3> That's the purpose of the titular program, but the package as a whole includes a lot of other utilities.

</comment></comment><comment><USER4> Holy moly! This is incredibly cool, novel and useful for hacking around binaries and such.

edit: Previous discussion on this: [https://news.ycombinator.com/item?id=12281803](https://news.ycombinator.com/item?id=12281803)

</comment><comment><USER5> Does anyone have real world use cases for this? The ls example ends too early but I think I know what they're getting at.

wsh looks amazing for dynamic analysis though.

<comment><USER6> Say you have an interactive graphics application but it uses a drm library called SmokeLib, you could unlink it, provide an alternative and regenerate the executable.

<comment><USER7> Or link the app to a (Lua?) script which drives the menus for you for repetitive work.

Not unlike the image processing work my daughter is doing for a bio research lab she is interning at. Fortunately, the image processing tool they are using has a built in "macro" scripting language. But my girl was the only student who knew how to use it :-)

</comment></comment></comment><comment><USER8> I saw Jonathan's presentation about WCC at BlackHat in 2016 and it was a lot of fun. It also helped me to understand the power and limits of WCC's approach, which wasn't clear to me from reading the documentation back then.

There seems to be no video of the BlackHat talk freely available but I found this version [1] from DEF CON.

[1] [https://m.youtube.com/watch?v=3DUflmm7O8Y](https://m.youtube.com/watch?v=3DUflmm7O8Y)

</comment><comment> yjftsjthsd-h So it lets you use anything as a library? Am I reading that right?

<comment><AUTHOR> Yes, and you can also de-link a binary into an object (.o) file and then re- link it into another binary.

</comment></comment><comment><USER7> Hmm. Can Bob use it on the Laundry, though?

Ob. Charles Stross reference :-)

Seriously, though, this sounds like a really interesting hack for reusing stuff that wasn't intended to be reused. Cool.

</comment><comment><USER9> I can see this being very useful for patching binaries, I'm curious how well it works in practice.

</comment><comment><USER10> If it's a compiler collection, what languages does it compile? And, more importantly, does it finally contain the SufficientlySmartCompiler®? With a title like that it would be really disappointing if it didn't.</comment>


Google, Gmail experiencing downtime worldwide - <AUTHOR> http://thenextweb.com/2009/09/01/google-experiencing-downtime-world/# <comment><USER2> <http://www.google.com/appsstatus#hl=en>

<comment><USER3> I actually like that they give a specific time to expect the next update down to the minute

"We're aware of a problem with Google Mail affecting a majority of users. The affected users are unable to access Google Mail. We will provide an update by September 1, 2009 4:53:00 PM UTC-4 detailing when we expect to resolve the problem. Please note that this resolution time is an estimate and may change."

This is one of those things that is extremely helpful for a sysadmin taking heat from employees looking for answers.

</comment></comment><comment><USER4> US date order always makes me laugh - it's like people looked at date order and thought if the day comes before the month that will be the European way, lets flip it. Then they realised that would be YYYY-mm-dd and so be ISO standard order, dang can't have that, hey lets have a mixture.

I know it didn't happen this way but some sort of logical order would be good.

<comment><USER5> A logical justification could be found for any order. It's just arbitrary.

<comment><USER6> It would be good to hear a logical justification for the mm-dd-yyyy. I'm not sure I can come up with one. It makes it hard to search and it doesn't follow any sequential order. yyyy-mm-dd actually goes up by one each day. Try it next time you have to number give files a date stamp and you'll find it makes your life a lot simpler.

</comment></comment></comment><comment><USER7> Interestingly, GMail has failed twice in the last few weeks since they removed it from beta. Before that, I can only remember one large-scale outage over the previous few _years_.

</comment><comment><USER8> Sometimes its pretty nice to be the end user of a big problem.

I feel sorry for those poor sysadmins

</comment><comment><USER9> All those articles warning against having all your data in the cloud are coming to mind. On the bright side, without email, there's temporarily one less distraction to worry about. <http://www.paulgraham.com/distraction.html>

<comment><USER10> But if you stored it locally you would still have downtime. Downtime (problems) are inevitable. It's just that only you would notice, so it might not get on the news.

I doubt the actual uptime would be that different for any one person.

<comment><USER11> The difference is that you can know what's wrong and fix it (assuming you're able). Also, over the past 2+ years, my mail server has had less downtime than GMail, and any outages were easy for me to diagnose and fix. I like feeling in control over critical pieces of my business (at least as much as possible - I'm in no position to build my own DC for instance).

<comment><USER12> Google is a better sysadmin than I am. I assume most people are in the same boat.

<comment><USER13> I know google hires some people who are better than me, but that doesn't mean the gmail system is better than something I could engineer.... For one thing, google needs to have a much lower cost per user than I do, forcing them to make some choices that I don't have to. I have no problem paying $50 a month for email service, and that level of cost per user would be untenable on a free email service. (I host most of my email myself, and I'm trading a free co-lo to mark perkel of junkemailfilter.com to do my filtering. between that and my time, I'd guess $50/month)

</comment></comment></comment></comment></comment><comment><USER14> Even Google's internal corporate mail is down. Yikes.

<comment><USER15> And Microsoft and Yahoo employees bust out the champagne :D

<comment><USER16> Dogfooding Exchange vNext is never fun...

</comment></comment></comment><comment><USER17> Huh. GMail is down for me, but GMail's IMAP is still working. I didn't even notice.

<comment><USER18> Yeah. I only ever use GMail through IMAP, and then didn't find this until after it was back up. Never had a clue.

</comment></comment><comment><USER19> I wonder what the load on that little machine that's spitting out 502's is right now...

<comment><USER20> I'll give you a hint: It's in Los Angeles...

</comment></comment><comment><USER21> Coincidentally, their "Go Google" billboard campaign just ended today.

</comment><comment><USER22> No gmail at work = Its lunchtime for me. Hurray Google for naturally putting me on break!

<comment><USER9> Ditto. Back to Dino Comics, TED talks, and SICP.

</comment></comment><comment><USER23> Workarounds: GMail gadget for iGoogle ; IMAP/POP3.

It's not all that bad :)

</comment><comment><USER24> I haven't had an issue all day, till you guys mentioned it :) Down on the east coast 4:02pm

You can login here. [https://www.google.com/accounts/ServiceLogin?service=mail...](https://www.google.com/accounts/ServiceLogin?service=mail&passive=true&rm=false&continue=http%3A%2F%2Fmail.google.com%2Fmail%2F%3Fhl%3Den%26tab%3Dwm%26ui%3Dhtml%26zy%3Dl&bsv=zpwhtygjntrz&scc=1&ltmpl=default&ltmplcache=2&hl=en)

<comment><USER24> nvm that only gets you the login screen

Server Error The server encountered a temporary error and could not complete your request.

Please try again in 30 seconds.

</comment></comment><comment><USER25> <http://www.google.com/ig> shows me signed-in in chat-mode. Can anyone explain why so ?

<comment><USER26> GMail at iGoogle is working for me. Edit: It was working. Not anymore.

<comment><USER27> works for me

</comment></comment></comment><comment><USER27> Strange, I just did a search for movie show times in my area earlier and just now, and it seems that some cinemas are missing.

The timing lines up exactly with the gmail outage.

Since those theaters have always been listed in the movie showtime search as long as I can remember, this could be part of a larger service outage. What else is down that they aren't telling us?

</comment><comment><USER28> Wow, I've been lazy in migrating away from Gmail but this motivates me to do so.

<comment><USER29> _Everything_ goes down sometimes. I've found Gmail to be more stable than most.

<comment><USER30> Yeah, at least when gmail goes down, everyone knows about it.

</comment></comment></comment><comment><USER31> i'd like to note that i can access gmail through the igoogle gmail widget, and just got, read and responded to a fresh email through it.

can't access gmail through any other means.

thought it might be useful for everyone to know and give it a shot.

<comment><USER32> Works via iGoogle for me as well, and I've received a couple e-mails from GMail users from their iPhones. So presumably it's just the web front-end that's busted.

</comment></comment><comment><USER33> Hah just checked HN while waiting for gmail to log me in...

</comment><comment><USER34> Australia down as well ... was just about to click on an exciting mail when .. pop !! you are now accessing offline mail :(

 _waits while twiddles thumb_

</comment><comment><USER35> "We will provide an update by September 1, 2009 5:16:00"

Hit refresh at 5:16 and it's back up. That was pretty impressive.

</comment><comment><USER36> IMAP and POP3 are working fine

<comment><USER37> Dumb workaround: Forward mail from Iphone IMAP to yahoo account

</comment></comment><comment><USER38> Just tried. It's back up for me in Washington, DC, USA

</comment><comment><USER39> Gmail 502 error from San Francisco 12:52 pm PDT.

<comment><USER39> Same machine is up, 2:32pm PDT

</comment></comment><comment><USER40> ping mail.xx.com PING ghs.l.google.com (22.214.171.124) 56(84) bytes of data.

Customize URL in Google App/email is broken :(

</comment><comment><USER41> Back up here in Portland, OR.

</comment><comment><USER42> Even down here in Pakistan ;(

</comment><comment><USER43> On the 28th day - we crash.

</comment><comment><USER44> Back up for me!

</comment><comment><USER45> Brazil is down

</comment><comment> onreact-com \- Darling, do you remember the day when Google was down?

\- You mean the day 9 months before our son was born?

===

Enjoy it while it lasts.

</comment><comment><USER25> 502 Server Error

[ $date -u => Tue Sep 1 19:59:05 UTC 2009 ]

#fail

</comment><comment><USER46> And that is why Google Voice is not a replacement for cell phone service. Take that Arrington!

<comment><USER47> Actually, GV is working fine.

<comment><USER48> I think the OP meant outages in general

<comment><USER46> Exactly. With feigned 'outrage' at Arrington for all his Google Voice love as of late.

<comment><USER49> Are you suggesting that cell towers never fail?

<comment><USER50> they do fail, often, in fact, but the difference is that its a decentralized system and several towers being down isn't a big deal, its just a normal day. They contract with many carriers to carry data and often a single cell site is multihosted so any one carrier switches to another provider, who now has them over a barrel so charges them more. Cell tower failures affect the mobile carriers profits, and not necessarily the users service.</comment></comment></comment></comment></comment></comment>


Happy Holidays HN: our new web app for easy sharing with your family - <AUTHOR> http://ramamia.com/?hackernews=hellyeah

<comment><USER2> I really like the idea, but the interface looks way too busy for my family to use.

You should try to work on adding a lot more white space, less text, and more clearly emphasizing what the likely action of the next user will be. Most families are full of non-techs that would need a fair bit of hand-holding here, because it's not clear what they need to do next...

<comment><USER3> I think you could cut some clutter, but mostly you need to use design cues (boxes, color, font size) to guide the user. Good candidates for removal: the "share with others" link, the "ShareThis" widget.

PS. I accidentally put my family's name in lowercase, and it looks like that can't be fixed.

<comment><AUTHOR> > _I think you could cut some clutter, but mostly you need to use design cues > (boxes, color, font size) to guide the user._

You're right. The design right now is pretty open. I will work on getting the design on track in terms of compartmentalizing things, adding images and icons to things, and the like.

> _Good candidates for removal: the "share with others" link, the "ShareThis" > widget._

We're removing ShareThis (since it goes against the privacy idea) but Share With Others public links can be emailed to people that aren't in the family, where non-family members can view and comment on the items. The public links are, however, secure, as they don't lead back to the main address of the family. So I think it's good to keep them. (Let me know if you think otherwise!)

> _PS. I accidentally put my family's name in lowercase, and it looks like > that can't be fixed._

I will implement changing the family name soon.

</comment></comment></comment><comment><USER4> We're just sharing the app right now with close friends and family. Mark and I spend a ton of time on HN, and consider you guys family, so we wanted to share it here. We'll do the whole press, launch,etc. thing in mid january.

</comment><comment><USER5> The key problem in this sort of site is being evidently and memorably distinct from the numerous other similar options, from email to facebook to flickr. I'd have to register with you to figure out how you're different/better, which isn't worth the effort because I'm not convinced there's some obvious problem with the way I share photos & links right now that you guys have solved, just because you "applied the family perspective" or whatever.

You have to attach to an emotional need people have regarding their families. Here's one I think many of the folks on HN share: guilt about not staying in touch with family members that live far away. One way you might tap into that need could be to offer a "time-release" delivery option, where I can seed my family account with a bunch of photots, and your service can send them out to my family at a rate of say 2 per week. I'd get credit for being in touch with my family on a regular basis, and each email can be a starting point for discussions and stories that bring us together around a particular memory. Plus, we're coming back to your site again and again over time, and I wouldn't mind paying a few bucks per month if you could send printed photos to my grandma who doesn't use email.

<comment><USER4> hey shimon, thanks for the feedback. in today's app world, you definitely have to be quick with designating the advantage/differences over other apps. we removed the whole registration issue, by being able to get started without an email, password / "another account". Any suggestions on how we could accomplish that would be more than awesome.

That's an interesting approach. The goal is to let people stay in touch, when doing so is pretty much a bitch. Doing printed photos is a rev stream we're looking into ie- via qoop or an equivalent.

Thanks!

<comment><USER5> Low barriers to entry are important, but they're not a reason to use a site. When a site has a great and obvious value, people will jump through all sorts of hideous crap to use it; and conversely, when I can't figure out why I should care, whatever's behind my back button is going to seem more interesting.

It's admirable to pursue great usability and I like your registration scheme, but I still need to smell the bacon.

</comment></comment></comment><comment><USER6> I like this. I am curious about privacy. robots.txt seems to allow everything at the moment. When I tried to go to the page I created for my family I get:

"We're sorry, but something went wrong."

Tell me more.

<comment><AUTHOR> Just fixed that. Thanks for letting us know.

WRT privacy, I'm working on getting the pages and content protected. It's difficult to find a balance between allowing people to email page links, and security.

</comment></comment><comment><USER7> A bunch of random thoughts:

\- good idea, seems like there would be a market for it

\- I think I get what you're trying to do with the login / obfuscation system, but it's non-standard and that makes it somewhat confusing for me at first glance. perhaps sell the benefits on the homepage?

\- sell me on why this beats email

\- I like how quickly you can jump in and check it out

\- why not auto-capitalize family name?

\- do you really need time zone? if so, perhaps you could default via geo ip?

\- the "keep my page" button is cut off in ffx 3

\- the "sharethis" option doesn't really make sense if you're trying to obfuscate these URLs...

\- having the "post something" options as radio buttons seems kind of odd

<comment><AUTHOR> > _\- I think I get what you're trying to do with the login / obfuscation > system, but it's non-standard and that makes it somewhat confusing for me at > first glance. perhaps sell the benefits on the homepage?_

That's a great idea. I think it might be confusing for people at first, but somehow explaining how it's better will be very useful.

> _\- sell me on why this beats email_

Centralised site. Communicate without email clutter. Easier to follow a site and receive regular email updates. It's similar reason that it's better to use Facebook than emailing your friends. Thanks for reminding us why we need to make this clear.

> _\- I like how quickly you can jump in and check it out_

Great to hear. That's the kind of simplicity we're looking for.

> _\- why not auto-capitalize family name?_

I'll add that.

> _\- do you really need time zone? if so, perhaps you could default via geo > ip?_

I was thinking the same, to try to assume via Geo IP. I'll look into it, but last time I checked, it was an insane amount of money to license.

> _\- the "keep my page" button is cut off in ffx 3_

Ah, okay. I'll resolve that.

> _\- the "sharethis" option doesn't really make sense if you're trying to > obfuscate these URLs..._

Good point - we'll be removing those.

> _\- having the "post something" options as radio buttons seems kind of odd_

We thought this would be a familiar user interface element for people to understand. Perhaps it's not – I'll think about what could potentially replace it.

Thank you very much for your valuable feedback! Cheers and happy holidays.

<comment><USER8> For timezone identification, the MaxMind GeoLite Country DB has plenty of accuracy and is free to use. <http://www.maxmind.com/app/geoip_country>

</comment></comment></comment><comment><USER9> Either you can't delete or it's not obvious how to delete posted stuff. That's an incredibly huge oversight IMHO.

<comment><USER4> completely agree. It'll be there soon by the time we do a more widespread launch. We'll make it so you can only delete your own stuff obviously.

</comment></comment><comment><USER10> Overall, I like it. Would be nice not to use Flash for multiple file upload though. Some folks just don't have it. Allow an alternative for one file at a time. Or unpack an uploaded .zip?

</comment><comment><USER11> Very cool, I'll have to get my family using this.

<comment><USER4> many thanks! If there's anything you ever need email us firstname.lastname@example.com

</comment></comment><comment><USER12> How long did it take you guys to get this up and running?

<comment><USER4> (We're going to do a separate post on this in a few days probably, but here's a long story short)

Late October is when we started. Put together a spec doc. At first it was like two pages, we basically said: in order for this to be simple enough, we have to get it down to one page. The goal was simple sharing with your family, no bullshit involved.

Mark got a proof of concept up within 24 hours (layout, basic functionality, database,etc.) From there, we spent the rest of the time tweaking things, testing, user vids,etc.

<comment><USER12> Very impressive. Hopefully you guys can shed light on how you worked long- distance, managing time, doing this as a "side project", etc.

It's certainly a great gift to share with friends and family this holiday season!

</comment></comment></comment><comment><USER13> this is cool. nice work.

</comment><comment><USER14> It looks great.

</comment><comment><USER15> Pretty cool!

</comment><comment><USER16> reminds me of <http://famster.com>

</comment><comment><USER17> what do i share with them?

it wasn't obvious what the app does, so i left.

<comment><USER4> hey, so how can we make it clearer. We stated it in a few places, but this is a first version. either let us know here or email personally firstname.lastname@example.com

<comment><USER17> umm i looked again. the top right and huge banner don't say what you share. but i found this in a list with some other stuff:

\- Easily share photos, events, messages, and interesting links

ok, but i can do that with email. it's not clear to me what's the point?

<comment><USER18> I had a look at the "See what you can do" video, it looks like a faster, simpler alternative to using social-networking sites and family newsletters etc.

@Jason Really like the look of this! I just hope releasing so late in the holidays (pre-thanksgiving I could see this service really taking off) won't affect it's adoption too greatly. Anyway, Thank you and Merry Xmas!

<comment><USER17> It needs to get the point across without watching a video.</comment></comment></comment></comment></comment>


No Reply Addresses - <AUTHOR> https://m.signalvnoise.com/no-reply-addresses-f1d72ac0b56e <comment><USER2> Written like someone who has never worked support. Customers are idiots. It's unfortunate that communication from them is necessary.

<comment><USER3> _" Written like someone who has never worked support."_

From the author's bio:

"I'm part of the awesome @Basecamp support team and host a podcast over @SupportOps."

 _" Customers are idiots. It's unfortunate that communication from them is necessary."_

Since my employer wouldn't be able to pay may salary without the customers who pay for the software I create, I try to view them in a more positive light (and try to help keep them happy).

<comment><USER2> Fair criticism of my comment. I'm still amazed that someone can maintain such positivity towards customers after having communicated with them directly.

</comment></comment></comment><comment><USER4> To avoid the barrage of out of office auto-responders, add a "Precedence: bulk" header.</comment>


Building Startups in a developing/developed Country: Taiwan (Part 1) - <AUTHOR> http://francistan.me/2011/08/27/building-startups-in-a-developingdeveloped-country-%e2%80%93-taiwan-part-1/ <comment><USER2> Questioning whether Taiwan is a developed country is disingenuous -- its GDP (PPP) per capita, which is the statistic that matters, is about 34,000 USD, about the same as a typical country in Western Europe, and higher than South Korea. That Taiwan is not a member of the OECD has more to do with politics than wealth.

</comment><comment><USER3> I'm planning to write a similar post for Shenzhen, China. (see [http://syskall.com/first-startup-tuesdays-in-shenzhen-a- succ...](http://syskall.com/first-startup-tuesdays-in-shenzhen-a-success) for a quick overview)

</comment><comment><USER4> Just as a prop - Plurk is a Canadian startup! Based in Toronto!</comment>