September 21, 2012
On Fri, 21 Sep 2012 22:13:22 +0200
"Paulo Pinto" <pjmlp@progtools.org> wrote:

> On Friday, 21 September 2012 at 19:09:48 UTC, H. S. Teoh wrote:
> >
> > The saddest thing is that people are paying big bucks for this
> > kind of
> > "enterprise" code. It's one of those things that make me never
> > want to
> > pay for *any* kind of software... why waste the money when you
> > can
> > download the OSS version for free? Yeah a lot of OSS code is
> > crap, but
> > it's not like it's any worse than the crap you pay for.
> >
> 
> Welcome to my world. As a Fortune 500 outsourcing consulting
> company
> employee, I see this type of code everyday.
> 

I find it depressing to see just how *easy* it is to have dailywtf-worthy material. They anonymized my name as Nate here:

http://thedailywtf.com/Articles/We_Have_Met_the_Enemy.aspx

Note also that the "' ...code here" and "' ...more code here" sections were typically HUGE.

And that was only scratching the surface of the lunacy that was going on there - both in and out of the codebase.

I've been sticking to contract stuff now, largely because I really just can't take that sort of insanity anymore (not that I ever could). If I ever needed to go back to 9-5 code, or cubicles, or open-floorplan warrooms, I'd *really* be in trouble.

September 21, 2012
On Fri, Sep 21, 2012 at 05:38:06PM -0400, Nick Sabalausky wrote:
> On Fri, 21 Sep 2012 22:13:22 +0200
> "Paulo Pinto" <pjmlp@progtools.org> wrote:
> 
> > On Friday, 21 September 2012 at 19:09:48 UTC, H. S. Teoh wrote:
> > >
> > > The saddest thing is that people are paying big bucks for this kind of "enterprise" code. It's one of those things that make me never want to pay for *any* kind of software... why waste the money when you can download the OSS version for free? Yeah a lot of OSS code is crap, but it's not like it's any worse than the crap you pay for.
> > >
> > 
> > Welcome to my world. As a Fortune 500 outsourcing consulting company employee, I see this type of code everyday.
> > 
> 
> I find it depressing to see just how *easy* it is to have dailywtf-worthy material. They anonymized my name as Nate here:
> 
> http://thedailywtf.com/Articles/We_Have_Met_the_Enemy.aspx

LOL... I should submit the ipv6 prefix checking code that does conversion to string.

The sad part is that so many of the commenters have no idea that adjacent C literals are concatenated at compile-time. It's a very nice way to put long strings in code and have it nicely indented, something that is sorely lacking in most languages. But regardless, why are they posting if they clearly don't know C that well?!


> Note also that the "' ...code here" and "' ...more code here" sections were typically HUGE.

Speaking of 1000-line functions... yeah I routinely work with those monsters. They tend to also have a ridiculously long list of parameters, which over the history of the function have been added one by one as people felt the need for Yet Another Variation on the function's capabilities.  Most of those parameters are either meaningless or ignored most of the time (necessitating ridiculously long lists of null/dummy values every single time the function is called), save for one or two exceptional cases when most of the *other* parameters aren't needed. Calling the function with unforeseen combinations of parameters usually triggers a bug caused by unexpected interactions between parameters that were assumed to be independent.


> And that was only scratching the surface of the lunacy that was going on there - both in and out of the codebase.

I have seen code whose function names are along the lines of "do_it()"
and "do_everything()". As well as "do_main()" and
"${program_name}_main()" in addition to "main()".


> I've been sticking to contract stuff now, largely because I really just can't take that sort of insanity anymore (not that I ever could). If I ever needed to go back to 9-5 code, or cubicles, or open-floorplan warrooms, I'd *really* be in trouble.

I really should start doing contract work. Being stuck with the same project and dealing with the same stupid code that never gets fixed is just very taxing on the nerves.


T

-- 
Blunt statements really don't have a point.
September 22, 2012
On Friday, 21 September 2012 at 21:37:23 UTC, Nick Sabalausky wrote:
> On Fri, 21 Sep 2012 22:13:22 +0200
> "Paulo Pinto" <pjmlp@progtools.org> wrote:
>
>> On Friday, 21 September 2012 at 19:09:48 UTC, H. S. Teoh wrote:
>> >
>> > The saddest thing is that people are paying big bucks for this kind of
>> > "enterprise" code. It's one of those things that make me never want to
>> > pay for *any* kind of software... why waste the money when you can
>> > download the OSS version for free? Yeah a lot of OSS code is crap, but
>> > it's not like it's any worse than the crap you pay for.
>> >
>> 
>> Welcome to my world. As a Fortune 500 outsourcing consulting company
>> employee, I see this type of code everyday.
>> 
>
> I find it depressing to see just how *easy* it is to have
> dailywtf-worthy material. They anonymized my name as Nate here:
>
> http://thedailywtf.com/Articles/We_Have_Met_the_Enemy.aspx
>
> Note also that the "' ...code here" and "' ...more code here" sections
> were typically HUGE.
>
> And that was only scratching the surface of the lunacy that was going
> on there - both in and out of the codebase.
>
> I've been sticking to contract stuff now, largely because I really
> just can't take that sort of insanity anymore (not that I ever could).
> If I ever needed to go back to 9-5 code, or cubicles, or open-floorplan
> warrooms, I'd *really* be in trouble.

One of the reasons that keeps me in the company is the offer around
my area. Many of the other companies I would work for, are the same
type or I will be forced to switch region for something better.

--
Paulo


September 22, 2012
On Fri, 21 Sep 2012 15:37:46 -0700
"H. S. Teoh" <hsteoh@quickfur.ath.cx> wrote:
> 
> The sad part is that so many of the commenters have no idea that adjacent C literals are concatenated at compile-time. It's a very nice way to put long strings in code and have it nicely indented, something that is sorely lacking in most languages. But regardless, why are they posting if they clearly don't know C that well?!
> 

Heh, actually I didn't even know about it until I learned it from D and then learned that D got it from C (does D still do it, or is that one of those "to be deprecated" things?)

But then dealing with strings is something I generally tried to avoid in C anyway ;)

> 
> > Note also that the "' ...code here" and "' ...more code here" sections were typically HUGE.
> 
> Speaking of 1000-line functions... yeah I routinely work with those monsters.

*cough* DMD's main() *cough*  ;)

Although it's actually, surprisingly, not too bad in DMD's case, all things considered. Took me by surprise at first though, I really wasn't expecting it.


> > And that was only scratching the surface of the lunacy that was going on there - both in and out of the codebase.
> 
> I have seen code whose function names are along the lines of "do_it()"
> and "do_everything()". As well as "do_main()" and
> "${program_name}_main()" in addition to "main()".
> 

What really gets me is that these are the sorts of things that are harped on in chapter 1 of just about any decent "intro to programming" book. So where did these people even learn to code in the first place?

Heck, back in college, I used to be a CS tutor for first semester programming students. Even *they* wrote better code, no exaggeration. (Well, except for the handful of students, and I could always tell which ones they were, who were from the class of Mrs. "Let's Teach OOP *Before* Basic Flow Of Execution". Those poor students couldn't write *any* code, let alone good or bad code. I felt bad for them.)

> 
> > I've been sticking to contract stuff now, largely because I really just can't take that sort of insanity anymore (not that I ever could). If I ever needed to go back to 9-5 code, or cubicles, or open-floorplan warrooms, I'd *really* be in trouble.
> 
> I really should start doing contract work. Being stuck with the same project and dealing with the same stupid code that never gets fixed is just very taxing on the nerves.
> 

Yea, contract has it's upsides, although naturally it has it's own perils too. Making a living at it is *damn* hard (either that or I'm just REALLY bad at self-employment...but it's probably both), and frankly I'm still trying to figure out how to do it.

And you can forget about health care if you're in the US: Non-group premiums on insurance (read: legalized casinos without the neon lights and cocktails) are just as expensive as paying out-of-pocket (remember, the house *always* has the advantage), and that's if you're lucky enough to have never had a gap in coverage. If you have, then your premiums are literally buying you nothing unless you *ahem* "win" and get mangled by a car or get a terminal disease or something.

Not to discourage you though. Everything sucks, it's just finding a "suck" that you can live with, y'know ;) Personally, I'm still looking...

September 24, 2012
On Sat, Sep 22, 2012 at 03:48:49AM -0400, Nick Sabalausky wrote:
> On Fri, 21 Sep 2012 15:37:46 -0700
> "H. S. Teoh" <hsteoh@quickfur.ath.cx> wrote:
> > 
> > The sad part is that so many of the commenters have no idea that adjacent C literals are concatenated at compile-time. It's a very nice way to put long strings in code and have it nicely indented, something that is sorely lacking in most languages. But regardless, why are they posting if they clearly don't know C that well?!
> > 
> 
> Heh, actually I didn't even know about it until I learned it from D and then learned that D got it from C (does D still do it, or is that one of those "to be deprecated" things?)

Heh. I suppose in any language complex enough to be interesting there are always some things that you don't know about until a long time later. :) So maybe I was a bit harsh on the commenters. But still, they should've checked before they posted (but then I'm guilty of that one too).


> But then dealing with strings is something I generally tried to avoid in C anyway ;)

Yeah... D is just so much more comfortable to write when dealing with strings. With std.regex in Phobos now, writing string-processing code in D is almost as comfortable as Perl, and probably performs better too.


> > > Note also that the "' ...code here" and "' ...more code here" sections were typically HUGE.
> > 
> > Speaking of 1000-line functions... yeah I routinely work with those monsters.
> 
> *cough* DMD's main() *cough*  ;)
> 
> Although it's actually, surprisingly, not too bad in DMD's case, all things considered. Took me by surprise at first though, I really wasn't expecting it.

I haven't followed this rule to the letter all the time, but usually I consider that if a function doesn't read like pseudo-code, then you're doing something wrong. What I mean is, it should read like steps of an algorithm that makes sense when you read it, for example, "initialize data structure X to empty, loop over input items, transform data and store in X, return result" should map to something like:

	Result func(Input input) {
		auto result = X();
		foreach (item; input) {
			auto x = transform(item);
			result.add(x);
		}
		return result;
	}

That is, the detailed steps in transform() shouldn't pollute the main
code in func(), but should remain as a separate function. Ditto with
X.add(), which may involve a complicated series of steps.

As soon as you start having a whole bunch of code at different levels of abstraction mixed together, you know it's time to split them up into separate functions, 'cos chances are you'll need to use each piece independently one day.


[...]
> > I have seen code whose function names are along the lines of
> > "do_it()" and "do_everything()". As well as "do_main()" and
> > "${program_name}_main()" in addition to "main()".
> > 
> 
> What really gets me is that these are the sorts of things that are harped on in chapter 1 of just about any decent "intro to programming" book. So where did these people even learn to code in the first place?

Probably from a youtube video on how to write your own lame Flash game. :-P  OK, I'm being a bit harsh. But it's hard not to be cynical when you've seen the kind of code that passes for "enterprise software" these days.


> Heck, back in college, I used to be a CS tutor for first semester programming students. Even *they* wrote better code, no exaggeration.

Totally. I've been a teaching assistant before, and we made sure to drill sound programming practices into the students early, and often. Makes me wonder where all these students went after they graduated, 'cos the people writing code in the workforce don't seem to be the same people who attended these courses. Strange.


> (Well, except for the handful of students, and I could always tell which ones they were, who were from the class of Mrs. "Let's Teach OOP *Before* Basic Flow Of Execution". Those poor students couldn't write *any* code, let alone good or bad code. I felt bad for them.)

Speaking of students who couldn't code...  I used to give out "sympathy marks" for struggling students. Y'know, their code was so bad, like code that obviously didn't compile or work, or code with comments written in a way that suggested the student thought that if they pleaded hard enough verbally the computer might *just* do what they wanted it to do -- they had to get a failing mark, but I tried to find excuses to not give them an outright zero. But one time, after marking a bunch of 15-20 page assignments (complete with intro, description, code, test results, etc.), I came across a submission consisting of a single sheet of paper *hand-written* on a single side.  I was boggled for a good moment.  It was like... I was trying not to give anyone an outright zero but she gave me no choice, y'know?  What was the point of handing that piece of paper if she wasn't even going to make the effort of using the lab *printer*, for crying out loud.

What's scary is that sometimes I wonder if that girl would've done a better job at the kind of "enterprise" code I see every now and then. At least her inability to code (or use a computer, for that matter) would be obvious, instead of the kind of garbage that passes for code, compiles, and apparently works (and somehow passes code review) but has so many things wrong with it that it makes you face-palm, many, many times.


> > > I've been sticking to contract stuff now, largely because I really just can't take that sort of insanity anymore (not that I ever could). If I ever needed to go back to 9-5 code, or cubicles, or open-floorplan warrooms, I'd *really* be in trouble.
> > 
> > I really should start doing contract work. Being stuck with the same project and dealing with the same stupid code that never gets fixed is just very taxing on the nerves.
> > 
> 
> Yea, contract has it's upsides, although naturally it has it's own perils too. Making a living at it is *damn* hard (either that or I'm just REALLY bad at self-employment...but it's probably both), and frankly I'm still trying to figure out how to do it.
[...]

True. I suppose you just have to do what's most popular out there right now. I know someone who does Java stuff, and he's never short on contracts. In fact, he gets to choose his vacations 'cos he has enough options in terms of which contracts he chooses to bid on.


T

-- 
"Maybe" is a strange word.  When mom or dad says it it means "yes", but when my big brothers say it it means "no"! -- PJ jr.
September 24, 2012
On Monday, 24 September 2012 at 05:45:11 UTC, H. S. Teoh wrote:
> On Sat, Sep 22, 2012 at 03:48:49AM -0400, Nick Sabalausky wrote:
>> On Fri, 21 Sep 2012 15:37:46 -0700
>> "H. S. Teoh" <hsteoh@quickfur.ath.cx> wrote:
>> > 
>> > The sad part is that so many of the commenters have no idea that
>> > adjacent C literals are concatenated at compile-time. It's a very
>> > nice way to put long strings in code and have it nicely indented,
>> > something that is sorely lacking in most languages. But regardless,
>> > why are they posting if they clearly don't know C that well?!
>> > 
>> 
>> Heh, actually I didn't even know about it until I learned it from D
>> and then learned that D got it from C (does D still do it, or is that
>> one of those "to be deprecated" things?)
>
> Heh. I suppose in any language complex enough to be interesting there
> are always some things that you don't know about until a long time
> later. :) So maybe I was a bit harsh on the commenters. But still, they
> should've checked before they posted (but then I'm guilty of that one
> too).
>
>
>> But then dealing with strings is something I generally tried to avoid
>> in C anyway ;)
>
> Yeah... D is just so much more comfortable to write when dealing with
> strings. With std.regex in Phobos now, writing string-processing code in
> D is almost as comfortable as Perl, and probably performs better too.

Having learned Turbo Pascal before I delved into C, the language
always felt pre-historic to me. Strings were a joke compared with
what Turbo Pascal offered, lack of modules and so forth.

After high-school, I only touched C in the university assignments
that made use of it, or in legacy code at my first job.

I would rather use C++ instead, which gave me back a bit of what
I've lost in the Turbo Pascal -> C transition, plus much more.


>> [...]
>> 
>> Yea, contract has it's upsides, although naturally it has it's own
>> perils too. Making a living at it is *damn* hard (either that or I'm
>> just REALLY bad at self-employment...but it's probably both), and
>> frankly I'm still trying to figure out how to do it.
> [...]
>
> True. I suppose you just have to do what's most popular out there right
> now. I know someone who does Java stuff, and he's never short on
> contracts. In fact, he gets to choose his vacations 'cos he has enough
> options in terms of which contracts he chooses to bid on.
>
>
> T

That is why I stopped being religious about technology.

If the customer pays for doing a something in language X, operating system Y, that is all that counts for me at the end of the day.

Otherwise you are forced to travel a lot, if you only do certain types of technologies.

--
Paulo


September 24, 2012
On Sun, 23 Sep 2012 22:47:58 -0700
"H. S. Teoh" <hsteoh@quickfur.ath.cx> wrote:

[...]
> 
> As soon as you start having a whole bunch of code at different levels of abstraction mixed together, you know it's time to split them up into separate functions, 'cos chances are you'll need to use each piece independently one day.
> 

Yea, I feel the same way: Code should operate at one level of abstraction. At least ideally. I don't always adhere hard-and-fast to it either because sometimes "getting it done" is more important than "getting it perfect" (not to say that excuses *really* bad enterprisey code). And sometimes you *can't* stick to one level due to performance or language limitations (depending on the language). But whenever reasonably possible, the rule of thumb: One level of abstraction per function.

Along similar lines, there's another rule-of-thumb that I actually did pick up in college (and oddly enough, from the "Let's teach first-time beginners OOP, ie code architecture, before flow-of-execution" instructor): If a function is more than one screenful, it's probably too long.

Now obviously that can't and shouldn't be used as a hard-and-fast rule,
but I've found it a sensible rough guideline. Although I'm much more
relaxed about it now than I used to be...and even *moreso* now
that I'm on one of these annoying half-height short-screens, erm, I
mean "widescreen" ;)


> 
> [...]
> > 
> > What really gets me is that these are the sorts of things that are harped on in chapter 1 of just about any decent "intro to programming" book. So where did these people even learn to code in the first place?
> 
> Probably from a youtube video on how to write your own lame Flash game. :-P  OK, I'm being a bit harsh. But it's hard not to be cynical when you've seen the kind of code that passes for "enterprise software" these days.
> 

Maybe it's just because I'm just beyond the snapping point, too, but I don't think it's possible to be too harsh on such code, or anything involving Flash ;)


> > (Well, except for the handful of students, and I could always tell which ones they were, who were from the class of Mrs. "Let's Teach OOP *Before* Basic Flow Of Execution". Those poor students couldn't write *any* code, let alone good or bad code. I felt bad for them.)
> 
> Speaking of students who couldn't code...  I used to give out "sympathy marks" for struggling students. Y'know, their code was so bad, like code that obviously didn't compile or work, or code with comments written in a way that suggested the student thought that if they pleaded hard enough verbally the computer might *just* do what they wanted it to do -- they had to get a failing mark, but I tried to find excuses to not give them an outright zero. But one time, after marking a bunch of 15-20 page assignments (complete with intro, description, code, test results, etc.), I came across a submission consisting of a single sheet of paper *hand-written* on a single side.  I was boggled for a good moment.  It was like... I was trying not to give anyone an outright zero but she gave me no choice, y'know?  What was the point of handing that piece of paper if she wasn't even going to make the effort of using the lab *printer*, for crying out loud.
> 

Ouch. Yea.

I think I actually got a sympathy "pass" in German 101. I barely scraped by with a "D-" overall, but if you went strictly by the numbers and class rules it really should have been an F. I think she knew I was at least trying and struggling though.

Ironically, the only reason I even took it was because I was having trouble getting through the school's "4 semesters of the same foreign language" requirement when I went with Japanese. Little did I know German would be *far* harder. "Oh, yea, go with German - it's the closest language to English!" Yea, I think that's actually what made it so hard ;) That, and gendered words.

September 24, 2012
On Fri, 21 Sep 2012 17:22:32 -0400, Nick Sabalausky <SeeWebsiteToContactMe@semitwist.com> wrote:

> On Fri, 21 Sep 2012 08:24:07 -0400
> "Steven Schveighoffer" <schveiguy@yahoo.com> wrote:
>>
>> That works too, but doesn't warrant rants about how you haven't
>> learned how to use the fucking thing :)
>>
>
> It's *volume* controls, there doesn't need to be *anything* to learn.

OK, so this is what you'd rather have:

1. Want to listen to music in the library on my headphones.  But I have the silent switch on to prevent calls, and since there is only one volume, I have to turn it off, and turn up the volume.  Then a phone call arrives, and I can't make that silent because it's all the same volume, bothers everyone else in the library.

2. Want my ringer as high as possible so I can hear it when a call arrives.  But I start playing a game, and it BLASTS the initial music have to quicky turn down the volume.

No, I think the current design, while not perfect, is *WAY* better than a single volume.  I would rather actually have *more* granularity in volume.  Doing it your way means everyone, not just you, needs to fiddle with the volume knob for every single thing they want to do.  That may make you happy, but it would piss off the rest of the users :)

>>
>> 1. ringer volume affects all sounds except for music/video/games
>> 2. Silent switch will ringer volume to 0 for all sounds except for
>> find-my-iphone and alarm clock
>> 3. If playing a game/video/music, the volume buttons affect that
>> volume, otherwise, they affect ringer volume.
>>
>> Wow, you are right, three whole rules.
>
> And each one with exceptions, the rules as a whole aren't particularly
> intuitive.

They aren't?  They make complete sense to me.  You even admit that it makes sense to have find my iphone play its alerts as loud as possible.  I contend that if you use alarm clock what it is for, (i.e. waking you up) there is no problem there either.  Those are the only exceptions.

Besides, you don't have to "memorize" these rules, most of the time, it is what a normal person would expect.

> And then there's the question of what rules you forgot. I can think of
> one right now:
>
> 4. If you're in the camera app then the volume button takes a picture
> instead of adjusting volume.

I admit, I completely forgot about this one.  Simply because I rarely use it :)  It was a gimmicky feature, and doesn't hurt anything, but I find it unusable, simply because my natural inclination, being a right-handed person, is to rotate the phone left to go into landscape mode, If I want to use the button, my sequence is to rotate left, then realize the button's on the other side, flip 180 degrees, then realize my finger is in front of the lens, etc.  I think this is essentially an orthogonal problem because there is no volume control in camera, and that "feature" doesn't interfere with any other use of the phone.  When I read about it though, I thought it was a good idea.

Interestingly enough, Apple doesn't even *let* you use the volume control for anything but volume in your own apps.  Doing it is clunky in any case, you have to take over the volume, disable anything that is playing, then make sure the volume is not at min/max.  When you detect the "volume" goes up or down, take action, then reset the volume.  Very lame.

>> That's way more than 1.  I stand corrected :)
>>
>
> Now compare that to a normal device:
>
> 1. The volume control adjusts the volume.
>
> Gee, how horrible to have one trivially intuitive rule and no
> exceptions.

Right, and now I'm stuck in "Nick mode", where I'm constantly worrying about and changing the volume to deal with the current situation.  No thanks.

> Bottom line, they took something trivial, complicated it, and people
> hail them as genius visionaries.

s/complicated/improved/

This isn't really genius, nor is it unprecedented (iPhone is not the first to control ringer and game/music volume separately).  It's just common sense.

>> > You might like Win7. It's very Mac-like out-of-the-box which is
>> > exactly why I hate it ;)
>>
>> No, it's nowhere near the same level.  I have Win 7, had it from the
>> day of its release, and while it's WAY better than XP,
>
> Heh, yea I had a feeling. Like I said, Win7 is very Mac-like as far as
> windows goes. I find it interesting that while I absolutely can't stand
> Win7 (at least without *heavy* non-standard configuring and some
> hacks), Mac people OTOH tend to see it as a big improvement over XP.
> It's Microsoft OSX.

I wasn't a mac user until november of last year.  And even then I didn't start using it in earnest until February of this year, when my iOS side business picked up.  I still used my Linux laptop for almost everything else, and my Win7 machine at home.  I barely used the Mac, and that was just to run xcode.

About 4 months ago, I had to start developing for an arm-based single-board-computer.  The manufacturer provided a fully-configured VMWare Linux image.  Only option for the MAC was to try/buy VMWare Fusion (VMWare does not make a free VMWare player for Mac, and it was required that this run on the Mac).

So I bought VMWare Fusion.  Once I realized, I could run all my other Linux development for my day-job under a VMWare image, and I could run an old copy of XP Pro that I had purchased a long time ago, I could simply use my Mac for all business-related tasks.

I decided to try switching, took about a week to transfer all my stuff over.  Loving it ever since.

So no, I'm not a MAC person, I'm a Unix/Linux person.  But Mac seems to have done Unix better than Linux :)  And with VMWare Fusion, I can run MS office (no not MAC office, which is crap AIUI) when I need it.


> Well, we can make any OS look good by picking one nice feature.
>
> And personally, I actually like that shutdown serves as a "close all".
> There's a number of programs that do have settings for roughly "when
> starting, resume wherever I left off last time". I always end up
> turning that off because it just means I usually have to close whatever
> it auto-opened anyway. When I close/exit/etc something, it's generally
> because I'm done with that task. So auto-resumes just get in
> my way. OS is the same thing: If it auto-resumed everything, then I
> would just have to go closing most of it myself. Makes more work for
> me in it's quest to be "helpful".

It was an example.  But it was one that I noticed right away coming from Ubuntu with Unity.  Unity tries to be very MAC-like, but is fighting and strong-arming applications into compliance.  It doesn't always work.

For example, Netbeans still has a menu bar, even though Unity tries to put the menu bar at the top of the screen.  So it ends up with 2 menu bars, the one at the top being empty.  And Unity's feature of "searching all menu options" (also a mac ripoff) doesn't work in those apps.

If I had to summarize why I like MacOS better than windows -- the GUI is a complete GUI, and as good as Windows (unlike Linux), but it does Unix *SOOO* much better than cygwin.  I feel like I get the best of all worlds.

And don't get me started on the trackpad.  I *hated* using my Dell touchpad on my Linux laptop every time after I had been using my Mac trackpad.

The one thing I would rip out of OSX and throw against the wall is the mail app.  Its interface and experience is awesome.  But it frequently corrupts messages and doesn't properly save outgoing mail.  Not good for a mail application.

>> Interesting that's what you see as the defining point of that
>> story :)
>
> It's a story that always did stike me as odd: Here we have a grown
> man (one who was *well known* to be unstable, asinine, drug-soaked and
> frankly, borderline megalomaniacal) that's going around throwing
> tantrums, and largely because he doesn't understand "cover" or "case"
> or what obviously happens to plastic when you bash keys against it, and
> it gets interpreted by millions as "Wow, look how great he was!" I don't
> get it.

Having amassed more money than US treasury, based on his ideas and hard work, seems to suggest he was pretty successful :)  Not that I completely equate money with greatness, but if success of a product is measured by how well it sells, then he was very great.  Present company notwithstanding, most people like apple products and think they are good/best of breed.

I think in order to succeed in producing a good product, you have to kind of have a somewhat high opinion of yourself, and having the balls to take risks on designs that may not be popular but, when engineered correct, produce a superior product.  Imagine how D would be if Walter allowed every idea that came across the newsgroup to be implemented.  I hated the idea of unshared-by-default, but now I think it's probably the most important improvement to the language so far.  Not by itself, but the things it enables.

>
>> Especially considering your calm, controlled statements
>> about Apple products...
>>
>
> Heh, well, like I said my hatred for Apple and Apple products comes
> from having used them and been around them. I actually *liked* my OSX
> machine when I first got it. And then it, and the whole Jobs culture,
> and the way Apple runs their business, successfully turned me against
> Apple. And now I have this iPhone which, while having even been *useful*
> when out-of-town when I first got it - due to it essentially being a
> wirelessly internet-connected PDA - everything else about it just makes
> me want to smash it into a concrete wall nearly every time I use it.
> And I've never had that temptation from *any* other device before (hard
> as that may be to believe ;) )
>

I think if it didn't have a big apple symbol on the back, you would be less inclined to try and destroy it :)  Just my opinion.

I have brands that I hate too due to prior experience too.  I'm sure you would be able to find anyone who *hates* a certain brand of car because they bought a lemon from them at one time, even though statistics show there are *always* some bad apples (no pun intended) in otherwise good products.  These can be badly designed single products (*cough* Vista) or simply one instance of a product with defective parts.  I think humans have a tendency to put too much emphasis on anecdotal experience rather than scientifically detected trends.  And I think the sometimes prohibitive costs of some of theses gadgets plays a large part -- You aren't likely to go out and buy another $200 iPhone, for instance, if your previous two broke within a year.  Even though most people don't have that experience.

-Steve
September 24, 2012
On Mon, 24 Sep 2012 10:02:57 -0400
"Steven Schveighoffer" <schveiguy@yahoo.com> wrote:

> On Fri, 21 Sep 2012 17:22:32 -0400, Nick Sabalausky <SeeWebsiteToContactMe@semitwist.com> wrote:
> 
> > On Fri, 21 Sep 2012 08:24:07 -0400
> > "Steven Schveighoffer" <schveiguy@yahoo.com> wrote:
> >>
> >> That works too, but doesn't warrant rants about how you haven't learned how to use the fucking thing :)
> >>
> >
> > It's *volume* controls, there doesn't need to be *anything* to learn.
> 
> OK, so this is what you'd rather have:
> 
[...single volume...]
> 
> No, I think the current design, while not perfect, is *WAY* better than a single volume.
> 

No, that's not it at all. The problem is the *lack* of any master volume control whatsoever, not the existence of finer-grained volume controls.

My walkman example was perhaps misleading.

> >>
> >> 1. ringer volume affects all sounds except for music/video/games
> >> 2. Silent switch will ringer volume to 0 for all sounds except for
> >> find-my-iphone and alarm clock
> >> 3. If playing a game/video/music, the volume buttons affect that
> >> volume, otherwise, they affect ringer volume.
> >>
> >> Wow, you are right, three whole rules.
> >
> > And each one with exceptions, the rules as a whole aren't particularly intuitive.
> 
> They aren't?  They make complete sense to me.  You even admit that it makes sense to have find my iphone play its alerts as loud as possible.

No, only the "find iPhone" one. The iPhone has no fucking idea what environment I'm in. I *definitely* don't want it screeching "PAY ATTENTION TO MEEEE!!!!" indiscriminately whenever it damn well feels like it.


> I contend that if you use alarm clock what it is for,
> (i.e. waking you up) there is no problem there either.  Those are the
> only exceptions.
> 

Keep in mind, when I started talking "alarms" I didn't just mean "alarm clock". Pardon if I'm not completely up on official iTerminology.


> Besides, you don't have to "memorize" these rules, most of the time, it is what a normal person would expect.
> 

What a normal person expects is for turning down a device's volume to...turn down the device's volume. Or for "silent" to actually *be* silent.

What a normal person does not expect is for the device to take the user's commands as mere suggestions.


> > And then there's the question of what rules you forgot. I can think of one right now:
> >
> > 4. If you're in the camera app then the volume button takes a picture instead of adjusting volume.
> 
> I admit, I completely forgot about this one.  Simply because I rarely use it :)  It was a gimmicky feature, and doesn't hurt anything, but I find it unusable, simply because my natural inclination, being a right-handed person, is to rotate the phone left to go into landscape mode, If I want to use the button, my sequence is to rotate left, then realize the button's on the other side, flip 180 degrees, then realize my finger is in front of the lens, etc.  I think this is essentially an orthogonal problem because there is no volume control in camera, and that "feature" doesn't interfere with any other use of the phone.  When I read about it though, I thought it was a good idea.
> 

I can never remember which way I'm supposed to tilt the stupid thing for landscape photos. It *shouldn't* matter, but then when you go grab your photos (and videos!!) off the device you find the stupid thing decided to ignore the accelerometer and save them upside-down.

As for buttons and such, the Zire 71 had a great design for the camera:
Slide the face upward and the normally-protected lens is revealed,
along with a "shutter" button (no need for modal "volume button"
contrivances), *and* it goes directly into the camera program. So
basically a real camera instead of a mere a camera "app",
always trivially accessible, and always the same easy way. And yea,
it's a moving part, but it *still* far outlasted the life of the
(unfortunately non-replaceable) battery. *That* was brilliant design. I
wish apple had copied it.

It didn't have an accelerometer (this *was* a decade ago, after all) so it couldn't determine the current "tilt" and auto-rotate photos accordingly (like the iPhone *should* have been able to do), but it had an easy built-in "rotate photo" feature that even iPhone's built-ins won't do (at least not in any realistically discoverable way).


> >> That's way more than 1.  I stand corrected :)
> >>
> >
> > Now compare that to a normal device:
> >
> > 1. The volume control adjusts the volume.
> >
> > Gee, how horrible to have one trivially intuitive rule and no exceptions.
> 
> Right, and now I'm stuck in "Nick mode", where I'm constantly worrying about and changing the volume to deal with the current situation.  No thanks.
> 

No, as I said above.

> > Bottom line, they took something trivial, complicated it, and people hail them as genius visionaries.
> 
> s/complicated/improved/
> 
> This isn't really genius, nor is it unprecedented (iPhone is not the first to control ringer and game/music volume separately).  It's just common sense.
> 

Ok again, clarification:

Independently controllable ringer/game/music volumes: Good

Complete *lack* of any way to control *overall* volume: Bad

A lot of the videogames I've played have independent adjustable SFX/music/voice volumes. I've even happily made use of that. And I'm damn glad that the TV *still* has a properly working volume control despite that because I make even more use of that.

> So no, I'm not a MAC person, I'm a Unix/Linux person.  But Mac seems to have done Unix better than Linux :)

That was never my impression with macs. For example, I'll take even a mediocre linux GUI over Finder/etc any day. I don't understand why mac...*users*...inevitably have such trouble with the idea that someone could actually dislike it when it's (apperently) so objectively wonderful.


> 
> It was an example.  But it was one that I noticed right away coming from Ubuntu with Unity.  Unity tries to be very MAC-like,

That's why switched to Debian for my linux stuff instead of upgrading to the newer Ubuntus, and also why I'm not moving to Gnome 3. Too much Apple-envy for my tastes.


> If I had to summarize why I like MacOS better than windows -- the GUI is a complete GUI, and as good as Windows (unlike Linux),

See I disagree with that. I like XP's GUI (with luna disabled), but I hate having to use OSX GUIs and OSX-alike GUIs (such as Win7). Linux GUIs are definitely clunky, but when they're not aping Mac or iOS then I can at least get by with them.

> but it does Unix *SOOO* much better than cygwin.

Cygwin's not even worth considering. As far as I'm concerned it may as well not exist. When I do linux it's either a VM or a physical linux box (connected to my primary system with Synergy+, a software KVM that absolutely rules).

> I feel like I get the best of all worlds.

Yea, but to get that, you have to use OSX as your *primary* environment, and stick with expensive iHardware. Might work for you, but those are all deal-breakers for me.


> 
> And don't get me started on the trackpad.  I *hated* using my Dell touchpad on my Linux laptop every time after I had been using my Mac trackpad.
> 

I always considered trackpads completely useless until I got my current
Asus laptop. It's surprisingly usable in a pinch, and in fact I
honestly couldn't believe how much they've improved (or that they
even managed to improve at all). And yet I still go for my trackball
instead whenever possible because it's sooo much better.


> The one thing I would rip out of OSX and throw against the wall is the mail app.  Its interface and experience is awesome.  But it frequently corrupts messages and doesn't properly save outgoing mail.  Not good for a mail application.
> 

I didn't have corruption issues with it, but I did find it to be rather gimped and straight-jacketed much like the rest of the system.


> >> Interesting that's what you see as the defining point of that story :)
> >
> > It's a story that always did stike me as odd: Here we have a grown man (one who was *well known* to be unstable, asinine, drug-soaked and frankly, borderline megalomaniacal) that's going around throwing tantrums, and largely because he doesn't understand "cover" or "case" or what obviously happens to plastic when you bash keys against it, and it gets interpreted by millions as "Wow, look how great he was!" I don't get it.
> 
> Having amassed more money than US treasury, based on his ideas and hard work, seems to suggest he was pretty successful :)  Not that I completely equate money with greatness, but if success of a product is measured by how well it sells, then he was very great.  Present company notwithstanding, most people like apple products and think they are good/best of breed.
> 

He was a salesman. Their job is to sell people on crap. Successfully unloading broken freezers on eskimos and dog shit to...anyone...isn't really deserving of praise or appreciation or anything but condemnation.

> 
> I think if it didn't have a big apple symbol on the back, you would be less inclined to try and destroy it :)  Just my opinion.
> 

I'm sure most people would assume that, particularly since I dislike something that "everyone knows is undeniably great". I know there's no way I can ever convince anyone of this, but I don't do things backwards like that: I hate apple *because* I don't like their products or their business. The other way around makes absolutely no sense.

I'd love for apple to start putting out good stuff because...I *like* good stuff. Hell, I love the Apple II. And I loved Sherlock/Watson (part of what got me to try OSX). If I want to see apple destroyed it's because they keep putting out poorly-designed, overpriced, Orwellian bullshit and instead of dismissing it like in the 90's people are actually praising the shit now that it has a glossy finish and the name "Jobs". Oh, and because it sold well :/...which I always found to be a bizarre reason to appreciate anything.

*I* think that people wouldn't be so quick to praise Apple's last decade of products if they didn't have "Steve Jobs has returned!", "Designed by Jobs!" attached. (And the iPhone 5 obviously still has a lot of Jobs legacy, esp since it's basically the 4S with higher specs.)


> I have brands that I hate too due to prior experience too.  I'm sure you would be able to find anyone who *hates* a certain brand of car because they bought a lemon from them at one time, even though statistics show there are *always* some bad apples (no pun intended) in otherwise good products.  These can be badly designed single products (*cough* Vista) or simply one instance of a product with defective parts.  I think humans have a tendency to put too much emphasis on anecdotal experience rather than scientifically detected trends.  And I think the sometimes prohibitive costs of some of theses gadgets plays a large part -- You aren't likely to go out and buy another $200 iPhone, for instance, if your previous two broke within a year.  Even though most people don't have that experience.
> 

So therefore if someone argues against something popular, then it must be due to such a fallacy as that, because what's popular clearly must be good, right? Because those people who do like it must be liking it for purely objective reasons, right?

You're arguing that most people are non-objective. If that's so, then the objective viewpoint would be an unpopular one. Kinda like "Apple products suck". Or is it that the "humans are often non-objective" only applies to negative opinions? People are always being objective when they say something positive?

September 25, 2012
On Mon, Sep 24, 2012 at 07:52:15PM -0400, Nick Sabalausky wrote: [...]
> Independently controllable ringer/game/music volumes: Good
> 
> Complete *lack* of any way to control *overall* volume: Bad

I have to agree with that. It's OK, and sometimes even useful, to have multiple independent volumes, but it makes no sense to NOT have a master volume that controls everything else. Sometimes you just want to mute the whole dang device, and that should not require fiddling with every single independent volume setting.


> A lot of the videogames I've played have independent adjustable SFX/music/voice volumes. I've even happily made use of that. And I'm damn glad that the TV *still* has a properly working volume control despite that because I make even more use of that.

Yeah I almost never play games with music on, 'cos I generally find the music not to my liking. SFX I sometimes leave on low, though on handhelds I generally turn both off. But the option to only have SFX without music is a plus. I *have* deleted apps before that didn't allow independent settings.


[...]
> > I feel like I get the best of all worlds.
> 
> Yea, but to get that, you have to use OSX as your *primary* environment, and stick with expensive iHardware. Might work for you, but those are all deal-breakers for me.

I find it sad that Apple has left its original philosophy of open protocols and specs so that you can make it interoperate with stuff. For all their flaws, PCs are much more palatable 'cos you can replace parts that you don't like with alternatives. With closed hardware and vendor lock-in, I can't say that Macs are exactly near the top of the list for hardware I'd consider buying. I've had a bad experience with PC laptops already (after 2 years parts starting wearing out and I can't replace them 'cos they need specialized tools that vary from vendor to vendor -- no choice but to buy a brand new one though the old one could've continued to work if a few basic parts were replaced) -- I don't feel like I want to repeat that experience. So yeah, this is a deal-breaker for me too.


[...]
> > The one thing I would rip out of OSX and throw against the wall is the mail app.  Its interface and experience is awesome.  But it frequently corrupts messages and doesn't properly save outgoing mail.  Not good for a mail application.

Ahhh how I love Mutt. ;-)


> I didn't have corruption issues with it, but I did find it to be rather gimped and straight-jacketed much like the rest of the system.
[...]

I find pretty much all GUI mail apps (both webmail and local MUAs) strait-jacketed. Anything that doesn't let you configure mail headers is unusable to me, and HTML by default gets on my nerves so much it's not even funny. I want my mail to NOT have stupid extraneous headers that are completely unnecessary for what I use mail for, and yes most people don't care, but as the adage goes: easy things should be easy, hard things should be possible. I find in pretty much every GUI mail app that easy things are hard and hard things are impossible.

But anyway, I stumbled across this cute little thing just today:

	http://daringfireball.net/projects/markdown/

I'd love to start a trend for a new kind of email: one in which the message is transmitted as markdown text, and, should the receiver so wish, the receiving end automatically converts that into HTML. This way you can either write directly in plaintext (like I do) or use a GUI front-end for composing messages (like most normal people do), the transmission won't have stupid useless HTML clutter (or worse, JS viruses and other detritus), and the receiver can get all mails in plaintext or HTML according to their choice. AND there is no need for multiple MIME parts; the markdown text can be read directly as plaintext or translated into HTML for people who prefer that.

Now, somebody just has to cook up this MUA in D, and make it the killer D app that will take over the world. ;-)


T

-- 
When solving a problem, take care that you do not become part of the problem.