Google Fiber is live in Kansas City, real-world speeds at 700 Mbps - <AUTHOR> http://arstechnica.com/business/2012/11/google-fiber-is-live-in-kansas-city-real-world-speeds-at-700-mbps/ <comment><USER3> I think one incredible result of this is that it may raise expectations in the mind of the common consumer. This is very important for the coming data limit war in mobile and landline data caps, a war that consumers are already losing.

(I want to be clear: Speculation ahead.)

Mobile phone providers and internet providers (in America) seem to be setting data caps artificially low and saying that it covers the most common use cases (98% of customers) so it shouldn't be something we have to worry about.

Except that I imagine these very low caps are long play to justify price increases when using 4 or 8 or 20+ GB per month on your phone becomes the norm, or 600GB/month on your desktop becomes the norm.

Hopefully Google (and other companies) can show consumers in America (and perhaps elsewhere) the possibilities of large amounts of data over the wire TODAY so that its not a slow climb to higher caps, but a more abrupt shift for some that leaves far more complaints at Comcast and Verizon's door.

They won't reply to power-user consumers, they don't care. One only hopes they'll reply to mass consumers using their competition, even if it is merely tangential competition for the most part.

<comment><USER4> I'm reminded of Fake Steve Jobs' dig at AT&T's short-term thinking:

[http://www.fakesteve.net/2009/12/a-not-so-brief-chat-with- ra...](http://www.fakesteve.net/2009/12/a-not-so-brief-chat-with-randall- stephenson-of-att.html)

 _"Now there was a lot of demand for [the "Meet the Beatles"] record — so much that the plant that printed the records could not keep up. Now here's the lesson. Do you think the guys who were running Capitol Records said, Gee whiz, the kids are buying up this record at such a crazy pace that our printing plant can't keep up — we'd better find a way to slow things down. Maybe we can create an incentive that would discourage people from buying the record. Do you think they said that? No, they did not. What they did was, they went out and found another printing plant. And another one and another one, until they could make as many records as people wanted.

[AT&T CEO] Randall is like, Okay, I get your point. I'm like, You know what, I don't think you do, because if you did, we wouldn't be sitting here having this conversation, would we?"_

<comment><USER5> I don't think the analogy works, because you're already an AT&T customer. AT&T building out capacity, doesn't necessarily lead to more sales; the price/GB drops, they don't necessarily make more money, whereas building more printing plants does lead to more sales. Unless of coarse their offering gets better than Verizon's, and people start switching.

<comment><USER6> A better analogy is airplanes and air travel. We have the technology to build supersonic passenger jets, but the economics don't work: leisure travelers are unable/unwilling to pay more for their ticket to get at their destination two times as fast. Their time isn't valuable enough to justify the added expense. Yet, business executives are willing to pay for supersonic business jets because their time _is_ that valuable. Supersonic private jets are already under development.

Consumers would love faster broadband, but they can't afford to pay more for it. Businesses can, and they have a variety of options available.

<comment><USER7> Isn't Google Fiber showing us that the cost isn't as extreme as the providers would have us believe?

<comment><USER8> Google Fiber is a disruption play in a limited market. While not a loss leader, this type of roll out isn't cheap, especially for existing plants.

That being said, I'm jealous, so very jealous of Kansas right now.

<comment><USER9> If Google's roll-out significantly more expensive than any other type of facilities-based build-out?

In fact Google's product is rational: If you are going to bother to build out in a competitor's territory, you want to get all of your competitor's customers to switch, so you need a disruptive product.

<comment><USER8> My understanding is that the new build out is cheaper than traditional HFC builds. The difference here is incumbent providers would need to abandon large swaths of their infrastructure to compete with a disruption play in Kansas.

Google is spot on to roll out FTTH, but existing plants aren't going to disappear any time soon, and likely will not react to the disruption play at large.

</comment></comment></comment></comment></comment></comment></comment></comment><comment><USER10> What's interesting is that increases in bandwidth lead to corresponding increases in innovation.

Facebook and other Web 2.0 companies could not exist without DSL/cable/3G/4G connectivity - photos would take too long to load, for example.

Beyond increases in resolution and fidelity in multimedia, I speculate what would be truly innovative with this sort of speed. Any ideas?

For example, it would be possible to do sub-minute DNA analysis on the cloud by quickly reading a tissue sample.

<comment><USER11> Think about what a Chromebook would be capable of with always-on 700Mbps.

They could sell that thing with practically _nothing_ inside -- no hard drive, barely any RAM, no processor to speak of, just a screen and a keyboard -- and it could outperform the best desktops that money can buy, just by offloading computation to Google's massive data centers in real time.

Of course, in the short term latency will still be an issue. So more realistic would be to just get rid of the hard drive (why bother? It's practically the same delay to access the nearest data center's SSD as your own), but keep the RAM and GPU, and enough of the CPU to keep things running smoothly. But I definitely expect to see computation offloaded to the cloud as Internet speeds ramp up. It would be super cool to be writing a python script to test something out and just type in a call MapReduce or whatever on gigs of data, and have it Just Work in the cloud in real time.

<comment><USER12> Latency to access a SSD is calculated in nanoseconds, whereas latency across networks is typically calculated in terms of milliseconds. Order of magnitude difference here.

That being said, to an end user, the difference between 100 nanoseconds and 100 milliseconds is - probably - very small.

<comment><USER13> The difference is small for a single file. Then they try to start an app that loads 1000 files on startup (say, a game or Rails...), and those milliseconds turns to seconds, while the nanoseconds turns to still mostly imperceptible microseconds.

</comment></comment></comment></comment><comment><USER14> >"We just got it today and I've been stuck in front of my laptop for the last few hours," Mike Demarais, founder of Threedee, told Ars. "It's unbelievable. I'm probably not going to leave the house."

Is it just me, or does this read incredibly similarly to an Onion article?

<comment><USER15> The reporter didn't mention that I have been sitting in this house without internet for over a week.. I need to catch up on a lot of work.

<comment><USER16> Mike,

Can you comment on Ben Barreth? I read the article but I don't understand how this could be sustainable. Mortgaging your 401K in the hopes of getting donations on a charity project seems like a no-win situation. And I'm not speaking strictly from a financial perspective. Can you give us some more perspective on this? Or if Ben is out there, maybe he can comment. Thanks!

<comment><USER15> I'll get Ben on here tomorrow, but he has a few ideas to make this sustainable. The housing market here is really affordable and there are already some companies interested in sponsoring the house, so its not as crazy as it sounds. I believe his current focus is finding investors to buy other homes in the area who are down for the cause.

<comment><USER17> I'm open to any ideas. So far:

1) rent one of the rooms on airbnb? Need 16+ days a month rented to break even. Maybe push Fiber tourism? 2) get corporate sponsorship. Ask 10 small-mid businesses to sponsor $100/month for the house. Stick their logo all over the walls and the website 3) when google comes out with the business plan, install a new fiber drop and host a mini data center in the home for non-production clients (I imagine I'd have to compete with a bunch of ppl in KC for this service, once Google opens those doors).

</comment></comment></comment></comment></comment><comment><USER18> It's probably not quite as insane as it sounds until the rest of the internet catches up. I had 650 Mbps at Georgia Tech and realized most websites can deliver nowhere near that speed.

<comment><USER19> Something tells me gatech and google have different links to the internet....

<comment><USER20> Universities and research institutes are also connected to private peering links such as ESNet[1] or Internet2[2]. This is actually a huge benefit because these links are typically uncongested and you can get much more reliable transmission on them (and hence consistent latency and faster transfer speeds). Other countries/continents also have their own private academic networks that peer with the US ones.

I think I read somewhere that they are upgrading the ESNet backbone to be 100Gbit/s and GEANT's[3] to be 1000 Gbit/s, so I wouldn't immediately write off University/academic networking as automatically inferior to Google's.

Honestly it's hard to tell without knowing any of the details of how much capacity Google is provisioning in Kansas City (and how much contention there is). How much backbone fiber is laid to KS/MO - it doesn't seem to be where existing big-scale connectivity is (unlike say, DC Metro area where a ton of datacenters are located or London/Paris/Amsterdam).

[1] <http://www.es.net/> [2] <http://www.internet2.edu/> [3] <http://www.geant.net/pages/home.aspx>

</comment></comment></comment><comment><USER21> I've currently got gigabit fiber internet where I live (a tiny segment of the Minneapolis market) and although it is fast I can't say that it has dramatically improved much of my online experiences. Downloading happens much faster in most cases, but I don't do a whole lot of downloading and often times the rates are limited by the provider of the content. Websites seem to load up about as fast as they used to. The rest of the internet needs to catch up before fiber connections can truly be utilized.

<comment> mkr-hn People had cable and DSL for years before YouTube showed up.

</comment></comment><comment><USER22> Unfortunately the telecom companies should be able to keep Google out of larger markets with zoning laws and political power. I severely hope to be proven wrong, however.

<comment><USER23> Most of what the telcos have going for them are barriers to entry and a nice duopoly.

The barriers they have to entry might be significant to you or me, but they are pretty trivial to Google, especially in the wired space. In the wireless space they still need to overcome the insane bidding for spectrum that the duopoly permits.

Google needs KC to prove that the $70 price for fibre is not 'below market', once they've rolled out a profitable fibre service @ $70 per month they can roll into markets full of regulatory capture and the FTC will be largely unable to say that they are using their search monopoly to undercut telcos.

If they don't offer phone service the telco is even more screwed as that's where most of the regulatory power is.

<comment><USER22> I used to live in a city which had only one ISP. They have a deal with the city that restricts building of infrastructure from competing products (just a rumor - but competing ISPs just so happen to be available in smaller surrounding cities 5-10 miles away).

I'm not sure if this is common in other cities, but it really wouldn't surprise me one bit.

</comment></comment></comment><comment><USER24> Does anyone do anything that would greatly benefit from a connection like this in their home or have any examples of things that aren't possible now and these speeds will make possible (businesses, technology etc)? I can only really think of backup that will be greatly affected.

I currently have 75/20 in my apartment and I don't think I've yet to be in a situation where I needed more speed or was frustrated about my speeds, the problem for consumer broadband seems to be that while there are people with good connections there are still tens of millions scraping by with 1 or 2mbps which is holding their internet enjoyment back a great deal. My parents are living with around 1.5mbps (with fluctuations) making even basic streaming difficult. Hopefully the fact that Google are managing to do this will make ISPs step up their game, although I'm not sure what Google are going for here (proof of tech? entering consumer ISP space?).

<comment><USER25> > Does anyone do anything that would greatly benefit from a connection like > this

Replacing optical media with high speed lines would allow some funky new market mechanics like...

Games:

\- Instead of downloading the full 12Gb+ game, simply load levels/textures as needed

\- Distributed game session hosting where the players temporarily and reliably become the host of a shard

\- Something like OnLive could be high res/low image compression/ultra low latency

\- Download 12Gb+ games on a whim and pay as you go for playing it - <USER2> playing/paying for it and the provider can cancel the game's certificate and it gets pulled from the system. Want it back? Download it again in a minute, save games and all

Movies:

\- Make way for 4k video via net

\- Make way for low compression 1080p video via net

\- Make way for every person in the household streaming 1080p...while video chatting in 1080p, while playing an RTS on an OnLive-like service...while backing up their files to a remote server. Etc.

The future is going to need some big pipes.

<comment><USER26> _Download 12Gb+ games on a whim..._

Sort of. 12GB (I presume you meant GB) still takes a minute or two to move around locally- storage isn't fast enough to flush 12GB in seconds.

Now, if your device just had comical amounts of RAM, you could manage it.

<comment><USER27> How is ~12GB ram comical? It's a lot easier for the common consumer to get 16 gigabytes of RAM today that is to get the kind of network speeds we're talking about here.

</comment></comment></comment></comment><comment><USER28> What are the terms of service with this? Can I ask a friend in the area to install it and run some high-bandwidth services? I look forward to seeing whether this turns KC into a gold-mine town reminiscent of the 1800s. I don't even know what I'd do with 700mb upload. Invent wall-to-wall video streaming? It's always been a dream of mine to have breakfast with my family from a distance with near-perfect, full-size resolution like some sci-fi movie in the 80s. (Ok seriously, if someone does this please invite me over for breakfast, even if it's remote-breakfast with a neighbour).

<comment><USER29> Their unlinkable TOS says no servers.

<comment><USER30> REALLY? Because I was just seriously considering moving to KC until I read that sentence. If the legal agreement says no servers, then what is the point? What is the point of moving your startup to KC if you technically aren't allowed to run a business off of Google Fiber?

<comment><USER31> What home ISP allows you to run a server? "Business class" is always required for that sort of thing.

That said, few startups should be hosting their own servers, no matter the speed of their internet connection. Everything else you do will be blazing fast though.

<comment><USER32> I've run servers off residential IPs before. I use to maintain a community box for me and a bunch of friends when I lived with my parents. It wasn't fast but it met our needs. The only problems I ever ran into with the ISP was when I tried to run a mail server.

</comment></comment></comment></comment></comment><comment><USER33> I like to think how this could change how ideas are spread and organizing. I imagine something like google hangout but with 100 like minded people all present at the same time discussing a common interest, with something like a real time voting mechanism in place so that those with (presumably) better ideas are more likely to be heard.

In one example I'm imagining a city council meeting, where anyone who just has the time to log in can take part. And then I realize that maybe this would lead to horrible popular ideas being more easily spread.

<comment><USER34> I'd like to think that this will remove people from an office enviroment and allow people to work from home more. This is probably a bit much for most people, but is there really a need for you to sit at a desk in an office when you can do the same thing at home? Real time communications (via video) allow for instant communication between employees, and you can easily add someone to the conversation. The implications of something like this are actually quite big. A change to the 9-5 grind (for better or worse will depend on how it's implemented). The impact of this could be significant when you think of all of the things the 9-5 encompasses, for example, getting stuck in traffic at 8:30am.

</comment></comment><comment><USER35> If this was offered by bell or rogers you'd get 1Gbs transfer, with 100gb of bandwidth

<comment><USER36> Yes, I wonder what Google's plans wrt to Canada are (if any). It's hard to believe that the Canadian big telcos will let it happen, though.

<comment><USER35> I think the current law prohibit non canadian companies from entering the market, but I might be wrong on this

<comment><USER37> If it doesn't I'm sure the lobbyists will start sliming out of their holes soon enough.

</comment></comment></comment></comment><comment><USER38> Video conferencing is the main pain I have that this would help with.

Obviously, really high quality audio, HD video, with multiple participants.

Then I'd like a bit more than that - panorama video so I can see all the surroundings in detail of where the other person is. Not just point audio, but a mesh of audio so I can move around in the space. All streamed to Google Glasses or similar.

And if that isn't enough, Kinnect-like 3D, so my body is scanned with depth as well.

Done well, so that tech geeks _actually start to have their conferences online_ rather than in the flesh... This'll reduce carbon emissions, and mean people can spend more time with their families.

Will that use enough bandwidth?

<comment><USER39> No, 50 Mbps will be sufficient for this with the right codecs and gear. Now if you want it all as raw data - that makes a difference.

<comment><USER13> 50Mbps is barely sufficient for high quality current HD.

</comment></comment></comment><comment><USER40> One of my pet peeves is how data stream rates are always represented in bits per seconds. It's extremely deceptive to people who don't know the difference between a bit and a byte. We shouldn't measure storage in bytes, but internet speeds in bits.

<comment><USER41> You also have to factor in error correction overhead for TCP transmissions. I find it pretty accurate to shift the decimal one spot to the left when estimating maximum real-world Internet transmission speeds in bytes, rather than dividing by 8.

</comment></comment><comment><USER35> I can only dream of the MMORPGS possible with this, hopefully these speeds hit critical mass in NA within a decade

</comment><comment><USER42> Here in Australia the government is rolling out 1Gbps fibre to everyone as part of the National Broadband Network project. Unfortunately its projected to take until 2021 before its completed.

</comment><comment><USER43> It is ridiculous to see how disk seek speed will really be the next big bottleneck. In a few years, I expect these types of inet speeds to be relatively more commonplace.

</comment><comment><USER44> I really wish this would come to Canada, and Toronto specifically. The business internet market in this city is ridiculous and ripe for a real disruption.

</comment><comment><USER45> The speed is just ridiculous. Especially the upstream. So many possibilities. So jealous. I like how he shares his connection though.

</comment><comment><USER46> Is it just a coincidence that Kansas City is also home to a very small shop that frequently accounts for 10% of US equity volumes?

<comment><USER47> Yes. BATS has been a positive member of KCMO's tech community for years and had no part in KCK landing the Google Fiber deal.

</comment></comment><comment><USER48> Pretty pimp. I'd love to see this hit more and more people, and not just KC.

</comment><comment><USER49> is anyone else afraid of outbound ddos attacks :), what do they have in place to cut these off really quick?</comment>


Laying Out iOS UIs in Code - <AUTHOR> http://harlanhaskins.com/2014/03/02/laying-out-ios-uis-in-code.html <comment><USER2> I would still recommend using Auto Layout, even if you are laying out your views without Interface Builder. (Full disclosure, I helped write Auto Layout.)

One advantage is that it makes sure things are pixel-integral, no matter the scale factor of the screen. For example, his code example,

button.x = self.view.width * 0.2; // Position the inset at 20% of the width.

has a pretty good chance at starting the button at x=21.845, or some other point in-between pixels and producing a blurry line. If you do this same relation in Auto Layout, the engine makes sure that the positions and widths are all pixel-integral.

This is not as simple as just rounding everything, either! For example, if you have two views

[blue][red], you want to make sure you round their shared edge either to the left or to the right. Otherwise, there will be a gap between them. You need to make sure you round their shared edge the same way consistently too, or it will jump back and forth as you resize a window and produce a noticeable jitter.

Also, in that same code example, they set a button's x position to be directly related to the width of a view. If you ever want to support RTL interfaces, this is a bad idea. It is relating a width to a position. In a RTL interface, the correct code would be

button.x = self.view.width - self.view.width * 0.2 - button.width

Complicated! In general, you shouldn't convert between positions and sizes. Instead, I would make an invisible spacer view and lay them out like this using the layout format language

|[spacerView][button]

Then make a relation setting the spacerView's width to be 0.2 of the superview's width. This will produce constraints that correctly work in a RTL interface, laying it out like [button][spacerView]|.

<comment><USER3> No offense to the parent, but I think AutoLayout is kind of flawed. It's a good idea in theory, but has some very rough edges in practice. When things go wrong, it's difficult to figure out why, because all the constraint solving happens elsewhere. You might have an over or under constrained layout and end up with problems. In our experience, it also extracts a decent performance hit for complicated layouts (tossing hundreds of rules into a constraint solver is not fast).

Some things were harder than they needed to be, as well (e.g. centering a group of vertically layed-out elements). We often needed to create spacer UI elements to work around it.

FWIW, I rebuilt an iOS5-compatible version of AutoLayout (using Cassowary for solving and a lot of objective-c runtime magic to maintain a shadow hierarchy that consists of layout objects), which we even shipped for a while. Eventually we decided to move away and write our own system, with an emphasis on debuggability and simplicity. We ended up with a system that kept 90% of the benefits of AutoLayout but without needing to solve constraints.

The key element was the idea of 'smart rectangles' which were used for layout. You can set any two components explicitly of an axis (e.g. left and right) and the others (e.g width and centerX) would be determined automatically. Basically each rect system remembers the last two components on a given axis.

We also have the concept of a selection, which takes a group of 'rectangles' and can perform various operations as a group, like laying them out vertically, centering them all on an axis, and moving them as a group. This makes it easy to do things like center a group of vertically layed out elements (select, layout vertical, then set the selection's centerY).

The rectangles can then be applied to UI elements (which automatically handles rounding to pixel integrals, and ensures you don't end up updating UI unnecessarily as you build your layout, which is the problem with most of the UIView categories). But you don't necessarily need a UIView to apply - we've used this system for laying out OpenGL elements as well.

In practice, the code feels kinda like Autolayout:

      buttonRect.centerX = bounds.centerX;
      buttonRect.width = 100;
      buttonRect.top = widgetRect.bottom;
      buttonRect.bottom = bounds.bottom;

Unlike AutoLayout, you need to lay out stuff in order (e.g. you in the example above, widgetRect.bottom has to be set already before you assign across to buttonRect.top), but that was a small price to pay since you can step through the debugger and instantly see any changes you're making if your layout doesn't work out. And we don't handle constraining between non-sibling views as nicely as AutoLayout. But for simplicity, performance, and maintainability, it's been a huge win for us.

Hopefully we can eventually open source it - all of the devs who've used it miss it when working on personal projects.

<comment><USER4> As someone who's written a lot of manual layout code for iOS, count me as interested if part of your decision to open source it or not is community interest.

</comment></comment></comment><comment><USER5> There's generally two kinds of iOS apps/devs and once you work out what bracket you fall into, choosing between IB and code is easy.

If you're making fairly standard apps that substitute largely for websites - eg, login screens, some data in lists, couple forms - then you will probably want to go with IB storyboards. For these types of apps, development speed is most essential and future changes are mostly just tweaking the UI a bit as a large part of the functionality of the app is just pulling data from web services or doing standard calculations and displaying the result. Storyboards will let you get a nice looking and fairly simple UI done very fast and allow for rapid UI changes.

However, if you are going to have 3+ devs working on your app because it's actually the basis for a business or is very complicated, storyboards cause a lot of merge problems. They're far harder to create automated test code for. Refactoring your app becomes an exercise in tracking down IBOutlets. The couple days you saved at the start with easy layout and transitions get eclipsed by the amount of time you spend fighting IB later for changes. Also, if you use code review tools and have a heavy peer review culture then storyboards are a particularly bad fit.

Honestly I believe most apps fit into the first option and storyboards are the way to go. 95%+ of the apps on the Apple Store are definitely in the first category, and there usually isn't a need to over engineer them.

<comment><USER6> It's important to distinguish between NIBs (or XIBs, if you prefer) and storyboards.

NIBs can be used in even extremely complex and large applications to make tasks easier. For example, iPhoto on iPad uses NIBs to load in UI interface assets as it's more convenient than doing it in code - and this is an app with a large development team and a significant codebase (there's an interesting WWDC 2012 video available on iPhoto's iOS architecture, which is where I got this piece of trivia from).

One of the problems with storyboards - versus NIBs - is that it can become difficult to work at scale. Not scale in terms of team members (although that can be a problem), but scale in terms of the size of your app's UI. A iPad app with a a dozen different screens of content can become very hard to navigate.

Where storyboards _are_ useful is allowing those new to the platform to get up to speed on concepts such as custom table view cells, collection views, auto layout and the like without having to get bogged down in the large amount of code this would normally require. They're definitely not for everyone.

Sadly, NIBs have a bit of a bad reputation with some developers. I suspect this is mainly for historical reasons - as of Xcode 5 the XML schema has been significantly simplified making code review and source control much easier, and NIBs have significant advantages for newer technologies such as auto layout.

<comment><USER7> One way ive found to handle scale in storyb oards (in both terms of scale) is RBStoryboardLink which allows you to separate an app into multiple storyboards and use placeholders to jump into another one.

</comment></comment></comment><comment><USER8> Why not just use Auto Layout in pure code?

buttonView = [[UIButton alloc] init];

buttonView.translatesAutoresizingMaskIntoConstraints = NO;

[self.view addSubview:buttonView];

[self.view addConstraint:[NSLayoutConstraint constraintWithItem:buttonView attribute:NSLayoutAttributeTop relatedBy:NSLayoutRelationEqual toItem:self.view attribute:NSLayoutAttributeBottom multiplier:1.0f constant:0.0f]];

... etc

It's certainly better than the stress you'll have with UIView+Positioning or IB.

<comment><USER9> Apple's options for Auto Layout in code aren't the best. Check out some of the fantastic third party APIs available.

I'm the developer of UIView+AutoLayout, which is designed to provide the API that Apple should have in the first place (it's inspired heavily by the IB options): [https://github.com/smileyborg/UIView- AutoLayout](https://github.com/smileyborg/UIView-AutoLayout)

<comment><USER10> I've used a similar one myself. Same name but different project: [https://github.com/jrturton/UIView- Autolayout/blob/master/So...](https://github.com/jrturton/UIView- Autolayout/blob/master/Source/UIView%2BAutoLayout.h)

Thank you for making this area of ios dev less painful. :)

</comment></comment></comment><comment><USER11> I have some problems with this post.

#1 is saying that you're restricted to point based UI's in interface builder. This is absolutely not true. Wether you do you UI's in interface builder or code - use auto layout!

This way you get dynamic, resolution-independent UI's that can even work automatically with right-to-left text (realigning other elements according to text alignment).

The way the author is doing it is still point-based (just a bit more dynamic since he does some calculations) while auto layout has all this built in.

Yes, it is harder to get started with auto layout, but once you learn it, it is worth it.

#2, using things like UIView+Positioning still sets your frames. And it does so for each property you set. This means that the frame might be set 5 times instead of one (just for slightly cleaner code). This is not good since it might cause 5 calls to layoutSubviews instead of one (performance issue) and also it will ruin animations (dependent on a source and target frame).

<comment><USER12> Pretty much all of my experiences with auto layout in code have taken longer both in code length and in time than just implementing -layoutSubviews. Explicit is better than implicit, etc.

<comment><USER13> Eventually you will get a handle on AutoLayout and it will become much easier. I learned to follow a few patterns that I taught myself which are solid for my interfaces. If I did it all in code I would be shooting myself and any other developer who has to touch this project later.

</comment></comment></comment><comment><USER14> If all of your layouts are created in code, every visual tweak requires an engineer. In general I will do almost anything to NOT have to lay out views by hand, as nothing slows a project down more than jumping into the tweak-a- magic-number-and-recompile cycle. It sucked when I was doing CSS, and it sucks even more when I'm compiling code.

For the most part IB mostly doesn't make sense for games, so I have a custom Photoshop script that exports each layer with metadata. A custom importer reads the metadata file and loads the whole view in the proper positioning. So I've basically swapped IB for Photoshop, but the work flow is essentially the same....

<comment><USER15> In my extensive experience with storyboards, XIBs & NIBs, I've found it to be incredibly easy to unintentionally change something that has a profound effect on how that particular view works. Frankly, with iOS storyboards or XIBs, I'd be much more comfortable _only_ having engineers handle visual tweaks.

Recent example - went into a storyboard, changed a constraint, must have accidentally clicked on the wrong thing at one point, and the next time I ran my app, there was a faint detail disclosure icon in the middle of my view controller. It was absurd - somehow, unintentially, I had redirected a push segue onto a UIImageView. No clue how it happened, but it took me a good 10 minutes to diagnose it.

IB is just way too buggy to trust non-engineers with UI work, IMO.

</comment></comment><comment><USER16> > I use UIView+Positioning...

Looking at that code reveals that it doesn't try to account for fractional positioning. If you set self.center on a view that is an even number of pixels wide, it will result in a non-pixel-aligned origin on non-retina displays, which results in in blurry rendering. If you're iOS-7 and iPhone only these days, that may not matter, but there are still millions of non-retina iPads out there, and in fact you can still buy new ones on the Apple store (both the original iPad mini and the iPad 2 are still for sale).

I've written lots of code for iOS and have generally always preferred programmatic layout over IB, but you have to be a little more careful than this post is implying. Beefing up your helper routines to take into account issues like the above is critical to making sure your UIs always look their best.

<comment><USER17> Do you think rounding to the nearest int in the setters would fix this issue?

I imagine it would cause the occasional 1px drift but would probably be fine for most use cases.

<comment><USER16> I share your concern about drift, but in practice I've never seen it become a problem. On the other hand, blurry views really stick out. The easiest way to avoid them is to have a category method on UIView called something like "alignOrigin", in which you grab the value of "self.window.screen.scale" and make sure to snap both the x and y of the origin to be a multiple of the reciprocal of that scale. For example, if the scale is 1, you snap to integer bounds. If it's 2.0, you snap to multiples of 0.5. If you call that method every time you adjust the view's position (especially after manipulating "center"), that'll keep everything looking sharp at all times, and is future- proof against any new screen densities Apple might someday release.

</comment></comment></comment><comment><USER18> As someone who has done a decent amount of Swing/Android development, I've often wondered: why hasn't iOS historically had decent layout manager support? I've used RelativeLayout for Android and quite frankly I've found very few instances where it didn't do what I wanted: the reduced number of iOS form factors makes it easier to do pixel-perfect layouts (than the thousands of Android devices) but even AutoLayout seems like a poor replica of what the Swing/Android layout manager-style libraries can do. I use it both from the Android XML and from code and it makes life REALLY easy. I've done a lot of work with storyboard/IB recently and it isn't as bad as I used to think, but always wondered about that.

<comment><USER19> > than the thousands of Android devices

this probably explains why android would have it but not iOS, originally iOS only had 1 screen size and didn't need it (though it still would have been much better). Now that new screen sizes are being released / rumoured its much more useful

</comment></comment><comment><USER20> I definitely side with the author. Any time we've used IB it's always ended up in regret. Refactoring, odd layout issues, iPad / iPhone management has always made it a headache.

It's probably a testate to how good UIKit is to code with directly that makes it attractive.

Though whatever side you fall on, I think it's worth appreciating you have the _choice_. I remember when doing some brief Windows Phone development, and seemed all you had to work with was some XML API to design your interfaces. It was awful.

</comment><comment><USER21> One of the bigger takeaways from this article should be to make a decision of where to set layout parameters, and stick with it. I'm sure we all have opinions on using the in-code method vs IB, and can debate 'till the end of time. As a relatively new iOS dev picking up an existing codebase, the biggest thing I could say is be consistent. The number of times I tried setting something in code only to find it was being changed in IB is far too many.

<comment> k-mcgrady Very good tip and something I find myself screwing up on projects all the time. A good example is with scroll views. There are quite a lot of parameters than usually need to be set (zoom scale, user interaction, multi touch, delegate). I can't count the number of times I've been debugging why it isn't working only to find I've mistakenly set a parameter in IB and code that are conflicting.

</comment></comment><comment><USER13> No thanks. Just learn to Storyboards already. It is it that hard and Xcode can help anyone who maintains this app. If it all in code it takes a lot of the and effort to understand what is controlling the layout.

<comment><USER22> Except that Storyboards are pretty detrimental to large project maintenance, especially universal apps. AND they have a really awful habit (or most developers do!) to keep copy IN the storyboards.. which is an unimaginably bad practice.

Storyboards are good for small, simple apps where you're the sole developer (or maybe a team of 1-3). Go bigger, drop storyboards.

<comment><USER23> > they have a really awful habit (or most developers do!) to keep copy IN the > storyboards..

If you internationalise your app, you can extract all the copy out of a storyboard into a strings file.

</comment></comment></comment><comment> k-mcgrady I think this is all pretty valid. However it's important to point out the time savings using NIB's and Storyboards. I do most of my UIs in code but occasionally use NIB's when I'm doing layouts that include lots of objects that would be very time consuming to code.

Recently I decided to give Storyboards a try on a project. I was shocked at how much time it saved (no more pushing/presenting view controllers, no more fighting tables to display custom cells) and for views that were only displaying information and a button to push another controller I didn't even need to create a class as the push could be done in Interface Builder. I don't think this approach is going to work well for all apps but when you've got something with a predetermined flow (a form for example) it saves a hell of a lot of time.

</comment><comment><USER24> I see where this is coming from, but loosing the convinience of xibs + auto layout is too great to sacrifice for me. Just thinking of how much bigger my view controller code will get makes me shudder.

<comment><USER25> Your view code shouldn't go into your view controllers, it should go into your views. This is a mistake that is _very_ common among iOS engineers. Anything dealing with subviews, layouts, touches, etc should go into subclasses of UIView; view controllers should handle touches (delegation!), interact with the navigation controller, and act as a bridge between your views and the rest of your application code.

<comment><USER26> But why make UIView subclasses when you don't have to? If I'm just using a tableview, and I need to lay that out, I'm not going to subclass UITableView. I'm just going to add one to my controller or use UITableViewController. If you're already making subclasses of UIView, then yes, do the layout code there, but for many applications this isn't necessary, and there's no where else to put that code.

<comment><AUTHOR> Specifically UITableView is a bad example here, because UITableView relies heavily on the `UITableViewDelegate` and `UITableViewDataSource`.

For that, though, you should make a separate class for the TableViewModel, to keep that code out of your ViewControllers.

<comment><USER26> Well, maybe. UITableViewDelegate and UITableViewDataSource don't have anything to do with the layout of that tableview. But let's say I have a bunch of labels, or textfields, or buttons or imageViews. All of those stock classes will do a pretty good job without subclassing, and for many applications, there's no need to subclass them. If you're doing your layout in code, where else does the layout code go other than the Viewcontroller that manages all those objects.

</comment></comment></comment></comment></comment><comment><USER27> The big problem with Interface Builder is that, most of the time, its layout view bears no resemblance to what your UI actually looks like within the app. Deciphering the meaning of overlapping grey boxes in IB is often just as difficult as reading code. "WYSIWYG" it ain't...

I'm working on a design tool that aims to fix this: [http://neonto.com](http://neonto.com)

Neonto Studio is a completely visual environment with support for vector drawing, video, smart guides, multi-device layout with full previews, and so on... There's no coding involved -- this is an app for designers.

The tool generates readable iOS and Android code, and there's no special runtime involved, so it's ridiculously easy to take a few screens designed in Neonto Studio and drop them into a larger app.

It's currently in alpha testing. I'm hoping to release a full beta in the next few months. If you're interested in trying out the alpha today, I'd love to have your help -- just drop me an email at pauli <at> neonto dot com!

<comment><USER28> Why do I have to wait for the girl to finish blowing her bubbles before I can sign up ?

It doesn't tell me anything about the product.

</comment></comment><comment><USER29> Don't make the mistake of thinking "Storyboard == Auto Layout". I really like Auto Layout and I think it is much easier to understand and read when declared in code. I strongly dislike Storyboards, though, for the 15 reasons outlined here: [http://stackoverflow.com/questions/9404471/when-to-use- story...](http://stackoverflow.com/questions/9404471/when-to-use-storyboard- and-when-to-use-xibs/19457257#19457257) However, some pains can be removed with this tool I wrote: [https://github.com/jfahrenkrug/StoryboardLint](https://github.com/jfahrenkrug/StoryboardLint) It helps you to keep your IDs in code and in your Storyboards in sync.

</comment><comment><USER30> The way I've typically worked is static pages are allowed to be done in IB, but everything else is done in code. The reasoning is that doing things in code makes for much easier diffs and merges and also allows you to easily edit code in things outside of XCode (I personally prefer AppCode). Doing things in code makes thing a lot more explicit and can be setup so that the view code doesn't have to interfere and floor the view controller's code. The main problem is there are lots of things you can do in code that IB can't do, but not much (if anything) the other way around. You should always be able to write your views using pure code.

</comment><comment><USER31> From an Android PoV I'm very skeptical of the benefits this. Unless you can round-trip between code and a visual tool, you are unlikely to get professional designers to touch a UI layout in code.

It's hugely valuable to get designers to adopt the SDK's design tools. Unless the designers on a project are obstinate about that, making that more difficult is usually a step in the wrong direction.

He also seems to be blaming the toolchain's refactoring and the declarative UI XML for being difficult to manage. It is really that bad?

</comment><comment><USER32> Writing a large scale iOS app with 100s of XIB based views is equivalent to writing a Visual Basic app in my opinion. Suddenly your app is now dependent on -awakeFromNib and subclassing requires yet another another XIB. Just some reasons I prefer writing layouts in code (auto or not).

There are two camps of iOS Engineers in my experience. Those that feel IB makes your life better and those that feel the opposite. Both sides make valid points, but I vote for sticking with code as much as possible.

</comment><comment><USER33> Related project that I'm working on: [https://github.com/fjolnir/Visual- Layout-Language](https://github.com/fjolnir/Visual-Layout-Language)

It's a take on Apple's visual format language that allows for defining a ui from scratch: [https://github.com/fjolnir/Visual-Layout- Language/blob/maste...](https://github.com/fjolnir/Visual-Layout- Language/blob/master/Mac%20Demo/test.vll)

</comment><comment><USER34> I do this too, and agree. The benefits and straightforward version control diffs are fantastic when working on a distributed team with multiple devs touching the UI.

</comment><comment><USER35> Same issue in Android. But this does not work in real life, because Designers.

Designers don't do things in code, they use the UI panel designer. end of story.

<comment><USER36> >Designers don't do things in code, they use the UI panel designer.

Because designers aren't coders. If you're after the coveted designgineer, good luck. They don't exist. Designers design things using the best tools for _their_ job. Coders implement the design using the best tools for _their_ job. Thinking that designers and implementers work on the same level is toxic.

<comment><USER35> That is your opinion. Designers must know the medium.

</comment></comment></comment><comment><USER37> Using Tcl/Tk, one did layout interactively at the command line. It was fast and very intuitive, especially in the way it used layout guides with easily understandable local "laws of physics." However, it usually resulted in very staid looking UIs. Also, such a scheme would have to be modified to be able to deal gracefully with things like device rotation.

</comment><comment><USER38>
        I use UIView+Positioning, which exposes x, y, width,
        height, right, bottom, centerX, and centerY as both
        setters and getters.

IB/code aside, this is convenient. All of those properties are read-only by default, and that's always seemed counterintuitive to me (though I'm sure there's some purpose I'm missing).

<comment><USER12> Those are struct members, not properties.

</comment></comment><comment><USER39> I built an app using Storyboard last year, I'd do it again but only if the app was reasonably simple in scope. I think we ended up with about 20+ screens, and at that stage there was too much going on for it to be easy to work with.

Plus on a 13" laptop on the move? Oof, hard to deal with. Only really could work with them easily on a larger monitor.

<comment><USER40> You know, you can use more than one storyboard in your app.

<comment><USER39> Yeah, but to keep logic sensible the most I could break them down to was about 3 Storyboards, which is what I did in the end.

</comment></comment></comment><comment><USER41> When I first saw Interface Builder 25 years ago, I thought it was a neat tool for the programming-impaired. Maybe it's finally getting useful but even with the latest iOS autolayout, I still prefer doing my own layout calculations in code most of the time.

</comment><comment><USER42> As an aside, I think it's pretty impressive that a post by someone who graduated high school 8 months ago is being discussed and debated on the top of HN. He says he is looking for an internship, hopefully he will get some interest. Kudos.

</comment><comment><USER43> It looks to me like ios7 and auto layout is partly about running on many screen sizes. Makes you think about future devices and how your code will fare. Worth thinking about.

You might _need_ to use IB.

<comment><USER44> We found the switch to first the iPad & then 4.0" iPhone screens to be greatly aided by IB. The fear (?) that's always keep us with IB is that eventually the device screen _widths_ are going to increase -- tools are supposed to help with such issues, why not trust that IB will lead you there?

As a side note, I learned to enjoy Android layout systems. It was all a big mystery until I could finally test layouts interactively within the latest Android Studio [0] GUI. Although I'm not sure if I'd rather have a similar XML schema for iOS, I'd bet that the JetBrains folks might have already thought about doing this for their AppCode tool[1].

[0] [http://tools.android.com/tips/layout-designtime- attributes/](http://tools.android.com/tips/layout-designtime-attributes/) [1] [http://www.jetbrains.com/objc/whatsnew/](http://www.jetbrains.com/objc/whatsnew/)

</comment></comment><comment><USER45> You don't want designers working in IB. You want them thinking colours, layout, UX, esthetics - not wrestling with XCode.

<comment><USER13> Who says designers need to use Xcode and IB? They can provide the comps so the developer knows the dimensions. It should be a collaborative process, not something that belongs to the developer or designer.

</comment></comment><comment><USER46> oh so you mean like css</comment>


Twitter Is a Hateful Place by Design - <AUTHOR> https://www.gq.com/story/twitter-hateful-place-by-design <comment><USER2> I'm not sure why I expected a thoughtful piece with actual substance — the nexus between Twitter's original design, post-launch strategy shifts, and its current state — from a mass-market publication in 2018, but I did, and that was a mistake.

Now I'm convinced _that_ was designed. Someone crafted a wily scheme that ultimately had me reading a few paragraphs looking for actual insight. Who's the mastermind behind this?</comment>


Texas legislators considering making abortion potentially punishable by death - <AUTHOR> https://www-m.cnn.com/2019/04/10/politics/texas-legislature-abortion-bill/index.html <comment><USER2> So a woman who takes the "morning after" pill could be executed? Are these lawmakers insane?

<comment><USER3> Would not this make the pharmacy sales clerks who handled the sale, in addition to the pharmacist, indictable both under charges of accessory to murder and under conspiracy to commit murder?</comment></comment>


Universities have turned over hundreds of patents to patent trolls - <AUTHOR> https://medium.com/@yardenkatz/universities-have-turned-over-hundreds-of-patents-to-patent-trolls-99d5cdec1d8a#.a437c6bcq <comment><USER2> This is horrible...</comment>


A Comparison of Two Distributed Systems: Amoeba and Sprite (1991) [pdf] - vezzy-fnord http://www.cse.scu.edu/~jholliday/COEN317S05/CWilliamsPres.pdf <comment><AUTHOR> Lovely, I'm going to read. When I was doing my thesis I was adamant that I'd talk about Plan 9. The literature survey kept pointing at Sprite and Amoeba as the two systems that had the most similar goals at the time.

Since then I keep thinking that the term "system" refers to a distributed system of components, something that has grown beyond the single hardware OS paradigm ever since networks were invented. I have a little bit too much trouble understanding why people would not consider Go a "systems language" only because they think a system is a single hardware entity...

<comment><USER2> Plan 9 is the obvious third experimental system to come to mind, more like Sprite in some ways and Amoeba in others.

An important paper to read before digging too thoroughly into this subject is: "A Note on Distributed Computing" [[http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.41.7...](http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.41.7628&rank=1)], Jim Waldo, Geoff Wyant, Ann Wollrath, and Sam Kendall. SMLI TR-94-29, Sun Microsystems Laboratories, Inc., Nov. 1994.

" _We argue that objects that interact in a distributed system need to be dealt with in ways that are intrinsically different from objects that interact in a single address space. These differences are required because distributed systems require that the programmer be aware of latency, have a different model of memory access, and take into account issues of concurrency and partial failure...._

" _We conclude by discussing what is required of both systems-level and application-level programmers and designers if one is to take distribution seriously._ "

As far as systems programming and systems programming languages go (more at [http://maniagnosis.crsr.net/2011/11/systems- programming.html](http://maniagnosis.crsr.net/2011/11/systems- programming.html)), keep in mind that "systems programming" is more about resource management---think of it like programming embedded systems where "embedded" might include the kernel of your stand-alone (or distributed) OS.

" _James Iry made a very insightful observation about the nature of the C programming language:_

" _' Alan Perlis famously said "a programming language is low level when its programs require attention to the irrelevant." What's relevant depends on the problem and the domain, so a corollary would be that a language that's at too high a level prevents paying attention to some of what is relevant for your needs.'_"

<comment><USER2> kjs3, your comment is dead, but the links you gave:

The Clouds distributed operating system from Partha Dasgupta's team at Georgia Tech was also a contemporary of Sprite and Ameoba. See:

[https://www.usenix.org/legacy/publications/compsystems/1990/...](https://www.usenix.org/legacy/publications/compsystems/1990/win_dasgupta.pdf)

[https://home.cc.gatech.edu/tony/uploads/14/clouds.pdf](https://home.cc.gatech.edu/tony/uploads/14/clouds.pdf)

are cool. (And I'm not just saying that because M. Ahamad is a friend of my advisor.)</comment></comment></comment>


PHP Frameworks Code Complexity Comparison - <AUTHOR> https://medium.com/@taylorotwell/measuring-code-complexity-64356da605f9#.hc0xvhpv5 <comment><USER2> It's co-location is very low however. What you want is never nearby, and thanks to the Facade system used for service location it also isn't always clear which class is actually being used without digging through some configuration files, and an IDEs autocomplete and click through has no hope without a generated helper file.

This leaves you digging through dozens of tiny files, some barely longer than the class definition itself, just to find even high level logic. I normally learn frameworks by simply reading the code, but I can't help but feel fatigued when having to try and find where a line of logic actually lives in Laravel. It is almost always a journey.

<comment><USER3> Why is the longest method size 13 lines? That to me is an indication that functions are actually not doing enough themselves, and rely heavily on delegation to other functions (e.g. far too many functions are simply a few lines consisting of calls to other functions, possibly far-removed from the context, with little or no logic "built-in" to the function itself). Usually when I see that sort of thing it's because the functions were designed for unit-testability instead of utility in a programming project.

<comment><USER2> That is what I see going on. Lots of abstraction and glue code and very little actual logic. There seems to be a tipping point where code goes from utilities informed by best practice to a collection of best practices informed by utility. I think Laravel can be an abstraction too far in some circumstances, but it is a mostly clean and enjoyable framework to work with. Certainly in the historic context of PHP frameworks.

</comment></comment></comment><comment><USER4> I don't think this is a good argument for or against any framework. It's just an interesting side note.

<comment><USER5> In the case of Laravel vs Symphony, I think it can. Laravel packs absolutely everything you need to build a web app while still being less than half the size of Symphony, which has a lot less out of the box and expects a litany of third party packages to become functional.

<comment><USER6> Laravel seems to pull in at least 9 pieces (probably more) of Symfony via composer: [https://github.com/laravel/framework/blob/5.3/composer.json](https://github.com/laravel/framework/blob/5.3/composer.json)

Are those pieces counted in these statistics or the "half the size" thought?

<comment><USER5> Good observation. Some of them appear to be debug packages (console, debug, var-dumper) and the others seem to be quite basic stuff (routing, http handling) that is good to reuse, and is also likely something you'll have in your Symfony projects.)

</comment></comment></comment></comment><comment><USER7> Bulleted lists are a terrible format for this. This is exactly what tables were made for. It's hard to do a comparison if it's not side-by-side.

</comment><comment><USER8> Doctrine is complex because it does a lot of magic. It's a good framework for anyone who is willing to learn it.

Slim + Doctrine is a pretty good stack. Pick your favorite templating format and away you go. I think anyone else in modern PHP is generally overkill.

</comment><comment><USER9> IMHO, most of the metrics picked for this comparison are useless.

Longest Method: Sometimes the functionality provided by a method is irreducible. And breaking off chunks of it into other one-time-use methods just to reduce method length can be detrimental to readability and understanding. This is a judgement call and it's not really "bad" unless it's >1000LoC.

"Complexity": Cyclomatic complexity is a near-worthless metric, especially in a language like PHP. It's easy to convert a series of 10 if statements into one while loop by leveraging call_user_func and deterministic method names. The resulting while statement is infinitely more complex than the if statements and reduces the benefits of using an IDE. So unless your CC algorithm treats this kind of programming as wildly complex, then it's not giving you a true complexity value (in fact, it's actually lying to you).

% of non-static methods: Unless this metric also includes singleton patterns, then it's useless. Foo::bar() is no different than Foo::getInstance()->bar() or (new Foo())->bar(). Also, in PHP-land, static methods are considered acceptable, as long as they have no side-effects or use static variables.

So I think the author is genuinely wasting his time capturing and optimizing for these metrics, because I don't think they provide any meaningful improvement to the product.

<comment><USER10> > "Complexity": Cyclomatic complexity is a near-worthless metric, especially > in a language like PHP. It's easy to convert a series of 10 if statements > into one while loop by leveraging call_user_func and deterministic method > names. The resulting while statement is infinitely more complex than the if > statements and reduces the benefits of using an IDE. So unless your CC > algorithm treats this kind of programming as wildly complex, then it's not > giving you a true complexity value (in fact, it's actually lying to you).

Just because you have a way of cheating it, doesn't make it worthless.

I agree that cyclomatic complexity is good, but it's not enough on it's own, that's why you have other metrics, rules and manual reviews.

</comment></comment><comment><USER11> I've never worked with these frameworks since I don't use PHP anymore, but I must say I'm quite impressed by the average LOC per function and percentage of static function. Especially Laravel surprised me... The longest method is only 13 LOC? Wow!

<comment><USER12> TBH not sure how they got that count.

[https://github.com/illuminate/queue/blob/master/Worker.php#L...](https://github.com/illuminate/queue/blob/master/Worker.php#L69) Here's 17 LOC in the first file I checked.

Not to say that's excessive or a bad thing, just seems the count isn't quite accurate.

If they aren't counting Illuminate components, seems somewhat unfaithful, since that's really the Laravel nitty-gritty.

It's also worth noting that 'static' doesn't feel like a good metric in PHP. There's certainly not a great correlation of static to pure when you're in global-DI-container contexts. So why do we want statics? Global static singletons, too, don't feel like a particularly good pattern.

If I'm writing PHP, I -do- try to make 'static' mean 'this function accesses no globals and has no side effects', because in my opinion it can make PHP a bit cleaner, but in most PHP frameworks that's not the pattern they're going for.

In that context, the more statics the better!

Side note: The queue-related bits of Illuminate were pretty difficult to decompose and work with outside of laravel context, though that's partly because PHP is a kind of unfortunate language for worker processes in general because of how the opcache works together with a kludged CLI.

<comment><USER13> If you don't count comments that method is 13 LOC

<comment><USER14> Without comments it is 17 LOC, as GP wrote.

Maybe you meant "without closing brackets"?

</comment></comment></comment></comment><comment><USER15> Not to sure how "fair" this comparison is. You see, both Symfony and Zend Framework are mostly components, doing kinda low-level-ish things. It probably means that overall their complexity is probably higher.

A more fair comparison would be to compare Lavavel against both the Symfony HttpKernel component (which is the framework part of Symfony) and the Zend MVC module (which is framework part of Zend Framework). But then again, it's probably not that straight forward.

I mean, when testing Laravel the Symfony HttpFoundation component is left out but when testing Symfony it's included, not really fair..

</comment><comment><USER16> Would be nice to put this data in a chart.</comment>


Notification Overload and User Control - moz-ur https://medium.com/firefox-ux/notification-overload-and-user-control-4b590271188e# <comment><AUTHOR> This article presents some very good points on how the user experiences workflow, and I have been taking significant note of this in my recent work. I shall preface this story with the detail that I have a hundred-odd notifications a day I have to read and, for the majority of them, act in some way whether it be a reply or logging into a system. Having started wearing an Android watch recently, I became more immersed in my notifications. However, due to a OEM implementation of notification permissions I ended up having to allow notifications on the home screen as well as the watch. Whilst this would normally only be a nuisance from a privacy standpoint, I found that it was causing additional disruption in my workflow. When I would look at my phone and see the first line of a message, which I was not used to seeing, I would then subconsciously either unlock the phone, or if it seemed relatively benign read it on my watch. However, after reading on my watch I found I ended up opening it on the phone anyway to either reply or read it in full. Since switching to AOSP and disabling lock screen details, while keeping the watch on, I started only looking at my watch and then answering on the phone when necessary. This subtle difference in going from phone-watch-phone to watch- phone was a significant shift in how I started processing my messages. When I was reading first on my phone, I was trying to determine with too much effort if the message was worth my time. When I got it on the watch first, it became easier to optimize my workflows. Over the course of hundreds of emails this became a significant interruption. Even the most subtle of notifications can be devastating to a proper flow when presented in larger numbers.</comment>


Is Google Rewiring Our Brains? Yes. fMRI studies of websearch in the Internet savvy. - <AUTHOR> http://searchengineland.com/dr-teena-moody-chatting-about-our-brains-on-google-16728

<comment><USER2> _Anything_ we do daily will "rewire our brains" ... unfortunately, nothing practical can be done with these results, and scientists still really don't know how to interpret them. So, I believe that fMRI studies such as this one really only serve as curios ...

<comment><AUTHOR> As a first guess, which the researchers themselves offer, the marker of internet savvy that they found was the frontal lobe processing, which is roughly that used in decision making, synthesis, and discrimination, is invoked. In other words, during internet search, savvy users constantly assessing the credibility of sources and validity of answers. This gives directly two principles which Google has used to dominate the market: authority, as encoded in page rank, and the swift checking of relevance and credibility, as helped by the short blurbs of relevant text, the back-links to similar pages or pages that link to it, and the quick viewing enabled by Google cache and 'view as html.' Anything further improving these processes would likely be a significant improvement in user experience.

<comment><USER2> >> In other words, during internet search, savvy users constantly assessing the credibility of sources and validity of answers.

You're extrapolating too much from what was found! I think you'd be surprised just how little frontal lobe activation actually reveals.

<comment><AUTHOR> It's a strength of the scientific method that one can offer a hypothesis without believing it. In any case, there are additional cognitive tests which one can use to examine the actual behavior from a different angle.

</comment></comment></comment></comment><comment><USER3> >> So, as you become more comfortable with the Internet, you actually use more of the brain. <<

Ok, this sounds like an interesting observation (although I wouldn't call that counter-intuitive). What else did they discover? Couldn't find much more there...

<comment><USER4> It's counter-intuitive because it's expected that when people become more proficient at an activity their brains will consume fewer resources.

</comment></comment><comment><USER5> > Is Google Rewiring Our Brains?

Sounds like a lawsuit.

</comment><comment><USER6> Every time I see the words 'fMRI', I want to scream. They're an extremely blunt tool which people are using like a scalpel.

<comment><AUTHOR> How is this study using fMRI as a scalpel? I think the resolution is more than good enough to isolate activity in decision areas of the brain, which is exactly what they're doing.

<comment><USER6> Yes, but it can't tell what you're actually thinking or doing. That's my problem with fMRIs.</comment></comment></comment>


Ask HN: How to go from a Lead to Senior/Architect - <AUTHOR>

Hello,
I am working as a Lead developer working in the java enterprise space.  My current role requires me to have workable knowledge of SQL, ORM (Hibernate), Spring, Java, HTML, CSS, LESS, JavaScript etc...  I am capable in these technologies, but not an expert in any one.  What I want for myself is to continue to grow and gain the skills that are typically ascribed to software Architects (I am not clear on the definition of software Architect).  How do I do that?  The unfortunate thing is that the team I work on is fairly small and I am the most technically capable person.  Thus, there is no one who I can learn from.  So, how do I gain Senior/Architect level skills on my own?  Read books? If so which ones?  Work on open source enterprise Java projects?
Thanks <comment><USER2> _I am not clear on the definition of software Architect_

Junior Developer: what method should we use?

Programmer: what design pattern should we use?

Software Engineer: what framework should we use?

Senior Software Engineer: what language should we use?

Software Architect: what platform should we use?

Management: how much will all this cost and when will it be done?</comment>


How to be more productive - <AUTHOR> http://www.aaronsw.com/weblog/productivity#

<comment><USER2> I can really relate to a lot of this. I'm a graduate student with ~10 distinct projects/ideas on my todo list and at any point in time I feel more or less inclined to work on each of them. And strangely, the most important ones are rarely on top, maybe because they are both assigned and daunting.

My work life comes down to a mental battle and trying to induce motivation in myself because I know that when I am in my motivated state working on something I can be significantly more efficient than when I'm not, perhaps even by an order of magnitude. I've sat down to work on a paper one day having decided it is fun after explaining it to a friend and did a weeks worth of work that evening until 2am.

I have to figure out what induces these mysterious states.

<comment><USER3> I think a lot of members of the community can relate to this. I know I can. I've been changing various things about my morning/evening routines, what I drink/eat, etc - and put some findings in place with fairly good results (over winter break, when many college students are unproductive).

On a good day, I find that I...

\- Wake up and play a game of chess (I'm not very good) \- Immediately after, make my bed/clean my room and hop in the shower \- Read \- "Start" my normal day.

I don't mean to go off on the "lifehack" tangent but I've found that this works for me - meaning I'm far more productive (willing to work, code, progress on projects) after this routine. I've also tried cutting out reddit completely and replacing that time with reading.

Just my $.02

</comment></comment><comment><USER4> Interested in this headline, I clicked the link, and found the article very insightful and resonated strongly with me. I was going to email the author and thank him for his writing, but only then did I realize the author. Aaron, wherever you are, thank you for what you did to make our world better off than you found it.</comment>


Analyze Github commits to know which convention is popular - <AUTHOR> http://sideeffect.kr/popularconvention/

<comment><USER2> Hmm...

First issue I see: "Constant name is all caps?" in Java.

static final != constant

When I'm forced to write in Java, I make Enum constants all caps, as well as any immutables. So String counts, but a static final reference to an ArrayList doesn't.

Second issue: minified JavaScript?

Third issue: the site is _slow_.

</comment><comment><AUTHOR> Phil Haack is trying to get the team to put C# support in, and has a few other comments about the tool: [http://haacked.com/archive/2013/09/17/popular-code- conventio...](http://haacked.com/archive/2013/09/17/popular-code-conventions- on-github.aspx)

</comment><comment><USER3> Why is it so slow? You're just grabbing about 5 items from a db and rendering a few svg paths. That should take a fraction of a second, but your site it taking over a minute to do it.

</comment><comment><USER4> Looking at the javascript one I wonder if the data is skewed by the many minimized code.

</comment><comment><USER5> Nice, I was kind of hoping to see php in there.</comment>


Why Internationalization is Hopelessly Broken in ASP.NET - <AUTHOR> http://www.expatsoftware.com/articles/2010/03/why-internationalization-is-hopelessly.html

<comment><USER2> It seems that the OP hasn't noticed that Resource Provider is an, ummm, _Provider_. With that pattern, MS supplies a default implementation, but you're free to build your own.

Our web site uses a custom Resource Provider, allowing us to store all the translations into a database. And the key to getting the resources back out isn't just the user's language, but also the Customer's identity, so that all the text in the site is completely customizable per customer.

The end result is something that's probably easier to maintain than the "Everybody Else" that the OP references.

Oh, and under "Referencing Translated Text (by using)", I don't get the complaint. You can name your resource anything you want, so it can be just the same as "The text itself" if you want. But in rich, complex systems it's frequently not safe to leave it as such. The text is also dependent on the context in which it's displayed, so two places on your site that have the same text in English may translate as different strings once you factor in the contextual stuff.

<comment><AUTHOR> Actually, storage is the least problematic part of the default i18n scheme in ASP.NET. It'd be just as easy to dump out .resx files from FairlyLocal instead of .po files.

The thing that needs fixing is how you mark text for translation, since that's the thing that developers won't do if it's painful. In the "Everyone Else" world, you get in the habit of writing _("") everywhere you'd normally write "", and suddenly all your text gets translated automatically.

It's pretty cool.</comment></comment>


Java Vs Ruby ? - <AUTHOR> http://tech.rufy.com/2006/06/ruby-vs-java-matter-of-taste_09.html

<comment><USER2> On behalf of the people who depend on Carlson's software, let's hope he writes code better than he writes informal essays.

Here's the somewhat clever first graf: (Everything after that is a mish-mash)

"Jesus reflected on his situation and felt irrepressible sadness. His tear- ducts filled to a point where they could hold no longer and had to be released."

versus

"Jesus wept."

I prefer the later.

<comment><AUTHOR> Well looks like you are not happy with Ruby. I am Java Programmer/Architect. Every where there is a Ruby buzz. So, I am just looking for good place to find some articles which compares Ruby and Java and one I pointed out here has some detail which is helpful.</comment></comment>


IMF Says Bailouts Iceland-Style Hold Lessons in Crisis Times - <AUTHOR> http://www.businessweek.com/news/2012-08-12/imf-says-bailouts-iceland-style-hold-lessons-for-crisis-nations

<comment><USER2> A lot of people are talking about this and maybe austerity isn't the way to go for Greece. But the main difference is that Iceland has the krona and Greece has the euro. So it's much easier for Iceland to control the currency. Greece has so little control of the euro. I think the better answer for Greece would be to leave the EU and bring back the drachmar.

I believe that they would benefit greatly with having their own currency. Their major industries are Shipping, Agriculture (export), and tourism. With a low value drachmar (relative to the EURO), this industries would do very well.

Personally, I'm a big proponent of holding your own currency. Iceland is tiny and has it's own currency. Disney world has a bigger economy than them (and their own currency). Why shouldn't greece? Argentina once tried to peg it's currency to the US and it was a disaster. I think Greece is doing the same except with Germany.</comment>


Cloud Security from First Principles - <AUTHOR> https://franklyspeaking.substack.com/p/frankly-speaking-52620-cloud-security <comment><USER2> I see a lot of the topics/questions here paralleled more and more on-prem.

A decade ago, we assumed the network running on the hardware we owned was safe and didn't bother with things like encryption and authentication if the client was inside our walls. This has changed dramatically, marching towards full zero trust. These days all communication is handled over mTLS and enforce policy on every endpoint. We do these things on bare metal, VMs, or containers. It is easier on the higher layers of abstraction though.

Personally, I think the most interesting part of cloud security is the greater ability to automate parts of the incident response process.

<comment><USER3> > These days all communication is handled over mTLS

I've been hearing of this for the last few years but I doubt any measurable number of companies are doing it in production. I think unless you're using a service mesh it's difficult to deploy, bootstrap, maintain, secure. Every POC I've seen of it using StrongSwan or vCenter hacks or tunneling one protocol in another are fragile at best.

<comment><USER4> Large, well known companies (startups especially) often don't encrypt nor authenticate internal prod traffic - I always wonder how they pass compliance checks.

Google with their BeyondCorp stuff really mislead a lot of startup shops and less security savvy organizations, because its easy to get wrong - and they ended up in these situations of having neither a perimeter nor zero trust. If they do "zero trust", zero trust's perimeter is the same size and pool of machines as the their old school network perimeter, meaning pop one machine then freely move around.

Check your laptop, if your machine has SSH, SMB or RDP enabled, then you are not doing zero trust and you can easily be compromised in a coffee shop and your organization's zero trust perimeter just fell over.

</comment></comment></comment><comment><USER5> > There isn't a corporate network you can trust (however, SaaS applications > already started to break that down), and you have little to no control over > that network.

> Identities are becoming more important, but how does the notion of identity > change and how do they work in a hybrid and multi-cloud world?

Yup. The main challenge is there is often no centralized system for identity authentication and authorization, or it is difficult to integrate such a system with the vendors a company relies on. The attack surface from an identity standpoint is much larger as a company will need to manage credential rotation and account provisioning/deprovisioning across so many more assets than in an on-prem model.</comment>


WizardRSS Coverts Any Partial RSS Feed to a Full Feed - <AUTHOR> http://www.wizardrss.com/

<comment><USER2> I'm guessing this uses Readability (<http://code.google.com/p/arc90labs- readability/>) engine to get the body text. If this authors submitted this, would they care to confirm or explain what they are using for this?

<comment><USER3> I'm not the site owner but I am the author of the code the site uses but fails to acknowledge: <http://www.keyvan.net/2010/03/wizardrss-violates-agpl/>

A more up-to-date version, including source code, available here: <http://fivefilters.org/content-only/>

<comment><AUTHOR> Thanks for pointing that out and it's good to get this to as many people as possible.

I'm not the site owner either but just found the site to be incredibly useful.

</comment></comment></comment><comment><USER4> Also: <http://pipes.yahoo.com/> :)</comment>


Show HN: Hire product and business managers using take-home assignments - <AUTHOR> http://www.guardant.co/employer <comment><AUTHOR> While working in technology in biz ops and strategy roles, I found that it is generally difficult to screen candidates for non-technical roles using just a resume. Degrees don't necessarily correlate with on-the-job skills.

Instead, I found actual take-home assignments to be a much better predictor of a candidate's on-the-job performance and hence a better method of screening.

This was the inspiration for building this tool. It's free to use. Welcome all feedback and suggestions.

<comment><USER2> Congrats on launching. A couple of thoughts:

\- what % of candidates would be willing to do a take-home assignment before speaking with a real human at the company?

\- check the landing page copy for typos (itmes —> items)

</comment></comment><comment><USER3> Please please please let it not become a thing! We have real jobs we need to take care of instead of homework!</comment>


Three's 3G data network is down UK wide - <AUTHOR> http://www.theregister.co.uk/2013/06/04/threes_data_network_trips_out/

<comment><USER4> It went down for me around 10pm BST last night. I assumed I had hit a data limit or something. This morning I checked their website, their twitter feeds, google news and found nothing.

So i phoned them at exactly 8am this morning. I was on hold for 47 minutes. Turns out its not just me.

Extraordinarily disgraceful communication with customers about this. They should be completely ashamed that they had a 12 hour outage they refused to publicly acknowledge. I can forgive the outage but the outrage of their poor communication is sad

<comment><AUTHOR> That's partly the reason I posted it here - I couldn't find any info start with and was beginning to think it was my phone until I found someone else on Three.

<comment><USER5> I thought the same. I have unlimited data so I knew I hadn't hit any limit but thought maybe something was up with my phone. Rebooted several times. Reset network settings. etc. and nothing. I went to call them this morning but when I checked with a few colleagues also on Three and they had no data either I figured it was an outage. Annoyingly they didn't put anything on their site until after I saw this post.

</comment></comment></comment><comment><USER6> I'm tired of the Three coverage and "uptime". Fine, now they're down, shit happens, I can deal with it.

What pisses me off is their permanent shitty signal - enter a supermarket - <USER3> signal, enter a data centre (at work, where I spend most of the day) - <USER3> signal, go in a building with thicker walls (e.g. Barbican) - no signal.

In all these places Virgin Mobile has no problems.

<comment><USER7> I find Three has superb coverage throughout London. Elsewhere it's not so good.

<comment><AUTHOR> Newcastle city centre is fine (around 19-20Mb most days) but I'm lucky to get 4Mb once I'm a couple of miles out.

</comment></comment></comment><comment><USER8> What's amusing (for me) is the first I heard about this was via their Twitter account - I was on the internet at the time using their data network, having just turned my phone on!

Three seems fairly reliable, with a decent signal strength in my area, compared to O2/giffgaff (which my friends like to use).

Their support on Twitter is fairly quick to respond, but I suppose that's more indicative of the way support over social media is nowadays.

</comment><comment><USER9> I'm always surprised that intelligent people are shocked that the consumer cellular network they pay £5 a month for doesn't have 100% uptime

<comment><USER10> I guess what shocks me is that a system this large has any Single Points of Failure. I would expect distributed-system failures (netsplits et al), but not whole-system downtime.

</comment></comment><comment><USER5> I noticed I had no data at around 23:30 last night and still no data at around 8:30 this morning. I was pretty surprised to see the outage last that long.

Things appear to be working again now (12:30) albeit slower than usual.</comment>


Requesting a Certificate Install on Android - <AUTHOR> https://support.google.com/chrome/thread/18323459?hl=en <comment><USER2> have a look here:

the requesting server that has been implicated,

[https://sitealyzer.net/en/s/match.deepintent.com/](https://sitealyzer.net/en/s/match.deepintent.com/)

apparently thier domain registration expired early this year.

This seems to be chrome choking on an expired certificate.

This is what they are into:

DeepIntent's MarketMatch™ Platform MarketMatch™ is the only healthcare technology platform with a built-in identity solution. It matches digital IDs with clinical, behavioral, and contextual data in real-time so marketers can qualify 1.6M+ verified healthcare professionals and 250M+ patients.

      and then theres this:

[https://github.com/deepintent-ccs/DeepIntent](https://github.com/deepintent- ccs/DeepIntent)

no endorsements apply here !

altogether it reads like some sort of mobile usage behaviour parsing platform with a dead certificate.</comment>


How to negotiate your starting salary with a compelling counter offer email - <AUTHOR> http://fearlesssalarynegotiation.com/salary-negotiation-email-sample/ <comment><AUTHOR> I wrote this guide to answer the most common questions I'm asked about how to counter offer. Most of my clients and readers are software developers, so I thought this could be useful for HN readers.

It answers questions like... "What if the offer is way below what I would need to make the jump?" "Should I counter even if the offer is already strong?" "How do I use another offer as leverage to negotiate the offer I really want?"

Even if you're not negotiating an offer right now, you might want to bookmark it for next time you're expecting a job offer.</comment>


Ask HN: How can I get a remote position? - <AUTHOR> I live in an area with not that great public transportation, and due to a visual disability I am unable to drive. I'm commuting six hours a day right now which includes seven miles of walking and I can't keep it up forever. My life would be so much easier if I could work from home. Is a remote position something I can hope for as my first development job? What should I have to show I would be capable of it and how can I best work towards it? Is freelancing my best bet for awhile to try to get a foothold?<p>It might not be super impressive but I've got a personal page up at lessthanseventy.com. What kind of projects can I work on that might be enough for someone to give me a shot? I just want to get as much direction and focus into my learning as I can since my free time is pretty limited at the moment and I would appreciate some advice. <comment><USER2> > _Is a remote position something I can hope for as my first development job?_

Yes, especially if you're willing to take a lower-than-market salary. The reason is that remote jobs in higher demand, and remote companies can hire from all over the world. I currently have remote Colombian devs who make $100k/yr (which they can live really well on), but who would cost me $120k-$140k in the US (outside of SF or NY). By looking at remote jobs, you're competing with a much larger pool of candidates who may have lower costs of living than you.

> _I 'm commuting six hours a day right now which includes seven miles of > walking_

In many US cities (not sure where you live) there is free or subsidized public transit for people with disabilities. Does your city have that?

Also, if you got a few hrs/wk of freelancing income from Upwork, perhaps you could use that money to pay for Uber/Lyft/whatever to take you to work? Or perhaps there's a carpool network near you?

<comment><AUTHOR> I'm absolutely willing to take a lower salary. I'm not expecting to start at the top by any means. I'd be thrilled to make $50,000 a year. I intend to start trying to find some freelance work it's just been hard fitting in around the rest of my life as I also have a seven year old stepson. I'm currently building an e-commerce website for a local store that I'm almost finished with. Any advice on how to go about finding stable remote employment? Technologies I should focus on? Ways to stand out from the crowd?

My biggest issue with the commute right now is that the bus doesn't go as far as my job so I ride to the last stop and walk the rest of the way. It's a temporary position doing taxes. I've got nine years of tax preparation experience and I am looking to get into development as soon as I can before my vision gets much worse. Working in a text editor and terminal is something I can do even if I completely lose it, and I want as much of a jump on it as I can get.

</comment></comment><comment><USER3> why don't you move closer to your current work ?

<comment><AUTHOR> I'm kinda stuck in a position of not being able to afford it right now. Plus we really like the school district our kid is in.</comment></comment>


Facebook To Launch New Privacy Controls; Confirms Chat Is Coming - <AUTHOR> http://www.techcrunch.com/2008/03/18/facebook-to-launch-new-privacy-controls-confirms-chat-is-coming/ <comment><USER2> Have fine-grained ACLs ever worked? I don't want to criticize Facebook for trying to increase privacy, but I have serious doubts that this will lead to any real improvement.</comment>


Git script to measure contributor LOCs - <AUTHOR> http://coderwall.com/p/4q3tgq?i=6&p=1&q=&t=git

<comment><USER2> and for mercurial

<http://mercurial.selenic.com/wiki/ChurnExtension>

user LOC

        $ hg churn -t users@email
        30454 ****************************************************

users' changesets

        $ hg churn -c
        user1     65 ****************************************************
        user2     41 *********************************
        user3     2 **

</comment><comment><USER3> For those of us not on BSD:

        git ls-files -z | xargs -0 -n1 -E'\n' git blame --date short -wCMcp | perl -pe 's/^.*?\((.*?) +\d{4}-\d{2}-\d{2} +\d+\).*/\1/' | sort | uniq -c | sort -rn

</comment><comment><USER4> Is LOC still a worthwhile metric to estimate developer productivity?

<comment><USER5> Still? It never was.

<comment><USER4> oh, the output seems more like a leader board to me.Typically this would make corporate heads roll with all sorts of conclusions

</comment></comment></comment><comment><USER6> git blame -p is going to be easier to parse

example:

        git blame --line-porcelain |awk 'BEGIN { ORS=" " } $1=="author" {for (i=2;i<=NF;++i) print $i; printf("\n")}'|sort|uniq -c|sort -n

better:

        git ls-files -z|xargs -0 -n1 git blame --line-porcelain|awk '$1=="author" {auth=$2; for(i=3;i<=NF;++i) auth=auth " "$i; counts[auth]+=1} END {for(a in counts) print counts[a],a}'

</comment><comment><USER7> Much more extensive and detailed information is provided by <https://github.com/hoxu/gitstats>

</comment><comment><USER8> Very cool -- thanks for sharing.</comment>


Will you provide feedback on my labor of love? - <AUTHOR>

I wonder how many people out there would like to build a game but just don't know how to get started creating one? Or maybe you are a game designer or game artist but just don't have the programming skills? I was apart of the former case and thats why I created GameBuilder Studio. I would like to get feedback on what you guys think of what I've built. http://vimeo.com/31183644 <comment><USER2> This seems more like a video of a very cumbersome interface for coding than a video of building a game without any coding. To build a simple vertically scrolling shmup with no complex behavior, the user has to understand a great many concepts and metaphors that would normally be completely unnecessary for such a game. He must type values into a text box to move a flame by trial and error when he could do it by dragging it into place much faster.

The user also gets to use member variables of the in-game entities to compute each other, which is powerful, but seems to be programming.

<comment><AUTHOR> thanks @anonymoushn I agree, the interface could be simplified. The terms are more technical terms so that the concepts aren't watered down and to allow the user to get familiar with the lingo so that if they decided to add to their skill set or work with other programs they would have learned it here first. The fact that you have to type in values is a pain and noted, I want to add a browser for you to just select options that go in those fields instead of you having to enter them.

What do you think about the amount of environment setup that is not needed the ant build scripts and knowledge of frameworks that is not needed to get something up and running and very soon be able to deploy to mobile with a click of a button. Is that not a big time saver?

<comment><USER2> It is a big time saver to not have to worry about the build, but I think that a few frameworks that just abstract a collection of libraries like love and pygame accomplish the same thing pretty well. This is my build script for a love game:

      #!/bin/sh
      rm panel-attack.love
      zip panel-attack.love *.lua *.txt README THANKS COPYING server.py build.sh assets/*.png assets/*/*.png

It seems like it wouldn't be much of a pain even if I had to do it manually. That said, I'm not the audience for your project. I have no idea what difficulties a non-programmer would have getting a basic Python or Lua environment set up with one of these frameworks.

I hadn't read about the extensibility aspect when I left my previous comment. After reading about that, it seems very useful to introduce users to the concepts their game will be based on so that they can begin programming at a comfortable pace. GameBuilder Studio can become really great as the interface improves. I hope it starts paying your rent so you can keep working on it.

<comment><AUTHOR> Yea Your probably not my target audience if your comfortable with your setup but think about those that don't know lua or how to run a shell script from the command line. Not even mentioning what they need to know to get their game compiled and running on both iOS, and Android. For example, my younger brother came to me asking how he could make a game and the only way for him to technically build a game would be to learn some programming language like lua, as3 or something else, but I thought it would be great if he could just download a tool, create something and put it on the app store or share with his friends. As he continues to develop his technical skills he can grow with the tool and eventually write scripts to add more complex behavior if he wanted to. So the ease of use to get started and flexibility to extend the tool was key for me. Being able to get visual feedback and put your idea together really quickly instead of having to learn a bunch of stuff before you can even get started is compelling to me.

</comment></comment></comment></comment><comment><USER3> If I had the time I'd probably try it out, it looks pretty slick.

Where it says play anywhere on your front page, I didn't know what that meant. Web on your server? Web on my server? Cross platform? I was reluctant to sign in and find out.

<comment><AUTHOR> @sixtofour It should probably be "deploy" everywhere</comment></comment>