Installing Acrobat Reader 8 on Windows Vista

Vista, you continue to disappoint like the bastard stepchild of XP you are. Perhaps this is Adobe’s fault, perhaps Vista… either way I came across another issue today using Windows Vista. When I downloaded the Adobe Acrobat Reader 8 for Vista file and ran the .exe, it extracted to a temporary directory and after that, I get this error message:


“The Temp folder is on a drive that is full or inaccessible. Free up space on the drive or verify that you have write permission the the Temp folder.”

Umm, what? I double checked everything I could. I have full permissions on the entire drive and the Temp folder. Cleared out the Temp folder to make it empty, etc, etc, etc. Here is the only workaround I could figure out. When the error message comes up Navigate to the \Users folder on the drive that Vista is installed on. Then \Username\AppData\LocalLow\Netopsystems\temp. (Note: If you can’t see the AppData folder, click Organize on the toolbar, then Folder and Search Options, click the view tab then choose the option that says ‘Show hidden files and folders’, or type it into the address bar directly) Copy the Acrobat Reader 8.0 folder to your desktop. Now you can click OK to the above dialog which will delete the folder we just copied.

Now on the desktop open the folder we just copied and run Setup. That’s it, should proceed through installation without any errors. You can then delete the copied folder on your desktop when installation is complete. Hopefully this will help some people out who have had the same problem.

Automated Phone Systems

I have a question. Why does voice recognition still suck? If they can’t make it work, then they shouldn’t make it all. Everybody has their own unique voice and recognizing words among the many accents that exist is a difficult problem for computers. So why then do companies insist on trying to use them when we all know they are completely worthless? Unfortunately we can’t have access to the internet and a computer no matter where we are, so at times we are forced to use these shitty phone systems. Let’s say I’m in Los Angeles and decide to see a movie. On a computer, finding out what is playing where and when would be no more than a two minute process. But no, instead I dial 1-800-Fandango and get this bitch on the phone who can’t understand common English. Here is an example of how my conversation with “her” goes:

1-800-Fandango
[One minute clip about some special offer that I don't give a shit about]
Do you want to look in or around Brighton?
(Where did she come up with Brighton)
No
Please say a city and state
Los Angeles, California
You said, Ogden… If that’s not right say go back.
GO BACK!
Please say a city and state or enter a zip code
(Thinking… I don’t know the zip code… I don’t live there)
I’m sorry I didn’t hear you…
Are you still there?
YES
Please say a city and state or enter a theater express code using your telephone key pad.
(As opposed to my computer keyboard that plugs into my phone? NO SHIT!)
L O S A N G E L E S , C A L I F O R N I A
OK, Los Angeles

Then she proceeds to ask me more questions to which she can’t understand my response. And so on and so forth until 43 minutes later when I get the movie times and no longer want to see a movie. No matter how clear or how much I annunciate, it’s hit or miss with Fandango. I really hate you Fandango.

Vista… Don’t Try to Copy and Paste >:-O

So I got my hands on the final release of Windows Vista and all was good in the computerland. Today I was doing a little housecleaning on the computer, moving files here and there, deleting some crap and to my surprise, Vista gave me the following when trying to copy a file:

Error 0×800705AD. Ohh, well of course…. I should have known error 0×800705AD means the user tried to COPY AND PASTE. Are you shitting me?! Insufficient quota? WTF are you talking about Vista. First let’s check that I have enough disk space:

Ok, now by my calculations 413 MBs < 22.8 GBs. I can normally figure out almost any computer related problem. I Googled and scoured the net and found that some people are having this problem as well, but I can’t find a solution. The Microsoft Knowledgebase also has nothing regarding it either. I also tried turning on Quota Management for the disk, taking full ownership of the file, etc, etc, etc… this one has me stumped. When I copy the file via the command prompt there is no problem:

Vista, you clearly suck and have a problem copying large files. Did Microsoft overlook this big an issue? I highly doubt it… if anyone has any insight here I’d appreciate some feedback (I’m not using RC1 or Beta2, I have the final Build 6000). I don’t get this error for other files that are smaller in size… I’m guessing somewhere around the 400mbs size it starts to occur.

These small pictures on the screen…

are called icons.

Learn how to use a computer:

My Apology to WordPress

So when I started this thing I figured I’d post more often… but look what has happened. I’ve forgotten you WordPress, and I’m sorry. I’ve been rather pre-occupied with work lately, so much so that I haven’t even taken the time to write a single little blurb… for almost half a year! What’s the matter with me? So give me a second chance will you? Let me show you that I’m dedicated to our relationship and will make an effort to make our lives better… together. I promise you at least one post a week, sound good? I just can’t commit to more than that at the moment, but I’ll try my best… for us.

Let’s see, what has happened in the past four months or so:
- September: Was in Boston for about three weeks
- October: ? Hmm… what the hell did I do in October?
- November: Made a last minute decision to visit the moms in the O.C. for Thanksgiving
- December: Note to self, need to buy Christmas presents

Oh, and recently finished a redesign of www.polskyarchitects.com. Nothing too fancy, just basic HTML and a lil bit of JavaScript. Anyways, more posts to come.

List of Transformers Announced

I can’t f’in wait for Transformers to come out next year. I watched the cartoon when I was a kid and had the toys. I signed up for email updates on the website and got an email last night saying they would be announcing the characters in the film today at 11:00 am PST. Well, here they are straight from the live video feed…

Autobots:
-Optimus Prime
-Bumble Bee
-Jazz
-Ratchet
-Ironhide

Decepticons:
-Megatron
-Starscream
-Brawl
-Bonecrusher
-Barricade
-Scorponok
-Frenzy
-Blackout

Application Launchers (OSX Dock in Windows)

It’s been quite some time since I have made a post. I’ve thought about posting from time to time but have just been so busy with work that I haven’t gotten around to it lately. In my spare time I end up playing Xbox 360 or watching Sopranos (on the fourth season now)…

I just noticed some comments on my Dell 2007WFP post regarding the transparent application launcher at the top of my screenshot. These applications are known as ‘Docks’ and basically they mimic the Dock in OSX. There are a number of different programs that you can use that achieve this effect. Here are a few off the top of my head:
- RocketDock
- ObjectDock
- YzDock
- RKLauncher

Here is a video of ObjectDock in action:

I personally use RocketDock, but that is just my personal preference. They all achieve basically the same effect. Most will let you customize them to your liking. They all come with some default icons, but to customize them to your own liking I suggest you download icons for your applications at either wincustomize.org (under ObjectDock section) or deviantart.com (Customization->Icons->Dock Icons). Some of the docks let you add ‘docklets’ which are little plug-ins (such as weather display) and you can find those at dockex.com.

Hope this helps those of you looking to customize Windows a bit.

Access Email Domain Query

Working for an email database company, I spend quite a bit of time using Microsoft Access and over the past three years I’ve learned quite a few useful tricks. One such query I run from time to time is stripping out the domain for an email address. Lets say you have a field in Microsoft Access called EMAIL and you want to strip the domain out from that, you could run the following query:

SELECT EMAIL, Right([EMAIL],Len([EMAIL])-InStr([EMAIL],"@")) as Domain
FROM TableName

That’s it, pretty simple. Read up on the Right() function here. In our case, the first parameter in the function will be the [EMAIL] field. The second parameter is doing two things, first we take the length of the [EMAIL] string by calling the Len() function and then subtract the position of the “@” sign in the email address.
So, for user@hotmail.com the query would literally translate as follows:

  • Right(“user@hotmail.com”, Len(“user@hotmail.com”)-InStr(“user@hotmail.com”,”@”))
  • Right(“user@hotmail.com”,16-5)
  • Right(“user@hotmail.com,11)
  • hotmail.com (hotmail.com is returned because they are the 11 rightmost characters in “user@hotmail.com”)

Dell 2007WFP (sweeeeeet…)

Well, it’s been a long time coming but I finally have a computer monitor that fits me perfectly. I’ve had a 17″ normal CRT monitor since my college days (it’s somewhere around 4-5 years old) and while there is nothing wrong with it… I had no clue what I was missing. The 2007WFP boasts a 20″ wide-screen and has a native resolution of 1680X1050. I’m telling you, my desktop never looked so damn sexy. My 17″ monitor I normally run at 1280X1024, the new 2007WFP is about a 35% increase in desktop space. That may not seem like much, but looking at my two monitors side-by-side, there is no comparison. In fact, now when I look at my 17″ CRT the thing looks slightly blurred and I wonder how I ever used the thing. Typical users (and by typical I mean old people who can’t read small text) of a 17″ monitor probably have a 1024X768, now in their case the increase in desktop space is more than double.

First thing’s first, don’t buy a monitor from Dell unless they are offering discounts or you have a coupon. Dell regularly has sales on their website and if you are in the market for a monitor, wait until Dell has theirs on sale. My monitor was ordered on a Tuesday night (at about 11pm), so I figured my order would take a day or two to ship, and I didn’t pay extra, so the Dell website said 3-5 business days for shipping. To my astonishment the delivery man was knocking on my door Thursday at about 5:30pm. I didn’t expect it until the weekend or beginning of the following week, so that was a great surprise. Anyways, I’ll tell the rest of the story with some pictures (unfortunately they were taken on my old 2 megapixel digital camera).

Inside the box:

The stand on top:

After taking the stand out:

Oh yes Dell, you know how to excite a geek:

After following the very complicated instructions:

*Drool:

The ol’ CRT gets a new home:

Yes, I’m a computer geek:

Unfortunately my camera does not do the monitor justice, it is bright, sharp and damn sexy. In fact right now (I started this post a week ago and never got around to finishing it) I’m no longer using my CRT, I connect to my laptop via RealVNC. Oh, I should mention that the monitor does support more than one input method (VGA, S-Video, Composite, and DVI-D), but I’d rather not have to hit the switch input button everytime I want to look at my laptop. I was a little bit hesitant about choosing this monitor, but I don’t have a single complaint, I can never go back to old clunky CRTs.

And now I have all this space:

Simple AJAX

For those of you that don’t know what AJAX is, you probably want to skip right over this. Anyone else who has heard of AJAX, or maybe is a little overwhelmed by how to use it, let me see if I can make your life easier. I recently wanted to implement some AJAX coding on a website, but I was a little bit annoyed at how the XMLHttpRequest implementation worked. It didn’t really provide me with the flexibility I wanted and frankly, was overkill for what I was doing.

Let us say that you have code somewhere on a webpage that does a query to a datasource based on a URL variable (my examples are in Cold Fusion, but you should get the idea). The below could be a section of code on any page.

home.cfm
<cfif isDefined("URL.variable")>
<cfquery name="exampleQuery">
SELECT *
FROM table
WHERE field = #URL.variable#
</cfquery>
<cfoutput query="
exampleQuery">
#exampleQuery.field1#
#exampleQuery.field2#
...
</cfoutput>
</cfif>

The flaw in this design is that in order to pull new information from your datasource, you need to wait for the entire webpage to reload. One of the advantages in using an AJAX-like framework is that you reload only what you need to. Let’s look at the above code and see how we can improve page performance by only reloading the section of code above. The first thing to do is remove the code that pulls the information and displays it and place it in a new page and between a <div> tag. So the code above could be removed from home.cfm and placed in a new page:

getData.cfm
<div id="QueryResult">

</div>

After moving this data we need a placeholder where the data will be dynamically inserted back in.

home.cfm
<div id="QueryContent"></div>

The trick to getting the browser to request the data and reload it involves a bit of javascript and the use of an <iframe> which the user cannot see. The javascript sends a request to the hidden <iframe> and then a little more javascript updates the content on home.cfm. First, let’s add the <iframe> and javascript.

home.cfm
<script type="text/javascript">
function getData(urlVar){
document.getElementById('hiddenFrame').src = 'getData.cfm?variable=' +
urlVar;
}
</script>
<iframe name="hiddenFrame" id="hiddenFrame" src="" width="0" height="0" frameborder="0"></iframe>
<div id="QueryContent"></div>

The function above points the hidden <iframe> to the page we created which gets the data we need and displays it to the user. The final and most important step is to add some script to the page which retreives our data.

getData.cfm
<script type="text/javascript">
function UpdateParent(parentContent, content){
var pd = parent.document;
pd.getElementById(parentContent).innerHTML = document.getElementById(content).innerHTML;
}
</script>
<div id="QueryResult">

</div>
<script type="text/javascript">
UpdateParent('QueryContent','QueryResult');
</script>

The javascript above in UpdateParent is rather simple and just swaps out the content between the <div> tag hidden in the <iframe> and the <div> tag on home.cfm. What is really happening is the hidden <iframe> is doing all the work, then the javascript at the bottom of getData.cfm simply updates the home.cfm page which the user is viewing. The final step would be to replace your links with the javascript call on home.cfm. For example, instead of <a href=”home.cfm?variable=1″>Load Data 1</a> you would have <a href=”javascript:getData(‘1′);”>Load Data 1</a>

It should be mentioned that this is not true AJAX as it does not present you with any status as to the current state of your request (ie if the query has finished, or is still running). Also, when debugging you will have to change the <iframe> to a visible height and width so you can see any error messages. Unless you are loading a incredibly large amount of data, this method should work just fine. When the user clicks the link, their browser will still display an animated icon indicating that data is being loaded. I have found that I am able to drastically increase performance by using this method and it provides me with a great deal of flexibility. Your getData.cfm page could be a template that you simply populate based on a query, which ultimately saves time waiting for pages to reload. The faster our users get what they want, they happier they are.