Archive for the ‘Miscellaneous’ category

As fearless Winhost technical support specialists, we often encounter problems involving web sites that suddenly “broke,” seemingly out of nowhere. The owner of the site opens a support ticket, presents the issue, and invariably concludes their description of the issue with a plaintive variation on “And I haven’t touched the code in 2 years!”

Although by telling us this you may mean to indicate that there must be something wrong on our end, it actually puts up red flags for us that it’s more likely there’s something wrong on your end–because updating your code is absolutely essential to maintaining a functioning website.

Why? Let’s take your operating system as a case study. We’ve all experienced the annoyance of Windows running those automatic updates at night and waking up to find our computer has rebooted and all of our open windows have been unceremoniously closed. But Windows not updating would, ultimately, be even more annoying than waking up to your programs closed.

Windows updates because bugs are constantly being discovered and fixed, exploits are found and patched, new functionality is added, third-party vendors release new, better drivers… the list of “whys” is pretty long. If you never got those updates, what would happen? Your computer might be subject to an attack, you may not be able to take advantage of a new feature offered (like, say, the new, even buggier version of Internet Explorer), or maybe a new program you install won’t run properly because it depends on a service pack update.

As you may know, your Winhost website is actually running on Windows — Windows Server 2008 or 2012, to be specific. On that server are many components that contribute to keeping your website up and running. The two you might be most familiar with are IIS and the .NET framework.

Venture over to our community forum and check out the post on monthly maintenance. We are regularly performing updates, too–just like your desktop Windows OS. So as you can probably deduce by now, our server environment changes regularly. Therefore, what you coded 2 years or even 2 months ago may start acting funny after a while.

As the responsible webmaster we know you are, it’s part of your job to make sure your code keeps up with the changing environment it’s running on. Remember, these are web applications you’ve written. Just like applications on your desktop, updates are crucial to ensuring they function optimally.

Most of the web applications we offer in our App Gallery release regular updates. It is vital that you keep up with the updated versions, because they not only add functionality, they also fix bugs that were discovered. You can avoid your site being rendered nonfunctional by regularly checking for updates.

Some of the applications will alert you to new versions being released–do not ignore these alerts! The same is true for plugins (such as in WordPress), blog themes, etc. Any component of your web application requires monitoring for updates and patches.

However, it’s not just the server environment that changes, and it’s not always bug fixes or exploits that compel updating applications. As your site becomes more popular, or your business grows (which, I think you’ll agree, is a Good Thing), more people are going to be visiting your site. That means that the application you wrote to accommodate 10 users at a time may now be straining under the load of 50+ concurrent users.

You may start noticing more 503 errors, which, understandably, makes you think something is wrong with our servers, when in fact it may just be due to your successful business practices or your scintillating blog posts. Try doing a little gardening–make sure your application is scalable so you can revel in your new found success and popularity error-free.

I hope I’ve convinced you to re-analyze your fear of updating your code. Of course, if you really are experiencing problems with a web application that is updated, scalable and now apparently completely broken due to something on our end, as your friendly Winhost technical support specialists, we’re here and happy to help.

Just be sure to let us know you’ve been touching your code on a regular basis.

We live in a very exciting time for electronic gaming, computers are regularly packing more than 4 cores, video cards have never been bigger or better, and some of the best games of last year had enough content to occupy over 300 hours of your time.

Even more exciting is the power that console systems now offer, it would seem that pretty soon consoles will catch up with desktops, and all of this amazing power will be available for a fraction of the cost that it traditionally was.

Game designers are working to release new titles faster and faster, while simultaneously increasing the available content, improving character dialogue, bringing actual musicians for in game music, and even consulting real military personnel and historians to make sure that every little detail is just right.

Even more impressive is the rate at which games are blending online multiplayer and single player experiences.

It used to be just about fragging your friends or strangers in set matches, Unreal Tournament style, now it is about building communities of people who play in similar ways, trading in game items, dropping in to games to assist each other in co-op campaigns, and of course fragging your friends and strangers Unreal Tournament style.

However, for all of its polish and innovation, there are some games that I find myself thinking about from time to time, and even though Skyrim was a great experience, it has nothing on the lasting appeal of these 3 titles.

Rodent’s Revenge

Rodent’s Revenge is a puzzle type game released in 1991, created by one man Christopher Lee Fraley and distributed in the Microsoft Entertainment Pack, it was an exciting game that had you as a mouse surrounded by deadly cats trying to push blocks to trap the cats, turning them into cheese which you can then eat for additional points.

With 50 levels and only 3 lives, it displayed the kind of difficulty that many older gamers will remember was very common in the 80’s and early 90’s.

I really enjoyed this game for a few reasons, which I will be kind enough to list below.

1. This game is really freaking hard.

Like really dang hard. You only get 3 lives and no continues, and when a cat touches you, you are dead.

Not only are there cats to look out for but there are balls of yarn that will bounce around at random and kill you, sink holes that you can fall into that will trap you until a cat comes around and eats you, and mouse traps that will, predictably, also kill you.

2. You need to be really creative in order to win.

You only have on offensive weapon in the war against the cats that is pushing blocks in order to trap them. No friendly predator missiles or magic shouts, only the ability to linearly move blocks in such a fashion that you protect yourself while herding those dang cats into a single square.

I feel like I should mention that at the higher levels there are immobile blocks that you cannot push, serving to disrupt your plans at the last second and getting you eaten.

3. There is no tutorial!

I remember the first time I played this game I had no instructions and no idea of what to do or what was going on.

There is a help file that explains the finer points of the game, but who reads those anyways?

No, it was up to 5 year old me to learn how to play an excruciatingly hard puzzle game trial and error style until I earned success.

That seemed to be a running theme of early games; good players were not made, but evolved by survival of the fittest until only the strong and skilled remained.

Life

The real title of this game is “Conway’s Game of Life”, but I have only ever known it as Life.

This is a really interesting game that doesn’t even feel like a game at first.

You have a huge 2 dimensional grid and you place squares until you are ready to start the game and you press start.

After you press start your participation in the game is pretty much over, you watch your squares (which represent members of a population) live, reproduce, and die.

What I love about this game now and I didn’t understand when I was young is that this game is basically math.

The rules for the game are as follows:

Any live cell with fewer than two live neighbors dies, as if caused by under-population.

Any live cell with two or three live neighbors lives on to the next generation.

Any live cell with more than three live neighbors dies, as if by overcrowding.

Any dead cell with exactly three live neighbors becomes a live cell, as if by reproduction.

And with these very simply rules you can create a staggering amount of combinations doing all sorts of things, like the “Glider” which reproduces itself while simultaneously traveling across the map.

There are many known types of Oscillating patterns like the “Pulsar” which repeats an interesting pattern and will never fully die out.

There are many subtle yet captivating elements found in this game, from a simple smattering of pixels you can create infinite combinations and patterns’, watching complex systems emerge from the chaos is simple and satisfying, and you don’t need to be a mathematical genius to appreciate the game’s simple beauty.

SkiFree

SkiFree shipped with my very first desktop computer, a Packard Bell running Windows 3.1 for WorkGroups, so it will always be very dear to my heart for one simple reason.

It was the first game that I was actually afraid of.

SkiFree follows the trials and tribulations of an anonymous skier on his last journey down the mountain, depending on which direction you choose initially the game’s play style might be a tight series of slaloms, where you race for time, or an open expanse of mountain filled with ramps that you can hit for style points.

In either case, once you reach the end of the course the game gives you a score but does not stop.

Why? It is never explained, but I always imagined your skiing hero had some hot babes down at the shack that he really needed to get to, so he couldn’t stop to accept his prize in the competition that he was apparently a part of.

However you will never make it to the bottom of the hill, there will never be any hot babes.

There will be however, an abominable snowman.

Once you cross a certain distance after the finish line the snow monsters will emerge and will chase you relentlessly, if you hit a tree, fall down, or do anything other than ski as fast as your tiny pixel skis will take you, you will be caught by the snow monster and he will eat you.

After the feast he will pick his teeth with one of your bones and jump up and down on the screen in such a way as to mock you for even trying.

I hated that monster but I loved the game.

All of these titles have a place in my heart and even though my current PC is four hundred quadrillion times better than the machines they were designed for I continue to play them.

I appreciate their charm even though they do not have 32 Bit True Color, or any Anti-Aliasing options, no multiplayer, and no plot or “end” in the traditional sense.

I made up that back story about the skier, the game itself never gives you even the slightest hint for why there is snow monster on the mountain or why you are skiing, but I think that makes it even more fun.

These are games that never took themselves too seriously and got right to the point, they were about having fun and occupying your time.

More so than anything these games are truly unique, which is why decades later they are still considered fun enough to write about.

Sitting here this morning, as I run through my daily routines of reviewing sales emails, marketing proposals, SEO reports, and general news, I ran across something that made me stop and pause for a good minute. It was a talk by Steve Jobs from 1983.

This was pre-Macintosh Steve Jobs. This was still the bright eyed Steve Jobs that had yet to be “removed from his managerial duties” by the board of his own company only to come back as it’s long lost savior almost a decade later. A Steve Jobs that had yet to earn the labels of “Futurist” or “Visionary.” This was just Steve Job, a 28 year old kid talking to design conference… yes a design conference.

See, even back in 1983 Jobs saw that design was something that needed to be given equal attention when working with technology. It seems something obvious now, but if you think about technology in 1983, design was the last thing on anyone’s mind. PC computers were large briefcase size things that were gray or tan in color.

Even in his talk Steve Jobs says “If you’ve looked at computers, they look like garbage. All the great product designers are off designing automobiles or they’re off designing buildings. But, hardly any of them are off designing computers.” Even in 1983 Steve was looking to change that.

After giving this a listen, I started thinking about 1983. I was 7 years old and already playing with my Dad’s new Commodore 64 typing out BASIC commands to play a game. And after some digging back, I noticed that 1983 was a big year for technology and the internet:

Microsoft Word is first released, originally called Multi-Tool word

Microsoft first announces “Windows” an interface manager project. Doesn’t get released until 1985

Lotus 1-2-3 is released for IBM-PC compatible computers

ARPANET officially changes to use the Internet Protocol, creating the Internet

Paul Mockapetris proposes a Domain Name System which became the DNS architecture of today

Compaq introduced first PC clone

So, an argument can be made that 1983 was a hallmark year for technology and the internet as we know it today. But yet, with personal computing and the internet still in their infancies, Jobs could see what was about to come and where these things could lead.

Listening to the full talk, plus Q&A after, you can hear Jobs talk about ideas and concepts that can be traced forward 25 years later into truths about how we use technology today and every day products like tablet computers. At the end of the Q&A, Jobs even addresses language and voice recognition, which has only now been adopted by the general public with Siri.

So as I’m typing this we have reached the 1 year anniversary, if you will, of Steve Jobs’ passing. For all his flaws (and there were many) it is hard to deny his ability to see past technical limitations and look forward to what he knew was possible.

I was never an “Apple Fan Boy” growing up. In fact I hated Macintosh computers with a passion all through High School and College only using them when all other options had failed. But I did respect how Jobs saw the world in his eyes and was able to rally people around that vision. Listening to this talk only adds to that respect.

Web Deploy is a fantastic tool to publish your web site to a remote web server. It’s easy, quick, secure, and configurable. However, Web Deploy in conjunction with Visual Studio or in conjunction with MSBuild can alter the account’s permission on the production web server. This is by design. Microsoft believes that a web site is more secure when the web application itself is set to read-only permission. But a lot of functionality is lost with read-only permissions.

First off, let me explain the nature of the problem. Every web site that is hosted on an IIS server will have a specific user to authenticate against the server. The Account Control List will typically have an Anonymous ASPNet IUSR. This is standard for all default web sites. The server does not have to use this user, you can create your own user for the web application to run correctly but let’s stay with the “standard” setup.

Typically the Anonymous ASPNet IUSR will have Read and Write permission to the root and all of the files and subfolders under it. But when you use Web Deploy with Visual Studio or use the MSDeploy command, Microsoft Web Deploy will alter the permission of your Anonymous ASPNet IUSR to have only Read permission. That means any ASP.Net functionality that will perform an upload, file creation, or file modification will fail due to lack of Write permission.

To be honest, Web Deploy itself does not technically alter the permission on the server but one of the properties in MSBuild. So if you use Web Matrix in conjunction with Web Deploy, this is not an issue because Web Matrix does not use MSBuild; Visual Studio does use MSBuild, so with Visual Studio and Web Deploy you can get your permissions skewed.

It is worth noting that if you web deploy your web application to a subfolder this may not be an issue. The reason being is the “Inheritance” feature with NTFS. If the root folder has Read and Write permission, Inheritance will take precedence, and when Web Deploy tries to alter the permission on the subfolder level, the NTFS inherited properties on the root will revert it back to Read and Write. If you decide to Web Deploy directly on the root, then the root folder permission will be altered to Read-only permission and that will get inherited down to the subfolders within that root.

Confusing, I know, but stick with me here. So what is the solution?

There are several ways to fix this problem. One is to get access to the server and reset the permissions manually. If you are using a shared web hosting provider, you’ll need to contact their system administrators to reset it for you. The problem with that is if you use Web Deploy to publish your web application again, then they’ll need to reset the permissions again.

A more viable solution is to alter your project file to prevent Web Deploy from altering the ACL on the remote web server. To accomplish this, simply navigate to your project and find the file with the extension .vbrpoj. If you created your project in C Sharp, look for the project file .csproj. This is outlined in this Winhost Knowledge Base article.

There are still some drawbacks to this. One of the biggest drawbacks and one that tends to confuse developers is where to place the element line in the project. The line you will need to add to your project is

That is where you will include the <includesetaclproviderondestination> element.

Some developers have not been able to get this solution to work. That is due to the ‘Release|AnyCPU’ setting. This setting is for the Configuration and Target Platform. As early as Visual Studio 2005, Microsoft has included the ‘web.config’ Transformation feature. This allows you to create specific elements and values to a web.config file base on the environment. Specific elements may only be suitable for the development environment while the production servers may have different attributes and settings. So depending on how the final build of the project is performed, the project configuration could either be taken from the ‘Release|AnyCPU’ or ‘Debug|AnyCPU’.

If you placed your <includesetaclproviderondestination> within the ‘Release|AnyCPU’ section but built your project within the Debug configuration, then the <includesetaclproviderondestination> attribute may not invoke on the production server. To make sure your permission is not altered create the <includesetaclproviderondestination> attribute on both the ‘Release|AnyCPU’ and ‘Debug|AnyCPU’ group of your project file.

Keep in mind that any for new projects you create, you will need to run through these steps again to keep Web Deploy/MSBuild from altering your permission on the production server. A more permanent solution is to alter the MSBuild publishing settings on your development computer. This will help ensure that any ASP.Net project you create in the future on that specific computer will not alter the permission on the web server when deploying with Web Deploy.

Achieving this is fairly simple and it is a one-time change:

Open Microsoft Notepad as an Administrator

Go to Start/All Programs/Accessories

Right click on Notepad

Choose the ‘Run as Administrator’ option.

In Notepad go to File/Open, and navigate to C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v10.0\Web (if you are running on a 64 bit platform and you installed the 64 bit MS Deploy, it may be under the Program Files folder instead)

The file you will be modifying is the Microsoft.Web.Publishing.targets file. In Notepad, search for the <includesetaclproviderondestination> element. By default the value is set to True. Set it to False and from that point forward, any ASP.Net projects you create with Visual Studio and initialized the Web Deploy method will not alter the Anonymous ASPNet IUSR’s permission.

Remember, if you are planning to alter and save the Microsoft.Web.Publishing.targets file, you must run Notepad as an administrator.

I think the Kinect is really cool. But combining one with a shopping cart? I don’t think this is going to fly. I’m sorry, I don’t need a shopping cart to follow me and tell me what I can and cannot buy.

It’s still a tough economy, and in an effort to cut costs (and being the crazy person that I am), I bought some ground beef and wondered if my old box of Hamburger Helper was still good…

You’ll want to notice the date in the next picture: 22 FEB 02. That’s right, 2002. I bought it back when I started my first career job. Not wanting to harm any animals or humans in the process, I decided to become a human test subject.

Suffice to say, I am still alive and have suffered no ill effects. I thought the pasta might go bad, but the seal was air tight, and the seasoning was still good as well. I was actually more worried about the beef which was set to expire January 31, 2012. It was still tasty (i.e. not stale). My hats off to Betty Crocker/General Mills for making food that stands the test of time.