1,186 karma · joined October 7, 2011
Returning void makes it easier to spot errors. If you accidentally use "capitalizeInPlace" instead of "capitalizedString" your code will compile without issues. If the mutating method returned void, it would result in a compile error.
a) The author might disagree with my asessment. A pull request would imply that I consider it an error, but I think it's more a question of style.
b) I already waste too much time on HN. Forking a project, trying to understand all of it, making changes, writing a pull request, etc. would probably take me all day but I need to clean the kitchen and take care of the kids and work on some overdue client work that I have been postponing for far too long.
(Also, the comments in the header file and the README file contain the name "capitalizedStringInPlace" instead of "capitalizeInPlace")
Another inconsistency is that most mutating methods in ObjectiveC don't return self, but either void or a boolean or an integer that reports if the method succeeded. But I assume that this inconsistency is on purpose because you want to make the methods chainable.
Take for example the capitalize methods. In ruby, you have "capitalize" and "capitalize!" to distinguish the immutable and mutable versions. To make this distinction in ObjC, you generally use nouns vs. verbs. So for the equivalent of ruby's "capitalize", you'd use "capitalizedString" (which is in fact provided by NSString). But the mutable version, the equivalent of ruby's "capitalize" should simply be "capitalize", not "capitalizedStringInPlace".
I wouldn't install a company CA certificate on my Mac. It would theoretically allow the company to intercept all my SSL connections. I'd rather validate SSL certs for all the intranet servers manually.
DRM doesn't work because it only takes 1 internet dork to provide a DRM free copy for everyone else.
This is also exciting because it shows that you can make money directly with an open source product, instead of making money with services surrounding a product.
A better sensor will only get you so far; since light is quantized (a ray consists of individual photons), there are physical limits to the intensity resolution possible at low light.
Once information is lost, there is no way to recover it. And that's why you just can't make up for a crappy lens with sofware.
To be fair, SIGGRAPH has a strong focus on applied work, and the contributions are often extremely amazing, despite the fact that the underlying method has been developed by someone else and published before.
Well, aside from the problem that information can't be created from thin air. You can fix certain lens errors, but you cannot extract details that aren't there on the original.
The most obvious consequence is that you can't use this technique to extract more megapixels than the sensor has.
Less obvious limitations might be the sensibility to noise; all these samples have been taken in bright light, but if your crappy lens produces a very noisy image in low light, this method won't fix it.
Furthermore, the numerical aperture (NA) of the lens defines the highest possible resolution. Even with this method you can't get a higher resolution than wavelength/NA.
Unfortunately, there's no way around the principle "Garbage in, garbage out." Lensmakers rejoice, your business wasn't made obsolete after all!
Nevertheless, I can see exciting applications for this method; one thing that comes to mind are improving the pictures taken by photographic scanners used for digitizing old books.
I think the best way to guard against competitors is to improve your product. The first one and a half years I was always far ahead of my competition. Since about a year I haven't had time for any significant new features, so my competitors have catched up. Some competing apps now have more features, some are a lot cheaper... Unfortunately the next logical steps for improving my app are so much work that I don't know if they would pay off.
Also, it makes me angry how you have all those beautifully designed landing pages everywhere, and as soon as you have ordered, you have to deal with ugly and confusing websites that barely work at all.
The only reason why I want to support https is so that customers can confirm who they are downloading from. Ideally, I'd like an EV certificate, but I can't afford that. So I chose a business validation cert. A domain only certificate wouldn't really confirm anything.
(Also, some of my troubles would have been the same with a domain-only cert. The emails with missing links were those for domain validation, and I had to paste the CSR in the management area that was offline...)
First of all, I had to get a dedicated server, because a bunch of other sites were running on the same server, and the hosting company doesn't offer additional IP addresses.
Then I wanted to get an SSL certificate. I picked Comodo, because they seemed to offer the cheapest full business validation certificate, but then accidentally bought a domain only certificate because their marketing was so confusing. Their friendly customer service walked me through a complicated process for changing my order.
To get the certificate issued, it took me a week to collect the documents they requested. I had to make sure my business was listed in the yellow pages, so they could send me an automatic phone call for verifying my number.
After every step in the process, they told me to log into their online management area, which was offline from time to time.
I had to confirm my email address by clicking a link about a dozen times. Half of the emails were missing the confirmation link.
Twice I got an email telling me my order will soon be processed, and nothing happened for two days. I had to open tickets in some online support area or send them emails to get them to continue processing.
All in all it took me a month to get SSL working. Now I understand why so many sites do not use HTTPS.
At the moment SSD prices are still high enough that it makes sense to buy an iMac with small SSD now and upgrade to larger SSD in a few years; but unfortunately that's no longer easily possible.
1) They remove axis labels, forcing the reader to infer the axis from context.
2) They remove the horizontal lines, making it harder to compare different values visually.
3) They remove tickmarks, so the reader no longer knows if the origin is at zero or not.
4) They add labels with 3 significant digits, which gives the reader a false sense of precision.
Overall they arrive at a graphic that may be nicer to look at, but is functionally much worse than the original.
I'm torn between thinking I'm putting too little time in my software business (solo developer), and thinking that I'm spending too little time with my family.
I don't want to believe I need to sacrifice my family life to be successful.
If your phone rings abroad, and you don't pick it up, and the call goes to voicemail, they charge you for an incoming call and for an outgoing call. Even if the caller doesn't speak on your voicemail, you are billed at least 1 minute active + 1 minute passive.
Assume you're an Austrian, and you miss 3 calls while in Montenegro, that's 20€ in unexpected charges.
I'm not sure about exact numbers, but at the moment I think they can charge eachother somewhere around 10 to 20 cents per minute at most (it differs for active/passive roaming). This limit would of course have to be lowered if roaming charges for customers were to be abolished.