US Cellular Now a Part of Project Fi's Network - <AUTHOR> https://android.googleblog.com/2016/06/more-speed-and-coverage-with-us.html <comment><USER2> I must say Project FI has worked out really nice for me. I'm usually in Wifi range, so my data usage is very low. Works out to around $27 each month. And the service is really good.

BUT, I live in the constant fear of Google shutting down the service. In fact I'm slowly finding myself skeptical of adopting new Google products because I'm worried it will go away.

<comment><USER3> I hear you on the fear of Google shutting it down but I wouldn't with Project Fi. This is a communications product. They need people to get fast access to their products. This product will never go away, just like their Fiber efforts.

They purchased Grand Central like 10 years ago and never killed it.

Grand Central -> Google Voice -> Project Fi.

<comment><USER4> Google voice languished for years with no updates, no bug fixes (despite a lot of serious problems!)

<comment><USER5> And it is specifically excluded from Google Fi (you may import your number, but no going back).

My biggest gripe with Fi is that there is no way to check voicemail or handle SMS through the web interface. That was the most useful aspect of Voice for me.

<comment><USER6> [https://support.google.com/fi/answer/6188337?hl=en](https://support.google.com/fi/answer/6188337?hl=en)

"Once you do this, your text messages and voicemail will sync across Hangouts everywhere, including: Gmail chat, Google+ Page or profile, Chrome desktop app, Android or iOS device, Inbox by Gmail, or the Chrome extension."

<comment><USER5> That's a good idea, but it comes with caveats:

\- You need a cellular data or Wi-Fi connection to send and receive text messages, even on your Project Fi phone

\- You will no longer receive SMS messages in your default SMS app, instead you will receive SMS and voicemail in Hangouts on the web and all of your devices

<comment><USER7> > \- You need a cellular data or Wi-Fi connection to send and receive text > messages, even on your Project Fi phone

On the plus side, you almost never pay for data roaming charges. Even when abroad.

<comment><USER5> Agreed. I've been generally happy with the service so far.

</comment></comment></comment></comment></comment></comment></comment></comment><comment><USER8> Good to see the network growing!

Looking at US Cellular's coverage map ([https://www.uscellular.com/coverage- map/coverage-indicator.h...](https://www.uscellular.com/coverage-map/coverage- indicator.html)), this news won't benefit the sf bay area, but help users in the northwest, northeast, and midwest.

<comment><USER9> It'll be good for truly last mile users, I imagine SF bay area has plenty of options (although I know they want Google too), this seems to provide a possible broadband ISP option for those that would otherwise have none.

<comment><USER10> >It'll be good for truly last mile users

Who isn't a last mile user?

<comment><USER11> I think what is meant by a non-last mile user is someone who tends to stay in cities and suburbs, and rarely, if ever, ventures into rural areas, where cell phone service is still often non-existent or limited to one carrier that may or may not have a roaming agreement with your own carrier.

</comment></comment></comment></comment><comment><USER12> Huh, I did not know until just now that US Cellular owned their own network. I could've sworn that Verizon, AT&T, T-Mobile and Sprint were the only four network owners in America and US Cellular was an MVNO. Guess that says something about either the quality of their network or the quality of their marketing.

<comment><USER13> US Cellular really is a regional carrier, though they use roaming for nationwide coverage. They specialize in blanketing areas that have little or no coverage from the majors (SW Wisconsin being a good example).

On the other hand, one irony is that even though they still have naming rights for the White Sox' ballpark, they pulled out of the Chicago market and sold what spectrum they had in the area to Sprint.

<comment><USER9> Yep, US Cellular seems to be the only cell phone towers I can get on roaming when an area is "middle of nowhere" and I'll see a small dealer/shop in small towns. Like you said, they seem to specialize in markets that other carriers wouldn't bother with, like remote parts of Alaska, or small mountain towns.

<comment><USER10> As far as the Rockies are concerned, Verizon seems to have the best coverage by far. I've had a cell phone since '96, and ~99% of the resort towns have the big 4, but VZ is in the most remote places I've seen.

Edit: Here is an interesting chart of wireless providers in the US [0]; lots more providers w/ 10K-1M subcribers than I realized.

[0][https://en.wikipedia.org/wiki/List_of_United_States_wireless...](https://en.wikipedia.org/wiki/List_of_United_States_wireless_communications_service_providers#Facilities- based_service_providers)

<comment><USER14> Which part of the Rockies? AT&T has hands-down the best coverage at the ski resorts in Colorado. They even have coverage in A-Basin, which is a dead zone to everyone else.

<comment><USER10> I am talking about CO, but mostly more off the beaten path resorts such as T-Ride, Butte, and the Boat. I started with Voicestream (now T-Mobile) back in '96 and it was quite bad. Back-country has always been best with VZ, and that is the same today.

</comment></comment></comment></comment></comment></comment><comment><USER15> Its good to see them expanding the networks, if only a little. I've been on Project Fi for ~6 months or so and its been a fairly mediocre experience so far, but it works well enough for the price point I suppose.

<comment><USER16> I am also using and loving Google Fi so far. No manipulative billing practices designed to obscure the true cost. Reasonable metered data prices.

The only downside is having to use a Motorola phone. They seem to always break within 1.5 years of purchase.

<comment><USER17> I'm quite excited to try it. Unfortunately (or fortunately) i'm on T-Mobile, with a no contract $30/m Unlimited text/data plan _(very few minutes)_ , and that's just __really __hard to beat.

Note that this plan might not be available anymore.. not sure really, but i know i often get flack for being on this plan from tmo. It clearly isn't making them enough money, but my god, i love it.

<comment><USER18> It's 100 minutes a month if I'm not mistaken. Can't say for sure if the plan still exists, but it's almost impossible to find any advertising regarding it. You have to specifically ask for it like those quesadillas at Chipotle. I was happy with it for a couple years but switched to google Fi when I got my Nexus 6P and I'm perfectly happy with it.

<comment><USER17> As my tmo plan may suggest, i rarely use minutes. Fi only offers a minutes oriented plan, and i hate that pricing. Feels like i would be wasting money.

Oh, question for you if you don't mind: Since you were on Tmo, can you compare the reception/coverage for Fi vs Tmo? In theory Fi would have better reception due to more networks, but i'm not really sure how much Tmo and Sprint differ in network size/locations. Thoughts?

I'm in USA-WA and the hills/mountains really cause reception issues. So the reception coverage is important to me. _(Nothing beats Verizon, unfortunately)_

<comment><USER19> Total Wireless offers a plan with unlimited talk and text and 5GB of data for $35 on Verizon's network. It is throttled at 5Mbps, but if you use little enough data to make Fi worthwhile I don't think that will be an issue for you.

<comment><USER17> Well, i'm more concerned about the data than talk or text. Most of the calls i make are done via Google on my laptop (free minutes), so i almost never need minutes on my phone. It's not the data price of Fi that bothers me, it's the flat $20 charge for Unlimited Talk/Text that i don't want to pay.

If they gave me $5 or $10/m for reduced talk, i'd be in heaven

</comment></comment></comment></comment></comment></comment></comment><comment><USER20> This is cool and all, but I'm worried that Google will just pull the plug during one "spring cleaning" event. Plus T-Mobile's $100/4 lines/2 GB per line is just unbeatable right now... cheaper and more data.

<comment><USER21> I regret getting a T-Mobile postpaid plan. Unlike their pre-paid plans, they tack on the following mandatory bullshit charges to their monthly plans:

Federal Universal Service Fund, State Telecom Excise, County Telecom Excise, MCTD Surcharge, Regulatory Programs & Telco Recovery Fee, State & Local Sales Tax, Public Safety Communications Surcharge, County 911

That's $10+/mo of pure BS for a single line. Would love to hear from Google Fi users if they also do this, if not I'll probably switch.

<comment><USER22> On a recent $49.55 bill, I had $2.48 in taxes and fees.

Taxes & government surcharges State 911 Tax $0.08 Telecomm Relay Systems Surcharge $0.06 California Teleconnect Fund Charge $0.13 California High Cost Fund Surcharge $0.04 California Advanced Services Fund Charge $0.06 Universal Lifeline Telephone Service Surcharge $0.67

Other fees PUC Fee $0.03 Federal Universal Service Fund $1.29 Federal Regulatory Assessment Fee $0.12

</comment></comment></comment><comment><USER23> This is great news, as we have quite a bit of coverage by them here (Midwest). I feel like I see a lot of people mention issues with Fi on the web, I must be one of the lucky few that have not only had no issues, but stellar performance all around.

<comment><USER24> Yes, they have the best rural coverage in the Midwest (Verizon, thanks to AllTel, is a close 2nd.)

<comment><USER25> If this extends in/through northern Wisconsin and the Upper Peninsula (UP) of Michigan, I may indeed switch to Fi.

Actually, I recently took advantage of the Fi discount on a Nexus 5x ($250 @ 32 GB), but after some days dinking with it on Fi, I swapped in my Verizon SIM as planned, to have Verizon service with Nexus quality/timely system updates. (Needed an additional reboot for LTE to kick in, but since then -- as reported in numerous places -- it has worked just fine.)

But, I'm increasingly unhappy with Verizon Wireless.

Next up would be to see whether Google Fi's adverstised real/actual/person support is for real and helpful, and to ask them whether, hey, after all, I'd like to port my Verizon number to a Fi SIM / service and use that instead of the Fi SIM that's currently idle.

(I wanted to try it before committing.)

The other is to see whether, now that I'm out from under my 2 year phone "contract" with Verizon, I can coerce better pricing/capacity out of them.

In any event, I will _NEVER_ again use a phone that is dependent upon Verizon for updates. So, that means Apple, or my unofficial/"not supported" Nexus, or...

P.S. If anyone from Google happens by, "pinch to zoom out" on the Nexus 5x is horrible -- the camera app dies about 50% of the time when I use this feature on it. _PLEASE_ for the love of deity fix this! (Your error reporting systems should have about a bazillion and a half incident reports from one particular device ID. Stock Nexus 5x with only a few big-name apps installed.)

<comment><USER26> > Next up would be to see whether Google Fi's adverstised real/actual/person > support is for real and helpful

I'm a google fi customer and requested support. For me, the support was fantastic. They were very helpful and did their best to make sure everything was handled. Sample size of 4-8 requests, though, so YMMV.

<comment><USER27> I've contacted them ~ 5 times for minor issues with multiple accounts (getting a discount when they dropped the nexus 5, minor number porting issues, a billing question etc) and it has been fantastic. I've never had to wait, always had someone who was knowledgeable and could quickly resolve my issue.

</comment></comment></comment></comment></comment><comment><USER28> Google Fi is amazing. The free international data roaming is like nothing else I've ever experienced. Land in Japan and my phone just works. No extra charges, it just works.

<comment><USER29> I have a similar experience on T-Mobile

<comment><USER30> Agreed, I got a post-paid plan for a month while traveling to and around Europe, and it's great being able to just use your phone like normal.

</comment></comment></comment><comment><USER31> I use Google Voice as a landline replacement with an Obihai device and effectively get free service, minus E911, but I have a cell phone for that. The costs for wireless must be much higher for Google to be charging, although I manage to get service on Sprint through Ringplus that is effectively free too. There are limits, I am charged for overages and I do not get roaming, but I have real SMS and can use any CDMA capable device. I see no reason to pay for Google Fi as long as I am in an area where Sprint's network is good. Their network was terrible on Long Island in 2014, but as of 2016 it seems decent.

If anyone is in an area where Sprint is decent, I suggest trying Ringplus. You can use an old phone to test it. In my case, I gave a neighbor who did not have a cellphone an old phone and set it up for him on Ring plus. I heard a few months later that the coverage was good, so I switched and found that it is indeed better than it was in 2014. Consequently, I can put the money saved from not paying a monthly fee into something tangible, like equipment.

It would be nice if Google could offer a similiar service for everyone, but until either then or Ringplus decides to stop providing free service, I am sticking with Ringplus. There is no point in paying for a service that a competitor offers for free.

</comment><comment><USER32> I wanna switch to project fi but I just can't get over how cheap tmobile's 5GB LTE for $30 is.

<comment><USER33> I switched from tmobile's $30 unlimited (5gb lte) plan. I'm definitely paying $10-15/month more now, but I also travel frequently. The international coverage makes it worthwhile for me.

As far as phone expenses go, I think I'm still doing pretty well though.

</comment></comment><comment><USER34> Unless they offer LTE in Canada, this doesn't compare well to my T-Mobile plan, other than diverse networks. That's the one thing that definitely put me off trying it.

<comment><USER35> I haven't been to Canada with Project Fi, but I got LTE all over London, Madrid, Copenhagen, Berlin and Málaga with them. I'd think that Canada has similar infrastructure in place :)

<comment><USER36> There is, at least in Montreal and the parts of Ontario that I visited on the way up there. (Traveling from central NY)

</comment></comment></comment><comment><USER37> I'm not a google chat/hangouts/mail/etc user... or current Android phone user.. so please excuse my ignorance

if I switch to Project Fi am I going to be expected to signup and use all of these things? As in, is it significantly cheaper because now I'm the product? Or am I getting a legitimate Android handset I can root and go about my way like I would with any other carrier?

<comment><USER28> You are getting a legitimate Android handset that you can root and go about your way like you would with any other carrier.

(As long as that handset is a Nexus 5x, Nexus 6, or Nexus 6P, because those are the only phones that work with Google Fi right now.)

</comment></comment><comment><USER38> Oh, US Cellular... Somehow I can be near line-of-sight to one of their towers, and barely get two bars of service.

At least its cheap, although I am still grandfathered into my parents' family plan for around $20/month. I think an equivalent individual plan from ATT or Verizon in this area would run over $100, which would be ridiculous for the 3-4 phone calls a month I make.

<comment><USER39> That seems more likely to be a phone issue than a US Cellular issue. Perhaps the handset you have doesn't support all of their bands? I had that on my original One+ 1 on t-mobile.

</comment></comment><comment><USER40> I love Project FI, but nobody who tries to call me ever gets through. Not nobody, but really like %75 of the calls don't go through. The data and international roaming are wonderful.

</comment><comment><USER41> How does it work? Is this VOIP via LTE and Wi-Fi? How it wakes up to receive a call? Does phone constantly have Wi-Fi on? Would it drain battery quickly? Any good write up about tech detail? I have read some reports from people switched their phones to data only and having VOIP over that LTE. Somewhat doubtful how reliably can VOIP work on Wi-Fi while phone is locked.

<comment><USER42> I don't know that it works any differently than the others in the handling of calls. I'm not aware that they're doing VoLTE (I suspect not because my phone behaves like my Verizon phone did -- dropping LTE data when I'm on a call -- on the occasion that I've had to look).

It differs in handling of WiFi calling in that "it actually works really well"[1]. Calls started on WiFi switch (mostly) seamlessly to cellular when you go out of range or the call quality dives. It attaches to some public access points automatically (with a little "key" icon at the top when it does so).

On the cellular front, it uses T-Mo and Sprint (and, now US Cellular). Their networks are quite different[2] and it is able to bounce between them and does so in a manner that maximizes 4G and overall coverage. There were dead zones for me on T-Mo that have perfect coverage on Project Fi.

[1] I had T-Mo with WiFi calling previously and even at the time that I left it barely worked. I'd not receive calls when attached to one of my access points (or drop them if my phone jumped over to it) and call hand-off to cellular never worked for me. It always works on Fi and my phone won't even try to use the other AP for calling (which it figured out on its own).

[2] I believe their 4G technology is similar enough, but below that its CDMA for Sprint and GSM for T-Mobile, I believe. My information may be out of date, though. When I signed up there weren't any MVNOs that used those two networks.

</comment></comment><comment><USER43> This is really great, but I'm still not really wanting to switch because I'd have to replace my Nexus 5.

It isn't dead yet, and I can't really justify the cost.

</comment><comment><USER44> Does anyone have any experience of using Google Fi with Google Voice?

<comment><USER45> I was using Google Voice for a few years. When I got Project Fi, I had to release my old number and get a new one. It was disappointing, but less annoying than I thought it would be (since I don't use my phone much).

<comment><USER46> Currently you don't have to give up your google voice number. You can even use it as your google fi number if you like, and you can undo that choice and get it back as google voice later.

</comment></comment></comment><comment><USER42> This is fantastic. The statements they're making about multiple networks providing superior coverage have rung true for me, personally. I've been a Project Fi user in Michigan since shortly after they announced its availability (I was in a well covered area for T-Mobile and Sprint and got in early on the invite list, I guess).

My parents have a home "up north" (the thumb area of Michigan) and I've had service with both T-Mo and Verizon since I've been spending a lot of time up there. Coverage from VZW/T-Mo, despite being vastly different networks, suffered from a large dead spot in Fort Gratiot and coverage on the property was also terrible (low lying, beach front property results in a very obstructed situation). I switched to T-Mo because I'd pick up Canadian towers on the property with Verizon which would cause me billing problems[1].

The statements they're making about choosing the best provider from multiple providers is not marketing. I get 4G coverage all the way up to through the most rural areas and can pull a signal on the property (2G, sometimes Canada, but it's there if I need it). T-Mobile and Sprint's network is different enough that no other MVNOs that I know of support both. Because Project Fi does, I get excellent coverage -- where T-Mo lacked, at least in the areas I travel, Sprint has a great signal and my 4G performance is so consistent that I haven't had occasion to even look to see if I'm in LTE or not (that would only happen when the music would stop or a browsing session would die -- "oh, I'm 2G/3G, no wonder!").

Nobody in my family has reliable service except for my wife and I (she's on Fi, now, too). The Wi-Fi features work seamlessly and are much more intelligent than I experienced on T-Mo. Due to one of my APs being wonky at home, Project Fi automatically uses 4G for calls when I'm attached to it. When I'm connected to my properly functioning AP, it uses WiFi (internet works on both, but no VoIP service from mobile phones has ever worked on the one). With T-Mo, I had to turn WiFi calling off because I'd just stop being able to make/take calls when connected to the broken router. It hands off calls without issue, as well (there's a brief period where audio is dead when this happens but I usually don't notice it).

It's a well thought out service and the pricing was perfect for me. I'm on WiFi 99% of the time and my mobile data is often below 1G/mo, however, with the work I do I can have a month or two a year where my data goes well beyond 6GB, so I always kept my plan at that level and just donated that money to T-Mo/Verizon. The prices aren't the lowest in the area when pre-paid offerings are included, but with the service being what it is, I'd pay _more_ for this kind of reliability.

[1] T-Mo doesn't charge for Canadian data or texts and allowed WiFi calling (I'm not sure if Verizon does, yet, or not) so this resolved the problem for me. Coverage wasn't as good, especially a few years ago with 4G, but it was good enough.

</comment><comment><USER47> Url changed from [http://www.androidpolice.com/2016/06/08/us-cellular-now-a- pa...](http://www.androidpolice.com/2016/06/08/us-cellular-now-a-part-of- project-fis-network/), which points to this.</comment>


Errata Security: Query name minimization - <AUTHOR> http://blog.erratasec.com/2017/08/query-name-minimization.html <comment><USER2> PowerDNS recursor support issue is here: [https://github.com/PowerDNS/pdns/issues/2311](https://github.com/PowerDNS/pdns/issues/2311)</comment>


Ask HN: Have you ever seen a "tech-less" developer resume? - <AUTHOR> Just now, I was toying with the idea of writing a resume that described my development work that didn't try to hide my experiences behind tech keywords.  I'm going to try it, but I think it'll be hard.
When you take away the buzzwords, a tech resume becomes kind of bland.  The phrase "built an e-commerce app using Ember & Rails" becomes the largely useless "built an e-commerce app".
Have you ever seen a resume that intentionally left out specific references to programming languages and other technologies used?  I wonder if that format would even be useful. <comment><USER2> Mine is like that, sort of. I do mention some of the techs I'm confortable with in a specific section, but when describing previous positions I never mention the techs/stack that was in use. I focus on the problems I solved, the value I added for the company, what was the state of the business when I joined and when I left.

</comment><comment><USER3> Yes, most of the best resumes I have seen have had limited or no references to tech. Instead they describe the various business problems that the person solved in any given role.

My own resume deliberately has no direct references to languages or technology I have used.

</comment><comment><USER4> Sounds interesting, hope to see some replies (I'm just a hobbyist so I don't have a comment).</comment>


Ripgrep 11 Released - <AUTHOR> https://github.com/BurntSushi/ripgrep/releases/tag/11.0.0 <comment><USER3> Ripgrep is awesome. Thank you for making it!

In addition to being really fast, it "just works". By that I mean it automatically excludes the files I want to be excluded, like `.gitignore`d files and binary files. I know I can configure ack-grep (ag) and other tools to do that, but not needing to configure it is nice.

BTW, if anyone hasn't read [https://blog.burntsushi.net/ripgrep/](https://blog.burntsushi.net/ripgrep/), highly recommended. It's about how ripgrep is so fast. (Edit: Just saw another comment mentioned this, too. Goes to show that making a single high-quality blog post has a big impact.)

<comment><USER4> ack and ag (the_silver_searcher) are two distinct tools. The latter automatically excludes .gitignored and binary files, just like ripgrep. In fact, it seems ag inspired ripgrep's behavior; in the blog post[0] introducing Ripgrep, BurntSushi specifically highlights that rg aims for the usability of ag:

> I will introduce a new command line search tool, ripgrep, that combines the > usability of The Silver Searcher [ag] …

[0]: [https://blog.burntsushi.net/ripgrep/](https://blog.burntsushi.net/ripgrep/)

<comment><USER5> both of these are slower than rg. ag has issues with big files, it's unreliable.

<comment><USER6> I've not used ag but just a small shout out for ack: it's a single Perl file (easy to install, v1.x will work with even antique Perl), it works on weird hardware/OS (no compilation required), it contains its own man-page (ack -man) and is fast enough for typical sysadmin tasks and moderate size codebases.

(Ack also supports the full PCRE syntax but that's less of an issue now rg has -P).

If your work takes you to minority platforms ack is certainly worth keeping in your toolbox.

</comment></comment></comment></comment><comment><USER7> I've learned a lot by reading burntsushis code, so thank you for everything you've written.

Separately, ripgrep is a great advertisement of what Rust is capable of. First, it shows it's possible to write highly performant and reliable applications without resorting to non readable code. Second, it shows how simple it is to separate applications into a library + binary thanks to Rust's package management. Ripgrep is merely a command line interface to libripgrep, which is reused in other applications like VS Code. The regex and directory walking code that was once part of the main ripgrep code base are now crates that are reused to great effect throughout the ecosystem.

<comment><USER8> Last time I checked, VS Code didn't use librigpreg directly. It was calling the ripgrep binary instead.

<comment><AUTHOR> This is correct. VS Code uses ripgrep's JSON output format from the binary.

libripgrep is nice for building your own Rust programs for searching stuff. But there is a not insignificant amount if code that translates your argv into uses of libripgrep.

</comment></comment></comment><comment><USER9> If you've been holding back on Ripgrep because of its 0.x version numbering, now's the time to adopt it. Ripgrep is faster than grep, faster than ag (the Silver Searcher), and even faster than git grep.

The author breaks down all of these details in this 17,000 word blog post, full of detailed benchmarks. [https://blog.burntsushi.net/ripgrep/](https://blog.burntsushi.net/ripgrep/) (It's from 2016, but it's still mostly in good shape; ripgrep has only gotten faster since then!)

<comment><USER4> The blog post is good, and fair at the time. One caution I would add is that time has not stopped for the other projects, either. I believe ag (the silver searcher) has also seen considerable performance improvements since 2016.

<comment><AUTHOR> > I believe ag (the silver searcher) has also seen considerable performance > improvements since 2016.

Do you know what they are? I haven't noticed them, although it has been a while since I've rigorously benchmarked it. From looking at the source code, I don't think much has changed. e.g., it appears to still be using memory maps on Linux when searching large directories.

<comment><USER10> Out of curiosity, is there a better approach than memory maps?

<comment><USER11> The author goes over that here:

[https://blog.burntsushi.net/ripgrep/](https://blog.burntsushi.net/ripgrep/)

</comment></comment></comment></comment></comment><comment><USER12> Vscode integrates ripgrep by default in their "search project" feature.

I mostly use Vscode because of its fast search, decent auto complete and simple editing experience.

Whoever made ripgrep, deserves massive kudos.

<comment><USER13> The OP is by the author of ripgrep

</comment></comment><comment><USER14> I cannot understand all that amount of excitement. Are we under heavy fanbot attack or am I missing something? If the whole thing is that, is faster than grep and "in Rust we Trust" then please feel free to ignore my comment.

I would use OSX's slow grep every single day to find things and I never had any of the non-problems problems which ripgrep is trying to solve. About recursive, case insensitive and search and file number just use grep with the flags "-Rni", so I don't get in which aspect is superior. I never ever had half a thought about grep's performance at the systems I use it (already faster than my cognitive bottle neck). If I ever would need something better than grep I would try to move to the next level or deal with lots of unstructured data I would perhaps move to a local search engine using indexes.

And personally I would consider an antipattern to skip the gitignore contents per default. What kind of machines or use cases are hitting the people in the comments?

<comment><AUTHOR> > I never had any of the non-problems problems which ripgrep is trying to > solve

That's OK. Not everyone has the same set of problems, and not every tool that is built must be used by everybody. I document pretty clearly what ripgrep does in the README, so if it doesn't target your use cases, then obviously you just don't need to use it. But also, just as obviously, it should be clear that plenty of other people do fit into the use cases that ripgrep targets. It turns out that a lot of people work on big code bases, and as a result, running the default grep command can be quite slow compared to something that is just a little bit smarter. It gets super annoying to always remember to type out the right `--include` commands to grep. I know, because I did it for ten years before I built ripgrep. I mean, this is the same premise that drives other tools like `git grep`, ack and ag. ripgrep isn't alone here.

See also: [https://github.com/BurntSushi/ripgrep/blob/master/FAQ.md#pos...](https://github.com/BurntSushi/ripgrep/blob/master/FAQ.md#posix4ever)

> And personally I would consider an antipattern to skip the gitignore > contents per default.

Then use

        alias rg="rg -uuu"

and you'll never have to worry about that specific anti-pattern ever again. ;-)

<comment><USER14> Thanks for answering burntsushi I didn't expect you to reply personally. It's true that there is some good value in having smart sane defaults, and skipping always looking for 2 or 3 advanced flags which are only used from time to time so I ended up giving it a chance (installing it via brew). The difference showed up immediately.

At the moment first impressions are good, seems to be killing it at the most common grep use case I am having, so I will continue using it and trying for some weeks until I can have a better formed opinion.

The only unknowns for me are are the edgy use cases such as piping to other processes where I might end up falling back to system's grep or maybe learn better the rg possibilities.

<comment><AUTHOR> Neat. FYI, ripgrep works fine in pipelines. You should be able to use it just like grep in those cases.

</comment></comment></comment></comment><comment><USER15> I love ripgrep. For me it has done an exceptional job at searching and finding a large list of search strings over pretty large text files.

Tangentially, it is because of great tools like these written in Rust that I have major respect for the language.

</comment><comment><USER16> The -pre flag is rarely mentioned but was a revelation for me in for dealing with MS office files and pdf documents. I use it every single day.

alias rgpre='rg -i --max-columns=1500 --pre rgpre'

*edit Adding my script here, and would be grateful for any improvements. Goal was to catch doc,docx,ppt,pptx,xls,xlsx, epub, mobi, and pdf and still work on termux with default packages there only.

[https://gist.github.com/ColonolBuendia/314826e37ec35c616d705...](https://gist.github.com/ColonolBuendia/314826e37ec35c616d70506c38dc65aa)

<comment><AUTHOR> That's a lovely script. And yeah, I should try to publicize --pre a bit more, since it is pretty handy. I don't use it a ton myself, but when it works, I'm really thankful for it. (That might sound weird since it's in my tool, but I was initially kind of opposed to adding it.)

One bummer is that it can slow ripgrep down quite a bit: one process per file is not good. As a tip, if you add

        --pre-glob '*.{pdf,xlsx,docx,doc,pptx,...}'

and whatever else you need, then ripgrep will only invoke an extra process for those files specifically, which can significantly speed up ripgrep if you're searching a mixed directory (or just want to have `--pre` on by default).

<comment><USER16> That addition was an incredible time savings in my average search, I'm very grateful.

A more prominent mention, and a sample script, would be very useful imho. Just googling for a way to do this for even just one of these file types yields inferior commercial solutions at best, often just nothing.

And while I'm not sure how to make it much faster from a search perspective, I was able to find a 40% improvement in invocation by switching from rgpre to rgg as my alais.

I ended here:

alias rgg='rg -i --pre-glob '*.{pdf,xlsx,xls,docx,doc,pptx,ppt,html,epub,mobi}' \--pre rgpre'

<comment><AUTHOR> Hah nice! I'll noodle on this and figure out how to publicize it more. Your script would be very helpful as an example. Do you mind if I use it in the docs somewhere?

<comment><USER16> Please feel free.

Even a cursory mention of the ability at the end of the readme would likely help many. With a verbatim script and verbatim command using it helping many more. I only stumbled upon this feature with enough context to really get it in the Ubuntu man pages and I don't know if I ever would have gotten to the pre-glob feature to be honest.

I do believe that technically oriented non-programmers would be the biggest winners from more exposure around it.

<comment><AUTHOR> Great! I filed an issue for it: [https://github.com/BurntSushi/ripgrep/issues/1252](https://github.com/BurntSushi/ripgrep/issues/1252)

</comment></comment></comment></comment></comment></comment><comment><USER17> I also love ripgrep and use it all the time. Thanks!

I've lately been doing some Windows programming. Ripgrep from a Git Bash command-line can generally find ALL instances of some word before Visual Studio's Find In Solution can even return one result!

The only downside is that rg does not understand namespaces when searching, so a commonly used member variable will show up all over the place. Can still usually find the right location by visual inspection before VS2017 though!

</comment><comment><USER18> I tried ripgrep 0.10 when it came out. I did variations of "rg foo", "rg -i foo", "rg -ri foo", "rg -ri foo .". All of them returned 0 results. Where "ack foo | wc" returned 79 lines. Sooooo. I uninstalled "rg".

I just tried again and same thing. If I run with "-u" I get results.

I've just spent some time hunting and figured out that in my "projects" directory I had a ".gitignore" that had " _" , which I did a long time ago to stop "git status" from spamming me if I ran it in the wrong directory (base projects, a hg project which I have a lot of).

For some reason "ack" recognizes that it is in a hg repo when I run it, and "rg" also recognizes that, but it _ALSO* searches up the tree looking for a ".gitignore" which ack does not. Good to know.

<comment><AUTHOR> If you use the `--debug` flag, it will tell you which files are being ignored and why.

If ripgrep doesn't search any files at all, then it should print a warning to stdout.

ripgrep ascends your directory hierarchy for .gitignore files because that's how git works; .gitignore files in parent directories apply. ripgrep doesn't know anything about Mercurial, so it doesn't know to stop ascending your directories.

ack is different since it doesn't look at your .gitignore files, so it doesn't have the same behavior here.

<comment><USER18> Oooh, ack ignores ".git" and ".hg", but ignores the ignore files. That, actually, seem like pretty ideal functionality. I guess the equivalent would be "rg --no-ignore-vcs". I had tried "-vvv" to no avail, thanks for the pointer about "\--debug".

</comment></comment></comment><comment><USER19> I love ripgrep and I'm thankful for the efforts that went into the project. It's seems like a delicate programming project. Works great with Emacs btw

</comment><comment><USER20> The only reason why I install Rust on all my machines is to install ripgrep with Cargo. :-)

<comment><USER21> This.

</comment></comment><comment><USER11> Does anyone know how ripgrep's pcre support compares to python/Perl/awk/sed for speed? I noticed it can do substitutions, so I'm curious.

<comment><USER22> I haven't tried it yet, but it would depend on what sort of features you need

Python wouldn't be a good choice for cli usage

Perl is awesome to use from cli, and it is not just simple search and replace, see my tutorial[1] if you want to see examples

sed and awk are awesome on their own for cli usage, sed is meant for line oriented tasks and awk for field oriented ones (there is overlap too) - <USER2> main difference compared to perl is that their regex is BRE/ERE which is generally faster but lacks in many features like lookarounds, non-greedy, named capture groups, etc

you could check out sd[2] for a Rust implementation of sed like search and replacement (small subset of sed features)

[1] [https://github.com/learnbyexample/Command-line-text- processi...](https://github.com/learnbyexample/Command-line-text- processing/blob/master/perl_the_swiss_knife.md)

[2] [https://github.com/chmln/sd](https://github.com/chmln/sd)

<comment><USER11> Thanks! I was mostly asking because I've found Python's regular expressions to be extremely slow compared to egrep, and Perl is in the middle. It's annoying to have to call subprocess functions in python just too launch egrep on large files.

</comment></comment></comment><comment><USER23> Is there a way to output the results in Visual Studio format, which is <filename>(<line number>)<result>? This way when I hook up ripgrep as an External Tool, the line shown in the Output window can be clicked on to open the file and go to the specific line. I see in the source code that the separator is ":"; VS expects () around the line number.

<comment><AUTHOR> Not natively, no. You could probably write a simple script that transforms the output into what you want though. For example, on Unix at least,

        rg -n pattern | sed 's/:/(/' | sed 's/:/)/'

That won't work in every case (e.g., in the case of a file path containining a `:`), but it might get you pretty far. And it could probably be made more precise.

Otherwise, you could always use ripgrep's --json output mode to craft its output into whatever format you like, but that's probably more work. :-) The JSON format is documented here: [https://docs.rs/grep- printer/0.1.2/grep_printer/struct.JSON....](https://docs.rs/grep- printer/0.1.2/grep_printer/struct.JSON.html)

</comment></comment><comment><USER24> I use this program on a daily basis at work, it is so fast and easy to use, I love it. Thank you for creating it :D

</comment><comment><USER25> Here I thought I was hip using ag, the announcement blog post linked in this thread is fascinating and thorough, looks like it's time for me to try out rg.

</comment><comment><USER26> Ripgrep is so awesome, "some performance improvements" doesn't make any sense because it's already horrifically fast.

</comment><comment><USER27> What makes it so fast? Apart from skipping gitignored files and binaries.

Parallelism? Some Rust-specific features?

<comment><USER28> Here's a blog post from the author explaining how rg works: [1]. It's from 2016 so the benchmarks may not be up to date, including for rg's competitors.

[1] [https://blog.burntsushi.net/ripgrep/](https://blog.burntsushi.net/ripgrep/)

</comment></comment><comment><USER29> version 0.10.0 to 11.0.0 is a big version leap!

<comment><USER30> emacs did that too - 1.12 to 13.

<comment><USER31> Solaris jumped from 2.6 to 7 (the "2." is now implicit). Of course, Windows NT jumped from 4.0 to 2000. ;)

<comment><USER32> But it didn't, really. NT 4.0 was followed by NT 5.0 (branded Windows 2000) and then by 5.1 (Windows XP) and then by 6.0 (Windows 7).

<comment><USER33> Vista was 6.0. Windows 7 was 6.1 and 8 was 6.2 (8.1 was 6.3). They finally bumped up the version to 10 with Windows 10.

</comment></comment></comment></comment></comment><comment><USER34> goim was insanely good so I guess I'll have to check this out!

<comment><AUTHOR> If you liked goim, then you'll definitely want to check out its replacement: [https://github.com/BurntSushi/imdb- rename/](https://github.com/BurntSushi/imdb-rename/)

It's even faster and comes with its own built in evaluation. There's also no more reliance on an external database.</comment></comment>


Falluja's Strange Visitor: A Western Tourist - <AUTHOR> http://www.nytimes.com/2009/02/07/world/middleeast/07falluja.html?hp <comment><USER2> this so reminds me of Terry Pratchett...

Amazing story, not too sure what the hacker link is but I found it a quite interesting read, thanks for sharing!</comment>


Why I'm Not Using RubyMotion in Production - <AUTHOR> http://joshsymonds.com/blog/2013/06/26/why-im-not-using-rubymotion-in-production/ <comment><USER2> I'm happy that the RubyMotion guys can charge money for what they're doing.

But if you're going to stay closed source, you're asking me to just trust you that important (to me) bugs are going to get fixed fast enough. That is very hard to do.

That is the real value of open source. It's not about the money -- an extra $200 is nothing in a development budget. It's about being able to fix the bugs myself when they matter enough.

<comment><USER3> ... or at least hire someone to fix the bugs for you.

I wonder if there are any closed-source software shops that have a "pays us a premium to fix bug X first" option. Doesn't seem like it would work too well.

<comment><USER4> I worked for one and it works very well. They build one of the most common electronic medical record systems plus a bunch of associated software. Any large client, in this case a hospital, hospital chain, or large ambulatory clinic, pays a $mm annual fee for the right to call and notify of a breaking bug and get engineers to issue a fix asap.

<comment><USER2> This basically highlights why there's no comfortable middle ground in pricing software.

At a high price, you can get strong service guarantees.

At a zero price, you can use open source and manage the critical service yourself.

At a low but nonzero price, you get neither.

<comment><USER5> Some of it is client-side.

By that I mean, clients with budgets will opt for enterprise services. That's not necessarily fair, but humans like expensive stuff, especially when it's not their money.

The thing is, engineers who move into SaaS and try to tackle that middle ground tend to be shafted. This is why people like 'patio11 so often recommend aiming for the enterprisey folks - that's where you make a living.

</comment></comment></comment></comment></comment><comment><USER6> I've been using Ruby for some years now, and let me tell you something: just learn Obj-C. It's not hard to learn, is actually a pleasure to write, and will surprise you with it's elegance sometimes, e.g. KVC collection operators ([http://nshipster.com/kvc-collection-operators/](http://nshipster.com/kvc- collection-operators/)).

RubyMotion would have been awesome a few years ago, but now that Obj-C has ARC, literals for dictionaries and arrays, and blocks (yes!), I can't help but think that RubyMotion has missed the boat. Learn Obj-C. Go to iTunes U, get Stanford CS193P, and have a bunch of fun.

<comment><USER7> I agree, Obj-C has improved a lot. But it's not just Obj-C vs. Ruby:

\- you can use the editor of your choice and the terminal instead of Xcode

\- you can use the interactive console to debug your app or to live test new code

\- you get all the great wrapper gems like BubbleWrap which are heavily influenced by the "rails way" of doing things

<comment><USER6> Do you know these to be facts or are you just regurgitating something you've read or heard elsewhere?

Because:

> you can use the editor of your choice and the terminal instead of Xcode.

This is possible with Obj-C, but using Xcode is a far superior experience to RubyMotion and any editor.

> you can use the interactive console to debug your app or to live test new > code

Ditto for lldb in Xcode

> you get all the great wrapper gems like BubbleWrap which are heavily > influenced by the "rails way" of doing things

There are plenty of powerful 3rd party Obj-C abstractions too.

<comment><USER8> > using Xcode is a far superior experience to RubyMotion and any editor.

XCode is not ideal for people accustomed to, say, vim. I love the static code analysis and the autocomplete and storyboards are pretty cool too. But having to edit text like a normal human instead of using vim sucks and the split pane handling is garbage. I would rather do all my dev in vim.

<comment><USER6> Did you know you can have Vim keybindings in Xcode?

<comment><USER9> As it happens, ViEmu has just launched their product on XCode as well. From the couple of days in use, I'm quite pleased with it in comparison with Vicious that I used before that.

[http://www.viemu.com/download-xcode.html](http://www.viemu.com/download- xcode.html)

<comment><USER8> Thanks for the tip, I'll check it out!

</comment></comment></comment></comment></comment></comment></comment><comment><USER10> I have been waiting for a post like this for a long time. There seems to be a distinct lack of "I use rubymotion and here are my thoughts" type posts that provide concrete details.

Really appreciate the article and I am interested to see where this leads for RubyMotion.

<comment><USER11> If you're curious to hear more perspectives on using RubyMotion in production, you might check out Clay Allsopp's blog posts (e.g. [http://clayallsopp.com/posts/rubymotion-year- one/](http://clayallsopp.com/posts/rubymotion-year-one/)). His startup has been using RubyMotion for a while and he's written tutorial and a book for it as well.

<comment><USER10> Very interesting! Thanks a ton for the tip.

</comment></comment></comment><comment><USER12> While RM-3 itself is only 4 months old, the bug's been around and discussed since RubyMotion first came out (e.g. [http://blog.blazingcloud.net/2012/07/16/rubymotion-block- sco...](http://blog.blazingcloud.net/2012/07/16/rubymotion-block-scope-bug/)).

They used a bug tracker that wasn't publicly viewable until they migrated everything to YouTrack earlier this year (I reported it last August).

<comment><USER13> Laurent himself replied to that blog post saying the bug was resolved in RM v1.20. What's the difference between RM-3 and what that post describes? They read very similar to me.

<comment><USER14> Maybe a regression? It does sound like the exact same issue at a glance.

</comment></comment></comment><comment><USER15> I just bought a RubyMotion license and I really enjoyed creating my first iPhone App but I don't think I would have started if I knew about this issue.

I really hope that they get around to fixing this problem, it does make me a bit concerned that they are pushing big new features while such a serious issue seems to exists.

<comment><USER16> This is exactly how I'm feeling now. I've been prototyping and loving it, but I almost don't even want to try releasing an application if the support burden is going to be that high...

Now it's like, well, why not just use Objective-C? I sort of just wish I had my $200 back.

<comment><USER17> Think of the bright side - becoming aware of the perils of third-party platform toolchain you are likely saving a huge number of hours and frustration for yourself in the future. For example, I still regret using Google Web Toolkit, and for a few years now, but I'm sort of stuck with it.

$200 is small potatoes.

</comment></comment></comment><comment><USER18> This article is quite the breath of fresh air where constant, pointless battles over languages are concerned.

Not only does the author have the courage to admit there are problems with RubyMotion that make it unfit for production use--and seriously, noticeable unexpected and difficult-to-reproduce-and-fix memory errors make _any_ language unfit for production--but he also offers a dispassionate and technical explanation.

I love Obj-C and have eyed RubyMotion and other Ruby-related projects like it (MacRuby, etc.), and it is nice to hear from an unapologetic supporter of a project that it is not production ready, despite the hype and fanfare.

Thank you.

</comment><comment><USER19> RubyMotion's creator answer : [https://groups.google.com/forum/#!topic/rubymotion/x6-9c__IH...](https://groups.google.com/forum/#!topic/rubymotion/x6-9c__IHH0)

<comment><USER20> tl;dr: They had a well-known workaround for the known bug involving block variables [apparently not well-enough], so they were focusing on other things. As of right now, they're going drop everything and fix it in RM 2.4.

<comment><USER21> Every time I heard the phrase "well-known workaround" I interpret it as "tribal knowledge."

</comment></comment></comment><comment><USER22> _We must be able to expect that critical flaws in our toolchains will be fixed promptly_

At some point, Borland disabused me of the notion that serious toolchain providers fixed their critical flaws promptly... or at all.

</comment><comment><USER23> Apologies for the basic question, but why would this 'analog' (is that another system? An abstraction?) have this issue if it is using ARC? Isn't ARC just a flag in XCode's compiler? If RubyMotion turns it on, wouldn't XCode make all the necessary arrangements? Again, I simply want to understand; I'm not trying to make a point.

<comment><USER24> It's NOT using ARC. It's using an "analog" (in the original post's words).

With which he means "a substitute", "a similar tech", "their own implementation of the same concept", "something analogous to ARC" (hence the "analog").

(Most people know "analog" only as in "analog vs digital", but it was immediately obvious to me, because I know the etymology of the word from the original language it was adopted from.

Btw, the english dictionary definition that's closer for such a use of the word is:

1\. An organ or structure that is similar in function to one in another kind of organism but is of dissimilar evolutionary origin. The wings of birds and the wings of insects are analogs.).

<comment><USER25> Personally, I use "analog" to mean "not digital" and "analogue" to mean "something similar to". I think that's a little clearer, at least to some US readers.

<comment><USER24> Could be. I thought analogue was just the british variant of the spelling.

</comment></comment></comment></comment><comment><USER26> Sometimes I doubt your commitment to RubyMotion.

</comment><comment><USER27> lrz promises fix by next version

[https://groups.google.com/d/msg/rubymotion/x6-9c__IHH0/J7jYd...](https://groups.google.com/d/msg/rubymotion/x6-9c__IHH0/J7jYdoMz85cJ)

</comment><comment><USER28> This puts in question Ruby Motion's entire premise for existence.

Ruby Motion is supposed to make iOS and Mac OS X app development simpler than Objective C. If there are lots of complex rules and corner cases to learn about and work around, it becomes easier to just write Objective C, where at least the rules about memory are well understood by the community.

Will be interesting to see how HipByte addresses this. They at least need to get in front of the issue with a blog entry or article about how they plan to address it.

</comment><comment><USER29> Hah, I was thinking "what a coincidence" since I started that thread in the group. Thanks a bunch for writing this up -- I hope it gets fixed soon!

</comment><comment><USER30> Am I the only one who thinks that ARC in a language like Ruby is probably impossible? Even with Objective C they had to add 4 new variable qualifiers, and put that burden on the programmer to use them properly.

<comment><USER31> ARC in a language like ruby is trivial. ARC is probably the first kind of garbage collection ever implemented.

It's only complicated in Objective-C because of all the C.

<comment><USER28> Do you have any thoughts, then, on why Laurent is having such a hard time fixing this in Ruby Motion?

(Looking at your web site, seems like you would have a good understanding of the underlying issues.)

<comment><USER31> That's a good question. I'm not really sure, but I'm almost positive it's related to Ruby or RubyMotion internals, not ARC in general.

As best I can tell from the article and the filed bug, it comes down to not retaining captured variables in blocks. In Objective-C, there's some automatic memory management that happens for you when you capture a variable in a block:

        id x = ...;
        ^{ NSLog(@"%@", x); };

Because the block depends on x, the lifetime of that object needs to be tied to the lifetime of the block. As such, the compiler emits code so that if and when you copy the block onto the heap, it automatically retains x. When the block object is destroyed, it automatically releases x.

Note that, while definitely "automatic reference counting", this isn't, strictly speaking, ARC. Because this is _so_ critical to being able to use blocks without going completely insane, this bit of cleverness was introduced with blocks on 10.6, even though ARC didn't exist yet.

The note in the bug says that it's complicated because they don't want to introduce a performance regression. This suggests that they're not having trouble with retaining objects referenced by the block per se, but rather with being smart about it, so that it's only retained when necessary. The Objective-C compiler does this by constructing blocks on the stack, and requiring an explicit copy to move them to the heap. Only when explicitly copied do they retain the variables they capture, so simple inline cases remain fast. Perhaps Ruby or RubyMotion have something that makes this harder to do.

If that's correct, then I can't say I find the excuse a very good one. Performance regressions are bad, but generating incorrect code is much worse. They need to fix it immediately, take the speed hit, then see about ways to improve performance while maintaining correctness. However, I certainly could be wrong.

<comment><USER32> I just want to add that RubyMotion is also not correctly capturing the "value" of the variable in a block. i.e. even if you manually retain a local variable's object and don't release it, it wouldn't work correctly if the block runs _after_ the local variable goes out of scope. IMO, this makes it much harder to workaround this retain bug.

The workaround now is just to create a class around each block operation. I've been thinking about this issue quite a bit (I intrigued many developers using RM are actually not observing this issue sooner) and this workaround seems to be the only way to use APIs like #beginBackgroundTaskWithExpirationHandler: and #endBackgroundTask: which has no non-block based alternatives and is always called asynchronously.

<comment><USER31> That's quite weird. I can only assume that normal Ruby has no problem with this. Wonder what changed in RubyMotion to break it. Certainly would need to be fixed before I'd call RM anything other than a toy or experiment.

</comment></comment></comment></comment></comment></comment><comment><USER33> That's a lot of fuzz for an active bug with a very easy workaround.

<comment><USER34> I didn't see a workaround, can you elaborate?

<comment><USER33> I understood that using an instance variable is a viable workaround. Or maybe just code around the issue?

<comment><USER18> The author states that even using this method has produced indeterminate crashes.

</comment></comment></comment></comment><comment><USER35> the relevant issue ticket is here: [http://hipbyte.myjetbrains.com/youtrack/issue/RM-3](http://hipbyte.myjetbrains.com/youtrack/issue/RM-3)

</comment><comment><USER36> I've always been suspscious of RubyMotion for having no trial. Now I know.

<comment><USER7> They offer a "30 days money back guarantee".</comment></comment>


NoSQL meet SQL (a SQL front-end to CouchDB) - <AUTHOR> http://legitimatesounding.com/blog/NoSQL_meet_SQL.html

<comment><USER2> This is an impressive proof of concept, but the single most powerful thing about key value stores / document-based DB's is their _independence_ from SQL.

Lately I have been experimenting with MongoDB and, personally, the divergence from SQL is refreshing and helps me rethink those engrained RDBMS principles!

Perhaps this could be useful when migrating from a legacy SQL system?

<comment><USER3> SQL is a query language and, frankly, doesn't need to be tied to an RDBMS. Look at SimpleDB and now CouchDB.

However, with new k/v stores and other database models, I don't see why we need to mangle SQL to work with every single type of data model. If it can be mapped, great. Otherwise, let each database build a query language to truly exploit its power.

<comment><USER4> Note, however, that the SimpleDB 'select' syntax is _SQL-like_ and not actually SQL.

The danger here is a proliferation of syntactically similar but semantically different query languages, and mass confusion as developers attempt to switch between data storage providers.

<comment><USER5> How about using a real SQL engine, then? <http://www.sqlite.org/vtab.html> among other possibilities.

</comment></comment></comment></comment><comment><USER6> It's relatively easy to make a SQL front-end for any single-node database.

For distributed databases it is harder.

</comment><comment><USER7> Isn't this an SQL view/ presentation on couchdb? Are there any disadvantages for using it this way?

<comment><USER8> It uses temporary views. Very slow. Damien Katz has a comment on the original post saying how it might be done efficiently.

<comment><USER9> I hope they speed up temporary views in the future. MongoDB has a nice query- style language, and I think that it really helps ease some concerns for noobs to document-style data, plus, adds a nice level of flexibility.</comment></comment></comment>


How do you sell a time and materials contract to clients used to fixed bids? - <AUTHOR> https://www.quora.com/Agile-Software-Development-How-do-you-sell-a-time-and-materials-contract-to-clients-used-to-fixed-bid-contracts?share=1 <comment><USER2> I tried to sign in to quora and it asked to access my google contacts. WTF!?</comment>


WebKit Updates CSS3 Gradient Support, Matches Mozilla Syntax - <AUTHOR> http://blogs.sitepoint.com/2011/01/18/webkit-updates-css3-gradient-support-matches-mozilla-syntax/ <comment><USER2> Are the resizable divs on the original announcement (<http://webkit.org/blog/1424/css3-gradients/>) a Firefox feature (though I've only ever seen resizable textareas), a script, or an HTML5 feature?

</comment><comment><USER3> I preferred the webkit syntax. Guess I'll have to update my chrome extension now.

<comment><USER4> Why did you prefer it?

<comment><USER3> Could be just because I learned it first. It makes a lot of sense in its implementation, ease of use and seems to at least give me the impression of more control.</comment></comment></comment>


Ask HN: What's next for a startup CTO? - <AUTHOR> Hi HN,
I'm a startup CTO and cofounder but leaving my current role in 2 weeks (reasons are not relevant to next job), and wondering what kind of job could come next.
What kind of roles would you hire someone like me for? Or, if you're someone like me, what role did you do next?
Key facts: - in Europe, would stay within Europe for next job - successful, growing medical tech startup but don't want to stay in that industry
- run the technical side of my startup for several years and built team to 15 - computer science degree - worked in variety of tech roles before this for 10 years - I want interesting work. Would stay in startups but need a fair salary to support family. Would also work in mature companies but don't know what roles I should aim for. <comment><USER2> Usually, why a cofounder leaves their startup is relevant for the next job. Specially when they say it's not relevant.

<comment><AUTHOR> Nah, artisitic differences with the COO about the right way to do things. I think it's holding us back, but the CEO agrees with the COO. It's making it hard for me to make our product as good as it could be and that's a constant source of frustration.

</comment></comment><comment><USER3> There is just a huge difference between _co-founder /CTO_ and _next job_.

Next startup is next opportunity. Next job is staff.

<comment><AUTHOR> Agreed but what kind of staff could I be? Different roles and different companies mean very different kinds of staff.

</comment></comment><comment><AUTHOR> Sorry for the formatting, my HN fu is not strong.</comment>


Write your next Ethereum contract in Pyramid Scheme - <AUTHOR> http://www.michaelburge.us/2017/11/28/write-your-next-ethereum-contract-in-pyramid-scheme.html <comment><USER2> Oh well done. Taking the pun and then actually implementing it fully, for the win.

> Pyramid Scheme is implemented using the appropriately-named Racket.

<comment><USER3> This is perfect. What would actually be perfect is if it replaced solidity.

<comment><USER4> don't worry, Cardano is going to eat Ethereum's lunch and it most definitely will not be using solidity.

<comment><USER5> How can you be so sure cardano will eat ethereums lunch when the concentration of developers in eth > cardano ?

I can see the benefits of cardano but I don't think it can catch up ?

<comment><USER6> How about a single large scale smart contract launch that doesn't end up needing a hard fork or result in people having money permanently frozen?

I hold ETH and I am excited for what it could do. But Solidity is hot garbage and that Python inspired alternative is a close second. I also don't care about quantity of developers. These things deal with real money from real people, it demands a level of seriousness an average developer should run screaming from.

<comment><USER7> And PHP powers some of the largest sites on the web. Solidity will work for most people who just copy a boilerplate smart contract.

<comment><USER6> You don't see people losing millions of dollars when a webpage fails to load due to a simple logic error.

<comment><USER8> Webpages don't store money in the form of digital tokens that move in accordance to the webpage's logic.

<comment><USER9> Online gambling webpages do.

</comment></comment></comment></comment></comment></comment></comment></comment></comment><comment><USER10> > Formal Verification: Get an absolute 100% guarantee that your contracts are > free of errors

Seems to me that should be priority #1 considering there's potentially millions of $local_currency riding on these contracts and they seem to be done with the hard forks when one goes awry (though I was reading that they collude to make it really, really hard to sell off the ill gotten gains).

<comment><USER11> > Formal Verification: Get an absolute 100% guarantee that your contracts are > free of errors

This is not actually possible, there could have been an issue with your threat model. e.g. side-channel attacks could be out of scope.

<comment><USER12> Formal verification only ever verifies as far as your spec specifies

<comment><USER13> That is true, but it should not be assumed that a spec. is a thing of fixed validity. A formal spec. has a reasonable likelihood of being less ambiguous, incomplete or self-contradictory than an informal one, or whatever substitutes for a spec. in an agile approach.

<comment><USER14> That only tells me a spec and its formal verification are necessary but not sufficient assets. Not "we can't prove everything so we'll keep our millions riding on half-assed piles of garbage.

</comment></comment></comment></comment></comment><comment><USER15> Was this done purely for the joke of writing Pyramid-Scheme next to Ethereum ?

<comment><USER16> why would someone write Scheme not as a joke?

wait do the downvotes mean that some people actually use Scheme?

<comment><USER17> Scheme is a wonderful and flexible language. There's a reason it was used as a teaching language and in books like SICP. I don't use it very much, but you really have to admire some of the power in the language, like the way variable binding is handled to make macros so powerful. In short: scheme is probably one of the best base languages for building DSLs. If I had to pick "most tasteful" programming languages I would put scheme in the top 3. (Above Python, which is the language I use the most, and above C++ and Java which are other languages I use at work.)

</comment></comment></comment><comment><USER18> "Destabilizing Nation-states with Math", ha, one of the most insightful summaries of cryptocurrencies I have seen.

<comment><USER19> Huh. Looks like it can be applied to a bunch of other innovations too.

"Destabilizing Nation-states with Biology" \- Bio weapins

"Destabilizing Nation-states with Nuclear Physics" \- N-bomb

<comment><USER20> Those were state controlled. The scary thing is, we're quickly approaching the time when bioweapons can be made cheaply and by non-biologists.

<comment><USER9> Nuclear weapons could have ended up made by non-state actors (e.g. the average corporation) cheaply enough for a long time now; the state(s) just made sure to get an early lock on publications about uranium enrichment processes, before any of the really good ones became public knowledge.

</comment></comment></comment></comment><comment><USER21> Nice article and project.

I have been experimenting with Pact that is written in Haskell and implements a non Turing complete Lisp language for writing contracts and provides a blockchain implementation. [https://github.com/kadena- io/pact](https://github.com/kadena-io/pact)

</comment><comment><USER22> What is the shortest compiling deployable ETH pyramid scheme you can write in Pyramid Scheme?

</comment><comment><USER23> A shoo in for the Oscars in 2017. Amazing title and article.

<comment><USER24> It's 'shoe in' by the way.

<comment><USER25> [http://grammarist.com/spelling/shoo-in/](http://grammarist.com/spelling/shoo- in/)

</comment></comment></comment><comment><USER26> This is a lesson in follow through in pun economics. Well done

</comment><comment><USER27> Did you first implemented this project and then realized the hilarious naming? Or was it the other way around?

</comment><comment><USER28> _> Haskell programmers often code in ivory towers with their heads in the cloud. In this multi-part article series, we'll get our feet wet diving deep below C level._

I'm a bit confused by this article's introduction. Pyramid Scheme is a Scheme dialect implemented in another Scheme (RAcket). What does the whole thing have to do with Haskell?

<comment><USER29> The guy who wrote the article programs in Haskell, he might assume the audience is in on the joke

</comment></comment><comment><USER30> Headlines coming next week on HN: "Write your next Ethereum contract in [Forth|Elixir|Rust|Brainfuck]".

Headlines coming next month on HN: "How I wrote an Ethereum clone in [Rust|Node.JS|Minecraft|Dwarf Fortress]".

Headline coming next year on HN: "Running the Linux kernel as a blockchain application".

<comment><USER31> I think you may have missed the joke here. A pyramid scheme is an unsustainable business model where the gains accrue at the top. The fact the author built it in racket (a racket being another dishonest scheme) makes it all the funnier.

</comment></comment><comment><USER32> Relevant xkcd: [https://xkcd.com/410/](https://xkcd.com/410/)

</comment><comment><USER33> unbelievable people! next thing they will try to sell us hot ether</comment>


Rockstar condemns Max Payne 3 cheaters to play only against each other - <AUTHOR> http://arstechnica.com/gaming/2012/06/rockstar-condemns-max-payne-3-cheaters-to-play-only-against-each-other/ <comment><USER2> > we're a bit intrigued by the potential for the "Cheaters Pool" to evolve > into a new mode of play that some players might actually prefer.

Unregulated cheats and hacks led a friend and I to inadvertently invent a proto-minecraft over a decade ago.

Around 1998, I was playing Dark Forces 2: Jedi Knight when I started to experience cheats and hacks. Someone taught me how to do it, which was incredibly easy (each weapon file was a text file with variables you could change: projectile=bullet, damage=5, speed=3). Simply replacing the file client side would change the behavior.

When playing around with the projectile=[id] with some ids I found while map making, a friend and I discovered we could modify all of our weapons to shoot out various world objects such as bridges, platforms, doors, etc. We started playing the game almost exclusively this way for quite awhile, going off to separate corners of a map, building things, then comparing our structures.

So, I have to say, great idea on the quarantine, Rockstar!

<comment><USER3> I made blaster rifles that shot destructions, but never realized you could shoot map features. That sounds like the potential for interesting fps: remake the map as you go.

<comment><USER4> There's a TF2 mod that is kinda like that.

You start the game, and have 2 minutes to create defenses. After that, it's a normal game of CTF.

I forget what it's called though.

<comment><USER5> The game mode is called Fort Wars.

Source: <http://wiki.teamfortress.com/wiki/FortWars>

<comment><USER6> Someone should do a mod of that, based on characters from the old A-Team TV show, complete with the original theme music. The "build defenses" interval would be like the build weapons montage.

[http://tvtropes.org/pmwiki/pmwiki.php/Series/TheATeam?from=M...](http://tvtropes.org/pmwiki/pmwiki.php/Series/TheATeam?from=Main.TheATeam)

</comment></comment></comment></comment></comment><comment><USER7> I remember the old days of Counterstrike and the infamous "myg0t" clan who would enter CS servers and use things like wallhacks and aimbots as well as excessive deliberate teamkilling.

After they had got themselves banned from just about every server out there they launched their own "anything goes" server which could be actually be a fun experience to play on.

Another interesting thing I remember from the CS days was that me and my friends used to play the game _a lot_ which meant that we were much more skilled than the average player. The result of this was that admins would often accuse us of cheating (we weren't) simply because our kill/death ratio was so much better than anybody elses (I used to have screenshots of myself with 40/2 kill/death ratio on public servers using pistols only).

Of course this made us pissed at the time since we kept getting banned from servers, but now I think about it where they so unjustified in doing this? Having a massive advantage over the average player whether it comes from skills or cheats still has the same affect of reducing the enjoyment of the game for average players & newbies. It's almost like having an olympic athletic squad turn up to the local school sports day and dominate every trophy.

Since I don't have as much time or interest in games as I used to when I was a teenager I tend to avoid online play in many games because the experience is generally just getting curb stomped over and over again by more experienced/obsessive players and sometimes in team based RTS games I get kicked from a team because "I don't team with noobs".

Another thing I don't understand about this is how invincibility cheats would work, I can understand things like aimbots / wallhacks because they are using information that has been pushed to the client but surely the game server should never allow something like the number of health points to be authoritative on the client end?

<comment> X-Istence At some point you have to trust the client. Invincibility cheats can be as simple as the client updating its position the moment it knows there is a projectile traveling towards it, or the moment another player is turned to face them they duck.

For Counter Strike: Source for example the server sends the location, and way that a user is pointing to the client. With some calculations you can then draw a line from the other players to where their bullets would go if they fired. Using that knowledge you can find where your hitboxes are and simply make sure that you are never in the path of their line of sight!

That is how wallhacks work as well, the client knows where the other players are so that sound can be properly calculated (so if they are further away and they fire their gun you hear less of a shooting sound and you hear a louder sound when they are closer).

Healthpoints are generally stored server side (at least for the games I've been RE'ing for fun lately), but even then you can cheat, if you have portable med kits you can take at any time, as soon as you drop below a certain percentage you take one, now hack the client to have unlimited health kits and you are set. Keeping everything and all variables on the server is impossible, mainly due to lag the game would become unplayable, and due to having so many variables to calculate there is always something you have to trust the client with (position being the biggest one, you can't take all user input, send it to the server, and then send back where the character should now be).

The faster internet connections become the more feasible it is to have a client that just renders the result and have all of the computations done on a remote server somewhere. Kinda like RDP for games. But until the game companies then also put the servers close enough by the user and build the game experience to equalise between different ping times (something CS:S attempts to do but fails at quite well, thus allowing people with AWP's to kill people that are not even near where they were scoping due to timing delays) it is going to be a huge mess and gamers will hate it.

<comment><USER8> > At some point you have to trust the client.

I'm not convinced of this, and the general trend of every online game that cares about cheating since at least QuakeWorld (1996) is moving in the direction of not trusting the client for important things.

> Keeping everything and all variables on the server is impossible

True, but you can get quite far by only giving the client the information they're supposed to have. Wallhacks were originally possible in Quake because pre-QW, the client received the position of every player on the map.

The strongest way to prevent wallhacks is to only tell the client about other players they should be able to see. The id and valve engines do this, for the most part. Again, quakeworld in 1996 severely curtailed wallhacking by only showing the users players that were visible, or "almost visible", i.e. near corners.

Your example of infinite health packs is something that could be trivially tracked on the server side and is, even for games as big as WoW. WoW tracks the current inventory of every single player in game. You can tell because sometimes when there are server glitches, you're unable to pick up loot from dead monsters.

<comment><USER7> The reason that the client may need to know about other players locations when they are not visible is sound.

You can hear somebody moving on the other side of the wall to you and for the sound to be realistic it needs to be played at the correct volume level determined by distance etc.

This isn't a big issue in some games , because you can just make peoples movements silent (of course there is still weapon sounds). However other games (like CS) have a stealth element where you need to make a tradeoff between moving quickly and noisily or slowly and silently so the sound is a big part of that.

<comment><USER9> Sound sources can be anonymized, though. If the source of a given sound is on the other side of a wall, the player can't see who it is, and the client doesn't need to know.

I'd go so far as to not even notify the client about sounds that are too quiet and far away for the player to be able to hear in the first place. Calculating echoes on the server and having the client treat them as separate "original" sound sources should also help somewhat.

<comment><USER7> Even if you don't know who it is, knowing that someone is around the other side of the wall is a huge advantage in an FPS game. Also players tend to have their teammates displayed on a map, so the cheat program could take this into account and mark as friend or foe.

Pushing this info to the client early also allows the program to make sure all the required assets are loaded into memory before it has to be rendered.

You could stream sound from the server, but latency might be an issue.

</comment></comment></comment></comment></comment></comment><comment><USER10> The reddit thread about this had some interesting discussion and excellent point:

This is about cheaters that cheat their saves by giving themselves items that they haven't yet unlocked (or bought). It's punishing those that don't care for earning items or buying them.

Source: [http://www.reddit.com/r/Games/comments/uyk1v/rockstar_target...](http://www.reddit.com/r/Games/comments/uyk1v/rockstar_targets_max_payne_3_multiplayer_cheaters/c4zpw2k)

</comment><comment><USER11> I've always wondered if we had an Olympics type sporting event where 'anything goes' would be sport worth watching.

My experience has been in two online games, one an Aces game where you flew against WWII planes and cheaters would make their planes make impossible turns or suddenly have 3000' of altitude etc. Made it unplayable. And in World of Warcraft where a sort of soft-core cheating or 'twinking' was making player vs player for non-twinks seriously non-fun, they added a 'twinks' mode where twinks had to play only other twinks. (this was done with a combination of things but it worked.)

I enjoy playing games on 'god' mode some times, and its hilariously fun with friends, and have many fond memories of running a Unreal Tournament (UT) server with some really crazy environments. So I expect there is a market there. Very happy to see Rockstar being creative here.

<comment><USER12> I'd love to see sports leagues that allow not just performance-enhancing drugs, but also prosthetic enhancements of any kind. The athlete of tomorrow is a cyborg.

Such a league would appear unplayable or non-fun to those players who abide by the traditional rule-set. So it's important to segregate players by skill- range. I wouldn't have much fun trying to play football against cyborgs, but I'd love to watch them compete against each other.

Pro sports leagues are run by technophobes who don't even want to run lasers down the field to augment the referees' abilities, so we won't see cyborg sports any time soon. But online games are hardly run by technophobes, so we ought to see more and more of this insightful approach.

All games should accept that players choose their own level of rule conformance. Place players in competitions based on their skill level, and and the games will be playable and fun for everyone.

<comment><USER13> That was the direction the XFL went in, no? Turned out no-one wanted to play (entirely understandable really, most performance-enhancing drugs have negative effects on your overall health)

<comment><USER14> Not to mention the fact that professional athletes start their training very young, so this would essentially mean pushing drugs to kids for the entertainment of adults.

A lot of pro athletes use drugs anyway these days but making it legal would present some ethical issues.

</comment></comment></comment></comment><comment><USER15> The article just glosses over the fact that _detecting_ cheaters is far from easy. It just makes it sound as if it's a done-deal, "if you cheat, you're isolated away".

Speaking with at least _some_ amount of insight, I can say that cheat- detection in modern networked multiplayer action games is far from easy.

<comment><USER16> The first thing I remember from a multiplayer networking tutorial is that it is close to impossible to distinguish cheaters from really good players.

<comment><USER17> It's a bit more complex than that, I think. It's easy to distinguish careless cheaters from good players. It's hard to distinguish conservative cheaters from good players. It's also hard to distinguish good, nonconservative cheaters from _really exceptional_ players.

But really, it doesn't matter. You can winnow out the obvious game-breaking things like wallhacking and instant-headshotting, but to the average player it doesn't make a difference whether the person who keeps killing them is a phenomenal player or just a skilled cheater; it's not fun either way.

A solution to one is a solution to both: Your game needs to be designed such that it maintains balance and remains fun when some players are performing much better than others, for whatever reason.

<comment><USER18> > It's hard to distinguish conservative cheaters from good players.

True, but getting the flagrant ones is usually enough so that in any given game the average player does not have to deal with cheating.

</comment></comment></comment></comment><comment><USER19> Maybe this could apply to people hell banned from communities. Instead of a regular hellban, have a hellban community... Let all of the rolls play together.

<comment><USER20> I read about this when I first heard of hellbanning:

[http://www.codinghorror.com/blog/2011/06/suspension-ban- or-h...](http://www.codinghorror.com/blog/2011/06/suspension-ban-or- hellban.html)

 _(There is one additional form of hellbanning that I feel compelled to mention because it is particularly cruel – when hellbanned users can see only themselves and other hellbanned users. Brrr. I'm pretty sure Dante wrote a chapter about that, somewhere.)_

<comment><USER7> I have HN set to show me comments from hellbanned users.

A lot of them are just trolls/spammers , however there are a number that I feel sorry for because they post relevant and sometimes long comments on threads and I imagine that they wonder why they are not getting any votes or replies.

I think it's easy to get off to a bad start on an online community simply because you don't understand it's ethos rather than outright malice.

<comment><USER21> So do I. I tend to upvote the sensible (i.e. not crazy) ones, in the hopes that someday they'll make it back to positive karma.

<comment><USER22> I don't think the votes actually go through on hellbanned users unfortunately.

<comment><USER23> Hellbanned? what does that actually mean? Seems i missed a lot online since around the early 2000s...

<comment><USER24> Your account appears, to you, to function normally, but your posts are not visible to any other users.

The rationale is that trolls and spammers will usually register new accounts upon being notified of a ban, but a hellbanned troll/spammer might continue to use the hellbanned account without realizing that their posts are ignored.

<comment><USER23> Ah! thanks for the quick answer!

</comment></comment></comment></comment></comment></comment></comment></comment><comment><USER25> Another advantage of "keeping them alive" is watching what they exploit so they know where to harden, sort of like a free pwnium contest. And after the dust settles, they may have a few interview candidates.

</comment><comment><USER26> I agree with the author that the cheater's pool would be cool to keep. I could imagine having two accounts - one account for regular play and one account for cheating to see who can do the best hacks. The author is probably right that it would just turn into a complete mess though.

</comment><comment><USER27> > It's as if Major League Baseball suddenly opened up a second, parallel > league that allows players to use performance-enhancing drugs and teams to > use an ultra-precise pitching machine that throws nothing but 120mph > fastballs to the corners of the plate. The games might end up as an > unwatchable mess, but they'd likely attract plenty of fans and players who > want to see just how far the "baseball" experience can go.

Sounds like a blurb to an awesome dystopian libertarian science fiction novel.

<comment><USER28> I'm pretty sure there's something similar mentioned in one of the Red Dwarf novels (with the experience ending in the use of genetically engineered players).

</comment></comment><comment><USER29> Sounds like CS 1.3 to me. Their so-called "hackers arms race" is what got me into coding in the first place.

<comment><USER7> Which side were you on?

<comment><USER29> Haha, I played with the cheaters.. But only with other cheaters. There was a small subset of cs1.3 cheaters who played competitively vs eachother. The original OGC hook was released as source and gave me my intro to compiling editing and debugging, along with some help from unknowncheats.com at the time

</comment></comment></comment><comment> simba-hiiipower honestly don't have much value to add here (not really much of a gamer) and from reading other comments, clearly there are some points of contention around the issue, but my takeaway from the post.. _that sounds awesome._

again, not a big gamer here, but i think that sounds like a totally reasonable way for the studio to minimize the negative impact of cheating on the majority of players who don't, and while keeping those who do cheat (i'm assuming all of whom would have to be super-hardcore gamers/fans) engaged with the game and loyal to the brand (rather than being kicked-off outright).

also, and more importantly, i'm just imagining how cool it would be, and what a rush one would get, in having to compete with other like-minded hackers in a never-ending arms race to dominate in a (game) world of cheaters!

<comment><USER30> In my experience playing FPSs online (mostly Call of Duty 1/2/4), those assumptions are not quite true. For one, plenty of cheaters are not really very good players; they're not complete noobs, but they're often average players or below. Some are, but I don't think it's correlated with it.

And for many, having to compete with other cheaters would be boring and annoying, since for them the main satisfaction is 1) making ridiculously large scores compared to others and 2) watching others complain and leave.

An indication that this wouldn't be attractive to them is the fact that there are many Punkbuster¹-free servers out there, yet cheaters still spend time looking for cheats that can evade it.

¹ Anti-cheating system.

</comment></comment><comment><USER31> I wonder if cheating could be entirely solved with machine learning like TrueSkill that matches you with people with similar performance. Then matching cheaters with cheaters is almost guaranteed to happen, and a bad player cheating a little can still be a good adversary.

</comment><comment><USER32> This is effectively what a VAC ban does, isn't it? I can't imagine why else you'd play on a non-VAC-secured server.

(for reference: <http://en.wikipedia.org/wiki/Valve_Anti-Cheat>)

<comment><USER33> Close. It's not clear if cheaters are actually informed they've been sent into no-man's-land.

</comment></comment><comment><USER34> It's an elegant solution. In 1998, as a freshman in college, we kicked a lot of ass on Tribes. By my sophomore year, the hacks had completely ruined the game. Frankly, it inspired one of my teammates to go into CS so that he could "hack back."

<comment><USER35> Are you referring to skiing? Tribes is an interesting example of a "hack" that completely re-invents the game (in most people's opinions, for the better).

For those not familiar, a bit of gaming history: Tribes is a FPS where the players have jetpacks and can fly around in the air. The jetpacks have limited energy, so players ended up having to spend a lot of time on the ground too. One particularly innovative aspects of Tribes was it's expansive maps. It was like a Battlefield game, but 5 years earlier. By only running and jetting, it could take minutes to get across a map, which is important considering the primary objective of the game was to move the opposing team's flag from side of the map to your team's side.

The hack was: players discovered that jumping at the instant the player lands on downhill surface caused them to accelerate in the downhill direction. Mashing repeatedly on the jump key going down a large hill would cause the player to accelerate all the way down the hill, as if there was no friction with the ground (hence "skiing"). Someone wrote a script that automated this act so all a player had to do was hold down the jump button instead of pressing it repeatedly.

This bug completely re-invented the game into something no one imagined it would be. Many players embraced it, I am sure some did not. It added a layer of complexity and made the game addictively fast paced (with skill you could now get across a map in seconds). The competitive community embraced the new style of play and the developers had no choice but to not patch the bug. This bug arguably became the defining gameplay aspect of Tribes.

The lesson? As mentioned here many times, the users are what make your product special. Sometimes they will invent uses for it you never imagined :)

<comment><USER34> No, skiing was awesome, and we were, frankly, some of the pioneers (it only worked on some keyboards, I had to buy a new one). I'm talking about the aiming scripts and when guys started walking through walls. Most of the base servers were later patched, but for a while they were hard to find.

</comment></comment></comment><comment><USER36> Wait, why do some of these "cheat" mode exist in production games? Isn't that the problem to begin with? Why does omething like "invincibility" exist in the game? Am I missing something here, or is this a noob question from a non- gamer?

<comment><USER37> They aren't deliberate "cheat modes", they're hacks. Certain types of hacks are extremely difficult to prevent or even detect.

There was an article on HN a few months ago (can't find it right now) that discussed hooking into the GPU to avoid detection.

</comment></comment><comment><USER38> Are the cheaters informed when they are sent to the "Cheaters Pool" penalty box?

<comment><USER39> Hopefully not, that would allow them to flag detectable hacks and buy new accounts to continue cheating with new tools.

</comment></comment><comment><USER40> An elegant solution.

Sorta like the idea that there should be two leagues for the Olympics, the Tour de France, et al.: one with steroids, one without.

It would be interesting to see which got more viewers.

</comment><comment><USER6> If Rockstar is doing this right, then they will separate cheat detection from cheat consequence by 24 hours or more, and make this interval random. Why? Because to a cheat hacker, detection is a bug, and delaying the consequence of cheat detection by a random amount makes it a hard to recreate, latent bug. It inflates the difficulty of "debugging" from the cheater's POV.

</comment><comment><USER41> Kind of reminds me of skiing in tribes. Although not necessarily a hack, it was a glitch that was heavily exploited, and now it's an integral part of the gameplay, and a large part of what made it great. Giving people the freedom to be creative with the gameplay mechanics can lead to great things. Other examples would be DotA and CS.

</comment><comment><USER42> Its seems exactly like prison. You have jails to separate criminals from the general population.

However people who go to jail tend to come out more dangerous and knowledgeable than before.

</comment><comment><USER43> As long as they don't have the false and shocking "we NEVER make mistakes!" attitude towards their ban software that companies like EA, Valve and Bungie had, then that's neat.

<comment><USER44> Bungie I don't think ever really did make mistakes though, mainly because their bans were based off of the number of times and frequency at which a player would betray teammates and get ejected from games/back out of games early to avoid a loss. I agree though, that mentality isn't really needed.

</comment></comment><comment><USER45> Kind of like the XFL for video games.

</comment><comment><USER46> A Max Payne parallel universe!! I would make myself into a zombie character. With super fast running and the ability to bite people.

in any case, it sounds like this could _actually_ be a little more fun. I give it a 50/50 chance of working how they anticipate.</comment>


U.S. navy confirms UFO videos from Blink-182's Tom DeLonge are real - <AUTHOR> https://globalnews.ca/news/5923231/tom-delonge-ufo-videos-navy/ <comment><USER2>
      What if people knew that these were real
      I'd leave my closet door open all night
      I know the CIA would say
      What you hear is all hearsay
      I wish someone would tell me what was right

Lyrics from the song "Aliens Exist" DeLonge wrote in 1999. Maybe the people storming Area 51 will prove Dave Mustaine right too!</comment>