Category Archives: Uncategorized

Crashplan Pro won’t start

I had a strange issue where CrashPlan Pro wouldn’t start up. I kept getting the error “Cannot connect to backup engine”. After reviewing some help docs from CrashPlan it was still not working. Every time I tried to start the CrashPlanService it would start and immediately stop. The log files weren’t much help to me, they were just letting me know what I already knew, it had started and stopped for some strange reason.

A lot of the results that come up when you Google “CrashPlan Pro cannot connect to backup engine” show solutions where users were able to increase their memory from 512M to 1024M and it would resolve it. For me, when I went to C:\Program Files\CrashPlan\CrashPlanService.ini and checked what was there, it already had 1024M, so I figured maybe it wanted more. So I set it to 2048M to see if that would work. Nope.

After fruitlessly trying other things such as updating Java, turning it off and then on again, saying pretty please, I finally caved and sent their support team a message about it along with the log files from my attempts to start the service. They replied back within  a few hours that I should try lowering the memory used from 1024M to 512M. So I gave that a shot, and to my surprise it started up perfectly! My guess is that since the computer has some other memory intensive applications running, it was trying to use more memory than was available at the time.

Solution

So the final solution was to open up the file C:\Program Files\CrashPlan\CrashPlanService.ini and to update -Xmx1024m to -Xmx512m

“A design isn’t finished when there is nothing more to add, but when there is nothing left to take away.”

“A design isn’t finished when there is nothing more to add, but when there is nothing left to take away.”

I read that quote once a few months back and it stuck with me.  It is such an interesting thing to say and it just makes my mind start moving at what it really means. When you starting out doing anything, designing a site, programming a class, or even building a house, you have this grand vision of how it will work.

So you throw all of your ideas together and make a plan to build the best and most useful application on the internet. The quote is a reminder to step back from your goals every so often so that you can take a hard look and decide if something is really useful. That initial excitement and feature list can blind you to the fact that most users will not use or care about 20% of the functionality. Removing that 20% will increase usability by decreasing the learning curve for the users.

Automating image conversion with Photoshop

Here are some simple steps to automate converting and image from one format to another.

  1. Open the first image you want to convert.
  2. In Photoshop go to ‘Window’=>’Actions’.
  3. Click on the ‘Create new action’ button and give it a meaningful name, something like jpg2png will suffice. Create new action
  4. Save the image you opened manually.
  5. Once done, click on the stop button. Stop action
  6. Go to ‘File’=>’Automate’=>’Batch’.
  7. Under the ‘Actions’ drop down select the one you just created and click ‘Go’.

Do it right if you are going to do it at all.

As a web developer I have worked with various different clients from all different backgrounds. One tip that I always hear from professors and other developers is that I should never undersell myself. When you undersell yourself it is very easy to find yourself overbooking clients so that you can find a way to pay all of your bills. The thing that always creeps back into my mind when I am deciding on a rate for a client is “If I don’t go down to XX amount of dollars per hour, they are just going to find someone else to do it.”

The cons of underselling

When you undersell yourself you aren’t just losing out on money, you are also losing out on knowledge, experience, and time. Here are some negative things that underselling myself have led to:

  • Less money earned, more hours worked
  • Buggy code
  • Overlapping projects
  • Less time for learning new skills

When I undersell myself I typically write a proposal where the development process is so efficient I could cry; there is no room for error in my estimate. The problem with this? About 95% of the time the scope of the project changes and/or a technical detail that should have worked didn’t work. So a feature that I had originally estimated at 5 hours could after debugging take about 7 or 8. That doesn’t sound like much more, but in the grand scheme of things working on a project estimated at 40 hours, it might take an additional 15 hours to complete the project if everything that can go wrong does go wrong.

What to do

So the underlying issue with the above scenario is that the developer (me) proposed the site to the client using the cheapest and cost effective solutions. The end result could be a simple to setup CMS, but hard to customize in the future. A short term plus and a long term negative. So as a developer I am beginning to move towards quality over speed. I still try and get a project done on time, but I don’t place as much on the low cost as I do on the high quality. I use the best technologies and coding practices to make sure the site is efficient and allocates the customers resources well.

Case Study

I recently had a project to program a site using a new technology that I had never used before. The project was to be spread out over a couple months as the client did not have the money up front to pay in full. So I broke the project up into four phases where a phase was not complete until the client had paid for the work done during the phase. The original estimate for phase 1 was done by me to show I could the work quickly, I figured this was the most important thing for the client.

What ended up happening was that I did finish the work on time, but the client sent back revisions and bug fixes that I had not come across while testing. I ended up finishing at 140% of my original estimate on time.

For the second phase I took this prior experience into consideration and I held my ground on time decisions. If I felt a feature would take 3 hours to implement, I gave myself padding and said it would take 5 hours. What this did was set me up to do the work in the 3 hours I had planned, but to not stress out if I was approaching the mark and found myself debugging. It also allowed me to spend a bit more time debugging and re-working code so that it was efficient and bug free.

After phase two I found that I was at 80% of my estimate and the client only had minor textual and position changes that brought the time estimate up to about 85%.

What I learned

So coming out of phase one I was pretty stressed out and had a negative outlook on the project as a whole. Coming out of phase two I had a positive outlook and was pleased with myself for getting it done right. I am convinced that had I used the same process of estimation in the second phase as I did in the first phase, it would have taken longer to complete than it did. Take pride in your work, if you would feel ashamed or uncomfortable letting someone else look at your code, chances are you should give yourself more time so that the code is as efficient as possible.

Creating a junction to sync files from anywhere on your PC with Dropbox

Just a little background info, I have been doing more and more work locally using XAMPP. Because the files are being worked on locally until they are worthy of being put into a live site there is a lot of room for murphy to make my day worse. Every once and a while I would backup my files onto my external drive just in case something happened to my computer. This while better than nothing, was not the best solution.

Dropbox

For anyone that doesn’t know whatDropbox is – it a fantastic service that allows you to sync files between multiple devices. Dropbox creates one directory usually called “My Dropbox” that syncs anything inside of it to the cloud.

Thoughts on using Dropbox

My initial thought was to just copy and paste the files to My Dropbox. Backing the files up daily would definitely be an improvement over my first method of using my external to backup once a week. I always try and figure out pros and cons to anything I do, it helps me to prepare for the worst. The biggest con I had was that if I backed up daily, what happens if I worked for 23.5 hours one day and just as I am backing my files up the computer crashes?

Past experience with SymLink

I had done some work with Ruby/Rails on my web host a couple years ago that required me to setup a SymLink from the root of the server to a directory accessible on the web. I wondered if it would be possible to create a SymLink between the directories on my computer so that it would continually sync the files I am working on in real time.

Junction to sync the files

After one quick Google search I came across Junction, a Windows utility that creates a link between directories.

Quick tip: If you place junction.exe in C:\WINDOWS you can execute the junction command from anywhere in the command prompt.

Steps to create junction

  1. Move the folder you want to sync with Dropbox into “My Dropbox”.
  2. Jot down the path to “My DropBox” (c:\Documents and Settings\User\My Documents\My Dropbox) and “htdocs” (c:\xampp\htdocs).
  3. Open the command prompt (Start => Run OR hold down the windows key and press “R” and enter CMD into the prompt and press enter).
  4. junction “c:\xampp\htdocs” “c:\Documents and Settings\User\My Documents\My Dropbox\htdocs”

  5. It should prompt you with the directory created and the directory it targeted.

For more information on syncing with Dropbox visit their wiki.

Redesign

When I put up the previous design of the site I did so because the one before it didn’t represent who I was anymore. It was blue, orange, yellow… it reminded me of a clown site. After a couple weeks of playing around I came up with the layout to the right.
Previous Layout
Less than a couple days after that I began to blog. Let me tell you, that layout is not ideal for blogging. For one the graphics in the background distract from the content, the colors didn’t work well, and the font was too small. How can I blog if the site doesn’t read well? White space, kerning, line height, things like that were hindering the site. Although all of the above had been altered by me, they had not been altered very well. They lacked the correct ‘numbers’ to make it work. My headers needed more space, my lines needed less space, and I needed a good way to present code to the viewer.

New Design

So after a couple days of looking at blog/news sites to figure out what made them successful I settled on a couple things to consider when redesigning:

  • Main headings need more padding below than subheadings
  • Headings don’t need to be bold, they can be a larger font size, italic, a different color… bold isn’t the only option
  • Subheadings should be smaller than the main headings, obviously. In addition I found that italic subheadings seemed to work best to differentiate from the main headings and body text
  • Spacing between the lines should be around 150% of the text size.
  • Font size shouldn’t be small because you want to conserve space, the goal is to have your content read.
  • Space, space, space. Don’t be afraid to leave some space. In my early designing days I felt like every pixel had value and therefore there should be no whitespace. As I looked over other sites though I realized I enjoyed being on less cluttered sites, and I don’t think I am alone in this feeling.
  • Lastly, if I was going to be posting code on my site, I needed to get a good syntax highlighter. I chose to implement SyntaxHighlighter, I encourage you to check it out if you haven’t.

So after all my research and tips I ended up with this. So if you see anything that could use some work or have any suggestions let me know I am always looking to learn something new.

Some of the articles I did read while researching more about typography were:

Formatting external hard drive to FAT32

So what I found out tonight was that you cannot format an external hard drive over 100GB at least (probably a lot lower) with the Windows GUI. You need to take it to the command line to achieve format it. The steps I took to format a Seagate Freeagent are:

  1. Goto Start > Run
  2. Enter in CMD and press enter
  3. Type in format /FS:FAT32 DRIVELETTER: and press enter
  4. It may ask you to enter the volume label, just enter what it shows up as in My Computer when it loads up normally
  5. It will give you the final confirmation – press “Y” and hit enter

There you have it, sit back and enjoy a cold while you wait for the drive to finish.

elementFormDefault – what is it?

As I researched and wrote schema’s I realized I was writing

<schema 
	xmlns="http://www.w3.org/2001/XMLSchema"
	targetNamespace="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified"
>

What was wrong with that you might be asking? Well for starters I had no idea what the attribute elementFormDefault did. I had been writing it over and over without knowing what it did just that it worked, this was just asking for trouble. So I did some research and more research. It finally all came together and I figured I would share my findings for everyone to enjoy.

elementFormDefault is an attribute of the schema tag. It is used, in a way, with the targetNamespace attribute of that schema tag. The targetNamespace attribute does what it sounds like it does, it specifies the location of the namespace being used. The two values for elementFormDefault attribute, qualifed and unqualified. Depending on the value of elementFormDefault, the namespace will either be used for all of the elements in the XML document or it will not. If the form is qualified, all of the elements in the XML document use the targetNamespace. If the form is unqualified the elements belong to no namespace unless they are explicitly specified. You would do this inline by adding the attribute form=”qualified” to the element you would like to be included in the namespace. An example of this would be:

<element name="assignment" type="stringo" minOccurs="0" maxOccurs="unbounded" form="qualified">

So to conclude, there aren’t too many scenarios where you would want to set elementFormDefault=”unqualified”, just know it is out there.

“The only source of knowledge is experience”
-Albert Einstein