kosta.apostolou.ca

MaximumASP Hosting Review and Referral Id

by Kosta on Jul.22, 2008, under Software Development

Having been in the internet business for years now, I have had to get my preciousl little programmer hands a little dirty with web hosting from time to time. As a result, I’ve been around the block and tried out a number of places.

Now, if you’re anything like me, you’re not jumping around just to save a few bucks. If you’re going to move all your sites to another host, it’s going to be because something has ticked you off long enough that you can’t take it any more and the effort involved is well worth it. Either that or there’s a really neat feature you want or need. In any case, you’re not changing hosts because you want to save a buck or two every month.

Life Before MaximumASP.com

Recently I had exactly that problem. My previous host’s control panel seemed to work whenever it felt like it. Parts of it barely ever worked. My sites would go down for days at a time while they “investigated” the problem. I reached my boiling point when they somehow managed to erase their DNS records and I had to re-setup all my sites in their control panel.

To top it all off, they didn’t even have phone support so I had to just send emails and wait for a response. Sometimes that would come hours later, sometimes the next day. Either way, when your sites are down, you need to talk to someone NOW!

Enough was enough so I had to go. And then it got worse! I had prepaid for a year and upon giving them notice that I was leaving they had agreed to give me a refund for the portion of the year I hadn’t used yet. Fair enough right? Well, to add a little icing on the cake they told me I had to wait 30 days for my partial refund!

Fine. I’ll wait 30 days for my money…

After 30 days, they tried to tell me that they wouldn’t give me a refund! What a nightmare this is turning out to be. To make a long story short, after a few nasty messages back and forth, they decided to give me a partial refund that was about 65% of what I should have received.

At that point, I just took it and left ticked off. I probably should mention their name here, but I’m not going to do that, and please don’t ask me who it was.

MaximumASP Rocks!!

I had read about MaximumASP.com in the past and always heard great things about them. To be honest, I was probably being a little cheap and opted to save about $10 per month and go with someone else. When I look back and do the math, my old host could have given me the service for free and it STILL would have me cost more than what I’m paying now at MaximumASP when I factor in the time spent dealing with problems.

Now, before you think this is a one-sided biased review, let me be honest with you.

When my VPS was first provisioned to me, it had some problems and I was off to a rocky start. Oh no, not again…

So I got on the phone with the support guys (yes, they have a toll-free number and you can actually talk to them!) and let me tell you about customer service! Wow!

First of all, they knew what they were talking about. You could tell they weren’t just going through some pre-scripted routine to solve the problem. Oh, they solved the problem too … which these days seems to just be a bonus!

Secondly, they were super friendly. No arrogant network engineer attitude – just a 100% willingness to help and solve the problem. A++ to these guys!

Third, without even asking, they apologized for the problems with the server and offered to waive my first month’s fee ENTIRELY as a thanks for being patient! Let me say that again, I didn’t even have to ask! These guys know customer service!

And it really didn’t stop there. I wasn’t too familiar working with VPS so I must have called them a dozen or so times about configuring my VPS. In fact, I called so many times they practically knew me on a first-name basis! Every experience was the same – solved my problem, very friendly, and whatever couldn’t be solved on the phone, they made sure to follow-up with me shortly thereafter.

I just can’t say enough about my experience so far with these guys. It has been awesome and I look forward to staying here for a long time.

Save $20 On Your First Month at MaximumASP.com

Now, if you’re interested in signing up with MaximumASP, they offer new sign-ups a $20 discount on their first month if you use a referral id.

During the sign-up process MaximumASP.com will present you with a “Referral Id” box in which you can provide a referral id that will save you $20 on your first month of hosting.

Here is my referral id you can use to save yourself a cool $20:

Referral Id: HQWM-6529

My Shameless Bribe

If you’re a VPS rookie, like myself, then setting up your domains and websites may seem a little complex and over-whelming when you don’t really know where to start.

Well, as much as I say I hate documenting, I think I have a love for it deep down inside somewhere because I document all sorts of things.

While going through my setup, I went through and documented the entire setup process for each website I deployed. I documented everything I had to do to get my sites up and running from setting up the domain names, creating ftp accounts, setting up logging, integrating google apps, and anything else I had to do.

So, if you sign up and use my referral id and you want my MaximumASP User Guide, just use my contact form to let me know you signed up and I’ll email it to you.

Either way, if you’re looking for ASP.NET hosting or a more serious hosting solution than what you currently have, you gotta try out MaximumASP!

Leave a Comment : more...

How to Integrate Aweber Webforms with ASP.NET (Part 3)

by Kosta on Jul.08, 2008, under Software Development

This actually comes as an unexpected post, but the beauty of software is that it can always be improved and that exactly what I did with my ASP.NET aweber control. Further details regarding this control can be found in Part 1 and Part 2 of this series.


Can You Have More Sales, Too?
Helping over 49,000 businesses like yours raise profits and build customer relationships using AWeber’s opt-in email marketing software for over 10 years.
Take a Free Test Drive today!

As pointed out by a couple readers, the server-side post I was using has some potential problems. The first problem is that due to the fact that the post is done server-side, then the IP address from the subscriber is actually the server’s IP address. While this may be something you can live with, apparently aweber frowns upon server-side posts for a number of reasons including spam concerns.

I have updated the control so that it does the post using javascript. The drawback here is that if the user’s browser has javascript disabled, then you’re out of luck. Personally, I’m willing to gamble with that risk instead of moving off of ASP.NET for aweber’s sake.

Special Thanks…

It turns out that literally the day after I posted Part 1 of this post, an article was posted on nerdymusings.com describing another solution to this problem. A special thanks goes out to James S who emailed me the link which proved to be a helpful resource in updating the control.

The only issue I had with the solution posted at nerdymusings was that it doesn’t deal with having multiple subscriber controls on the same page. Other than that, it seemed to do the trick quite nicely. So, another special thanks goes out to James Byrd who wrote the article.

Version 1.1 Now Available

I have updated the code of the control, tested it, and deployed to the sixfigureguru.com website. So far, so good.

The user control has all the same properties and functionality described in Part 2 – the only difference being that in version 1.1 the post is done client-side via javascript instead of the server-side approach used in version 1.0.

You can download the code using the same instructions as in the past. I have copied them below:

Download Instructions:

I’m looking to help get some subscribers at my client’s site for whom I developed this control, so here’s how you get the code:

  1. Go to the SixFigureGuru’s blog and sign up for the free newsletter.
  2. Activate your subscription by clicking on the link that’s emailed to you.
  3. Contact me and let me know you subscribed and activated your subscription. Don’t forget to include your email address so that I can verify.
  4. Once verified, I will email you the code.

kick it on DotNetKicks.com

2 Comments :, more...

The Time Management Lie

by Kosta on Jun.05, 2008, under Self Improvement

Recently I’ve done a fair bit of reading on productivity and “time management” because I’m always looking to improve these areas of my life. This enables me to get more done in less time so I can spend more time doing the things I enjoy.

I haven’t blogged about this topic yet, so I figured now would be a good time to start.

You may be thinking that this stuff is all hokey-pokey nonsense that doesn’t work; however, I challenge you to put your beliefs aside for a moment and consider a different perspective. Nothing you read or try will ever work until you’re able to do this. At least that’s my opinion anyway…

Let’s start with an extremely important mindset as far as productivity and “time management” goes.

The “Time Management” Lie

Stephen Covey has written a lot of books in the area of “time management” and productivity and he introduced me to a mindset that was really profound to me.

Have you wondered why I keep putting “time management” in quotations? The reason is because I no longer believe in this nonsense. It’s more of an exercise in futility than it is an attempt at getting more things done in the same amount of time.

Covey talks about how you can’t manage time. There is only so much of it. In fact, there are only 24 hours in a day and there’s nothing you, nor I, can do to ever change that. So why do we constantly try to do it?

The real challenge is not so much in managing time as it is managing OURSELVES.

How often do you hear stuff like “there’s not enough time in the day to get all my work done”, or “I just don’t have enough time”? People hate taking the blame for things yet they LOVE blaming anything, or anyone, else.

The real problem here is that they have no control over themselves. They let themselves get distracted easily, they let others interrupt them, and there is no plan in place for success.

So how does this play on words help you get more things done, you ask?

Simple:

1. Always Have an Outcome

Without having a plan in place for what needs to get done today, you will always feel like you’re not getting enough done. This is a result of new things coming up every day that get added to the pile.

At the start of each day, I like to ask myself, “what would I need to get done today in order to feel as though I had a productive day?” I write these things down and figure out what I can do. If the list is too long, I shorten it. If it’s not long enough, I’ll add to it (although that has never happened) or just have a less busy day (I prefer this option).

When I get everything done, I am satisfied that I had a productive day because I defined what my productive outcome was going to be before the day started. It’s amazing that this simple formula alone helps THAT much.

But it’s not a bullet-proof system…

This isn’t a recipe for getting everything done all the time, but I find that more often than not, I do make it through my list. If I don’t get everything done, I don’t get upset about it.

When I don’t get everything done, I try reflect back and see where I went wrong. Sometimes I got a little aggressive with my expectations; however, most of the time it’s because I didn’t have control over MYSELF.

Yes, contrary to what most people believe, I’m actually NOT perfect! I know it’s hard to believe, but I make mistakes too! I “fall off the wagon” and don’t practice what I preach sometimes. But I pick myself back up and keep going…

Plato once said:

“For a man to conquer himself is the first and noblest of all victories”

…so if this is the case, then odds are, this it ain’t gonna be easy!

On that note…

2. Avoid Distractions and Interruptions

This is the first place we need to learn to control OURSELVES!

Yes, distractions and interruptions are something you CAN control. Stop blaming your email for distractions or your colleagues for interrupting you. You are merely projecting the blame on them and not taking responsibility for yourself.

If you truly wanted to be distraction and interruption free, what would you do? Turn off your email notifications. Turn off your cell phone. Close the door to your office. Let others know that you will be available for them at a certain time. That’s just a start of the things you can do.

This will enable you to focus on what YOU need to be doing now, not what others want you to do.

While we’re bashing others for interrupting us while we’re working, let’s take a look at ourselves. Do you interrupt others when they’re working? We all do, don’t we? As a side exercise, try being an example and stop interrupting others.

I admit, sometimes, this isn’t entirely possible and things do come up. Yes, it is pretty much impossible to remove distractions and interruptions entirely from your life. But don’t tell me you can’t put measures in place to minimize these things. That’s my point.

Avoiding and minimizing distraction and interruption is huge in helping your productivity!

3. Stop Multi-tasking!

I used to think I was a multi-tasking superstar. I could write code, have my email in the background and chat on MSN all at the same time. Phone rings? No problem, “Yo dude, what’s up?”.

This is flat-out ridiculous! What am I focused on? Is it my work? No. Is it the email from my client? No. MSN? Nope. I’m actually not focused on ANYTHING! How can I expect to get anything substantial done if I’m not focusing on anything?

Exactly! I can’t!

And if you think you can, think again. Have you ever talked to someone on the phone and you KNEW they were surfing the web or doing something else while talking to you? Isn’t that frustrating? Well, everything you’re multi-tasking is suffering the same way you are when talking to the guy surfing the web! Trust me, you’re not fooling anyone. You’re no better at it than anyone else.

Get over it. We humans were not made to multi-task.

I was on a call recently with Wyatt Woodsmall and he said something that applies to this entire article. He said:

“Don’t confuse Activity with Productivity”

Just because you’re doing something or a lot of things at once, that doesn’t mean you’re productive.

Conclusion

If you’re ready to start feeling productive just remember the points I made in this article:

  1. Give up on trying to manage time and focus that energy on trying to manage yourself.
  2. Define what you feel would be a productive day and go to work at it
  3. Put measures in place that will avoid or minimize distractions and interruptions.
  4. Stop multi-tasking and start focusing on one thing at a time. Remember, “don’t confuse activity with productivity!”
  5. At the end of the day, feel good about getting everything done. If you didn’t get everything done, reflect back with an open mind. Figure out what went wrong and work on preventing that problem from happening again in the future.

I can personally guarantee you that if you do these five things you will watch your productivity sky-rocket over night!

Leave a Comment :, more...

How to Integrate Aweber Webforms with ASP.NET (Part 2)

by Kosta on May.21, 2008, under Software Development

In Part 1 of this series, I explained the conflicts that cause problems, how the aweber form may appear to be working but actually breaking your ASP.NET application, and other issues you may run into when trying to integrate an aweber webform with an ASP.NET application.


Can You Have More Sales, Too?
Helping over 49,000 businesses like yours raise profits and build customer relationships using AWeber’s opt-in email marketing software for over 10 years.
Take a Free Test Drive today!

In this post, I’m going to share with you the user control I developed that addresses these problems. You can see this control in action here. I don’t claim that my user control is the ultimate solution, but I’m sure you’ll find it quite helpful. At the very least, it will provide a good base for you to start extending it. That said, let’s get started…

Usage

I designed this control such that you can just copy the two files into your ASP.NET application, set a couple properties, and be off to the races. If you’ve used user controls before, you’ll know exactly what I mean. If you haven’t used them before, then you will probably want to hit up this article as I don’t want to get into these details in this post.

Once you have the user control on your page, then there are two properties you must set in order for the control to work. These two properties are WebformId and ListName. The rest of the properties are optional, but with a little bit of reading, they may help you be a little more flexible.

As you will see, a lot of these properties align with the properties on aweber’s webform editor page. I have listed the supported properties below along with a brief description for your reference. Any properties that you do not explicitly set will be set to the user control’s default value.

Properties

string AdTrackingId – This is the value you populate in the “Ad Tracking” field when setting up your aweber webform. The default value is <blank>.

string AlreadySubscribedUrl – This is the URL that the user will be redirected to when they try to subscribe after having already subscribed. The default value is <blank>.

string ButtonText – This is the text you want to appear on the subscribe button. The default value is “Subscribe”.

bool DisableDisplayStatisticsForLocalhost – This value is used to disable the display statistics when the webform is displayed on the localhost. The purpose of this property is to have a means of not affecting your live statistics when you are working in development. The default value is true.

string DisplayStatisticsId – This is the unique id aweber uses to keep track of your display statistics. To determine this number, you’re going to have to do a little digging. To start, download the javascript from the webform control panel. You can find the URL to this javascript by clicking the “Get HTML” link. When you open this file, scroll to the very end and look for a line that looks like this:

unique_track.src = “http://forms.aweber.com/form/displays.htm?id=GZybqKblaIxM7A==”;

In this case, GZybqKblaIxM7A== is the value you should use for the DisplayStatisticsId. The default value is <blank>.

string EmailRequiredMessage – This is the validation error message that is displayed when the user tries to click the “Subscribe” button without having entered an email address. The default value is “*”.

bool EnableDisplayStatistics – This value indicates whether or not to enable the display statistics for your webform. This is simply a count of the number of times the webform has been presented to a user. If you decide to set EnableDisplayStatistics to true, then you must also set the DisplayStatisticsId property as well. The default value is false.

bool ForwardVariables – This value indicates whether or not CGI variables should be posted to the thank you page. The default value is false.

string ListName – This is the name of your list in your aweber control panel. By default, list names usually look like “default123456″ or something like that. You’ve probably changed your list name to something a little more descriptive in which case use that value here. You MUST set this property for the control to work.

string NameRequiredMessage – This is the validation error message that is displayed when the user tries to click the “Subscribe” button without having entered a name. The default value is “*”.

int StartMessage – This is the message number in your auto-responder at which the subscription will start. The default value is 1.

Unit TextBoxWidth – This is the width of the Name and Email textboxes. The default value is the default value used when rendering any TextBox.

string ThankYouUrl – This is the URL that the user will be redirected to after they successfully subscribe. The default value is aweber’s default thank you URL which is http://www.aweber.com/form/thankyou_vo.html.

string WebformId – This is the unique id aweber assigns to your form. You can find your webform’s unique id by clicking on the “Get HTML” link in your aweber control panel. Next, look at the raw HTML. You will find an input parameter named “meta_web_form_id” and this is the value you should use to populate the WebFormId property. You MUST set this property for the control to work.

Things to Keep in Mind

  1. If you are using this user control, then changes you make in your aweber webform control panel do NOT automatically reflect on your website. For example, if you change your ThankYouUrl in the aweber control panel, you must also update your control on your site manually and accordingly.
  2. Name and Email are both always required so you may want to change that for more flexibility.

Known Issues

To my knowledge, there are is only one issue with this control. Because we are simulating a post server-side, then all your subscribers appear to come from the host and you lose some of that geographic goodness that aweber provides. Thanks to Roger for pointing this out! I’m going to look into whether or not aweber supports a GET instead of a post to fix this issue.

If anyone has any comments or feedback to help address this, please let me know.

UPDATE: The control has now been updated so that it is using a javascript post instead of a server-side post. See Part 3 for further details…

Moving Forward

There are no future enhancements planned for this user control; however, if you have something in mind, let me know and I’ll see what I can come up with.

I have thought about creating a BlogEngine.NET Extension for this, but will probably need some motivation from those out there who’d be interested in using it before I embark on that journey. So, if you want that, let me know…

Let me know what you think by posting a comment below or by contacting me via my contact form.

Download Instructions:

UPDATE: Download instructions have been moved to Part 3 of this series.

kick it on DotNetKicks.com

4 Comments :, more...

How to Integrate Aweber Webforms with ASP.NET (Part 1)

by Kosta on Apr.19, 2008, under Software Development

If you’re having problems trying to integrate an aweber webform with ASP.NET, then this article is probably what you’re looking for…


Can You Have More Sales, Too?
Helping over 49,000 businesses like yours raise profits and build customer relationships using AWeber’s opt-in email marketing software for over 10 years.
Take a Free Test Drive today!

In Part 1 of this 2-part series, I’m going to discuss the problems so that you are aware of what’s going on. Any good developer knows that it’s important to understand the problem before implementing a solution. Now, if you’re a “google cut-and-paste code warrior”, then just go straight to Part 2, download the code, and one of the rest of us will be happy to fix your mess and gobble up your clients in the future.

Let’s get started…

The knowledge base at aweber is pretty good and has a lot of helpful information. But, as far as ASP.NET goes, the support is … well, let’s just say that it’s “lacking”. At the time I was having problems, there was one article on ASP.NET and it didn’t help at all. Endless google searches and forum post reads later, I realized that this was one of those times where I was going to have to open up the hood, roll up the sleeves, and home-grow my own solution. In the spirit of open source, I decided to put the code up on my blog and help aleviate some pain from my fellow ASP.NET developers.

The Problem

For those who gave up before realizing the root of the problem, here it is. The javascript link that aweber gives you in your control panel does one small thing that causes a world of misery for us ASP.NET guys. This code essentially does a document.write of the html needed to display your form on the page along with some other (good) voodoo that feeds them back informaton to help maintain the display statistics of your form. Sounds simple enough, right?

Well, the problem is that part of the html that it “document.writes” contains a <form> tag that tells the form to post back to aweber’s site to add the subscriber to your list. As you know, ASP.NET relies heavily on the <form runat=”server”> so that it can do its whole PostBack model. The problem that arises is that you end up having a “form within a form” and ASP.NET’s model doesn’t play nice with this, and why shoud it really?

The Solution…or is it?

Assuming you’re as stubborn (and realistic) as I am, you aren’t going to give up on ASP.NET (stubborn), nor are you going to re-do your site using some other technology (realistic). That’s just too much wasted effort in my opinion…

So, you probably decide to bite the bullet and use the html that aweber supplies since you can’t use thier javascript reference. This comes at the cost of not getting your display statistics updated, as well as losing the flexibility to modify your form in the aweber control panel and have it instantly reflected on your site. You also hope and pray that aweber doesn’t do anything silly like change the location you’re going to post to, or whatever. If you concede these perks and assume these “risks”, then you probably think you’re good to go.

Wrong!

Problem #2 – WARNING: Your webform may APPEAR to be working now…

If you test your new page with your aweber html added, one of two really mysterious things happen:

  1. The form still doesn’t work and when you click your “Subscribe” button, nothing happens. I consider this the “lucky” scenario because you’ll know right away that somethin’ ain’t right…
  2. The form works works, but all your other ASP.NET postbacks stopped working and you get a javascript error when you try post back from one of your ASP.NET controls. This can be really unlucky because, unless you do your due dilligence, you may not even notice the rest of that page is now “broken”.

At this point, I realized the only way I was going to make this work was to fake a postback to aweber server-side.

UPDATE: The control has now been updated so that it is using a javascript post instead of a server-side post. See Part 3 for further details…

I bet you probably thought that was it. Well, once I had that working, there was yet another problem! …isn’t this how it always works out for us developers?

Problem #3 – Multiple aweber forms on the same page

Once I thought I had the first two problems solved, I decided to get a little fancy and put multiple aweber forms on the same page. This made me aware of another possible, yet realistic scenario: form validation. Now, you could simply set CausesValidation=”false” on your Submit button, but a complete, more robust solution would implement this validation before the submit even happens.

The ASP.NET Solution

In the end, the final solution was to create a user control that I could just plop on a page as many times as I want and have it just work in true ASP.NET style. I want to just have to set a few properties and away I go. So that’s what I did…

The user control that I’m about to share with you in Part 2 does exactly that. In fact, I even took the time to consider some details, like actually implementing the display statistics that are offered with the aweber javascript solution. There are even some features that I think make this user control BETTER than using aweber’s javascript reference.

For a full description and source code for the control, see Part 2 of this series.

kick it on DotNetKicks.com

9 Comments :, more...


Looking for something?

Use the form below to search the site:

Still not finding what you're looking for? Drop a comment on a post or contact me so I can take care of it!

Check out my other blogs

Some more places I ramble at...

Archives

All entries, chronologically...