johnnygood
AT&T and Verizon are both using "700MHz" spectrum. However, Verizon is using the upper-700MHz band and AT&T is using the lower 700MHz band. It is possible (clearly) to support multiple frequency bands, but it isn't free. Plus, AT&T is shipping 700/AWS devices. While Verizon has AWS spectrum, their current crop of devices are 700-only. So, it would mean AT&T supporting three bands 700L, 700U, and AWS.
Beyond that, carriers generally don't do roaming where they have service already. AT&T already has data service everywhere Verizon has LTE. It's slower data service, but it's still service. Voice works the same way. A company might have very low signal in an area, but as long as the phone can get any signal, it will prefer its home carrier. If they had the same policy with LTE, it wouldn't help customers. Heck, Sprint users are allowed to roam onto Verizon for data, but are restricted to 1xRTT (2G) when roaming on Verizon (save for legacy Alltel areas). It might be that Verizon's data roaming rates are so high for newer technologies that it would be unreasonable to offer roaming like that.
Moreover, 40Mbps isn't unrealistic on an empty network for an absolute maximum. Average speeds of 22Mbps seem realistic given Verizon's 16Mbps performance and the fact that Verizon probably has a couple million customers on its LTE network. Likewise, Verizon's absolute maximum is 50% more than their average speed. On an empty network, I'd expect more divergence in speed from average to maximum making AT&T's ~85% difference believable. Likewise, if you visit wireless forums, you'll find plenty of Verizon users posting their maximum rates over LTE and seeing similar speeds.
And these tests were being done using Speedtest.net run by Ookla and endorsed by the FCC. While I don't know the specifics of how it works, it is the standard in testing broadband speed. Without evidence that it can be tampered with, I'd listen to the FCC.
The real question is how AT&T and Verizon's networks will hold up as more customers come on board. Last quarter, Verizon sold only 1.2M LTE devices. AT&T has just started selling LTE devices. We might see the speeds of both networks lowered as the number of customers on the networks increases.
Many people dislike AT&T. PC Magazine is testing an unloaded AT&T LTE network and a mostly unloaded Verizon LTE network. These numbers seem very reasonable given those conditions. It doesn't mean that AT&T will remain at these speeds or remain "better" than Verizon (if your purpose is to defend a cherished carrier). It's simply an initial test of an unloaded network that shows promise for the network. Whether that promise will be realized or not we'll have to wait and see.
How many of us could justify spending a lot of time on running our own object store rather than using S3? It makes sense that Rackspace is a lot more interested in it. I'd say that you'd need to be in the several terrabyte range before it makes sense to think about it. Clearly sites like Facebook, Flickr, and imgur want to run their own storage - they store a lot. But how many web firms do? I'm not saying it isn't an awesome project and I was excited when it came out. However, I'd have to be working on a site that stored a lot to justify building my own cloud storage cluster.
For what it's worth, it would be awesome for everyone if this engineer went on to create a Cloud Files and Cloud Storage competitor using Open Stack and worked with Rackspace without any grudge. Sometimes that's how openness happens. However, there tend to be fewer infrastructure vendors than web apps and so an infrastructure project like this can't be expected to garner the same attention as something like Apache or nginx which lots of people will be running rather than mostly a few infrastructure vendors. For most web operations, it doesn't make sense to pay a lot of money to build this infrastructure when you can get it for cheaper from Amazon, Rackspace, and others.
It might not be that Rackspace is being closed. It might just be that there are few operations that want to help develop these tools and most of them already have their own tools. Flickr and Facebook aren't going to drop their storage engine for OpenStack. Amazon isn't going to replace S3's software with OpenStack. SoftLayer does have their own cloud storage solution, but it isn't as widely used so there's a possibility there, if not a large one.
It's great that it's open source and if Rackspace keeps up the development and it's of high-quality it might start getting used by the next Facebook and Flickr style companies that need that type of storage. But it will happen slowly compared to the adoption of nginx, Django, MongoDB, etc.
Actually, T-Mobile uses the AWS spectrum (in addition to PCS/1900MHz spectrum) which has the uplink around 1700MHz and the downlink around 2100MHz. AT&T and Verizon both have AWS holdings as well as Cricket, MetroPCS, and others. It's standard spectrum and MetroPCS and Cricket are actively using it for service today. AT&T and Verizon seem to be holding it to use for LTE in the future when increased capacity becomes necessary.
If you'd like to learn more about AWS spectrum and see some nice maps of who bought what, Phone Scoop has a great article: http://www.phonescoop.com/articles/article.php?a=99&p=14...
Even if Safari blocked sending cookies to other domains, it would still be possible for both commenting and the like buttons to work. On a low-tech level, rather than working by Ajax (which is how I assume they work - I haven't actually used them), they would work as a standard link or form to Facebook's site. Once not in the iframe and on Facebook's site, it would realize that you were logged in and rather than asking you for your email and password would record the like or comment. In fact, when you try to press a like button not logged in, a small window pops up asking for your email/pass so that it can log you in and do just that. It's easy to imagine that the window would pop up, offer a little "thank you for your comment" confirmation with a close button.
Facebook could also decide that it wanted to use Flash cookies which would work if Safari blocked sending cookies to other domains. Safari isn't in control of whether Flash is loaded in an iframe and a Flash cookie is requested from another domain. This is part of the reason why it's more significant on the iOS platform. Advertisers do use Flash a lot and that usage can be used to set a Flash cookie that the browser doesn't control and Flash doesn't have a setting to disallow Flash cookies from sites you don't visit.
If Yahoo is to make a comeback, they need the types that have been in charge of Flickr (or so the community's reasoning goes). Flickr is the one thing we like that Yahoo's doing (well, maybe add Delicious in there too). And yet Yahoo is letting those properties languish and the talent that works on those properties leave. Sure, Google loses talent, but generally speaking I don't find certain Google properties to have an interface that is so markedly terrible compared to other Google properties. Our community looks at Google's ventures and while they might not understand social, we see that there's a decent consistency of engineering. However, we do look at Yahoo's different properties and many feel like they came from a different company - partly because Yahoo bought their way into Delicious, Flickr, and Upcoming (yea, I added another that I've almost never used).
Imagine that Google had bought YouTube and YouTube's interface and engineering was just so markedly better (to you) than the rest of Google's properties. Then the employees who created this, in your view, superior product started leaving constantly. You'd think: c'mon Google, you bought yourself into the good stuff and we want to those engineers bring that good stuff to the rest of your line, not leave with their products languishing!
People move around, but I think many of us feel that Yahoo has markedly varying quality depending on the division of the company. It might not have any actual significance and engineers might not be leaving those divisions more often than other divisions, but it does have an emotional significance for our community. Many thought that Flickr heralded a new Yahoo. It makes it feel like Yahoo doesn't get where it's gone wrong (in our ultra-hip, we know what's best not some CEO the investors have hired, why isn't the world listening to me as I type away at my keyboard on the internets way).
/Apologies for speaking for everyone; it's more just a theory.
BankSimple seems to be a no-branch bank like ING-Direct. They're presenting themselves as being better. How are they different? Well, they're pushing the idea of no-fees, better customer service, and better mobile banking. In order to achieve that, they'll have to be more efficient or accept a lower profit margin. Banks have healthy margins so there is some room there, but there are other industries with higher margins.
The second piece is that there are already not-for-profit banks. They're called Credit Unions. They exist to give their customers (who are their owners) the best deal they can. In order to be better than credit unions, they'll have to be significantly more efficient rather than simply relying on lower margins.
Part of what makes me skeptical is that they aren't creating a bank. They're partnering with currently chartered banks. This is probably because it's very difficult to create a bank and there's a lot of regulation to deal with. However, this somewhat limits what they can do to give me a better deal than a bank (since they're just reselling the product of another bank). Now, banks vary in how good of a deal they give you so part of their product might simply be getting you a good account under their brand. But part of this means that BankSimple won't be doing what banks normally do with deposits. Banks normally lend it out or invest it. BankSimple will be parking it in another account. So, if they aren't charging fees, how will they make their money? Maybe they've found an account that will give them 1% interest and they'll pass on 0.5% interest to me. However, why shouldn't I just bypass them? If they're doing things like refunding ATM fees, covering overdraft fees, etc. will the interest difference cover that?
I'm not saying that it can't be done. They stress no-fees and earning more interest. If they aren't lending the money out themselves, that will be hard to do - especially considering that they're claiming the best customer service, best software, etc. Where are they making their money? Not off fees and they aren't lending it out, but rather relying on other banks.
I'd really love to see their business plan since I assume they've addressed these things. Maybe wholesale banking exists and offers them a lot more. Maybe credit unions are woefully inefficient. I'm excited for their launch, but I'm not unhappy with my credit union.
class Cool
[:ice, :soda, :snow].each do |item|
define_method item do
#some code
end
end
end
There isn't a real reason why that couldn't be pre-processed. I don't know a ton of Java, but the idea of compile-time code generation is appealing. Does anyone know more about this?One of the ideas behind government is that certain situations are prisoner's dilemmas and that a central authority can make sure that the situation comes out equally for all. Rather than having people volunteer taxes, we write laws forcing people to pay them so that some person doesn't get to skip taxes yet get the benefit of the taxes being volunteered by others. Likewise, Israel is compelling their citizens to do military service. Heck, if you're an American male, you were compelled to register for the draft from 18-26 years of age and notify them if you moved residences - under the premise that such registration would make a future draft more equitable.
I'm somewhat just playing devil's advocate here since I tend to think that putting one's life in jeopardy is different from being compelled toward other ends. Would you object as strongly if you were compelled to serve the military, but could choose a non-life-endangering position? Say, IT support? What if the United States compelled people to do Americorps for a year or two after graduation? Does that qualify as slavery?
I guess I'm curious whether your objection is a more libertarian "any time the government compels its citizens, it's a form of slavery" or a life-ethic "when the government forces its citizens against their will to put their life in jeopardy, it's wrong."
Because Zencoder is running a service, they can have lots of boxes going at the same time. You might want to encode 50 things at once which would have to be queued up if you were doing it on one box, but can run simultaneously on Zencoder using their many boxes.
Likewise, Zencoder can fire up high CPU boxes that will get your videos encoded faster. The faster they turn around videos, the more capacity they have. If you're low (or bursty) volume, you can't justify that cost and you go with a small instance that's slow and queue things up if there are multiple jobs at once.
Plus, Zencoder is probably knows ffmpeg and the like better than you do. It's their whole company. Unless the focus of your work is video encoding, the likelihood that you will have any reason to be as knowledgeable is low.
I'm not saying that Zencoder is right for everything. They have certain economies of scale since they're encoding video for many people that kick in which mean that you can have 20 boxes encoding things for you at the same time for a few hours without having to pay for them all the time or going through the hassle of creating 20 encoding boxes and then getting rid of them so that you can use that capacity for an hour or so. That said, if you have a slow, steady flow that isn't too concerned with time or you're popular enough that you've hit those economies of scale yourself, Zencoder might not be right for you.
Oh, plus you might not want to deal with ffmpeg and such. Some people would rather it be abstracted away a bit.
There really isn't "scalability" in client-side JavaScript. Scalability is usually thought of as the ability to serve many users at once (as opposed to speed which is how fast you serve one person). So, sure Ruby is slower than Python, but it doesn't matter too much since you can have 4 web servers and a load balancer rather than 2 web servers and a load balancer and you're fine.
However, client-side JavaScript isn't serving multiple users at once. It's trying to serve one user as fast as possible.
Maybe someone has a better explanation? It's early and I haven't had my coffee.
EDIT: It seems like YUI might allow you to pull independent pieces by calling YUI.use(some-cool-piece-of-functionality). That could reduce download times, but it could also increase HTTP requests and the associated overhead. That's pretty cool. If 90% of your users aren't going to be using a piece of functionality, it doesn't load that code, but can load it dynamically if needed. While cool, I don't think I'd call this more scalable - this is about speed. And I don't know if it would be faster in a meaningful way since JS can be nicely cached. I shouldn't have said that - in the absence of evidence from testing, I shouldn't make assumptions. Maybe someone else can shed some light on how well this works in the real world.
For example, grapes are 52% fructose, 46% glucose, and 1% sucrose. Pears are 63% fructose, 29% glucose, and 8% sucrose. High fructose corn syrup used in sodas is usually 55% fructose and 42% glucose.
The "natural" sugar you're thinking of is sucrose. Sucrose is not the dominant sugar found in fruit. Fructose and glucose are the predominant sugars found in fruits and in high fructose corn syrup.
Coca-Cola isn't good for you. It's high in sugar, has minimal nutritional value, and its acids are terrible for your teeth. However, the amount of sugar in it is not out of the ordinary (when compared to 100% juice products). In fact, grape juice has nearly 50% more sugar.
I'm not criticizing Google or anyone, but it just seems weird that something that is so high profile and open-source barely has rumor-level information available about its development.
"Microsoft what have you been smoking?"; "You are so fuckin wrong"; "OMG so much stupidity."; "Windows Phone 7 is a really good vapor-ware. And ridiculous patents + broken patent system are the key to success" (when Windows Phone 7 had already shipped to OEMs); "I guess if they get killed, they had it coming."; "(YAWN) You could have written that code in most languages with most databases years ago!"
We're looking for a level of respect that isn't shown by those phrases. The Hacker News Guidelines (http://ycombinator.com/newsguidelines.html) are a good place to start:
* Be civil. Don't say things you wouldn't say in a face to face conversation.
It's common to bash people on the internet, but we tend not to like that here. We do disagree here. Recently there was a large thread on Ubercab and whether their service is so ethical and responsible. Lots of people with lots of differing viewpoints were upvoted. They raised issues (rather than just being blindly for or against someone). It was enlightening to see the nuance and insight that lots of different people brought to the discussion and how complex the issue was. You can disagree without attacking a person.
* When disagreeing, please reply to the argument instead of calling names. E.g. "That is an idiotic thing to say; 1 + 1 is 2, not 3" can be shortened to "1 + 1 is 2, not 3."
Comments that include things like "OMG so much stupidity" just make people feel attacked and defensive. The statement doesn't add to the discussion and just makes things more combative. It's as if you're trying to discourage people from disagreeing with you because you'll call them stupid if they do. "I think this is important to consider"; "OMG, you're just so stupid". It isn't helpful. Plus, there are plenty of places on the internet if your interest is flamewars.
* Resist complaining about being downmodded. It never does any good, and it makes boring reading.
Make sure you test your fonts on Windows both with and without Cleartype. A few of the trendy new sites are using this font now and it's near unreadable on Windows without Cleartype. The site looks awesome and I'm looking forward to using it (excellent timing in my life). However, the font issue is going to be a big pain for Windows users.
Even with Cleartype (http://i.imgur.com/EQNr5.png), the fonts look bad. Anything that is rounded on the top (2, 0, 9, S, etc.) has an odd bump in the center. While it's more readable (due to the darker rendering that Cleartype is giving it), it's quite jagged.
I'm mostly posting this since I'm guessing someone from CarWoo will be reading this thread. I've always wanted a service like CarWoo and I think you've got something really great.
--
I've found another thing: when you're selecting a style, you're only allowed one. Rather than making it radio buttons, you've used checkboxes and popped up a JS alert when I select two. It means I have to de-select the original before changing my mind. You could keep the checkbox look while making it behave as radio buttons would.
EDIT: During the process (I haven't paid yet), it didn't ask me what options I wanted with the car. That means that if I get a quote for the car, it isn't the quote I want.
The other problem I see is that I can't compare the deal I'd get on a Camry and an Accord. Often times, people make decisions between two models based on price rather than deciding between the two models and then looking for the best price on that model. I was told by the chat help on your site that I'd have to purchase two plans if I wanted to get a quote on two different cars. During my car buying experience, I'm likely to narrow it down to 2 or 3 cars in the same class and then want to see the price difference. If a dealership is giving me $1,000 less on a Camry (which might have started out with the same MSRP), that might sway me away from the Accord.
Canonical is getting smart people to engage with their product for several minutes (if not the whole hour) for a mere 2 cents. That's one of the best campaigns I've seen and far more effective and cheaper than AdWords for what they're doing.
It's about time that my choice in phone didn't dictate the carrier I'm tied to. Samsung gives me that choice in a way that Motorola makes me tied to Verizon, Apple makes me tied to AT&T and HTC ties me to a various carrier depending on which model of their's I want.
I was really hoping he Galaxy S line would succeed even if just to prove that you can have a non-exclusive phone that's a big seller.
GOOG-411 wasn't ad supported so they didn't make any money off of it. It seemed like it was being run in order to collect voice data to create better speech recognition algorithms. Now that many have smartphones, they're getting that data in a cheaper way and, ultimately, in a way that they can monetize easier. Rather than paying 800-number charges for everyone to call into (and pay while the call was connected), people are using their iPhone and Android devices to give Google voice data.
I think Google Voice is the more likely service to get canned. Phone charges can become burdensome while bandwidth is essentially free when you're Google's size (since I'm guessing they're working off peering agreements more than buying bandwidth). Even if they were buying bandwidth, bandwidth is something with lots of competitors and very low regulatory charges. Phone connections are different.
class Article < ActiveRecord::Base
end
There's no need to do things like 1) tell it which database table to use; 2) tell it the setters and getters you want. Those can be inferred. Well, it's called Article so it'll use the articles table and we're going to want a setter and getter for each column.Now, that can be overridden. You can call set_table_name to explicitly tell it to use a table, you can add additional methods, you can override the default setters and getters, etc. That's the idea behind Rails. You need a programming language to describe the decisions you're making that affect how your application works, but for a lot of things you're doing the same thing over and over and there's no reason to keep doing the same thing over and over.
Let's say that you wanted to (by default) order the articles by their creation date:
class Article < ActiveRecord::Base
default_scope :order => "created_at DESC"
end
You've now defined some business logic so that when you call Article.all, you get them in that order. On the models, you can define any amount of logic you want by creating instance or class methods. In fact, all of those fancy keywords are just mix-ins - method calls that add methods to your class.This is why it looks like Rails is lacking a bit of business. When you call belongs_to :apple, the belongs_to method gets executed as the class is interpreted and that belongs_to method is something like:
def belongs_to(associated)
define_method associated do
associated.to_s.camelize.constantize.find(send("#{associated}_id"))
end
define_method "#{associated}=" do |val|
send("#{associated}_id=", val.id)
end
end
Now, it's more complicated than that (since belongs_to adds some additional features), but that's the basic premise. You have this foreign key association and, most often, it's a simple association where you want to define a setter and a getter for that association. So, the belongs_to method takes the name and pops out two methods based on that name. The first is the getter and it makes the name you input into a camel-case and gets the constant with that name. It calls the find method on that constant and inputs the foreign key value to the find method. Likewise, the setter (setters in Ruby are methods that end with the equals sign) and sets the "name underscore id" attribute on the model to the id of the associated object.But you could just as easily define the methods yourself in the Article class rather than using the helper mix-in. Likewise, if you have business logic that doesn't fit in with what's already made, you can define any methods you want on your model classes.
The same goes for controllers. Controllers can be pretty small. If you're just trying to get the latest 10 articles, there isn't a lot you have to do - you need to fetch them from the database and store them in a variable. This is another one of those areas where Rails doesn't ask you for things it can assume. Instance variables (which start with the "@" symbol) get passed to the template, local variables (which have no prefix) don't go to the template. The template that gets rendered is the one named "controller/action". Of course, you can override that and call render :template => "xyz/abc" if you like.
I'm sorry if this seems a little all over the place, but I'm not sure what kind of business logic you're looking to implement. If you give me an example, I can provide some insight. However, from what you've said, it looks like you've just seen the basics of what models can do - and that's because a lot of the intro code is "let's build a blog" where there isn't a ton of business logic. But you can make any methods (class or instance) you like to do things to your data. Rails creates the basic cases for you - because the basic cases are well-understood. However, you can make them more complex:
class Article < ActiveRecord::Base
def title
if Time.now.day == 1 and Time.now.month == 4
return title.reverse
else
return title
end
end
endIn that light, I think that programmers should know the basics of computer science: what references are; how a linked list works; a little about tree data structures; stacks, queues; basic sorting and searching stuff; etc. I'm not saying that you need to be able to talk about everything off the top of your head. I just think a familiarity with the theoretical concepts is good.
On the other end, I see a lot of people who know that PHP interprets strings using single quotes faster than double quotes, but have no idea why NoSQL might scale better (and might actively think it's because of the SQL language).
I want someone to say "a lot of the NoSQL technologies work by having you pre-compute data so that your data structures have the information you want to display together stored together in a structure that can be read more quickly like a hash." It isn't magic.
"There is a natural, physical limit where at the end programming is just choices. How should the program work? What should happen when you click this button? Those choices are ultimately the key to programming - and you can't get out of that. Which is also why it's a bit of a pipe dream to think that 'oh, there's going to be these magical new environments where somebody that knows nothing about programming will be able to just drag and drop a few things into a box and then voila! you'll have the most amazing program in the world. No. It's really not going to happen like that because in order to have the most amazing program in the world, you have to care about a thousand decisions and recording those thousand decisions takes a programming language. So, there is a lower limit to how simple it can get."
The reason why a technical co-founder is so necessary is because every application is going to have thousands of little decisions that you are describing in your code.
A technical co-founder doesn't need to know everything about computer science. They need to be able to describe those decisions. Often times, if you're hiring a programmer to implement your idea, you don't actually describe things accurately. You come up with things to say like, "show the article to people who are interested in it." What does that statement mean? Do you email the article to interested people? Does it show up on the homepage for those people? A special page? How do you identify "interested people"? It keeps going on. Even "simple" things are often complex - especially if you're implementing a niche application.
You can create mockups, you can list "requirements", you can have the programmer ping you when they have questions, but ultimately programmers aren't translators. Programmers, in order to be successful, must be able to make those decisions or you'll die a death of a thousand cuts as they ping you over every little decision. The problem is that people have an idea in their head that they think just needs to get "translated" into computer-speak. However, in reality, they've yet to describe most of what's in their head - if the minute details are there at all.
Even if none of that co-founder's code make it past the first few months, they're able to describe the choices in an unambiguous way that mockups, emails, requirement specs, etc. simply don't.
Basically, not having a technical founder means that you don't have any founder that can describe the application in the detail that's required to create something really great. It doesn't mean it's impossible and that's not to say that input from non-technical co-founders isn't important or that they can't have as meaningful an impact as technical co-founders. It means that if you're two non-technical co-founders looking to start something good, you probably need to bring on a third co-founder who is technical because you need someone you feel comfortable with making those little decisions and working with as a peer rather than in a hierarchical way. Because they're going to have to work on all those little decisions with you that mockups and specs just never address.
Code is a way of describing all those little ways in which your application works, not translating an idea into computer-speak.
The main reason (in my opinion) that Django has an authentication component is because it has an admin section. That requires authentication. The admin section is something to be jealous of because it's a lot harder to duplicate. Creating a user model isn't that hard. While there have been Rails projects trying to implement an admin system as nice as Django's, they aren't as nice and clean as I'd like. And that's a lot more complex than a simple User model.
And yes, I'm aware that one can do lots of things to extend the Django User model. Examples: while the User model doesn't require an email, you could have the form you build require an email; in Django 1.2, you can have "@" and other email characters in usernames and then just reference the username attribute rather than the email attribute when you want the email; in your controller/view, you could first search for the user by email and, if found, grab the username from that object to pass to the authenticate method. It's more that a User model isn't such an incredibly complex piece of code and I find that different sites often want slightly different things that make it just easier to make one's own.
TL;DR: Be jealous of the admin section, not the authentication system.
It's expensive and time consuming to comply with so much regulation. If BankSimple does well, I'm sure they'd be happy to expand internationally, but at this point it's questionable whether the public will gravitate to BankSimple. If they tried to launch in multiple countries from day 1, they'd be spreading resources very thin dealing with all the different laws. This way, they can launch, be successful, and expand.
In some ways it's like physical businesses. You wouldn't expect a new fast-food chain to launch with 50,000 stores worldwide, would you? Unlike the web which is decently universal, they need to wait a little to catch on and grow.
1. The Galaxy S is going to be a big device on many carriers. 2. Reviews said the battery life is the best around for android. 3. I wanted background apps.
The display isnt quite as sharp as the iPhone for text but it is a joy to use. Im not so thrilled with the apps I cant uninstall but Ill probably root the device to take care of that. Oh and the touch mechanism is really good. Ive never written something as long as this post before and Ive only had 4 mistaps.
I cant compare it to other experiences but Im very happy with it.