Show HN: Sneakers – Fast background processing for Ruby - <AUTHOR> http://sneakers.io

<comment><AUTHOR> Author here - Hi! :)

Sneakers is a high-performance background-job processing framework based on RabbitMQ.

It uses a hybrid process-thread model where many processes are spawned (like Unicorn) and many threads are used per process (like Puma), so all your cores max out and you have best of both worlds.

It's being used in production for I/O intensive jobs as well as CPU intensive jobs.

On a recent 2012 MBP it reaches 7000req/s for a silly microbenchmark while Sidekiq keeps at the hundreds (600-700req/s).

<comment><USER2> Have you considered pluggable backends (with a Sidekiq/Resque/Rediss backend) so you can easily upgrade a Sidekiq stack to Sneakers?

<comment><AUTHOR> Yes. I dislike reinventing the wheel, I actually bumped my head against making Sidekiq use a different backend.

Three problems - one - it is too tightly coupled to Redis. Secondly, Celluloid (the actor model behind Sidekiq) proved to be some of the problem here. Lastly, I wanted both a process and thread processing model which doesn't exist there.

Then, I tried rigging Celluloid to perform all these but after failing and speaking with Celluloid commiters I understood that it is under "major revision" and that they are not happy with some of the core elements right now (threadpool).

THEN, I opted to reinvent the wheel. Even here, I've chosen serverengine as the basic process management infrastructure to work on - a production tested core, to build Sneakers on.

<comment><USER3> How hard would it be to use a PostgreSQL backend with sneakers?

<comment><AUTHOR> Not hard because most things are abstracted (though - there's a trade off between too much abstraction and peformance).

But I feel it might be missing the point, RabbitMQ was used to remove the typical bottleneck from the broker which exists on most Ruby background frameworks, and using Postgres would bring it back. All in all, RabbitMQ will give you a good, transparent HA story with active-active which is useful when you must not lose messages (Postgres will give you just failover).

Edit: to cover @artellectual's response - I think OP meant to swap RabbitMQ with Postgres as the backend but if OP meant "is it possible to use existing Rails models / etc" \- then yes, @artellectual is completely right - easy to do.

<comment><USER3> I meant using PostgreSQL as the backend.

Benefits:

* when you back up your main data store, your jobs are also backed up. If you use sidekiq, are you remembering to do frequent backups of redis?

* only one data store, not multiple. Simpler architecture.

* jobs can be inserted/updated in the same transactions as the rest of your data

* PostgreSQL supports listen/notify, don't have to poll for new jobs

* can use SQL to query jobs

* jobs can have foreign key constraints to the rest of your data

<comment><USER4> It doesn't hurt to keep a higher-level job representation in DB and sync the state at each step of the processing. I don't know about sneakers but you might want to have more states than the usual new/processing/success|fail.

Obviously it really depends on what you're doing, if the jobs are re-entrant, if they're the fire-and-forget kind of types, ... Still in most of the cases I would just store the jobs as a table entry and pass the table+id to the job processor. Even if PostgreSQL was the primary data store for the job processor there would still be issues with external state that needs to be healed when restoring from backup.

</comment></comment></comment></comment></comment></comment></comment><comment><USER5> I have been using Sidekiq in production for over a year now, running over 11B jobs over that year, peaking around 20m jobs per day.

I've been wanting to migrate away from it to use more of a micro-service approach, so the code doesn't live inside the monolithic rails application.

Bunny looked like a start, but I really wanted something more, this seems like the answer, will definitely be using it for the migration.

@jundot, great job! looks like a solid project!

<comment><USER5> 11B == 1B, sorry

</comment></comment><comment><USER6> Look forward to checking this out. The biggest win regarding Sidekiq for me wasn't so much performance (which is was definitely better than Resque) but it's retry logic, error reporting, batch handling (granted, that's paid), ease of plugging into an existing app's security model, and more.

Without having looked at it yet, how does the pre-built UI compare? From an initial glance, it looks like anything that's missing is available via the DSL, but Sidekiq gave me so much of what I needed out of the box (having come from a custom-made solution using SQS + open source CFML) it made my head explode.

<comment><USER7> Sidekiq's retry and robust handling of jobs (at least with reliable queuing in pro) was the big win indeed. I had a app I tried switching over to it though and it did not go well. In my case I'm running background jobs that take 4-5 minutes to complete and are pretty cpu intensive, and I suspect because sidekiq is threaded it's only using one CPU core and completely thrashing the machine. I can run about twice as many workers with resque as I can with sidekiq, so I had to switch back. Sadly now I've lost the reliable queuing and automatic retries (the latter at least is not too hard to implement in an ensure block).

I do wonder how this one would work out though, will have to give it a try at some point.

<comment><AUTHOR> More or less the same. Plus it will use all cores on MRI, so you can keep using gems with C-Extensions (i.e. you don't have to run rbx or JRuby to max all cores).

Discussing reliability - this is something that sadly Sidekiq will never give you, by virtue of the fact that it uses Redis. RabbitMQ can be clustered in active-active mode, which means you have won over reliability here by just using a cluster.

When comparing queue systems, comparing Sidekiq+Redis to RabbitMQ is a bit unfair - because RabbitMQ was born to do this. And that's why if you're doing proper background jobs and messaging it's better to pick the right tool.

That being said, I do keep using Sidekiq for small Rails apps for the typical background emailers, denormalizers, etc. But I keep an eye open for when I realize that I'm doing proper messaging - in which case I'll switch over to something like Sneakers.

<comment><USER8> I've got to say that the more I hear "Redis can never be reliable" the more I cringe. It just seems like one of those things that's been said and repeated without people stopping to fact-check along the way.

Redis Clustering tutorial: [http://redis.io/topics/cluster- tutorial](http://redis.io/topics/cluster-tutorial)

Redis persistence (using AOF or RDB or both): [http://redis.io/topics/persistence](http://redis.io/topics/persistence)

<comment><AUTHOR> Right now Redis cannot be clustered production-ready. I wish. As I stated in the Wiki, you'll have to pry Redis from my dead body, I am very happy with it, and for me its a true swiss army knife and I've used it as such.

Even though it doesn't have clustering - it's rock solid in production and I haven't experienced a drop in one of my Redis servers in around 3 years.

That being said, if you are building a system where reliability is an explicit requirement you can't take those risks.

</comment></comment></comment></comment></comment><comment><USER9> This looks great. I'm really happy to see more frameworks being built on top of RabbitMQ. AMQP gets some deserved heat for its design-by-committee nature but RabbitMQ makes something really good of it.

I've used RabbitMQ for years in production, for the last two years with my Ruby background processing system Woodhouse[1]. One of the nice things I got out of using RabbitMQ was the ability to expose job arguments as AMQP headers and then to use headers exchanges to segment queues based on that. This makes it a lot easier to allocate extra resources for high-priority jobs without having to explicitly create new priority queues.

For the author: are the issues you had with Celluloid mostly due to your requirement to run on MRI? For a while I was maintaining a serviceable monkeypatch for Celluloid on MRI, but I eventually stopped needing it. It does unfortunately seem to be a bit of a moving target.

[1]: [https://github.com/mboeh/woodhouse](https://github.com/mboeh/woodhouse)

<comment><AUTHOR> djur - thanks :)

Yes, you nailed it. For MRI I had a bit of a different challenge. I already solved this problem a year and a half ago, and with the benefit of being able to use JRuby performance was a bit easier to reach (by dropping to "bare" Java amqp driver and Executors) - [https://github.com/jondot/frenzy_bunnies](https://github.com/jondot/frenzy_bunnies)

</comment></comment><comment><USER10> Looks totally sweet.

The "auto-scaling" is still manually controlled, right? (Dynamic scaling, on- the-fly scaling?) Or does Sneakers actually change the number of processes/threads by itself depending on load?

For the less ops-savvy among us, what are some good heuristics for deciding on the balance between processes and threads?

<comment><AUTHOR> tdumitrescu "auto-scaling" is exactly what Unicorn gives you. You can scale up or down a running pack of worker processes by sending signals (kill -USRX) to the supervisor.

The sad news is, I've gotten some feedback that I believe may be true - self- daemonizing processes is a bad practice and that we should let the OS handle daemonization. And this kind of autoscaling is a bad practice in of itself because of it. This is why I've started to deprecate this feature (passively by just including a notice for now).

The question between number of processes and number of threads is excellent. It is mostly based on the workload - and the good news is that it's all scientific. You first need to understand the peak job run time (always try to upper-bound your jobs with timeouts) which can be had by some trial runs.

If it takes 200ms per job (I/O bound), it means each thread can do 5 units of work per second. If you need 1000 jobs/sec - you need around 200 at worst of these little guys to do work. Now, you can divide those into 4 processes on a dual-core machine (2 per core is a good rule of thumb). You end up with 50 threads per worker which is pretty relaxed.

The punchline is - if you need 1000req/s - with Sneakers the question isn't "can the broker support 1000req/s" anymore, because RabbitMQ should virtually look down and laugh at those numbers :).

</comment></comment><comment><USER11> For a moment, was confused, but _why's Ruby project is called "Shoes".

<comment><AUTHOR> Sorry about that :)

</comment></comment><comment><USER12> I'm a big sidekiq fan but you've got my interest piqued ... aside from the nice approach to retries/failures, the best thing about sidekiq for me is ease of production setup/deployment. Redis is easy to install and sidekiq has nice capistrano tasks. They're all very easy to monitor.

I've never used RabbitMQ–is it easy to setup on, say, an Ubuntu 12.04 vps? How do you restart sneakers gracefully when deploying? How do you monitor rabbit/workers? (this is probably most important)

Thanks for this project–I'm looking forward to trying it out.

</comment><comment><USER13> I have more of a django background, so I've never used any of the libraries that you compare this to. How does Sneakers compare to something like Celery ([http://www.celeryproject.org/](http://www.celeryproject.org/))? Does it let you kick off async jobs and get results back, or is it just about throwing messages over the wall and letting workers process them?

</comment><comment><USER14> Wow, just finished deploying a rails app that needs a lot of scrapers with sidekiq and it was a great process but sneakers looks very nice!

Is batches of job on the roadmap? something like

Batch1: FirstWorker when done succesfuly > MySecondWorker x 30 in parrallels > ClosingWorker

Once the ClosingWorker is finished the batch is complete

</comment><comment><USER15> My biggest obstacle with Sidekiq is communicating back to the frontend client when jobs are done (i.e. credit card processed, FacebookGraph friends cached, etc). Right now I use Pusher (websockets) with a polling fallback, but it's clunky to develop and who likes polling. Does this solution address that at all? If not, what would you do?

</comment><comment><USER16> Kudos to the OP for a thorough Wiki/documentation

As always, the first question on my mind is "Why X, instead of A,B,C?" (sidekiq in this case). The OP's page is here:

[https://github.com/jondot/sneakers/wiki/Why-i-built- it](https://github.com/jondot/sneakers/wiki/Why-i-built-it)

<comment><AUTHOR> Thanks danso! I'm happy that you find it useful. I also hope to integrate conclusions from relevant discussion here back into the Wiki.

</comment></comment><comment><USER17> Resque maintainer here: this looks really great! Congrats!</comment>


XCode Sucks And Here's Why - <AUTHOR> http://devcodehack.com/xcode-sucks-and-heres-why/

<comment><USER2> I don't really think the author can complain about iOS 4 / 5 compatibility issues as being an 'XCode issue'. It's an iOS issue. iOS 5 gives you some new features. You don't have to use them. You don't have to use storyboards. It sounds as if he wants _every_ new feature to be back-ported to previous iOS versions.

If you don't like conditionally coding around deprecated methods, just support new iOS versions. If you want to support older version, you have to live with it. That's not an iOS issue: Android is in the same boat. So, in fact, are most operating systems. New versions bring you new features. It's up to you to decide whether the trade-off of being visible only to users running the latest version is worth it.

I could get behind a lot of the points being made, but that one just came off as a bit of a whine. It reads as if the author hasn't really looked at other platforms: the grass really isn't much greener. XCode as an IDE can be very frustrating. I agree it's very buggy. But complaining about the speed of the iOS simulator? Has the author even _used_ the Android Emulator? If he reckons the iOS simulator has 'tremendous lag' then I have no idea what words could be used to describe the Android emulator...

<comment><AUTHOR> You're right about IOS4/5, that was an oversight on my part. I guess I lumped them together because when I am battling the IOS4/5 incompatibilities, I am doing it in XCode. But you are absolutely right the two are separate.

I have used the Android emulator and done work on Android. It is quite fragmented as well. But I am working right next to another mobile developer for the last 2 months, he is on Android and I am on IOS and he hasn't felt as much pain with the emulator or supporting different Android versions. Then again, maybe he's just smarter than me.

<comment><USER3> Interestingly I have encountered ALL of the bugs from that article. However I don't mind Xcode that much, when I start to get frustrated with it I remember that It could be worse, it's not like Androids tools are much better, last time I used Android the emulator was unbearably slow.

<comment><USER4> The new 2.3.3 x86 images for the emulator are actually really good. Definitely give them a try if you have to do any Android dev.

</comment></comment></comment></comment><comment><USER5> Xcode sucks in some ways but I think you're missing a few things.

Version 4.3.0 was the biggest piece of crap and crashed all the time. The current version, 4.3.2, is stable. I've not had a single crash since it hit. And I use it 10+ hours a day.

The project file stuff isn't so bad -- don't edit the file yourself and drag stuff in. Need to move something in the project but want to keep the layout the same as on disk? Remove it from the project, move it on disk, then add it to the project again. Does it suck for version control? Hell yes it does. It's terrible in that regard.

No simulator related issues here but I've seen it fail to launch on the device b/c of some stuck process. A reboot usually fixes this but it's very rare on 4.3.2. Major pain when it happens, though.

Storyboards are an iOS 4 only feature. ARC works on iOS 4. And iOS adoption rate is very good relative to other mobile OSes. Not sure what your beef is. Backward compatibility is pretty much always ugly. Especially if you use static libs and want to go back to iOS 4.0. But you really should weigh the cost of supporting OS versions that old against your development costs and your user base. You may not need to, based on your situation.

You're making IBOutlets way too hard on yourself. Use the two up view with IB on the left and your header on the right. Ctrl + drag from your control to your header and let go. Give the outlet a name and Xcode declares the property, synthesizes it, and sets it to nil in viewDidUnload. You can do the same thing for events (right click the control and drag from the event in the context menu to your header).

Eclipse is fine but it's hardly the best IDE. Its refactoring features are nothing short of amazing but it's dog slow on modern hardware. All of its preference/settings dialogs are convoluted at best. Finding things you want to change is usually a matter of digging through trees. No fun.

<comment><USER6> When I started working with Xcode last November I was planning to jot down every one of my frustrations and make a blog post just like the OP did. However, I decided against it... must be old age sneaking up on me.

I do have one additional point: Xcode's code completion abilities are underwhelming. Emacs does a better job with hippie-expand IMHO.

For code completion I do not know how Xcode compares to the much hailed Visual Studio (I have no experience with it) but compared to Emacs + Slime + Common Lisp it is awful.

<comment><USER7> For C++ and Objective-C XCode absolutely smokes Emacs with regards to code completion.

True AST based code completion aware of all of your constructs without hacks and kludges like ctags and the like...

<comment><USER8> The Emacs code completion I use hooks Clang, which is the same thing XCode does.

</comment></comment></comment></comment><comment><USER9> In my experience XCode 4.x has consistently failed miserably, even a fresh install of the latest 4.3.2.

In my fairly large project, I've had:

\- Indexing taking hours, then not finding anything

\- XCode using up 300% CPU for no apparent reason

\- Build process randomly decides not to copy new files over to the device or simulator

\- Simulator and device connections randomly decide to break

\- Build process fails, reason why not stated in build results

\- Project sometimes opens with no toolbar, multiple windows

\- Fatal crashes

If Apple got around to fixing these issues it'd be a pretty good IDE.

<comment><USER10> Hmmm, I haven't had a lot of issues with 4.x. Some crashes for sure, but this usually entails when I switch git branches and XCode tries to reload the project.

Some things the OP says that I don't really get:

* Crashes: not many, except like I said, sometimes when I switch git branches. But for the most part, it works for me. I use XCode on 2 different machines (home and work) and it pretty much works without issue. Maybe I'm lucky..?

* Managing the project files. Yah, I had to learn this one on my own. For the past few years I've started out with creating the XCode project first. Then I go into finder and start creating my own directory structure for things like resources/assets, libraries, etc. Then I drag these folders into the project so I can maintain the disk structure. When creating new controllers with xibs, I have to manually move the xibs out of the Classes dir (this is lame, for sure), into my resources dir, and then re-add to the project. This definitely is not ideal, but I know how this stuff works now and it's not hard for me to maintain.

* Simulator lag and weirdness: I don't really see this either. There's been a few times where I've had to restart xcode, but overall, I don't really see many simulator problems. Again, lucky maybe?

* iOS 4 vs. 5: yah, this is a little suck. My current project decided to use a baseline of 4.3, so no Stories, but we did get ARC. There's been a few minor things like presenting modal views which were different in 5, but I just created a category on UIViewController that gave me a simple isIOS5 selector and that made things fairly easy and clean.

* IBOutlet: After doing things the 'hard way' (coding up ui in the 3.x days), I switched over to IB for everything. I don't mind IBOutlet or IBAction at all. I think they're great. It would be nice to have everything automagically connected up when you drop the control like the OP says, but I don't see this as a big waste of time.

I'm not trying to defend XCode per say, but I guess I've been spared a lot of the horrors that others have experienced. This is good for me because I have zero tolerance for that kind of stuff and if it did happen to me, I'd prob write a blog post just like the OP did.

I do think Apple has a lot of work to do, particularly in speed and the annoying bug that loses code coloring and code completion. If the latter happens to you, here's how you can 'fix' it ( _this_ I do have to do multiple times during the day): * Open up organizer * Click the projects tab * Select your project * Where it says Derived Data, click the delete data button

This will clear out all the index and give you back your coloring and code completion.

</comment></comment><comment><USER11> No mention of the fact that the debugger's inspection abilities are awful (when they do anything at all)?

XCode is awful. XCode 3 rarely crashed on me, but the latest version crash a few times an hour on me.

Of course, all of my experiences with Apple software leave me unimpressed anyway.

<comment><AUTHOR> Yup, I forgot to mention that but the debugger stinks and the stack traces provided out of the box are completely worthless. You have to add some exception handling in your app delegate to get even a remotely decent stack trace, and it's still not that great.

<comment><USER12> I've never had problem with the inspector but I have to agree the stack trace is HORRIBLE. Almost unusable.

Microsofts IDE (the .net one from six years ago) had awesome debugging tools.

<comment><USER13> Definitely agree. Even VS 6 had much better debugging. As you said, the stack trace is useless in XCode 4.x

The Leaks inspector is also way off sometimes. I spent a couple of hours hunting for a leak that was nowhere near what it was pointing to.

</comment></comment></comment></comment><comment><USER14> Now I see I'm not alone. I feel a little better because of that.

I could rant and rave just as much as the OP. I'll save everyone from that with one exception. I find myself dreading Xcode upgrades because of some new thing Apple will break.

For example, I remember working somewhat contentedly in whatever version supported iOS 4 only. Then iOS 5 came out with Xcode 4.1 (?) and then Xcode stopped printing the stack trace on a crash!

I find it appalling that they even shipped a version with that issue. They MUST have known about it. I don't even know if it's fixed; I found a workaround and stuck with it.

</comment><comment><USER4> XCode 4 is really a terrible, terrible IDE. The $99 I spent on an AppCode license was the best $99 I've spent in a _long_ time. Now when Interface Builder crashes, as it still often does even in 4.3.2, I just smile. When I occasionally go back to do a quick edit in XCode I'm amazed that I put up with such a limited and frustrating tool for so long.

</comment><comment><USER15> Beyond bugs and crashes, it seems to me that Xcode sucks because it's primarily built for a rather archaic language (Obj-C), thus the value added by the IDE is "scrappy" rather than uniform and natural.

Environments that are rich with implicit metadata have synergy with IDEs. Environments full of repetition, gnarly API headers, #ifdefs and #defines don't.

\---

In other words, Xcode is technologically fighting an uphill battle. Fortunately people are still skilled enough to produce great OS X and iOS apps with it.

<comment><USER16> Microsoft hasn't had any problems with their development tools that support rather archaic languages.

The problem is solvable; it's just that making a decent developer product is not a priority at Apple. Provisioning is another example of terrible UI. And then there's their crappy command line/scripting support (for integration into a CI server), and their horrible developer portal web interface. The entire developer UI and usability experience is downright embarrassing. And to cap it off you have the typical Apple unhelpful or misleading error messages, including the most common and my personal favorite "An unknown error has occurred".

Ugh... my blood is boiling already, and I still have another 10 hours today with this shitty tool to look forward to...

<comment><USER15> I used VS up to VS2008 and didn't find it for C++ particularly good either. The IntelliSense didn't work half the time and, apart from the debugger, about the only thing I used was Go-To-Definition/Declaration. The C# context was enormously more helpful and reliable.

</comment></comment></comment><comment><USER17> My biggest issue is merging the project.pbxproj file every time someone on my team commits. Merging never works and we have to manually edit the XML.

It's an awful feeling to always be afraid to change anything in the project outside of the source code. Did you both add a new file? Too bad; conflict!

<comment><USER18> I had this same problem too. With my team, whenever someone needs to edit the project file, we shout it out. 'Changing project file!'. They make their changes and push. Everyone then pulls the new file and go on their merry way. It's a bit of a pain, but it works and we rarely have conflicts now.

</comment></comment><comment><USER19> Regarding the "control drag to set an IBOutlet" stuff, I'll admit that it took me a while to understand what that was even doing. I'd be interested if anyone has any alternative ideas on how to do this - how do you specify the object on which the outlet should be created (e.g. the file's owner, the view controller, any other object in the nib, etc)?

> 2\. It manages the project files and their hierarchy using a […] flat file > (pbxproj). […]

The disparity of what the Finder sees vs what is set up in Xcode is the least of the problems with this setup. Have you ever tried to merge an Xcode project file? I've gotten to the point where I can open it in TextMate and do the merge manually pretty quickly. It's just stupid that I have to resort to that.

<comment><USER20> $ git mergetool

Opens FileMerge.

Then just keep tapping the down/left/right keys to choose changes.

<comment><USER19> This works in theory. Once you start getting into complex projects, it quickly breaks down. Merge tools don't properly understand that, even though the closing tag (e.g. "};" in a project file or an XML node in a storyboard file) is the same, it doesn't mean that the contents are the same. You quickly end up with a corrupted file because it leaves off the closing tag on one of the two.

<comment><USER16> Give p4merge a try. We have a huge codebase, and I've found that p4merge, though not perfect, tends to do better than the default.

Another thing we've done to keep the insanity down is break our monolithic project into a few library projects to keep the project file merge damage to a minimum.

</comment></comment></comment></comment><comment><USER21> _At the very best, adding a UI element should somehow automatically build out the declaration in the interface, synthesize it and do whatever the hell that blue line connector does._

I remember in MS Visual J++ you could double click on a UI element and it would create the event signature in the code behind class. I always likes that feature because I felt it was the best way to represent the link between the action and the code. Another good one was in the days of VRML. SGI had a development environment called CosmoWorlds and VRML had the concept of routes, in the hierarchy of the scene you could click on an object and add a scripted behavior, in which certain function signatures became the API, these function signatures would form little inward and outward triangles in the UI which would could then route via the UI from one behavior to the next. Anyway my point was, I agree with the whole linking of the UI in xCode it is not intuitive, there are far better metaphors out there.

I am also in agreement with the file system issues, adding files in the wrong way can be a mess to clean up, especially if the project is under source control. xCode in a lot of ways feels like it is constrained by the age of the IDE dating back to the NeXT era.

</comment><comment><USER19> The impression I get is that Apple doesn't really care about developers (and I say this as someone who's been doing Cocoa/Obj-C development for ~10 years). Really, there's no excuse for a company _that_ awash in cash to ship shoddy tools.

<comment><USER22> > Really, there's no excuse for a company that awash in cash to ship shoddy > tools.

I think money isn't really the issue here. Just as throwing people at a late project won't make it finish in time throwing money at a crappy product doesn't make it better either.

('crappy' would also be a bit too harsh, XCode 4.3.2 is much more stable compared to a few iterations before).

</comment></comment><comment><USER23> Can't speak for 2,3 and 4, as I'm doing OS X dev and it's been some time since I've done iOS. I agree with 1,2 and 6 wholeheartedly.

I'm working with AppKit. I would give a limb to have it be half as nice as the first release of UIKit.

Appkit with XCode 4 is the worst software development toolset I've ever had the pain of working with. I'd rather be using VB or Gtk. :(

</comment><comment><USER24> > Connecting UI elements to their IBOutlet is the most annoying thing I have > ever done in an IDE. <

I would have chosen this on the top of the list!

</comment><comment><USER25>
      5) IOS4 vs IOS5. Come on Apple, I am begging you to not
      turn IOS into the next Internet Explorer.

I don't see how you can avoid this and without incurring the fragmentation you find in Android. We should expect Apple to continue with the measured iOS migration and sometimes not so subtle push to get us devs to move the bar forward. Interesting to see how Mountain Lion will force a move to XCode 4.4 (my guess) and Apple will bury the older SDK's ever deeper in their website.

I really can't fault Apple for this approach.

BTW, we rely on Flurry data to judge what the economic cost of choosing a new iOS target.

</comment><comment><USER26> I spend 8 hours a day in Xcode and absolutely love it. It has its rough edges - which you eventually learn how to circumvent - but most of these complaints seem to be misunderstanding more than issues with the IDE.

Reminds me of when I had to use Visual Studio for an extended period of time. I started off hating it, then eventually figured out how it wanted to play, and ended up liking it.

I wonder if authors of these types of articles come back to them a year later and think, "Gee, I sound foolish." Because that's how they sound to me now.

</comment><comment><USER27> #6 is moot, viewController does that for you.

A lot of the other complaints could be specific to just how bad the actual code of the project actually is. I use XCode everyday and I only have to force quit it every few times a week, but that's because of shitty code, not the actual tool itself.

Also, nowhere in the article do you say what version of XCode you're running. As with any software, some versions are better than others, and they even fix some bugs too!

<comment><USER28> I never have to force-quit XCode, no matter how shitty my code is. If my code hangs, a Command-'.' kills it and I can continue working, even if I'm debugging multithreaded code that hangs somewhere outside the event loop while the main thread is waiting for it to post a semaphore.

This article is nothing but useless XCode-hating. I can make a list of 20 things I don't like about XCode that would actually be valid issues with the tool, and none of the issues in this article would be on it. The things I don't like about XCode are how they dropped a lot of useful features between XCode 3 and 4, UI/usability issues introduced when everything had to be docked into a single Window, pretty lousy basic editing functions (where the f*k is 'find and replace in selection' and why do I have to use the stupid mouse so much when editing).

There's lots of things XCode can improve on. That said, if you look at how much the tool does do, and how well it does those things, my net conclusion is that it is still a great IDE, one of the better IDE's around, even despite all its flaws. Let's not all pretend Eclipse or Netbeans are so great and have absolutely no downsides, because IMO they are not even close to XCode in many ways. Visual Studio used to be very nice, it's been a while ago since I used it, but I can remember it was top quality.

</comment></comment><comment><USER29> And _still_ no IB plugins in Xcode4 after everyone became reliant on them in Xcode3 (i.e. anyone using BWToolkit which it seems is everyone building a Mac app).

I can understand that they left it out of the initial developer previews and even the first release. But come on, it's been years now.

</comment><comment><USER30> That's why I just use VI. Ever since Nibs became XML there's no reason to ever use XCode anymore.

Seriously though.. XCode does suck. It's a miracle anyone has been able to write an iOS app, let alone over 500,000.. /sarcasm

</comment><comment><USER31> #6: 1\. Add UI element to your view. 2\. Ctrl-drag from element in view to the @interface section of your view controller .h file. This will add @property and will also add @synthesize in .m

</comment><comment><USER12> I never run into #'s 3,4. With 6, why god why are you doing it the long way? Control+clikc+drag to your header file. It will generate the property, and synthesize it for you automatically.

As an aside, I've never found an IDE that was great. I've found great editors (Submlime2, TextMate, VIM) but never a great IDE.

Microsofts .NET IDE wasn't bad (it's been six years since I've touched a Microsoft technology) so I may not remember the rage like I should (like child birth).

</comment><comment><USER32> 15 years or more behind other similar products in terms of features, XCode 4.3 is the throwback IDE from yesteryear.

</comment><comment><USER33> XCode 4.3.1 crash on my mac every day, that will drive me crazy. At that time ,I always remember the Xcode 3 era with nostalgia.

</comment><comment><USER34>
      5) IOS4 vs IOS5. Come on Apple, I am begging you to not
      turn IOS into the next Internet Explorer.

They've guaranteed this by refusing to support iOS 5 on older devices like iPhone 3 and iPod Touch 3.

<comment><USER19> > They've guaranteed this by refusing to support iOS 5 on older devices like > iPhone 3 and iPod Touch 3.

I used iOS 4.2 on a 3G for a long time; it was an awful experience. iOS 5 isn't supported on that hardware for a reason.

<comment><USER35> The experience of iOS 5 on iPhone 4 is pretty shitty so say the least until I figured out the culprit is iCloud. Some symptoms with iCloud enabled, include but not limited to, random screen freezes, random login freezes, and application switching freezes. Just lots of freezes thanks to iCloud</comment></comment></comment>


ASMR: The videos which claim to make their viewers 'tingle' (2014) - <AUTHOR> http://www.bbc.com/news/magazine-30412358 <comment><USER2> I just sorted by latest, yet I'm seeing 2014 news...</comment>


Xbox 360 backward compatibility coming to Xbox One - <AUTHOR> http://arstechnica.com/gaming/2015/06/xbox-360-backwards-compatibility-coming-to-xbox-one/ <comment><USER2> I'd love MS to share some details on how they achieved this. From what I've read, game devs just have to agree to their games being made available on the Xbox one, so it apparently all done on Microsofts side.</comment>


Teens don't speak anymore: 51% would rather communicate digitally than in-person - <AUTHOR> http://attentiv.com/we-dont-speak-anymore/

<comment><USER2> I rarely associate with youth, but I had an opportunity this weekend and that was not my experience at all across the entire set of samples. There was one quiet teen, but they weren't substituting with texting.

</comment><comment><USER3> people don't realize how serious this situation is.

<comment><USER4> Because new way bad old way good? People adapt.

</comment></comment><comment><USER5> A lovely contradicting title...

<comment><USER6> What's contradictory about it? 51% is a majority. And...it also happens to be true. Ever tried "speaking" with teenagers these days? Haha...</comment></comment>


Git: ignore file lines - <AUTHOR> http://benmezger.me/post/109706270421/git-ignore-file-lines <comment><USER2> You should establish a proper pattern for storing credentials instead. Many people use environment variables, but you can also use an external configuration file.

Another simple pattern used a lot in django:

try: from local_settings import * except Exception: pass

Then put any variable you want to override in local_settings.py and put local_settings.py in .gitignore

<comment><USER3> Ok, here, have a better example:

I contract for a company which has set rules for their stuff. Trying to change these rules would be an amount of effort similar to becoming CEO, starting out as a deckswabber.

One of their project is a web app. It has an .htaccess file. In production it is configured to run like this:

        Addhandler fcgid-script .fcgi

However in development i want it to run like this:

        Addhandler cgi-script .fcgi

Normally you'd just put the entire file on ignore with --assume-unchanged, but that doesn't work well, since the file also contains other bits of configuration that are important for the app, and get changed fairly frequently.

OP's tool is perfect for this kind of situation.

<comment><USER4> FWIW we moved to a .htaccess.dist setup and our build tool would populate the actual .htaccess file with either of your examples depending if you were building for development or production.

.htaccess is ignored while the .htaccess.dist template is part of the reop

<comment><USER3> That still means i need to trigger a rebuild on every pull/checkout/reset. Only a marginal improvement, really.

<comment><USER4> We only need to rebuild that file when we want to change it, which doesn't happen often. It's been at least a year since I changed my local dev copy for our main project and has survived many pulls/branches/resets

What kinda stuff are you putting in .htaccess that changes so often?

</comment></comment></comment></comment></comment><comment><USER5> I could see some uses for something like this. When I was working as a web programmer, I often had to do a lot if dev-server type things. Since at least one of the dev-server was often on my personal machine, it could often be a very different beast than the production server.

I guess what this really is a matter of is configuration management, for certain configurations you will have certain lines of code that will not matter or that will confuse. While you can manage this within your code in various ways (such as the #ifdef _DEBUG macro, etc.), it would be natural for the VC to handle this.

For a general features, maybe you could either specify in a configuration file, particular lines of a file or a regular expression to designate lines to ignore or better yet to only apply to certain branch checkouts.

A nice feature to think about for my "one-of-these-days-I-will-make-a-beter- version-control-system" file.

<comment><USER6> Why not just keep environment dependent settings in a separate file that is not tracked? Then you have no problem with files that are 'half-tracked'.

</comment></comment><comment><USER7> In practice, I never use 'commit -a' or 'git add -A'. I prefer to use 'git gui' to interactively stage files or just specific lines. This way I can be sure of what is being committed.

<comment><USER8> I use git add --patch

My teammates probably get tired of hearing it, but every time someone erroneously commits some file or line I advocate its use.

<comment><USER9> Magit in emacs is great for this functionality. It will even add just the selected region of the diff.

</comment></comment></comment><comment><USER10> Not as generic a solution as ignoring lines on commit (whatever they may contain or for whatever reason you want to hide them), but when it comes to protecting credentials, crypto for arbitrary chunks of text comes in handy.¹ The fact that the encrypted string is being committed still might be a good thing: as the code is run an error will be thrown as a reminder to either decrypt or replace the string with one's own creds.

¹ [https://packagecontrol.io/packages/Transcrypt](https://packagecontrol.io/packages/Transcrypt)

</comment><comment><USER11> This is exactly what I was looking for few months back.

I was working on a rather large and very messy project back then. Project used popular framework with very specific config files but previous dev choose to ignore them most of the time so configurations were all over the place. I didn't have much time to start looking more deeply into the git so I just ended up using 'local-config' branch that had my environment specific configs that I always rebased on top of master and deleted on commit. Wasn't perfect solution but it worked.

</comment><comment><USER12> Use the -p (--patch) flag, it works wonderfully for selectively marking blocks for staging (git add -p), and selectively checking out changed files with (git checkout -p).

<comment><USER13> My experience is that you'll quickly get burned if you do this for the use case the OP mentioned. The goal is to keep different settings for a development environment, not to just temporarily avoid committing. One day, you'll inevitably forget and accidentally commit and push the changes you've been carefully avoiding.

<comment><USER14> I've not had that experience at all. For the times you know it would be tedious to add/ignore all diffs manually, you can just use the 'a' or 'd' commands to add or ignore for the remainder of the current file. I much prefer using 'add -p' every single time I commit.

<comment><USER13> Then you've been lucky. Although if you show others on your team this approach, I think something bad is guaranteed to happen eventually.

</comment></comment></comment></comment><comment><USER15> I'm still looking for an _elegant_ way to reject commits whenever a certain pattern appears in one of the files to be committed (like "FIXME").

I know it can be done (tried it about a year ago), but it was too much of a hassle to use it on all of my repositories.

</comment><comment><USER16> I think I would handle it by making a "template file", scrubbed from the secret sauce and a script that patches the template file into the real thing. Only template file is checked into the repo.

</comment><comment><USER17> You can put MySQL or MySQLi connection credentials in php.ini. Bu ignore line will be useful for me too, I have a second connection to the reports database.

</comment><comment><USER18> Ignoring files are easy but ignoring selective lines? Wouldn't that conflict with the file's hash in Git's database?

</comment><comment><USER19> dotenv is a good way to handle such configuration problems - [https://github.com/bkeepers/dotenv](https://github.com/bkeepers/dotenv)

Just .gitignore the .env file.</comment>


Video: Well-Designed Buildings Sway, But Stay Standing in Japan Quake - <AUTHOR> http://www.good.is/post/video-well-designed-buildings-sway-but-stay-standing-in-japan-quake/

<comment><USER2> Isn't it generally expected that skyscrapers will be pretty well-engineered? Are there any examples of skyscrapers being significantly damaged by an earthquake?

<comment><USER3> That comment is just begging for the C. K. Louis routine to be cited. ;)

<comment><USER4> It's Louis C.K. His last name is Szekely. I'm not sure where the C.K. comes from.

</comment></comment></comment><comment><USER5> Was the video taken after the earthquake had stopped ? The camera seems to be fixed, no movement at all ?!

<comment><USER6> They could be using software correction. That explains only one building moving a lot, very small movement on the others(reference part of the frame fixed).

</comment></comment><comment><USER7> Modern engineering rocks.

</comment><comment><USER8> Damn.

<comment><USER8> Sorry, that was just my tounge-tied way of expressing admiration for the tremendous skill of Japanese civil engineers. Surely those building were designed without expecting them to survive an 8.9 earthquake, yet survive they did. I am in awe.</comment></comment>


EventGeek (YC S16) makes project management and analytics software for events - <AUTHOR> http://themacro.com/articles/2016/07/eventgeek/ <comment><USER2> As a DJ I have seen some very disorganized event planning, which made me wonder recently why there isn't a standard Basecamp-style software for events. A group of independent contractors who have to coordinate for an event is not so different from working on a remote team for an app launch.

EventGeek looks really useful but clearly targeted at tech events. I still haven't found an event project management software that would be as easy for event planning as any of the PM software I use for $dayjob.

Does EventGeek have any plans to target smaller, non-tech events like weddings/receptions/auctions/galas etc?

<comment><USER3> I do a lot of event organizing (community organizations, lectures, dinners, etc) and believe the same thing.

Why not just use existing project management tools? What is it that is "unique" about event organizing that you think is missing?

<comment><USER4> Partial list:

-Budgeting -Travel planning -Shipment tracking -Google maps -Time zones -Min-by-min scheduling -Calendar integration -Loose-knit in/external teams -Vendor collaboration, invoices -Event templates -Event-based pricing -ROI analytics

Basically traditional project management tools are set up for knowledge projects. Events have lots of contingencies, like physical space and scheduling, that make them difficult to manage with generic pm tools.

</comment></comment></comment><comment><USER5> Congrats Alex! Worked with him many years ago back in Boston on some side projects, he's a relentless dude. No surprise that he's made it into YC.

<comment><USER4> Thanks Adam! Hope all is well.

</comment></comment><comment><USER6> Website sooo "2016 stock" looking. ("Stock-hip-personalized"). /Really/ personalize a bit.

<comment><USER4> Heh, it's true. I'm biased since I used to work at Squarespace and we just used their template. We've been way more focused on messaging, customer acquisition and product. Eventually we'll have a beautiful customized website too.

</comment></comment><comment><USER7> Congrats. Simple solution for big problem.

<comment><USER4> Thanks!</comment></comment>


How entrepreneurs came up with Jungle Cents - <AUTHOR> http://www.sfgate.com/cgi-bin/article.cgi?f=/c/a/2010/12/05/BU6D1GFR6G.DTL&ao=all <comment><USER2> I find articles like this both informative and a good source of thought on how other entrepreneurs seek funding.Good luck to this company</comment>


Ask HN: Is Adobe PhoneGap Dead? - <AUTHOR> I was reading a post on the Reddit Flutter channel talking about cross platform mobile development approaches in which PhoneGap was mentioned without reference to Cordova.  In preparing a response I googled to understand the key differences between PhoneGap and Cordova; I found a reference this question on the PhoneGap website that said "Adobe PhoneGap is built on the open source Cordova project in the same sense that Apple's Safari and Google's Chrome are built on the open source WebKit project" -- except that Google forked WebKit to Blink years ago.<p>Which makes me wonder: is this answer on the PhoneGap so out of date because PhoneGap isn't actively being supported anymore and is either effectively dead or soon will be? <comment><USER2> Hey mikece sorry that this is offtopic but I saw your idea for a business on my other post and I wanted to ask you if you had any further insight into this. Sounds interesting. If you're not uninterested to discuss, please mail me at email@example.com</comment>


Ask HN: What's the easiest way to get started modding Quake2 or similar? - <AUTHOR>

I just found https://github.com/id-Software/ the other day. I'm pretty familiar with C, and there was a time when I'd play Doom and Quake2 a lot.
I'd really like to jump in to the source, change a few things, compile, and play my modified version of the game.
But first of all I'm having a hard time compiling it. I'm on Mac OS X and started thinking maybe the problem is that it compiles most easily on Windows or Linux? Google isn't helping much in this regard.
Secondly, where would someone find free (legal) data files to use in place of the official ones that only come with buying the game? Is it easiest to just buy it on eBay, or are there places to find community-made data files?
If this is an off-topic question, please let me know and I'll delete it. I try to use my best judgment on this, but I don't always get it right. And I'm not sure about this question. <comment><USER2> Somewhat related:

There is a game based on Quake Arena called Urban Terror. It has a good community of modders that help others learn how to modify the game. If you do not have too much luck with Quake2, you could look into this as as well. Good luck hacking.

</comment><comment><USER3> For assets (data files), I recommend buying the game. Steam would work well since you'd get instant gratification and everything would already be patched - don't forget, Q2 dates back to well before automated patching in games. Admittedly, it's unlikely assets themselves got patched, but it could pop up as an issue after you compiled your own source.

There _are_ community-made data files, and these were called "total conversions" since all assets - models, textures, sound, maps - were original. You could go find those, but they often had original game code as well so you'd be effectively playing a different game at that point.

<comment><AUTHOR> Whoa, I didn't even think to look on Steam. Thanks for pointing that out!

</comment></comment><comment><USER4> Use a VM to try running it on Linux or Win. Ideally, if it is C, I would go with Linux.

The best way I would get started is by trying something as simple as making my player move twice as fast as all the rest.

It sounds simple in theory, but it is complex and a great way to break things while getting your feet wet.

If you can read the code and understand what each piece does, it isn't very tough to make mods. If you find it confusing, coding weird things and watching it break is a good way to experiment.

<comment><AUTHOR> I figured the early Doom stuff would compile best on some kind of linux, but the readme for the Quake stuff looks like it's talking about Visual Studio which is what started worrying me.

<comment><USER4> Getting an earlier version of Visual Studio won't be difficult. I _think_ they give them away for free.

</comment></comment></comment><comment><USER5> It's been a looooong time since I fiddled with the Quake 2 source, but I remember the basics.

1) Yep, it's easiest to compile on Windows, I think. Not sure about Linux, but I recall that the projects were Visual Studio based.

2) I don't think you'll find replacements for the official data files. The easiest way to get hold of the official ones is to buy Quake 2 on Steam, which is instant, then download the data there. Alternatively it's also available to buy on Amazon, still.

<comment><AUTHOR> Okay. I hope the Visual Studios Express (free) compiles it in Windows 7 running in VirtualBox.

</comment></comment><comment><USER6> You could also try to go into developing/modding a game called Xonotic. while it's based on the Q3 engine, it looks really good and has an active developer community! it's fantastic really :)

[http://xonotic.org](http://xonotic.org)</comment>


Redeye VC: Depending on pending...(A VC's perspective on patents) - <AUTHOR> http://redeye.firstround.com/2008/05/depending-on-pe.html <comment><USER2> Fascinating. I keep hearing from a couple of people about how much effort, time, and money they are putting into their patent application process, fairly early on. One of them, a founder, supposedly has experience pitching to VCs, and claims that VCs always ask: "How is your product protected? What prevents others from copying your idea and outcompeting you?" He also claims the VCs expect to hear a simple answer "We have a dozen patents pending on our technology."

I wonder now if he doesn't know what he's talking about, or if the VCs writing these "build your product, don't worry so much about IP protection yet" are the cream of the crop who actually have a clue, but are completely out of reach for most (especially first-time) entrepreneurs.

<comment><USER3> I think the author is talking about business method software patents. If the business method implementation needs patentable technology to implement, then it may not be such a bad idea.

But again I feel that for an early stage company, filing a patent just helps mitigate the risks in the VC's head more than anything else. Forget about enforcing your patent. If you are successful and you have a lot of money and you feel like bullying your competition, we all know how some successful companies go about it.

</comment></comment><comment><USER4> Even after your patent issues, enforcing it is horrifically expensive. In addition to the 7 year delay from filing to issuance, expect another 1-2 years, much of it billable, before a legal action based on your patent sees any action.

For a startup, is there any point in pursuing software patents at all?

</comment><comment><USER5> Notice that Half.com had already been started, built up, and sold long before the patent was even granted! 5-7 Years? You could start half a dozen startups in that time.

File for the patents, but don't waste any time or money trying to make the filing "good". At best, patents pending are quaint old fairy-tales told about a bygone age to make investors feel all warm and fuzzy when you tuck them into bed.</comment>


Using GPU accelerated neural networks for games AI - <AUTHOR> http://www.theengineer.co.uk/Articles/311786/Games+without+frontiers.htm

<comment><USER2> This makes me sad. AI doesn't need faster number crunching, it needs a more interconnected architecture.

<comment><USER3> What are you talking about? You pulled this out of nowhere.

Boltzmann machines are undirected architectures, and have been around since the eighties, courtesy of Geoff Hinton and collaborators. Here is some new work on the topic: <http://www.cs.toronto.edu/~hinton/absps/dbm.pdf>

The more interconnected architectures are much slower to train and use for inference. Hence, we use restricted architectures to improve speed. (RBMs = restricted boltzmann machines, which are a component of any current NetFlix- prize top contender.)

AI _does_ need faster number crunching. Matrix-multiplies are really slow. I can't train more than 10K neurons on desktop hardware. Faster hardware has driven a lot of AI innovation.

<comment><USER2> I meant hardware architecture... as in non-von neumann architecture.

That's really neat though.</comment></comment></comment>


Files over 4GB are still a problem in 2014 (and it's not just Windows) - <AUTHOR> https://twitter.com/compgenius999/status/511952757364760576 <comment><USER2> so its a mac problem..</comment>


Cloudflare-sync – Tool for using Cloudflare as a dynamic DNS provider - <AUTHOR> https://github.com/mxplusb/cloudflare-sync <comment><USER2> This is not very efficient:

\- It updates the records every 30 seconds even if it doesn't have to.

\- It has to be run as a daemon, eating memory and CPU time constantly.

\- only checks one IP service (ipify)

I have a more advanced version, which:

\- you can run as a cron job

\- only updates the records if the IP address actually changed.

\- checks multiple IP services (so in case multiple of them going down, it will still work)

\- have a better command line interface

[https://github.com/kissgyorgy/cloudflare- dyndns](https://github.com/kissgyorgy/cloudflare-dyndns)

<comment><USER3> It would also probably be good to use Cloudflare's own ip lookup service, available on every CF website's "/cdn-cgi/trace" page. The only thing is that you need to find a ipv4-only CF website to get the v4 instead of v6.

<comment><USER4> Accessing the cloudflare IP address directly works.

For example [http://22.214.171.124/cdn-cgi/trace](http://220.127.116.11/cdn-cgi/trace)

<comment><USER5> IIRC that's never been a public API; more of an artifact for troubleshooting/support. Relying on it / parsing it directly was never recommended when I was there.

</comment></comment></comment></comment><comment><USER6> I wrote a similar script that supports any type of record update, not just A, 7 different public IP providers over multiple methods, config via file / env variables / cli arguments, and both DigitalOcean + CloudFlare individually or simultaneously. I use it across my entire fleet of servers, even servers with static public IPs so that I can snapshot them to new boxes and have all my DNS records update automatically.

[https://github.com/pirate/bash- utils/blob/master/dns.sh](https://github.com/pirate/bash- utils/blob/master/dns.sh)

        Helper script to update a DNS record on multiple providers.

Usage: ./dns.sh --domain=domain.example.com [--get|--set=value] [...options]

Options:

        [domain]               The DNS domain you want to get or set (required)

        --domain=example.com   Same as passing [domain] directly as an argument
        -t=|--type=A           The DNS record type, e.g. A, CNAME, etc. (A default)

        -g|--get               Get the record value (the default)
        -s=|--set=value        Set the record value, e.g. 123.235.324.234 or the
                                 special value 'pubip' to use current public ip

        -l=|--ttl=n            Set the record TTL to n seconds (overrides api default)
        -p=|--proxied          Set the record to be proxied through CDN (Cloudflare only)
        -a=|--api=cf,do        List of DNS providers to use, e.g. all (default) or cf,do
        -r=|--refresh=n        Run continusouly every n seconds in a loop
        -w=|--timeout=n        Wait n seconds before aborting and retrying

        -c=|--config=file      Path to a dotenv-formatted config file to load
        -e=|--config-prefix=X  Load config vars with prefix X e.g. X_VERBOSE=1

        ...

</comment><comment><USER7> Another little-known Cloudflare tip is to use their Argo product's TryCloudflare feature when you want to open a localhost port to the world for experiments, demos.

It enables painless NAT traversal like ngrok, with the added benefit of Cloudflare's network acceleration and security.

[https://developers.cloudflare.com/argo- tunnel/trycloudflare/](https://developers.cloudflare.com/argo- tunnel/trycloudflare/)

<comment><USER8> Nice! FWIW, it doesn't seem to support streaming, so large payloads can take a while (as the entire request needs to be returned to cloudflare, and only then does argo send the response payload back to the client, so you get a double- latency hit).

</comment></comment><comment><USER9> having cloudflare in front is even better than just DDNS: you can hide your origin ip and avoid being DOSed.

I then use chrome's ssh extension with nassh-relay[1] to ssh, allowing me to not ever need to know the ip of my machine.

I have a modified version of docker-cloudflare[2] that also emails me when re- iping occurs (~once a year), just in case.

[1] [https://github.com/zyclonite/nassh- relay](https://github.com/zyclonite/nassh-relay)

[2] [https://github.com/joshuaavalon/docker- cloudflare](https://github.com/joshuaavalon/docker-cloudflare)

</comment><comment><USER10> Good news is these tools can stop using the global API token on Cloudflare and use a scoped token just for this purpose: [https://blog.cloudflare.com/api- tokens-general-availability/](https://blog.cloudflare.com/api-tokens-general- availability/)

<comment><USER11> Indeed, "but" the minimum token you can create is one that allows its wielder to edit a whole zone's DNS, not just (say) one specific record.

</comment></comment><comment><USER12> That's cool.

No discredit to the author, they posted about this a few days ago with a couple other tools [https://support.cloudflare.com/hc/en- us/articles/36002052451...](https://support.cloudflare.com/hc/en- us/articles/360020524512-Manage-dynamic-IPs-in-Cloudflare-DNS- programmatically)

See also [https://dnsomatic.com/](https://dnsomatic.com/) if you'd prefer to share your info with a third party and not deal with running your own tool.

</comment><comment><USER13> Somewhat related question: when I go to add a domain to CloudFlare, it did a great job of importing all of my existing DNS records. Since `dig any` doesn't seem to work anymore, how could they be doing this?

<comment><USER14> They just have a long list of likely host / service names. It misses things all the time for me, but gets an awful lot correct.

</comment></comment><comment><USER15> Here's another tool, this one written in Rust that does this: [https://github.com/nickbabcock/dness](https://github.com/nickbabcock/dness)

</comment><comment><USER16> I wrote a little Go tool a few years back that can use your Digital Ocean account as a Dynamic DNS provider. It has been running on my EdgeRouter ever since with a cron job.

[https://github.com/2bytes/dodns](https://github.com/2bytes/dodns)

<comment><USER17> Nice! Very useful, didn't know this was possible.

</comment></comment><comment><USER18> I have been using [https://github.com/oznu/docker-cloudflare- ddns](https://github.com/oznu/docker-cloudflare-ddns)

Support IPV6, only update if IP changes, has multiple IP providers, Docker image available for amd64/arm (alpine).

</comment><comment><USER19> Those who don't learn about ddclient are doomed to re-implement it.

<comment><USER20> And that's despite CF themselves advocating it: [https://www.cloudflare.com/technical- resources/#ddclient](https://www.cloudflare.com/technical-resources/#ddclient)

</comment></comment><comment><USER21> After using a handfull of dynamic DNS services my gut feeling is that you should really be running your own DNS server on a static IP and using that for dynamic DNS. It's pretty much the only way you can be sure something isn't just going to disapear over night. I guess that's more or less what's going on here but why bother letting someone else controll it?

<comment><USER22> The purpose of using a dynamic DNS service is because you don't have a static IP, isn't it?

Services that specifically provide free DDNS may not stick around long, but professional DNS providers with REST APIs change very rarely. I don't think cloudflare's DNS service will change very soon.

</comment></comment><comment><USER23> Also contributing yet another Cloudflare DDNS updater[0]! It was a neat experiment to play with the API. I've ran it in cron and as a systemd timer.

[0]: [https://github.com/wyattjoh/cloudflare- ddns](https://github.com/wyattjoh/cloudflare-ddns)

</comment><comment><USER14> A bash script for the same thing (which I thought originated from Cloudflare, but maybe not):

[https://gist.github.com/benkulbertis/fff10759c2391b6618dd](https://gist.github.com/benkulbertis/fff10759c2391b6618dd)

</comment><comment><USER24> In high school, I had a bash script + cron job that did this exact thing so that I could host my own Minecraft server on a junky old Dell desktop. I learned a ton from that setup about Linux and the web in general.

</comment><comment><USER25> Or just install the ddns-Cloudflare package in OpenWRT and call it a day.

</comment><comment><USER26> This is very handy! Bonus points for having it all dockerized too!</comment>


Effect of the Depression on Technology - <AUTHOR> http://radar.oreilly.com/2008/10/effect-of-the-depression-on-te.html <comment><USER2> He sure seems to know a lot of things that other people aren't sure about:

* It's a recession for sure, but depression? No one knows. Here's one guy who says no: <http://online.wsj.com/article/SB122333679431409639.html>

* "this adds up to difficult times for business in America for at least three years and possibly longer." Three - not two, not four, but three. Hrm.

* "with the US dollar in the gutter" - it's actually been climbing lately: [http://finance.yahoo.com/q/bc?s=EURUSD=X&t=3m&l=on&#... No idea if that will last - I don't pretend to have a good understanding of why it would be rising right now, but it is, for the moment.
I guess his points about open source and other cost savers doing well in a recession are valid, but the reddit-bait title and other stuff put me off.

<comment><USER3> Without figures, you're correct: His estimates are worthless. But _if_ the US government stays the course and puts money up for all of the failing US companies, which seems to be the plan, the dollar _will_ be in the gutter. Can't just print money, after all.

<comment><USER2> I think your analysis is somewhat facile, and unsupported by the facts: the dollar hasn't dropped at all because of the 'bailout' - quite the contrary, it has done well over the past few days.

But once again, that's why this is hacker news, and not economic news: our area of expertise is not in economics, with a few exceptions (that certainly do not include me).

<comment><USER4> As near as I can tell, noone's area of expertise is economics. Hackers seem to have just a good a handle on matters as the "experts". If you really want to feel "safe" do a little research and see what "Greenspan's" PhD thesis was about. Spoiler hint: You won't find it. Folks that have studied his background believe he was "gifted" his PhD in effort to allow his rise in the government. I'm not supporting this viewpoint, just pointing out the uncertainty. To add irony, Barron's thinks they found a copy and the 1977 thesis was about a housing debacle!!! [http://online.barrons.com/public/article/SB12091741904904680...](http://online.barrons.com/public/article/SB120917419049046805.html?mod=mktw)

You may not like that someone thinks its a depression and not a recession. You may not like that someone thinks its 3 years, not 1 or 5. But hey, their guess is as good as the "pros" at this point.

And noone can explain the little raise in the dollar the last week. These little hiccups are almost unpredictable in a complex global economic realignment.

So you may not agree with certain words such as "recession" vs. "depression" or someone's guess as to how long it will last or even if the U.S. will ever recover. But I think the non-quantitative predictions in the article are solid nonetheless.

<comment><USER2> > You may not like that someone thinks its a depression and not a recession. > You may not like that someone thinks its 3 years, not 1 or 5. But hey, their > guess is as good as the "pros" at this point.

What I don't like is people pretending it's anything but a wild guess.

You're right that the discussion of how the downturn will affect software and open source is better. That's because it's something Nat clearly knows a great deal about. He should have stuck with that.

</comment></comment></comment></comment></comment><comment><USER5> Personally, I just blew 4 months operating expenses on new server parts in preparation for launching a 'value for the dollar' initiative, so I obviously agree that businesses will become more cost sensitive. I wasn't thinking about the capex vs opex change, but that's good for me, too.

Interesting times indeed.

</comment><comment><USER6> It's a depression now?

<comment><USER7> Yes, and apparently the national debt and the trade deficit are the same thing.

(Not that the article is bad, but I found the intro confusing.)

</comment></comment><comment><USER8> I would argue there will soon be an even larger proportion of users that will never, ever pay for anything, making Wesabe a bad investment.

<comment><USER9> I will take this opportunity to pose a question I've been wondering for a while.

It seems that there is an increasingly ubiquitous attitude that if a product or service _can_ be delivered free of charge, then it _should_ be delivered free of charge.

Is this really the best road to be walking down? Why or why not?

<comment><USER10> If you don't, one of your competitors will.

<comment><USER11> This is true.

But you don't always want bottom-fishers as customers.

It all comes down to a trade: your app's perceived value versus the user's time/money. You can try to fake-out the trade by making it a free app, but then a) you're just competing for eyeballs, which makes you a media company, and b) any incremental improvement will also be seen as free by the end-user.

It's a lot harder to price up from free to one dollar than to price up from one dollar to ten dollars. And maybe you're the coolest media content provider out there, but I'd rather compete on value rather than on attention span. It's more comfortable for this nerd :)</comment></comment></comment></comment>


Steve Jobs: Photo Booth 2005 - <AUTHOR> http://www.facebook.com/media/set/?set=a.10150344003354357.371772.500729356&type=1 <comment><USER2> __Edit: __If that link doesn't work for you:

[https://www.facebook.com/media/set/?set=a.10150344003354357....](https://www.facebook.com/media/set/?set=a.10150344003354357.371772.500729356&l=c6edf34df0&type=1)

</comment><comment><USER3> Is there a version that doesn't reside on facebook.com?

<comment><USER4> Here you go: <http://imgur.com/mhvFW,N1MHl,UeLZL,Zgpv9,K1JBn,ViqYm,HbQp5></comment></comment>


OpenLambda, a system for serverless computing - <AUTHOR> http://www.open-lambda.org/index.htm <comment><USER2> Intriguing venture. I have some feedback, please forgive the terseness:

[1] Documentation: too dense, starts off with running a shell script, but it's not immediately clear it's a quickstart, or to set up a dev environment, or what's going on. At least have an intro, or a table of contents, or something.

[2] Speaking of documentation, I'm unclear where your product stands. Is it a 'build your own Lambda-as-a-Service provider', or some kind of meta-proxy- orchestrator that abstracts away from the actual LaaS provider? (if it's not the latter, why link to every commercial LaaS offering? Aren't they competitors?)

[3] Our Team: "coming soon". I sympathize with having a lot to do on a website, but I care about your credentials if I am to run some code. Or maybe I don't, since lots of projects are popular on github and you don't necessarily know all of their authors in detail. But if you don't have it yet, don't highlight it in your menu.

[4] Your github is barebones and links back to the aforementioned docs page. It's a bit like running in circles. Have a short readme on github, then you can link somewhere else!

[5] On the front page, all 'learn more' buttons go to the same place. But, why have these at all? (see, #2. maybe move these into a 'Why' page that explains your pitch and how LaaS is big and these are the big players that are also doing it)

[6] Edit: the slides are good and they help me understand what's going on.

<comment><USER3> After staring at it a long while, and clicking a bunch of things, I assume it -must- be a build your own Lambda-as-a-Service. Otherwise, the steps to spin up a load balancer and Docker images make no sense at all. But it certainly isn't clear.

</comment></comment><comment><USER4> I'm always intrigued by any new development in the "serverless" space, but this website seems pretty undercooked and at the moment it doesn't do a good job of explaining what the heck OpenLambda actually is.

After a lot of poking around I read through the linked slides and discovered that OpenLambda aims to let anyone run their own lambda engine - i.e. run AWS Lambda on your local machine. The goal seems to be to let anyone research and innovate on serverless architectures, instead of just waiting to see what Amazon, Google, or Microsoft release. It doesn't really seem to be intended for production use, more just R&D. It also seems to be a student/educational project (?)

The "onboarding" meeting slides (found under the "Development" tab) give a decent overview of what the project is all about - [http://www.open- lambda.org/resources/slides/ol-first-meeting...](http://www.open- lambda.org/resources/slides/ol-first-meeting.pdf)

</comment><comment><USER5> Author of Zappa[0] here - glad to see more F/OSS implementations in this space - see also OpenWhisk and I think there was another (IronIO? MetalIO? Something like that?) - but I think an important piece that's missing is a F/OSS implementation of API Gateway! That's part of the reason the AWS is still the leader of the pack IMO.

[0] [https://github.com/Miserlou/Zappa](https://github.com/Miserlou/Zappa)

<comment><USER6> Something I recently stumbled upon through a coding challenge was [https://webtask.io/](https://webtask.io/)

Having used ApiGateway + AWSLambda + AWSCloudwatch, I found Webtask to be infinitey easier to use and deploy. The only downside of Webtask, for some users, is that it is all Javascript, where AWSLambda allows multiple languages.

</comment></comment><comment><USER7> If you're going to build serverless thing to take advantage of market hype why not at least try and build one that has data locality like ZeroVM/ZeroCloud ([http://www.zerovm.org/zerocloud.html](http://www.zerovm.org/zerocloud.html)) and Manta ([https://www.joyent.com/manta](https://www.joyent.com/manta))?

<comment><USER8> Have you tried ZeroVM?

It isn't exactly a simple thing. I looked at it and got some stuff working in it a while ago, and it certainly limits what you can do.

</comment></comment><comment><USER9> Yeah. I had a similar idea of a system of distributed serverless computing. Much to the chagrin of certain users who badmouth, it has much more to do with distributing computation on any machine.

My idea was to run a cluster of Erlang nodes, connect them by Tor Hidden Services. Each machine would have 2 HSdirs, one for the unique name for that node, and a shared HSdir that will randomly talk/load balance via a DNS-like mechanism.

The backend storage substrate would be IPFS. A user would write their program and add it to IPFS. My cluster would have /ipfs and /ipns mounted, and could run erlang programs and functions directly from that.

That was my idea thus far. Obviously, choosing Erlang would be rather erudite and exclusive to a small subset of programmers... But its tools of distributed actors and much of the hard stuff done for you just seemed like a shoe-in.

</comment><comment><USER10> Every "Learn More" button on the homepage goes to Google Cloud :/

</comment><comment><USER11> I think i heard this at DockerCon earlier this year: "There is no such thing as 'serverless'. It's just someone else's problem"

</comment><comment><USER12> IBM is also doing opensource work [0] on this.

[0] [https://github.com/openwhisk/openwhisk](https://github.com/openwhisk/openwhisk)

</comment><comment><USER13> I think serverless is a very misleading name, because it does still need server infrastructure and server software.

The serverless term will confuse non-technical people to think there's actually no server infrastructure or software needed.

<comment><USER14> On the contrary, neither of things are required. Most tellingly, Lambda itself was first released as an event-driven service; there was no endpoint to invoke in a client-server fashion.

Moreover, although function-as-a-service requires hardware to run on (duh), the need for server-grade compute infrastructure is obviated by the short execution times. You could run a FaaS-based offering on a massive array of smartphones.

So sure, if you build a FaaS platform you'll need a scheduler, but you won't need a server, not in the client-server sense and not in the hardware sense either.

So some marketing-oriented people will think that "serverless" is just a buzzword to mean you're not managing the OS & hardware, but there's actually a more positive reading of this term that undermines all the negativity.

<comment><USER13> Ok, let's step back a little bit.

Do you have a process listening on a port, that accepts connections and handles what is sent through them? If the answer is yes, you have a SERVER. That's the definition of a server.

If connection handler is short lived, well, so it is the case in a HTTP server. It's just a repackaged idea.

<comment><USER14> I agree, and AWS Lambda doesn't work like that. Hence at least one sub- definition justifying the "serverless" tag.

</comment></comment></comment></comment><comment><USER15> Lambda is great but it is not serverless, but more a PaaS for microservices. Which is a great direction to head, but not the correct vocabulary.

"Serverless" can more accurately be said of the P2P/decentralized movement:

\- [https://ipfs.io/](https://ipfs.io/)

\- [http://gun.js.org/](http://gun.js.org/)

\- [https://zeronet.io/](https://zeronet.io/)

\- [https://webtorrent.io/](https://webtorrent.io/)

etc.

<comment><USER16> Actually "serverless" in the sense of the current buzz word is not P2P, it is basically Lambda: [http://martinfowler.com/articles/serverless.html](http://martinfowler.com/articles/serverless.html)

</comment></comment><comment><USER17> Is it me or is each link under the various providers routing to Google Cloud Functions -- [https://cloud.google.com/functions/](https://cloud.google.com/functions/)

</comment><comment><USER18> So, after having read the PDF I eventually realized that this is not a tool to cross develop and deploy to the three lambda clouds, but to self host your lambdas on your servers.

It's interesting and I might use it but I suggest to make it very clear on the home page of the project. The way it's designed now tells more about AWS, ECS and Azure than about the project itself.

</comment><comment><USER19> I already counted 5 smart people saying in "serverless" there are already "servers". You are very intelligent and reminding me those guys who repeatedly said "there is definitely a string over there dude" while we were watching David Copperfield's show together.

</comment><comment><USER20> How does it compare to Apex? Anybody with experience on both?

[https://github.com/apex/apex](https://github.com/apex/apex)

PS: Besides the fact APEX is only for AWS, however, APEX is very mature.

<comment><USER21> Apex is a framework used to help build and deploy applications on Lambda. This project appears to be a way to run your own Lambda service locally. There are other projects out there like OpenWhisk[1], Iron Worker[2], Gestalt[3], and Funktion[4].

[1] - [https://github.com/openwhisk/openwhisk](https://github.com/openwhisk/openwhisk)

[2] - [https://www.iron.io/platform/ironworker/](https://www.iron.io/platform/ironworker/)

[3] - [https://galacticfog.github.io/](https://galacticfog.github.io/)

[4] - [https://github.com/fabric8io/funktion](https://github.com/fabric8io/funktion)

(Edited for Formatting)

</comment></comment><comment><USER22> Interesting. Will keep an eye on this.

And for all those who disagree with "Serverless", come to Serverlessconf London (london.serverlessconf.io) and we can debate it there. In fact, would love to see everyone there!

<comment><USER23> > And for all those who disagree with "Serverless", come to Serverlessconf > London (london.serverlessconf.io) and we can debate it there. In fact, would > love to see everyone there!

Nobody disagree with anything but the marketing. "Serveless" is just an inaccurate description of what is actually going on. There is a server otherwise how do you communicate with the outside world? You need an API gateway to your pubsub architecture. Thus calling it "serverless" is misleading. Look we all know, buzzwords and marketing are here to sell, but when marketing is misleading it actually hurts the whole profession, leading to bad choices.

<comment><USER22> I am sure people have said this but it's "serverless" from the perspective of the user (who is a developer in this case). The developer doesn't have to deal with servers/infrastructure so for them the system is serverless.

I guess it's like wireless... Something could be wireless from the perspective of the end user but there are still wires actually there.

I honestly think that serverless is a lot less ambiguous and misleading than something like "cloud" which is completely abstract.

<comment><USER23> > I guess it's like wireless... Something could be wireless from the > perspective of the end user but there are still wires actually there.

It's a bad analogy. As a developer you are supposed to know they are wires somewhere. That's why all this marketing is dangerous. the obfuscation which makes everything sound like "voodoo and black magic".

> The developer doesn't have to deal with servers/infrastructure so for them > the system is serverless.

Yes he does, he has to configure and manage the whole thing on Amazon dashboard. Sure he doesn't have to spin upcontainers, but autoscaling doesn't make something "serverless". And again, you need API gateway to communicate with the outside world. So there is still a server fronting the whole thing.

<comment><USER22> I think we might be thinking about Serverless slightly differently. To me serverless is not just AWS Lambda. It's a broader theme that encompasses Function-as-a-Service technologies like Lambda and Backend-as-a-Service technologies like Firebase & Auth0.

Combining FaaS, BaaS, and using certain techniques and patterns is what makes Serverless. As a developer I am plenty aware that there are servers - I don't feel that there is any voodoo or black magic. However, when someone says that they have a serverless system I immediately understand what they are trying to say. They are saying that they don't need to manage, provision, scale, and look after servers. Honestly, the world "serverless" is a lot less confusing than "cloud".

I am not sure what you mean by "there is still a server fronting the whole thing". You don't need to scale the API Gateway yourself (again it's a managed service). Same goes for Azure functions, Google Cloud Functions and OpenWhisk as they all have HTTP listeners built in.

I understand where your thinking is coming from. There was this article that tried to address it: [https://serverless.zone/serverless-is-just-a-name-we- could-h...](https://serverless.zone/serverless-is-just-a-name-we-could-have- called-it-jeff-1958dd4c63d7)

Edit: fixed sentence structure.

<comment><USER23> > However, when someone says that they have a serverless system I immediately > understand what they are trying to say.

Obviously we don't as I don't consider the expression "serverless" accurate in describing what is really happening. Call it what it really is : pubsub, calling it "serverless" is misleading marketing.

> You don't need to scale the API Gateway

You still need API Gateway to communicate with the outside world, here is your server, you know exactly what I mean. What you call "serverless" didn't invent autoscaling in PAAS.

It's interesting by the way that you keep using product names "Lambda", "API Gateway" which aren't concepts but Amazon products. That's marketing. It's like calling all social networks "Facebooks". "Serverless" is a marketing device to sell Amazon services, I think people get it by now.

<comment><USER22> > It's interesting by the way that you keep using product names "Lambda", "API > Gateway" which aren't concepts but Amazon products. That's marketing. It's > like calling all social networks "Facebooks". "Serverless" is a marketing > device to sell Amazon services, I think people get it by now.

Amazon is a leader in this area right now but let's not use them. We can talk about Microsoft, IBM, or Google. They use "serverless" to describe their products. Google calls cloud functions a "serverless platform" and "serverless microservices" ([https://cloud.google.com/functions/](https://cloud.google.com/functions/)).

Azure functions talk about "processing events with serverless code" and so on. I only meant to use Amazon is an example because people are more familiar with their products.

Serverless is just a descriptor for these kinds of technologies and patterns.

</comment></comment></comment></comment></comment></comment></comment><comment><USER24> For me when I click for the AWS Lambda example it takes me to Google Cloud

</comment><comment><USER25> Link to Azure function points to google cloud platform!

</comment><comment><USER26> HyperDev

</comment><comment><USER27> So there's no servers, anywhere in this? You don't run it on a computer or anything?

Clearly I'm being a smart ass, but pointing out that 'serverless' is an idiotic marketing term.

<comment><USER28> We've all got these peeves; the one that gets me is 'isomorphic'. But language evolves one annoying incorrectness at a time, and it's tedious and off-topic to vent about this every single time it comes up. (I'm not saying that to you personally but in response to all these subthreads.)

<comment><USER29> Sure, but it's fundamentally wrong. The only upside is that it's catchy.

It's tiresome to point it out from time to time but if I go to a bar and each time I say Jeronimo and each time I get slapped and explained that they don't like it that there, after a while I'll stop and just ask for a beer like normal people do :)

<comment><USER28> I doubt that that model applies here.

</comment></comment></comment></comment><comment><USER30> 'Serverless' heh... oh man marketing is great. Just like if you have it in the cloud it's 'hardwareless' right?

<comment><USER31> I don't mind this name. We're OK with 'wireless' access to Internet, although it's pretty clear that the packets will hit a wire at some point. Wireless means I'm not pulling a cord along with my phone. 'serverless' similarly means my code is not listening on a socket, although the request does come from some socket, of course

<comment><USER2> Your 'wireless' analogy is the most convincing explanation I've heard for the term yet. When I was struggling with accepting 'serverless' as a legitimate name for Function-calls-as-a-Service, I reminded myself that there's no server to SFTP or SSH into to muck about on its filesystem.

<comment><USER29> Wireless is a wrong analogy.

Wireless refers to the lack of cables _between_ my device and the router. "Serverless" things however are part of the same infrastructure that serve other web services. They are sitting on servers. Computers which has a CPU to execute the functions. We call them servers, therefore serverless is meaningless term.

> there's no server to SFTP or SSH into

There is, but you are not allowed in.

</comment></comment></comment></comment><comment><USER32> All the reference links for cloud functions go to Google. Half life 3 confirmed.</comment>


HN Poll: Fads – Hype and Hope - <AUTHOR> Vote for the top 3 most-hyped fads, and then the top 3 most likely to succeed. Example: Hype: A,B,C; Hope: D,E,F. Write-ins okay. Left-most letter considered ranked the highest.

  A. AI
  B. Microservices
  C. IOT
  D. Blockchain/Bitcoin
  E. Quantum computing
  F. Cloud
  G. Serverless/Edge-Computing
  H. Detox/De-Troll/Fake-News-Cleaning
  I. Node.js/JavaScript-everywhere
  J. Dark-Data/Multi-tech Data Mining
 <comment><USER2> Hope:

D. Blockchain - I'd say the blockchain is overhyped by the mainstream but severely underappreciated by Silicon Valley types. It works, it's fundamentally novel. Money is a big deal and this changes money as we know it. A huge challenge to governments and legal systems. It has this 90s Internet feel to it.

H. Detox - Having a safe world where you can trust people is a catalyst for all kinds of progress.

J. Dark data - It works and is underutilized.

Hype:

A. AI - It's great just don't see us hitting the Kurzweilian hypergrowth.

C. IOT - Mostly has to do with improving the legacy-world. Boring.

B. Microservices - whatever.

<comment><AUTHOR> Blockchain is just glorified check-sums (on money value and content); I don't see how it allows things that couldn't be done before. Was check-sum tech simply too crappy or hack-able back then? Maybe I'm missing something.

Detox = bouncer/moderator. Again, I don't see what's new technology-wise. It's a business decision to have scrubbers of some kind, and it takes resources to scrub well. I could see it as a "business trend" or customer preference trend maybe, but typically the pendulum swings back and forth on such.

</comment></comment><comment><USER3> Will you forgive me for putting AI on both lists? Because AI is, I think, significantly over-hyped, and yet also is succeeding and will continue to do so - just not enough to live up to the hype.

<comment><AUTHOR> As far as AI, I suspect the limits of neural nets will become obvious and there will be an AI slump as investors pull back. R&D will continue, but often there's a lemming effect where if enough pull out at the same time, investors in general get spooked and follow. There is too much R&D money in it right now.

Neural nets will probably need to be combined with rule-bases, simulators, etc. to give AI more "common sense". Powerful pattern-matching alone is not enough, only part of the AI puzzle. There will be a slump until somebody figures out how to combine these well.

</comment></comment><comment><USER4> Hyper: D, B, G; Hope: E, A, C

</comment><comment><USER5> Hype: C, H, I. Hope: E, A, G.

</comment><comment><USER6> Hype: D, I, B; Hope: C, A, E

</comment><comment><USER7> Hype: D,G,C; Hope: A,B,E

</comment><comment><USER8> Hype: C,B,D; Hope: A,E,G

<comment><AUTHOR> Microservices burned our org. Make sure you have a clear need before diving in. Microservice-like technologies have been around for roughly 3 decades. If they were clearly a better general way, they'd have taken off back then. The reasons they failed back then (as a general technique) are pretty much the same reason they failed for us.</comment></comment>


Hacker – An Old School Hacking Card Game - <AUTHOR> https://www.novainfosec.com/2013/03/12/hacker-an-old-school-hacking-card-game/ <comment><USER2> I have both Hacker and Hacker II and they weren't that exciting to play. It's pretty disappointing because we played a lot of Illuminati in college. It's the Illuminati game play with a lot of additional pieces and rules scattered on top, all wrapped with a mostly sensationalized Hollywood-style hacker theme.

The work that got Steve Jackson Games raided became GURPS Cyberpunk. I think I got my copy signed by Bruce Sterling when I saw him speak on his tour for "The Hacker Crackdown".

<http://en.wikipedia.org/wiki/GURPS_Cyberpunk>

<http://en.wikipedia.org/wiki/The_Hacker_Crackdown>

</comment><comment><USER3> I'd love to find scans of the actual pieces and get a game going. Will start keeping an eye out for it on eBay, etc.</comment>


Dolphin Progress Report: January 2017 - <AUTHOR> https://dolphin-emu.org/blog/2017/02/01/dolphin-progress-report-january-2017/ <comment><USER2> As someone who enjoys writing paragraphs of prose for commit messages on even small changes, I love these updates. I have no interest in the emulator or the games, but the engineering feats and writing style are wonderful.

<comment><USER3> I hope you're on the Linux kernel mailing list. Some of the rants are absolutely amazing.

</comment></comment><comment><USER4> > There's actually no reason why it couldn't have fit on a Dual-layer disc. > Our only guess as to why it'd be a double disc game is that maybe it was > cheaper, and since it is installing itself, there's no need to disc-swap > after the initial installation, more or less erasing the biggest annoyance > with multi-disc console games.

One possibility was that the optical disk lasers on early Wii units had issues reading dual-layer disks like Super Smash Bros Brawl, causing disk read errors. Nintendo's official laser cleaner disk helped to some degree, and (if I recall correctly) the power of the laser could be increased with software modifications to help.

<comment><USER5> In the early to mid 90's, I was writing games for a living. We had a 2 disc game that we managed to reduce in size via in-house audio, image, and video compression down to a single disc.

Our publisher felt we were too far along to drop to a single disc and remove code paths, so we ended up with a ton of duplicate content instead.

There are all sorts of reasons to release with multiple discs, not all of them are obvious.

</comment></comment><comment><USER6> > leoetlino's genius solution to this is to actually check if a game is > running before sending reset and power commands. Such a brilliant check was > definitely not something we should have thought about a long time ago to > protect from something like this.

Love this tongue-in-cheek bit! :)

</comment><comment><USER7> > you fucked up the cache

Ha! Makes me wonder how much vulgarity is in the code of games throughout the years. I feel like this sort of thing would fly these days, but maybe I don't know how it works.

<comment><USER8> If you like this sort of videogame archeology there's a whole wiki dedicated to it:

[https://tcrf.net/](https://tcrf.net/)

<comment><USER9> One of the most beautiful things about TCRF is their categorization system. They actually have a category of articles for any sort of hidden anything. Take, for example, "Games with hidden developer credits" [https://tcrf.net/Category:Games_with_hidden_developer_messag...](https://tcrf.net/Category:Games_with_hidden_developer_messages)

</comment></comment></comment><comment><USER10> Yes we know this is the most transparent, and well run software development you all have ever seen. Let's discuss something more interesting about this report.</comment>


I Love the Apple Watch, but Don't Buy It - paulperry-wc http://www.codeonenow.com/

<comment><AUTHOR> I love the Apple Watch and bought them. Should I write whole article for the balance?</comment>