Free Website, Design and Development

I am looking for work to do with my Web Design / Development hobby and I need YOUR help. I’ve been trying to come up with web projects to do on my own and have fallen short. I’ve got a ton of web development experience and recently have been branching into the design aspect. I’ve been dabbling a bit here and there but need some fresh ideas of things to work on.

This is where you come in. I’m asking friends, family, and even strangers to to submit their website ideas to me. Send me some information about either your current web site which you would like redesigned or an idea you have for a new site that you haven’t been able to get off the ground. I’ll work with you to come up with a design that is sleek and innovative (so lets get rid of your current 1992 animaged gifs).

I’ll be reviewing entries looking for 3 qualifying categories:

  1. Seriousness of Idea (what kind of information will you have on your site)
  2. Amount of Content (how much thought have you put into this site already? do you have enough content to get started with filling an entire website?)
  3. Flexibility on Timeline (I am doing this for free you know!)

If you’ve been thinking about putting up a website but don’t know where to begin, now is your chance to get started for free. To start with I will draw only one winner to work with on creating a free, personal or professional website. However, as this one of my favorite hobbies I will likely consider doing more than one so please keep the entries coming in. Please provide as much detail as possible, including links to existing websites that you would like me to use as a reference. Good Luck!

Your Name (required)

Your Email (required)

Domain Name

Details about the site you want:

Web Hosting Lingo Made Easy: The Difference Between Name Servers, A Records, and CNAMEs

I run into this question every now and again and have recently run into this while helping my soon to be brother-in-law transfer his hosting of GarnerBrewing.com. Most people rarely adjust their hosting provider after its paid for, and even if they do, it’s rare that they change it more than once. So, its not uncommon that most people ask the questions What are my name servers?, What is the difference between an A record and a CNAME?, and How do these things relate to each other?.

With the ability to buy a domain from one place, manage the DNS from another, and have hosting somewhere completely different its no wonder this is a topic that gets people scratching their heads. I had to recently double check on this to make sure I was helping to correctly make the DNS changes via email. After a little searching I was able to jog my memory, but it was almost impossible for anyone to explain in easily, so here I go.

What is a Name Server

Every web site out on the world wide web resolves to what is known as an Internet Protocol address (better known as IP address). The IP for issueblogit.com is 50.63.72.1. However, the IP is not necessarily unique for each web site. Take for example, my personal website johnzeren.com. This site also shares the IP 50.63.72.1.

This is where setting the Name Servers comes into play. A Domain Name Server (DNS), or name server as it will be called by your DNS manager, can be thought of as a look up for the IP address of the host computer where the web site is located. This can be tricky because the name servers themselves are simply domains that resolve to IP addresses. The key thing to remember is that the name server contains the mapping (or lookup) of which server (by IP address) hosts the website.

For Example: I am currently getting my hosting through GoDaddy So currently (at the time of the writing of this post) the name servers for issueblogit.com are:


ns35.domaincontrol.com
AND
ns36.domaincontrol.com

Don’t let this confuse you. There are typically at least 2 name servers for each domain. This just means that there is more than one place that knows where to find the website (think of it as a fail safe mechanism. If one of the name servers is down, people will still be able to reach your site because the other one knows where to find it).

What is an A record

If the name server is looked at as who has the map of your domain name to it’s IP address, the A record is the actual mapping. In the name server example above, the two name servers (ns35.domaincontrol.com and ns36.domaincontrol.com) contain the knowledge of how to find the mapping of the IP address to the domain name. To continue the example, say someone (you reading this example) goes to a page on issueblogit.com. Because the name servers are set to a location(s) that knows the mapping, they are “asked” for that mapping. Those name servers than look at the A record to see what the IP is set to.

The A record is commonly known as the “host” record. I would like to say that this being set is the most important part of configuring your DNS, but I would then have to argue with myself that setting the name servers is the most important part, because if those were not set than the A record (host) could never actually be found (mapped or “looked up”).

So, again keeping with the example of this site, the A record for issueblogit.com is set to 50.63.72.1.

What is a CNAME

Now that we have the “easy” questions out of the way, lets get to the CNAME. CNAME stands for Canonical Name, which is to really say that when you set the CNAME of a site you are setting the alias for another actual (unique) domain name. That sounds confusing, but basically what it boils down to is that CNAMEs are used to set aliases. Lets move to a different example using my johnzeren.com. Let’s say I wanted to have a personal blog site to compliment my main website and I want it to reside on blog.johnzeren.com. However, the actual blog is hosted on a different domain, lets say somewhere.else.com. This is where you would want to create a CNAME record “blog” and have it pointed somewhere.else.com. This way when site visitors type in the URL http://blog.johnzeren.com they are actually seeing the contents for http://shomewhere.else.com.

Again, CNAMEs are used as aliases to sites hosted at other locations. Typically your CNAME is a subdomain (like the blog. in blog.john.zeren.com) that points to a different server.

Conclusion

I know this topic can be confusing, that is why I wrote the post. The exact working behind all of this a a bit more technical, but at a high level the explanation should give a clearer picture as to the difference between setting name servers, A records, and CNAMEs.

Please feel free to leave any questions or comments on this subject as I would be happy to help provide further clarification.

CSS Renders Differently In Different Environments

When I was recently working on my personal website, johnzeren.com (still a work in progress), I noticed something peculiar. I noticed that when I was rendering the HTML, driven by CSS, in my development environment everything was lining up in Firefox and Internet Explorer 9 as expected. I know IE has made major strides in being W3C Compliant. As a good web developer should, I was going to check compatibility in other browsers, but was anxious to put the files I did have on my shiny new johnzeren.com domain first. After uploading the files, I gave the site a quick check in FireFox and all was well. Next, I quickly checked in IE9…. Something was wrong!

The Background

When viewing the same source code in two different environments, CSS was rendering differently. The drop down menu was not where it was supposed to be and the background wasn’t repeating as it should.

The Problem

After many iterations of uploading the source code and attempting to clear my browser’s cache, I was officially stumped. After all, what could anything on the server side have to do with the way that a browser renders HTML?

The Resolution

To my surprise (and I have been doing web development for a long time) I found this post on Stack Overflow where someone was having the same problem.

The answer:

If there’s no X-UA-Compatible value and site is in Local Intranet security zone, it will be rendered in EmulateIE7 mode by default.

Before now, I had barely had any use for META Tags in HTML other for storing key words to improve search engine optimization. It turns out, some servers, including those of my hosting company, do set a default document type for HTML which can affect the way items are rendered in the browser. In my case it was set to emulate IE7

IE=EmulateIE7

In order to fix this issue, I chose to have IE render on the “edge” of the latest browser available (in this case IE 9). I placed the following code snippet in the <HEAD> tag:

<meta http-equiv="X-UA-Compatible" content="IE=edge" >

If you encounter this issue you may not want to hing on the edge of the latest version of IE. Below is a list of possible X-UA-Compatible values:

Rendering mode X-UA-Compatible value
Edge Standard compliancy IE=edge
IE8 Standards compliancy IE=8
IE8 Emulation IE=EmulateIE8
IE7 Standards compliancy IE=7
IE7 Emulation IE=EmulateIE7
IE5 Quirks IE=5

SOPA Blackout – Wikipedia and Others Not So “Blacked Out”

On January 18th 2012, thousands of websites participated in a protest against anti-piracy legislation. The legislation that was trying to make it’s way through congress was the Stop Online Piracy Act (SOPA) and the PROTECT IP Act (PIPA), both aimed at reducing copyright infringement. However, many saw this legislation as an attack on the freedom of the usage of the internet. Among the websites that protested were web giants Wikipedia, Google, and Redding.

Some sites set out to inform their users of the bill and urged their visitors to get their leaders in Congress to hear their voice in opposition of the bill. Google, for example, changed their “Google” image to have a “censored” image across it (See the image at the beginning of this article).

However, other sites in an attempt to show how crippling an online protest can be, completely shutdown service to their website for the day. The most recognized website was Wikipedia. Wikipedia “blacked out” their English site for the first time in the site’s history for a 24 hour period. When attempting to go directly to Wikipedia, the visitor was shown an image similar to the one below which appeared on top of the site not allowing users to access the normal functionality of the site.

The black out had virtually no effect on me, other than noticing the change in the Google image. However, I couldn’t help but notice a sizable amount of chatter going on around Wikipedia being “down” or “dark”. I was going to let it go, but even four days later I continued to read about complaints of people that use Wikipedia daily that were hindered by the outage. (Do that many students really rely on plagiarizing that site?) The truth of the matter is that all of the information was still fully available.

The Background

Wikipedia and other sites appear to be inaccessible. For this blog entry lets use the protest case. Given the power demonstrated by this protest I am sure we’ll see the black out tactic used again for other purposes.

The Problem

Users of a “blacked out” site cannot get access to information they ordinarily would have.

The Resolution

TURN OFF JAVASCRIPT All web browsers have the ability to toggle off and on Javascript. The majority of the sites that went dark used some kind of javascript to interrupt regular service. However, all web pages are built on HTML, Javascript is used as a tool to enhance functionality. The core of the information is in HTML (or at least should be, exceptions being sites built fulling on Flash which is poor practice).

The easiest way for a site to disable itself is to use Javascript. Otherwise, all of the actual content would have to be removed and the site overall would suffer Search Engine Optimization (SEO) consequences. (Yes, I realize Wikipedia is too big to suffer any kind of SEO hit). The point is that the work around is most likely going to be in Javascript so disabling it from your browser should reveal the content in most cases. To see an example of what this site might look like if it were “blacked out” click the link below. Notice that if you disable Javascript in your browser that the link will not work.

Click this link for an example of this site being “blacked out” with Javascript



IssueBlogit Blackout Page

This is an example of what an IssueBlogit Blackout Page might look like. Of course, this is just an example and you can click outside this box to return back to the site. However, do notice how the “blacked out” effect hides the rest of the page behind it.

Click This LinkTo get a look at what the whole page might look like blacked out

Java Exception Line Number is “Unknown Source”

The topic of this Issue Blog is in regards to getting an “Unknown Source” in place of a line number in a Java exception stack trace when being compiled by Apache Ant. I’ve come across this issue several times in the past but have never really given it much thought because I can usually pin point my errors through debug logs when I have to. It happened to me twice recently that I had to debug something that led me back to this “Unknown Source” in my stack trace so I thought I’d Issue Blog It for safe keeping.

The Background

When compiling Java code with Apache Ant occasionally “Unknown Source” is displayed rather than the line number of the compilation error in the stack trace. This sparked my curiosity as the line numbers would report back correctly when being compiled by Java and the Eclipse IDE.

The Problem

The exception stack trace displays “Unknown Source” instead of the line number of the compilation error when being built by an Ant build script.

The Resolution

The resolution is actually very simple. There is a debug mode in Ant that, if not enabled, sends

-g:none

to the command line for compilers that support it. This basically specifies not to generate any debugging information.

To fix this simply add the following attributes to the javac task in the build.xml which is building the Java program.

debug="on" debuglevel="lines,vars,source"

This “turns on” the debugging information and sets the debug levels of lines, vars and source to display… hence “turning on” the line numbers in the stack trace.

Issues Upgrading From SHA1 to SHA256

SHA1 vs SHA256On a recent project I was asked to upgrade the security algorithm used from SHA1 to SHA256 The project was broken up into 2 code bases, the first being a Java code base which was used to communicate with Adobe LiveCycle ES2.5 and the second being a C# code based used to communicate with Microsoft SharePoint

When making the change on the Java side, it was a pretty simple, straight forward change. Basically it was changing a line that looked like:

MessageDigest algorithm = MessageDigest.getInstance("SHA1");

To just switch out the MessageDigest type like:

MessageDigest algorithm = MessageDigest.getInstance("SHA256");

However, making the change on the C# side was not as simple, although it appeared that it would be.

The Background

I basically needed to switch out the hashing algorithm on a project from using SHA1 to using SHA256 in both Java and C# components.

The Problem

The SHA1 implementation was using the SHA1CryptoServiceProvider. This seemed to be working fine implemented in a manner similar to below:

This worked well providing correct SHA1 hashed results:

However, switching to the SHA256CrptoServiceProvider generates the following error:

"The specified cryptographic algorithm is not supported on this platform."

The Resolution

As the error suggests, I started looking into possible limitations of the operating system. Basically what I found out was that SHA2 algorithms are not supported at the OS level for Windows versions that are prior to Vista. Since the company I was contracting for at the time only supported XP, I was out of luck. (I found this article helpful when trying to understand the issue.) This would also explain why the switch was easier to make on the Java side since it is not OS dependent.

To overcome the issue I was switch from using SHA256CrptoServiceProvider class which lets the OS calculate the hash, to using the SHA256Managed class which is a fully managed implementation.

The code below is an example of the managed solution’s implementation.

Probably the biggest reason this through me off was because in Java, it was as easy as passing in the new algorithm type. Componded with the fact that in C# it looked that easy because there was a similar class as to what was already implemented, I spent more time on this then was necessary. This is why I IssueBlogged It.

Reconfiguring NETGEAR Wireless Range Extender


About 2-3 years ago, my parents attempted to go completely wireless in their,at the time, new home. Because they’re home’s layout is so large, the signal from the wireless router that they had set up and configured on one end of the house, did not reach the other end of the house. In an attempt to remedy this issue they purchased the WGX102v2 Wall-Plugged Wireless Range Extender. On a visit to their home shortly after this purchase, they employed me to set this up for them.

This was actually a pretty neat concept. The system comes with two devices. The first one is a Wall-Plugged Ethernet Bridge. This device has a wired connection to the router and is plugged into a near by electrical outlet. The other device is the actual Wireless Range Extender Unit. The first device takes the signal from the router and transmits it through the electrical outlets in the walls. The second device receives the signals from the electrical outlet and transmits them as a wireless signal at some other designated spot in the house.

The Background

Recently my fiance and I purchased our first home together. I started to notice a similar problem where we have the wireless router at one end of the house downstairs and wireless signal strength seriously diminished upstairs at the other end of the house. I was thinking of looking into getting a wireless range extender for myself, when I learned that my parents were no longer using theirs. I decided to take theirs and use it for myself. However, getting these devices to work properly in our network has proven to be a challenge.

The Problem

The WGX102v2 Wireless Range Extender came back to me with all of my parents’ settings on the device. Even after restoring the factory settings and actually referring to the manual I could still not get the wireless computers to connect to the internet. I was able to configure the device so that the machines could recognize and connect to the wireless range extender, but no luck in actually accessing the internet.

UNRESOLVED

Currently this topic is unresolved. Although this project is more of a nice to have and a way to keep me from going out and buying a newer better wireless booster system, I’ve decided not to give up on this. I got it working once before, and if I had IssueBlogIt in place when I set it up before I would probably have captured something that would have been useful in my second deploying of these devices. Stay tuned for updates on this resolution.

Adding Driver for Linksys AE1000 Wireless USB on Linux

In my ongoing efforts to run as many things wireless as possible, I decided to buy a Wireless-N USB adapter for the old HP Desktop computer I have running upstairs. Because I am rather impulsive, once I had the idea in my head that I wanted to do this, I wanted to do it that day. So, instead of doing my research and finding the best wireless USB adapter I could find, I went right up the street to Best Buy to buy whatever I could find there to have it in hand that day. The problem with doing something like that is that most things you can find at a Best Buy will be very compatible with Windows, but not so much with Linux.

The Background

I needed my desktop computer to connect to my wireless router as quickly and cheaply as possible. After a quick trip to Best Buy I had the Linksys AE 1000 Wireless USB adapter in my hands. Doesn’t support Linux? Who cares?… Not I!

The Problem

The Linksys AE 1000 is not supported on Linux operating systems. In this case I am running Ubuntu Linux (version Natty Narwhal).

The Resolution

After a good amount of sleuthing on “The Googles” and the Ubuntu Forums, I was able to get the device working with my Linux install. I used this post as my main reference to get things working. The exact steps I took are below:

  1. Identify the exact device ID by running the lsusb command.
  2. Downloaded drivers from http://driverscollection.com/?file_cid=400269961410315e976a675c830 NOTE: If this is not the device you have you’ll need to get different drivers
  3. Unpackage the driver, navigate to the os/linux folder in the package contents, and edit config.mk and make sure the following lines have the value y.

    • HAS_WPA_SUPPLICANT=y
    • HAS_NATIVE_WPA_SUPPLICANT_SUPPORT=y
  4. Navigate to the common folder in the unpackaged driver location, edit rtusb_dev_id.c and add the entry {USB_DEVICE(0x13b1,0x002f)} to the end of the list of USB devices (just above the end if for RT2870)
  5. After the changes listed above are complete and saved, open a terminal window to the root location of the unpackaged driver folder, and run sudo make
  6. Again from the same location as above in the command line, run sudo make install
  7. Edit /etc/modules file and add rt3572sta
  8. Edit /etc/modeprobe.d/blacklist.conf to add the following entries into the blacklist:

    • blacklist rt2800usb
    • blacklist rt2860sta
    • blacklist rt2x00sub
    • blacklist rtx00lib
    • blacklist rt2870sta

  9. Restart the machine, on restart the device should be picked up automatically and begin detecting wireless networks around you.

Reading From App.Config File (C#)

Recently I was on site at a customer engagement and ran into a little trouble when asked to do some C# development. C# is not what I would consider one of my strengths as I simply have not had to use it much in my career. However, as a consultant it is my job to adapt and get the job done. Needless to say I began to really enjoy development in C#. However, I did stumble across a problem that took me a couple of hours to solve when it should have taken a few minutes. Read below the problem I ran into and the few quick steps that I uncovered that are necessary to solve this easy to implement functionality.

The Background

On a customer engagement I was tasked with writing an database driven application that performed a variety of operations (read and write) against the database. The proof of concept was coded with database connection information hard coded as constants on top of an already existing code base.

The Issue

In order to move the proof of concept application further I was asked to move the database connection information from the hard coded constants to the App.config file for the C# application. Being somewhat of a novice to C# not knowing a few minor details cost me more time than it should have.

The Resolution

In resolving this issue there were two main problems I uncovered.

  1. In order to use the ConfigurationManager class to load the App.config file, a reference to the System.Configuration assembly had to be added as a reference to the project.
  2. The App.config file generates a class file based on the name of the project (very specifically) that is loaded at run time. The project my code was in was started as a “Class Library” project so the generated config file was not obvious.

Identifying and solving the first problem was fairly easy. When trying to build the project I was getting the following error: The name ‘ConfigurationManager’ does not exist in the current context

A simple google search should provide you with enough information to identify this issue and resolve it. I’ve seen some posts that insist that you have to add multiple references including direct reference to the .dll. This has not been the case for me. I encountered the issue in Microsoft 2008 on site, and reproduced it in Microsoft 2005 at home resolving in both environments with simply adding the .NET reference through Visual Studio (see below).

The second issue was a bit more difficult to uncover. Unfortunately, the project was given to me to work with as a “Class Library” and not a typical “Windows Application” or “Console Application“.

This small difference meant about 2 hours of frustration that didn’t need to exist. In order to generate the .config file the project must be an executable application. Visual Studio will take the App.config file and regenerate it as something the executable can read at build time. Let’s say the executable of your project is named MyProject.exe, the App.config file associated with the project will be regenerated at build time with the name MyProject.exe.config. Because the project was a “Class Library” project, there is no executable associated with it. So, although I had a perfectly well configured App.config file, none of the values were being read. Eventually I stumbled on some code that would allow me to add configs on the fly. This generated a file that looked like ClassLibrary.csproj.vshost.config which actually contained the config that was added on the fly. I then noticed that if I added the database configurations I was trying to load to that file that they were being pulled in successfully.

If you find yourself trying to load configs from an App.config file and no values are coming through, double check the type of Visual Studio project you are working with. If it is a Class Library type of project then this is your problem. The configs should be loaded by a type of project that has an executable.

Sounds like a pretty rookie mistake because it is a rookie mistake. Being unfamiliar with C# development I didn’t think to check the project type and tried to add some proof of concept code to a project that was not of the right type. Although the problem was in the end a very simple problem to solve, it caused me enough pain that I decided to IssueBlog It!

Welcome to IssueBlog It!

Welcome to IssueBlog It, the home of the IssueBlog list. What is an IssueBlog you might ask? An IssueBlog is a post of anything that is causing a slowdown or disruption in some technical aspect of life. Having trouble installing or configuring software? IssueBlog It! Can’t seem to use those API’s quite right? IssueBlog It! Not sure how you’re going to design and develop that next web application? IssueBlog It! Can’t use Photoshop or GIMP to save your life because you suck at design? IssueBlog It!

Mostly I wanted this site for myself to have a repository of problems that I’ve encountered and the solution I used to overcome that problem. Archiving the solution is not only helpful for myself, but may also provide someone else answers to the same problem. I got the idea for this site a while back when putting together a wedding site for my fiance and I. I wanted find a way to have users comment using their GIMP to do full site design form scratch (hence the comment about sucking at it above) so that will be the first project posted. With all that said, I invite you to read, comment, or post your own IssueBlog along the way.