An extremely large number of programmers use Mac and Linux machines. Linux on the desktop is sustained to a substantial extent by a programmer audience - and you only have to look at the availability of software for it to see that it's popular among that group.
Personally, when I'm not using a unix-y environment, it's because I've been forced. Using windows as a programmer feels like having one of my hands chopped off.
every programmer i know works in a windows dominated environment. this is a small sample though.
i believe that in back-end only environments linux has some serious popularity but i can't comment on how many studios use it as their development platform because i have no great experience there (actually i work in office where they develop such things, but they use windows exclusively).
for desktop software, games and web front-end development windows is king. its the platform that all of your target audience are using to an excellent approximation. for AAA games there is an extra restriction that its the only practical choice (there are zero tools for working on any other platform). sure for iOS/OS X there is the same restriction to a mac and iOS development has become extremely popular - even so there is quite some resistance to using OS X and XCode as anything more than a test configuration on cross platform projects - I've seen a lot of macs dual booting to windows in this context. For android Linux can give you a small edge, but its not much...
Linux is obviously meant for programmers, but that doesn't mean they use it either - until quite recently even the best flavours were horrible user experiences. I think ubuntu is great and really takes steps to get away from the 'you download source and build your app with archaic and buggy tools at the command line' approach which has always dominated... in terms of doing your job though - unless you work on the backend of some web service you can't do any useful builds under Linux, unless you are targetting Linux desktop which is exceptionally rare.
I don't dispute that windows developers are in the majority - I dispute that other choices are as vanishingly rare as your initial comment suggested.
Anecdotally (I work at a large corp), slightly under half our devs use Linux. You only need to look at the array of software-for-programmers that's available under Linux to see that it's an extremely popular choice - the availability of programming software and libraries is generally better under Linux than it is under Windows.
While linux is certainly a bit more hassle to maintain than windows (I use a mac when given the choice, which i find gives me the best of both worlds), it's still a clearly superior environment for highly technical users. It's only recently with the introduction of Powershell that Windows has stopped being a substantial handicap for developers, imo.
I think there's two really great things about retina screens on desktops/laptops:
- Firstly, I definitely notice the difference. The higher res screen is noticeably nicer to read. Sure, you don't need to go to the crazy extremes of some newer high res phones, but standard desktop monitors are noticeably ugly by comparison.
- Secondly, the res is high enough that you can finally change (apparent) resolution. My parents are in their late 60s and have bad-ish eyesight, so they lower the resolution on their screen. The result is incredibly ugly. Unfortunately resolution independent display seems to be a forgotten goal in modern OSes, so having screens that can change res is definitely worthwhile.
A human eye with 20/20 vision can distinguish ~150ppi at 2 feet (a typical screen-to-eyeball distance). Beyond that, it's overkill. The apple thunderbolt display is at 109ppi, so there's a bit of room for improvement, but not 60% improvement.
Beyond this limit, I suppose there are people with 20/1 vision or something, but they're pretty rare.
That is, you can distinguish lines that are about 1/150 inch apart.
But for a display, you want to be able to have diagonal (or curved) lines at 1/150 inch apart, with pixellation artifacts that are small relative to those lines.
That probably translates to something like 450ppi (line width of 3px, so the artifacts should probably be about 1/3 of the line size).
Explanation: "The eye is not a single frame snapshot camera. It is more like a video stream. The eye moves rapidly in small angular amounts and continually updates the image in one's brain to "paint" the detail. We also have two eyes, and our brains combine the signals to increase the resolution further. We also typically move our eyes around the scene to gather more information. Because of these factors, the eye plus brain assembles a higher resolution image than possible with the number of photoreceptors in the retina."
I've never gotten this argument. I mean, I have totally normal (nearly 20/20, but not quite... thanks to aging) vision, yet I can see the blurred edges of diagonal and rounded images perfectly fine on an iphone 5s at 2 feet. I think people just aren't really looking. I tried a thunderbolt display recently, and it was painfully low resolution. I haven't seen the math recently, but I have hard time believing that any phone today, let alone any monitor or television, really reaches the resolution of print.
I have my monitors mounted on arms, so they can be anywhere from 1.5 meters away with me leaning back, to almost right in my face. The ability to physically "zoom" the whole monitor adds another dimension to use, and it's one where you really appreciate higher pixel density.
Aliasing is another big deal. Jaggies are very visible until you get into quite high pixel densities.
Hereditary, but not in a strong sense - to quote the american diabetes association:
> In general, if you are a man with type 1 diabetes, the odds of your child getting diabetes are 1 in 17. If you are a woman with type 1 diabetes and your child was born before you were 25, your child's risk is 1 in 25; if your child was born after you turned 25, your child's risk is 1 in 100.
Even if both partners are diabetic, the risk is only 1 in 10 to 1 in 4. This strongly implies that what is heritable is the vulnerability to getting diabetes, rather than getting diabetes itself. There is, presumably, some trigger that also needs to occur.
> Being a programmer is fucking boring ... They want you to spend your time ... optimizing their databases
Honestly, I really fucking love optimising databases. I can't believe my luck that people want to pay me to do that sort of work for 8 hours a day.
To me, hell is having to define and defend my own problem. I would loathe running a startup - I love the feeling, instead, of having people come to me to solve their problems. Fortunately, I've managed to arrange a situation where enough of those problems are reasonably interesting to my apparently unusual tastes :-).
This is not meant as a dig against those who run startups, just a note from someone with a very different perspective.
You are probably a wonderful person to work with and any team is really lucky to have you. Having someone who is deeply passionate about these problems is very important and these are important problems!
Not sure if you'll check back on this thread, but this part of your comment kind of made my day :) >> Honestly, I really fucking love optimising databases.
WITH and window functions are portable (and both awesome - they will change the way you write your SQL for the better). I'm not sure if WITH RECURSIVE is portable - my recollection is that oracle and db2 at least don't need/use the RECURSIVE qualifier for recursive ctes: they just work it out for you.
Time intervals are also in the SQL standard as I recall (although not in the format listed here - postgres supports standard syntax too though). Not sure how fully supported it is cross-database, though.
...data warehouses in general mostly use SQL, and lots of businesses use data warehouses successfully. Teradata, Netezza, Oracle, DB2, etc. I'm not sure why his statement was controversial - SQL's a great language for reporting and analytics.
I've had to deal with a lot of NoSQL advocates whose experience with SQL or relational databases doesn't extend beyond MySQL.
Of course, it's understandable why they have a bad impression of SQL; they've only ever used one of the most inept implementations around.
Those who are willing to try one of the more mature and sensible relational database systems usually see quite quickly the value that such systems provide.
Considering the space requirements of a DB with a properly designed schema, I have to wonder what on earth you can do that generates beyond a few terabytes of data, and how you can make any sense out of it.
Also, your comment is rather ambiguous, I certainly hope you're not calling Postgresql experimental, because that would be laughable; and there are several examples of multi-terabyte databases using it.
>Real businesses need a data warehouse and SQL is the right tool for that job.
SQL is NOT always the right tool for the job.
There are plenty of situations where an Hadoop or a Storm/S4 approach works better. Again it's about picking the right technology for the task at hand.
SQL is an excellent tool for a data warehouse, or any situation where there is value in separating data design from application design. In such situations the infamous o/r impedance mismatch is arguably a good thing.
I would imagine that for your average startup, using solutions that don't even support transactionality will cause greater complexity issues. Especially given the enormous window before db scale out/up becomes an issue on well-designed applications.
> LIMIT OFFSET queries are always going to be hard because you have to generate lots of rows only to throw them away
In fairness, that often depends upon the intelligence of the planner. A lot of sort-limit-offset queries can be reasonably easy and not generate too many rows if the planner works correctly and you have the right indexes.
edit: Assuming you're mostly picking up early pages as opposed to getting late ones, anyway - which is usually the case for, say, a comment system.
Personally, when I'm not using a unix-y environment, it's because I've been forced. Using windows as a programmer feels like having one of my hands chopped off.