1,269 karma · joined June 9, 2008
- Dont listen on HTTP, force HTTPS (Tune your ciphers! see https://www.ssllabs.com/ssltest/index.html)
- Ensure that any client libraries you supply for API interaction must verify the server certificate
- Only use the users password to obtain a long random key from the server either through an admin web interface where possible or by an API request that supplies the username and password and receives the key.
- Make authenticated requests of the API with the key
- Store any passwords as bcrypt hash in the DB for security
- Only store the key as SHA2-256 hash in your DB for performance
- Actually yes do use HTTP Basic as it's a convenient way to transmit the key (see how Stripe does it) making things easy for your users and perfectly secure as long as you prohibit plain HTTP.
- Stay the heck away from HMAC's and signing requests, you have SSL, properly tuned it's secure. HMAC is pointless here and really confuses the users.
If you're using basic auth and a long random server generated key as Stripe does instead of a user supplied pasword performance is a non issue as you'd SHA2 it in your DB not bcrypt.
We're going to put pricing on the public site too. We plan to stick around of course, the major advantage for us is that this project has almost no burn rate and is a critical component already of another one of our projects. So it's not going anywhere.
So fucking what, indeed.
Try the https://www.ssllabs.com/ssltest/index.html scan and you'll see what it thinks of your SSL setup. With BEAST vulnerability you get non compliance.
Regardless of how it stands compared to standalone GPS units and Android it's a big improvement over the previous maps app.
As to why they used an f4? Probably a heck of a lot cheaper than a 737 at the time.
Sometimes the government isn't out to screw you you know...
On the second point: http://en.wikipedia.org/wiki/Containment_building
"The containment building itself is typically an airtight steel structure enclosing the reactor normally sealed off from the outside atmosphere. The steel is either free-standing or attached to the concrete missile shield. In the United States, the design and thickness of the containment and the missile shield are governed by federal regulations (10 CFR 50.55a), and must be strong enough to withstand the impact of a fully loaded passenger airliner without rupture.[3][not in citation given]"
It's also not my nuclear reactor. My power comes from hydroelectric thank you very much.
http://www.youtube.com/watch?v=--_RGM4Abv8
The US government has done the test, granted an F4 isn't a passenger jet but it probably has similar kinetic energy to a smaller passenger plane as it was going rather fast.
Yeah, it can be ugly, but once you know what's going on it all reads pretty quickly.
- No syntax/error checking as you type
- No static analyzer
- No code completion (perhaps you could find a 3rd party module to do this eventually)
- No refactoring support (very important in larger projects)
- Probably longer compilations (in Xcode/ObjC the compiler will know which files are modified by looking at the included headers and only recompile what is needed, in Ruby I would expect it's gotta do them all but could be wrong).
It has a much steeper learning curve than Ruby for sure, but once you're proficient it's no harder to use. Indeed there's benefits to both languages.
- Xcode is Unstable
It's gone through periods of instability. But in the current version you may encounter the odd crash (perhaps once a week in full time use for me). Really not an issue given it's a cutting edge tool that's rapidly evolving.
- Xcode Hides Important Information
It has a learning curve. Some things take time to learn but once you do you're more productive.
- Objective-C Is Tedious
Matter of opinion. One person's tedium is another being explicit and reaping the benefits during refactoring, code completion and compilation speed.
- RubyMotion is Easy to Use
For sure easier than Objective-C. But so what? Can it build complex apps more quickly than Objective-C when someone becomes proficient? Probably not.
- RubyMotion is Ruby
That's great. Ruby is a great, easy to use and powerful language. I love Ruby. However given all the other things you sacrifice to get Ruby it's really not worth it.
- RubyMotion Makes Debugging Easy
Really? It sure doesn't look like it does. Xcode and LLVM save me a hell of a lot of time writing my apps because I don't need to actually run them and see the exceptions. And what about the static analyzer?
- RubyMotion Isn’t Perfect
Indeed.
- Better Than Objective-C
For trivial apps yes. For apps you'll be paid to write, in my opinion probably not.
self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
Was about 45 key presses in Xcode. And this is a fairly short method, take something like animating a view with a block and you're looking at way more typing to do it in Ruby Motion.
Sure the REPL stuff is neat, but I would position my UI elements correctly in interface builder to begin with. I'm also not keen on typing out the code to assign properties that were done with the GUI before. There doesn't seem to be any support for Storyboards which are awesome as segue transitions save a ton of code that you'd normally have to type. Storyboards provide a visual layout and ease of inserting steps in a flow or changing connections.
Once you have proficiency in Objective-C your coding method in XCode really consists of typing 3-4 characters, hitting tab, a couple more characters, a variable name and so forth. Code completion rocks and works quite well in particular with Objective-C. I would expect all of the examples given there would be many fewer keystrokes in Objective-C than Ruby.
I find the side by side code samples somewhat humorous. I expect to see something like coffeescript to javascript which is visually obvious which one is more concise. Instead I see roughly the same code expressed differently. Sure Objective-C turns people off who don't know it, but once you do it's really not a big deal.
Xcode also gives you great tools for refactoring code that due to the nature of Ruby simply are not possible. This is pretty important for large projects.
The tough part of making non-trivial IOS apps is learning the API and the best practices in using it. That can take months or even years.