Free e-File and Finding that Elusive PIN

Today I filed taxes by myself for the first time. Actually, while I am 99% finished with my return, I only filed for an extension to let me focus on some school tests this week. My taxes are unusually complicated, and so I had help from family; nevertheless, I found the whole experience unnecessarily convoluted – even more than I had expected. I now very tangibly understand the incredible amount of resources wasted in tax preparation. And by wasted, I don’t mean “spent on a less worthy cause,” but utterly lost to heat: the money and manpower used in preparing taxes goes nowhere. It does not end up in government programs, and while it provides an enormous amount of jobs to educated, intelligent citizens (CPA’s, etc), I feel that these hundreds of thousands of highly-skilled man-hours could be so much better spent.

Wow. Please excuse that rant: I try not to do this…

Anyhow, here is some surprisingly hard to find tax-filing-related tips I found rather useful:

Electric Filing PIN

To finding your Electronic Filing PIN (which you will need to e-file anywhere), you must to this page on the IRS website, fill out the form, and there you go!

https://www.freefilefillableforms.com/FFA/FreeFileForms.htm

Free File Fillable Forms offers free e-filing, but is only sufficient for VERY simple taxes.
Cool Hint: However, if you need to file an extension, and don’t want to dish out ten bucks to TurboTax, you can use Free File Fillable Forms for the extension, then go ahead and file with TurboTax later!

jQuery and Frames

Do NOT use firebug with this page! (It may crash your browser.)


Hey all! I just noticed that I’ve been getting a lot of traffic from a post I made WAY back in the day at http://simple.procoding.net/2008/03/21/how-to-access-iframe-in-jquery/, and since I’ve changed this site, everybody was hitting 404’s. This a post of what used to be here:

Frame from the same domain as parent.

Not yet loaded…

Frame from a different domain as parent (lifeinnovative).

Not yet loaded…


Browsers follow similar rules with iframes as they do with xml_http_requests: that is, it blocks cross-domain access.

For example, if I am running the above script from the page: http://www.liveintensely.com/parent.html, I can read and write to the frame which’ source is http://www.liveintensely.com/iframe.html. HOWEVER, if the frame’s source is on a different domain, like http://lifeinnovative.com, javascript is denied both read and write access to the frame.

Check out the above example, and (simplified) source code below:

[html] <html> <head> <title>jQuery and Frames</title> <script type="text/javascript" src="jquery.js"></script> <script type="text/javascript"> jQuery( function() { $(‘#frame1’).load( function(){ $(this.contentDocument).find(‘body’).html(‘This frame was modified with jQuery! Yay!!!’) }); $(‘#frame2’).load( function(){ $(this.contentDocument).find(‘body’).html(‘This frame was modified with jQuery! Yay!!!’) }); }); </script> </head> <body> <h2>jQuery and Frames</h2> <h4>Frame from the <i>same</i> domain as parent.</h4> <iframe id="frame1" src="iframe.html"></iframe> <h4>Frame from a <i>different</i> domain as parent.</h4> <iframe id="frame2" src="http://lifeinnovative.com/frame_for_liveintensely_demo.html"></iframe> </body> </html> [/html]

My Little Enhancement to iFixPNG

I was just digging through some old code, and came across a simple modification I made some time ago to jQuery’s iFixPNG plugin by Khurshid. I added the ability to pass AlphaImageLoader’s sizingMethod parameter to the .ifixpng() method, which lets the user optionally specify which mode (‘scale’, ‘image’ or ‘crop’) the filter will use. Specifying the ‘scale’ mode can be especially useful if you have an element with a single-axis repeating background image — with css something like:
Select Code
1
2
3
4
5
6
div.horizontal-bar {
    background-image: url('vertical-gradient.png');
    background-repeat: repeat-x;
    height: 10px;
    width: 100%;
}
which produces something like:
Keeping in mind that the background image is only 1px wide, stretching the image to the element’s full width using IE’s AlphaImageLoader (via iFixPNG) produces an identical result to css repeat-x.
Select Code
1
$('div.horizontal-bar').ifixpng('scale');
Here’s the plugin:
Select Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
/*
 * jQuery ifixpng plugin
 * (previously known as pngfix)
 * Version 2.1  (23/04/2008)
 * @requires jQuery v1.1.3 or above
 *
 * Examples at: http://jquery.khurshid.com
 * Copyright (c) 2007 Kush M.
 * Dual licensed under the MIT and GPL licenses:
 * http://www.opensource.org/licenses/mit-license.php
 * http://www.gnu.org/licenses/gpl.html
 * 
 * Modified by Mike Marcacci &lt;http://liveintensely.com&gt; to include sizingMethod parameter
 * 
 */
 
 /**
  *
  * @example
  *
  * optional if location of pixel.gif if different to default which is images/pixel.gif
  * $.ifixpng('media/pixel.gif');
  *
  * $('img[@src$=.png], #panel').ifixpng();
  *
  * @apply hack to all png images and #panel which icluded png img in its css
  *
  * @name ifixpng
  * @type jQuery
  * @cat Plugins/Image
  * @return jQuery
  * @author jQuery Community
  */
 
(function($) {

    /**
     * helper variables and function
     */
    $.ifixpng = function(customPixel) {
        $.ifixpng.pixel = customPixel;
    };
    
    $.ifixpng.getPixel = function() {
        return $.ifixpng.pixel || '/images/pixel.gif';
    };
    
    var hack = {
        ltie7  : $.browser.msie &amp;&amp; $.browser.version &lt; 7,
        filter : function(src, sizingMethod) {
            return &quot;progid:DXImageTransform.Microsoft.AlphaImageLoader(enabled=true,sizingMethod=&quot; + sizingMethod + &quot;,src='&quot; + src + &quot;')&quot;;
        }
    };
    
    /**
     * Applies ie png hack to selected dom elements
     *
     * $('img[@src$=.png]').ifixpng();
     * @desc apply hack to all images with png extensions
     *
     * $('#panel, img[@src$=.png]').ifixpng();
     * @desc apply hack to element #panel and all images with png extensions
     *
     * @name ifixpng
     */
     
    $.fn.ifixpng = hack.ltie7 ? function(sizingMethod) {
        sizingMethod = sizingMethod || 'crop'; // can be 'crop', 'image', or 'scale'
        return this.each(function() {
            var $$ = $(this);
            // in case rewriting urls
            var base = $('base').attr('href');
            if (base) {
                // remove anything after the last '/'
                base = base.replace(/\/[^\/]+$/,'/');
            }
            if ($$.is('img') || $$.is('input')) { // hack image tags present in dom
                if ($$.attr('src')) {
                    if ($$.attr('src').match(/.*\.png([?].*)?$/i)) { // make sure it is png image
                        // use source tag value if set 
                        var source = (base &amp;&amp; $$.attr('src').search(/^(\/|http:)/i)) ? base + $$.attr('src') : $$.attr('src');
                        // apply filter
                        $$.css({filter:hack.filter(source, sizingMethod), width:$$.width(), height:$$.height()})
                          .attr({src:$.ifixpng.getPixel()})
                          .positionFix();
                    }
                }
            } else { // hack png css properties present inside css
                var image = $$.css('backgroundImage');
                if (image.match(/^url\([&quot;']?(.*\.png([?].*)?)[&quot;']?\)$/i)) {
                    image = RegExp.$1;
                    image = (base &amp;&amp; image.substring(0,1)!='/') ? base + image : image;
                    $$.css({backgroundImage:'none', filter:hack.filter(image, sizingMethod)})
                      .children().children().positionFix();
                }
            }
        });
    } : function() { return this; };
    
    /**
     * Removes any png hack that may have been applied previously
     *
     * $('img[@src$=.png]').iunfixpng();
     * @desc revert hack on all images with png extensions
     *
     * $('#panel, img[@src$=.png]').iunfixpng();
     * @desc revert hack on element #panel and all images with png extensions
     *
     * @name iunfixpng
     */
     
    $.fn.iunfixpng = hack.ltie7 ? function() {
        return this.each(function() {
            var $$ = $(this);
            var src = $$.css('filter');
            if (src.match(/src=[&quot;']?(.*\.png([?].*)?)[&quot;']?/i)) { // get img source from filter
                src = RegExp.$1;
                if ($$.is('img') || $$.is('input')) {
                    $$.attr({src:src}).css({filter:''});
                } else {
                    $$.css({filter:'', background:'url('+src+')'});
                }
            }
        });
    } : function() { return this; };
    
    /**
     * positions selected item relatively
     */
     
    $.fn.positionFix = function() {
        return this.each(function() {
            var $$ = $(this);
            var position = $$.css('position');
            if (position != 'absolute' &amp;&amp; position != 'relative') {
                $$.css({position:'relative'});
            }
        });
    };

})(jQuery);

Hello world!

Hello, World! Welcome to LiveIntensely.com. My name is Mike Marcacci, and this is my blog. While I’m not new to blogs (I’m actually a reasonably accomplished web developer, with many projects involving blogs), this is my first attempt at a personal blog. That’s right, this is another one of those… I’ll try to keep it at least occasionally useful or informative, and from becoming like the many festering amalgamations of ranting emotion and unsubstantiated literary vomit that plague the increasingly overpopulated blogosphere with high-pulse run-on sentences and abused adjectives. (Please, please, note the irony in that last sentence!)

Anywho… I think I’ll make this short, because nobody likes e-pages full of text. Nonetheless, I feel it’s only appropriate to, in my first post, briefly address the implications of this blog’s name as a product of personal philosophy: live intensely. It sounds pretty simple, and it is. Pardon the chiché, but life is like a handshake: if you don’t commit, it’s limp and gross and YUCK!! Stop! Woof — I hate even thinking about the floppy insult…

ya…

Return top