Want to read Slashdot from your mobile device? Point it at m.slashdot.org and keep reading!

 



Forgot your password?
typodupeerror
Lord of the Rings

Journal Journal: [Beloved] may my heart always be open to little (Redux)

To little birds, and to thee, beloved...

        may my heart always be open to little
        birds who are the secrets of living
        whatever they sing is better than to know
        and if men should not hear them men are old

        may my mind stroll about hungry
        and fearless and thirsty and supple
        and even if it's sunday may i be wrong
        for whenever men are right they are not young

        and may myself do nothing usefully
        and love yourself so more than truly
        there's never been quite such a fool who could fail
        pulling all the sky over him with one smileÂ

                                -- E. E. Cummings

User Journal

Journal Journal: in which i am a noob all over again 17

I haven't posted a journal here in almost three years, because I couldn't find the button to start a new entry. ...yeah, it turns out that it's at the bottom of the page.

So... hi, Slashdot. I used to be really active here, but now I mostly lurk and read. I've missed you.

Slashback

Journal Journal: Anti-semitism for nerds, slurs that matter 11

The Slashdot fortune from an hour ago:

Q: What's the difference between a JAP and a baby elephant? A: About 10 pounds. Q: How do you make them the same? A: Force feed the elephant.

United States

Journal Journal: tackling the deficit 11

I wouldn't, because I'm against that. Our debt is the actual problem, of course. If we were currently debt free, this year's deficit would be absolutely no problem. But given how much debt we have, even if we balanced the budget this year, we would still have the exact same-sized problem. So our problem is independent of the deficit, so focusing on that is just what the big-spending political class and their supporters (the neocon wing of the Right, and the entire Left) hope they can keep most of us conned into doing.

Our national debt is $14.9 trillion, and our just-ending federal fiscal year encompasses $2.3 trillion in receipts and $3.6 trillion in outlays for a shortfall of $1.3 trillion. Scaling these absurdly astronomical and uneasily grappled-with numbers down by a factor of 28,750,000, that's like your household having a (net) annual income of $80K but spending over $125K for the year, adding over half your annual income onto your credit card debt that's already at a balance of $518K!

And most of the time it's not even expressed as in the title of this JE, but more often in the terms of "bringing down the deficit". To continue with my example, with your spouse playing the role of the big-spending political class and their supporters, she urges you to not only not focus on the over half million dollars you owe on your credit cards (albeit at the low interest rate of 3% (FY2011 interest on the debt was $450 billion)), but to not even focus on all of the shortfall that's getting added to it.

So how did we get into this mess? We've been living beyond our means, borrowing from the future to do it, for quite some time. Both parties have wanted to keep govt. spending high but to keep taxes low for what is stereotypically considered each's respective voting constituency. And "compromise". The Left wants to grow govt. a lot, the Right doesn't want it to grow at all, so we end up with the compromise of govt. growing a little. Year after year.

Earlier this year during the so-called budget crisis I had to hear about how spending cuts weren't enough, we had to compromise, and have some tax hikes as well. The problem with that is that I don't believe the problem is too little govt. spending, but too much. Not only do I believe that such a household as in my example above doesn't need to be spending $125K every year, but it doesn't even need to be spending all of the $80K that it takes in, but ought to be able to live comfortably on about $60K after taxes, and be able to put about a fourth of its take-home pay towards paying down that massive debt. That would be on a schedule of paying it off in 26 years, which is entirely reasonable, as it's like the timeframe of a traditional home mortgage.

But Herman Cain's 9-9-9 plan got me thinking that I am actually willing to compromise on this. Half of all American households pay no federal income tax. I believe everyone should have skin in the game. Everyone uses and benefits from our infrastructure, the enforcement of our laws, etc., so everyone should be paying for it. It's time the 51% pay their fair share. They're not contributing to the federal kitty via the income tax, so I guess they can do their part via a federal consumption tax. Whatever, either way, I'm willing to compromise my usual no tax hikes stand and strongly support raising taxes on the freeloading half of us (and I'm impartial on the economic strata included in this), from the zero (or *less*) that they're paying now, and thereby adding a revenue increase component to the mix, as urged by the Left.

As for cuts, notably in the news Ron Paul released a plan. I've always kinda considered him a fraud, talking dispassionately about limiting govt. while with fervor and at length about our militarism and imperialism. He's always struck me as a Lefty trying to masquerade as somewhat of a libertarian. Not unlike a few Slashdotters I've encountered here. He calls for eliminating certain dept.'s completely, and freezing the budgets of some others, which is all music to my ears, but I question some of the picks. And why just freeze or eliminate, and not also go with the option of putting some on a gradual downsizing path.

And therein lies the problem with this approach. How do you decide, and justify, who gets cut and who doesn't. That's why I'm for an across-the-board cut. That would be just as unfair to one political interest as another. My example household above ought to be able to live okay on $60K per year, which translates to a federal spending level of $1.725 trillion per year, or about the 1999/2000 spending level. Let economic growth fund any expansion of entitlement spending, but keep paying down the debt $575 billion a year, and be on a path to have dug ourselves out of our hole by 2037. And for those who for some reason care about (or claim to) teh dephussit, that'll be fixing that too.

User Journal

Journal Journal: Dear President Obama 2

It's been, like, two and a half years. And you haven't taken Pudge's guns away.

It's not like he doesn't deserve it, and he's pretty much expecting you to do it anyway. And I'm pretty sure Pudge's guns have more useful things they could be doing. They could be given to our military to help defend our nation against terrorists. Or, even better, you could give them to poor people, to defend themselves when they're trying to vote.

As it is, I'm pretty sure the big fat paranoid idiot solely uses them as something for his fingers to stroke when he's downloading porn over the Internet. And that's not just creepy, it's also dangerous.

Thanks,

squiggleslash.

Programming

Journal Journal: there are no methods in JavaScript! 4

I'm starting a book on jQuery, and they're using the "method" terminology (in the first chapter, which is easing the reader into things in terms of more commonly understood OO concepts). Argh. To me a method [and since there are no classes in js, I'll just talk about in terms of instances/objects here] in OOP is a function that belongs to an object, and references (via the "this" pointer) that object's members. Neither of these are constants in the js world:

someObj = {
    myDatum : 42,
    myMethod : function(parm) { console.log(parm); }
};
 
console.log(someObj.myDatum);
someObj.myMethod('Hello, world!');
 
// Firebug console output:
// 42
// Hello, world!
 
anotherObj = {
    numDogs : 2,
    numRoses : 12,
    cookDinner : function () {},
    getNumRoses: function () { console.log('anotherObj - ' + this.numRoses); }
};
 
anotherObj.noItsMyMethod = someObj.myMethod;
 
delete someObj.myMethod;
 
console.log(someObj.myMethod);
anotherObj.noItsMyMethod('Hello yourself!');
 
// undefined
// Hello yourself!
 
whoseMethodIsItReallyObj = {
    numCats : 50,
    numRoses : 13,
    doTheDishes : function () {},
    getNumRoses : function () { console.log('whoseMethodIsItReallyObj - ' + this.numRoses); }
};
 
anotherObj.getNumRoses.call(whoseMethodIsItReallyObj);
 
// anotherObj - 13

This code basically does two things:

  1. Tears someObj's "method" from it and attaches it to anotherObj, from which it can be called as if a "method" of its new home now. (And note that I'm speaking loosely here -- the objects themselves aren't named those, just the reference vars pointing to them.)
  2. Calls a "method" on anotherObj that instead is made to reference whoseMethodIsItReallyObj's members.

Functions are objects in js, and objects in js are just free-floating, unnamed things that bear no permanent relationship to one another.

Programming

Journal Journal: the problem with JavaScript 4

Your average (idiot) programmer, who doesn't like to wrap his/her head around anything new, wants to be able to think about it and work with it just like they do with everything else, i.e. C++/Java/C#-style languages. And JavaScript is only ushering in this Java-ized JavaScript inevitability by offering certain syntactic constructs that support the illusion that it's like that other class of languages. When it's most definitely not.

The solution is to deprecate those constructs. Thereby encouraging programmers to approach the language from a clean slate and actually learn the language and its idioms. Rather than thinking only in Java, say, and then learning some poor-in-effectiveness translation patterns. It's the "when in Rome, ..." principle -- if you program C++ like C with classes, or in C# like you do in Java, or in JavaScript like you do in one of those, you're a retard and a sloth I hope I never have to be on a team with you.

And I'm not talking about doing away with "++" for incrementing for example, altho some people are so anal (like Douglas Crockford) they even pick at that. Borrowing the terseness of the C/C++-style languages is fine. It's certain uses of the "function" statement being legal. And people talking about "methods" in JavaScript, and trying to hammer the square peg of JavaScript's prototypical inheritance into C++/Java/C#'s class-based inheritance model.

That is folly, because there are no classes in JavaScript! Everything is an instance. And there are no methods in JavaScript, because a function's context is not the class or object instance that it was declared to be in, but whatever you specify it (or don't) to be (when you call it)! In fact there aren't even objects in JavaScript, as C++/Java/C# programmers think of them. I.e. it's a totally different beast, and this should be known and accepted from the start, before diving in very deep. (Where "very deep" means "basic usage" by today's standards.)

There aren't even named objects in JavaScript. Think about a class. It has a name. But when you instantiate it, the instantiation itself is not named. What is named is the reference variable referring to it. Same with, say, numbers. An instance of a number, say "10", does not possess a name. But I can set the value of a variable called "numIterations" to it. "10" is not called "numIterations", "numIterations" refers to (an instance of) "10". Since there are no classes in JavaScript and only instances, none of them have names. Even functions, which themselves are just instances of objects (with their value being the code of the function), don't have names in JavaScript. Despite how it may look, coming from another world (like I had).

And in C# parlance, there are no value types in JavaScript, only reference types. That is, an object doesn't store say ints inside itself and then objects via pointer. Everything is stored via pointer. So an object in JavaScript is actually, merely, just a map or dictionary or whatever you want to call an unordered container of arbitrary (as in capable of holding things of all different types) name-value pairs. You assign these properties by assigning a literal, or an existing reference to a literal.

And when running in a browser, there are no global variables in JavaScript, even when it can look like it to someone from another language. At least, I'm unsure if that's not the case with JavaScript in other environments. But for the time being I don't care as I'm only working with it in browsers. As an analogy, I'm in America and have learned (mostly!) to effectively converse in English as it's used in America, and won't worry too much about using it properly in the context of the U.K. until such time as I find myself moved there.

And then there are closures, where the scoping behavior that C++/Java/C# programmers are used to is, from that perspective, extended. And not with a language keyword, because it's not something unusual or extra in JavaScript, any more than C++ would require explicitly typing in some code at the end of a scope (beyond typing the closing brace) to get the language's feature of automatic destruction invoked.

I.e. the reference point for (using) a language is itself, and not some other language.

User Journal

Journal Journal: AT&T Blocking Gmail?

AT&T appears to be blocking inbound mail from gmail, or at least from the server that is sending my mail. I've had bounces from two sbcglobal.net addresses, but one to a yahoo.com address appears to have gone through with no problem.

Anyone else have this problem?

Lord of the Rings

Journal Journal: [Music][Beloved] I Will Not Forget You


        I remember the nights I watched as you lay sleeping
        Your body gripped by some far away dream
        Well I was so scared and so in love then
        And so lost in all of you that I had seen
        But no one ever talked in the darkness
        No voice ever added fuel to the fire
        No light ever shone in the doorway
        Deep in the hollow of earthly desires
        But if in some dream there was brightness
        If in some memory some sort of sign
        And flesh be revived in the shadows
        Blessed our bodies would lay so entwined

        And I will, oh I will not forget you
        Nor will I ever let you go
        I will, oh I will not forget you

        I remember how you left in the morning at daybreak
        So silent you stole from my bed
        To go back to the one who possesses your soul
        And I back to the life that I dread.
        So I ran like the wind to the water
        Please don't leave me again I cried
        And I threw bitter tears at the ocean
        But all that came back was the tide...

        And I will, oh I will not forget you
        Nor will I ever let you go
        I will, oh I will not forget you

        And I will, oh I will not forget you
        Nor will I ever let you go
        I will, oh I will not forget you

        Ohhhhhhh...
        I will, oh I will not forget you
        Nor will I ever let you go
        I will, oh I will not forget you
        Nor will I ever let you go
        I will, oh I will not forget you...

                                -- Sarah McLachlan

Cuimhneoidh mé ort go deo, a mhuirnín.

Displays

Journal Journal: it's a tablet's world 5

Last weekend I upgraded to IE9. This weekend I downgraded back to IE8. Maybe I've been living under a rock or something but I hadn't heard. The way fonts are being rendered is undergoing a change on computing devices. And it's being driven by the tiny pixel sizes of current and future portables.

When I bought my Vista system mid-2009, all the fonts looked blurry, and I had to discover that they added something called "ClearType". Altho the setting to turn it off is buried more in Windows 6.0 than it is in 6.1 like I have at work, at least it's a simple switch on Vista, whereas on Win7 you have to click Next thru a bunch of steps of a tuning wizard even to just turn it off. I don't think MS really wants the user to.

Similarly with IE. IE8 was coded to be a rogue app in the sense that it ignores the OS-level setting for this and provides an "Always use ClearType for HTML" checkbox in Internet Options. Apparently IE9 dispensed completely with allowing the user to turn this new rendering mode off.

Some kind programmer made a DLL that hooks into the new rendering and alters how it's called so that ClearType is not used. But MS added another twist. It's called "subpixel rendering". Basically what was happening is thusly.

IE9 always wants to call some new DirectWrite API, as opposed to GDI+, for text rendering. I think it's for one largely because GDI+ is processed by the CPU and the future is web page rendering being processed by the GPU. The call into DirectWrite is altered so that the result does not have all the color-fringing of ClearType's poor attempt at anti-aliasing. But characters are still rendered with the spacing as if those extra fractional widths were there.

So the result was tons of web pages with visually randomly distributed gaps and squeezed spacings, making it look even worse than MS Word. That word processor introduces an extra space between words as needed to make a line of text on screen approximate where it will end up on the printed page. But in the browser I was getting (with the hack added) different spacings between words and letters, and it was just too distracting trying to read something and constantly having the flow of information absorption interrupted by initially not noticing for example that a word had ended.

Here's the other reason for wanting to migrate us to the newer I guess vector-based font renderer and off the pixel-based one. We're supposedly entering "the post-PC era". I don't own a "smartphone" yet but my understanding is that for web sites where they don't have or you don't use a special, different mobile version, everything's too small to use as is so you have to zoom in a bunch. But traditionally this can cause text to be re-flowed differently, as it's rounded to the nearest suitable pixel size for the font in use, and can "break" layouts.

So it seems the idea is, let's assume that most LCD screens are physical construction-wise laid out a certain way (and I guess furthermore that no one uses CRT's anymore), and to smooth out the jaggies we'll turn on just the red subpixel to the right of this "black pixel" here and a blue or green subpixel to the left of this one etc. I noticed also and IIRC read that it's intentional that another purpose was to not make the difference in contrast between bolded and unbolded text so "harsh".

So what went wrong for me, as far as this new rendering in general, similar to so many others who were bitching about this on a bunch of Windows-related forums? First of all, I get headaches from bright screens. So I set mine very low. ClearType is like a haze over all the text, like in the original Star Trek series when the camera was on a close-up of a pretty woman's face. Not blurring it so much as smearing it, and reducing perceived and actual contrast.

Secondly, I've always preferred more of a .30 dot pitch than anything smaller. So for example 1024 x 768 on the 15" CRT's at my first job (and I think I even used the "Large Fonts" Win95 setting then), 1152 x 864 on my super-expensive old 17" NEC CRT, 1280 x 1024 on my cheapo 19" Samsung LCD, and 1920 x 1200 on my somewhat-expensive Dell 27". I.e. I like relatively big pixels, and am more satisfied with a text display the more sharp and contrasty the dots and lines are.

But this is an older-school monitor, a kind you prolly can't get anymore. Not only are the 16:10's becoming less available (so it's 16:9's 1920 x 1080 now), but they're also coming in smaller and smaller diagonal widths, down to 21.5" I see from a quick search. And pixel sizes are smaller still on notebooks and netbooks, and presumably tablets and phones. It's rumored that next year's Apple tablet (the iPad 3) will have a 9.7" display at 2048 x 1536. That's less than a .10 dot pitch!

And I think things will keep going that way. We prolly have the technology and an emerging affordably of much higher resolution screens than what we've had before. It wasn't that long ago when the "full 1080P" TV sets were a significant premium over the standard LCD's and plasmas of the time.

Historically when you bought an LCD computer monitor, you looked at its "native resolution", and ran it in that mode so that your text was sharp and you didn't have pixel approximating going on. I think it's understood by many now, and that I'm just late to the party, that that is going away, and in the near future we'll have such high resolution displays that rendering single pixel wide curves to make up characters would result in them being too tiny and too delicate and faint to read sentences of them comfortably. Intelligently-applied "slop" is the future in font rendering.

Apparently Apple was the first to go this way. And MS resisted awhile, until they jammed some of this into their new Windows forms programming technology, WPF. (To Win32 API programmers, think "owner draw", for everything! Or for Java devs, Swing (vs. the prior AWT).) I hadn't heard at the time, cuz I haven't taken on learning WPF yet (and maybe never will), but apparently tons of people complained about the blurry fonts in WPF and MS did something to scale that back. But it looks like with IE9 they aren't budging. And I would expect the same from Windows 8.

And I read that this font blurring is in Chrome's nightly builds, to be coming soon. Afterall, Google doesn't want to be left behind on precise positioning and possibly hardware rendering in the browser. And the programmer who made the DLL for IE9 ported it from someone who made a plugin for Firefox to turn that shit off in whatever version Mozilla started puttting it in. It will be in OS's, browsers, they're the default fonts in the Office 2007 apps I've noticed, it will be everywhere.

Unfortunately I think that means I'll have to abandon this big beautiful monitor, prolly prematurely in its usable lifetime, and buy some super hi-res replacement, to be able to run Win8 and IE10 in 2013 I guess. And then use the OS setting of 120 DPI (up from the Windows default of 96 DPI (cf. Mac's standard of 72 DPI)) to get the text big enough for my liking and then 47-year-old eyes.

p.s. http://uncleartype.com/ has an image showing the problem. And altho I rolled back much of the workarounds on that guy's Help page when I rolled back my IE version, I decided to keep the font substitution technique there for the "Segoe UI" (system) font. MS content related web sites now seem to be specifying a CSS font-family of "Segoe UI, Verdana, Arial, Sans Serif" IIRC, so I chose Verdana instead of his choice of Arial. So now my dir listings in Windows Explorer and the Start Menu and almost everywhere in the OS itself are sharp, and then I set the Office apps to default to that from within them, and Notepad to Lucida Console, and Visual Studio 2010's code editor to Courier New. Blessed crispness.

Slashdot Top Deals

Biology grows on you.

Working...