<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0"><channel><title>In Valid Logic</title><link>http://invalidlogic.com/</link><description>Endlessly expanding technology</description><generator>Graffiti CMS 1.2 (build 1.2.0.2308)</generator><lastBuildDate>Fri, 26 Jun 2009 15:42:14 GMT</lastBuildDate><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" href="http://feeds.feedburner.com/invalidlogic" type="application/rss+xml" /><item><title>TC5.0 Email Templates: An Overview</title><link>http://feedproxy.google.com/~r/invalidlogic/~3/LhPdGKeDQrg/</link><pubDate>Fri, 26 Jun 2009 15:42:14 GMT</pubDate><guid isPermaLink="false">http://invalidlogic.com/code/tc5-0-email-templates-an-overview/</guid><dc:creator>Ken Robertson</dc:creator><slash:comments>0</slash:comments><category domain="http://invalidlogic.com/code/">Code</category><description>&lt;p&gt;In the newest version of Telligent Community and Telligent Enterprise, we've completely rebuild the way email templates are handled to unlock a new level of possibilities and performance.  I'm planning on going over several aspects of it, including highlights, usage, and extending the new templating with a series of blog posts.&lt;/p&gt;

&lt;p&gt;Up until now, we've always used the build in System.Net.Mail.MailMessage support which is baked into the framework.  While it has served us well, it had a couple of limitations that we had been bumping up against in trying to grow Mail Gateway's functionality.&lt;/p&gt;

&lt;p&gt;The new templating is based on nVelocity templates and borrows a lot from Graffiti.  If you've ever created a Graffiti theme or written a Chalk extension, you'll see a lot of similarity with the new templating.  With the messages now, you actually generate the raw MIME messages.  MIME stands for Multipurpose Internet Mail Extensions and it is the standardized format of email messages.  By working with MIME directly, aided by a series of helpers, we are able to control aspects of the message in a fine grained manner.&lt;/p&gt;

&lt;p&gt;First, in ability to control who we're emailing independent of the message headers.  With email, who the message shows in the To headers who it isn't necessarily sent to, such as with mailing lists.  Previously, Mail Gateway always sent the messages to the user, from the sender, and with the list as a special "Sender" header.  This is how messages showed up in Outlook as from the user "on behalf of" the list.  This type of set up didn't work well with all client, particularly the iPhone.  The iPhone would always reply to the user who sent the message, not the list.&lt;/p&gt;

&lt;p&gt;Building on the last point, since we couldn't set who a message is to independent of the message, Telligent Community would have to generate a message for each person it was emailing.  So if a forum had 100 subscribers, when a new post is made, it would generate the email 100 times, queue 100 messages, and then send it out as 100 individual emails.  With the new handling, we can actually generate the message just once and have it go to everyone in one swoop.  Also, since mail servers often limit the number of recipients per message, we can take that message and configure it to allow 20 recipients per message.  So instead of sending 100 messages, we could safely get it down to just 5.&lt;/p&gt;

&lt;p&gt;Additionally, the variety of messages can be greatly expanded.  It is now super easy to include an HTML and a plain text version of the body in the same message, then allow the email client to chose which one it will show based on its preferences.  Or we can generate both at once, and then chose which one gets sent out after wards depending on user preference.&lt;/p&gt;

&lt;p&gt;With the old support, we didn't have the ability to support subsets of functionality like meeting requests.  Meeting requests are basically an attachment with the ical event, and special headers indicating a response is supported/expected.  With the built in functionality, Mail Gateway could read the attachment, but not handle or send it back out as a meeting request.  We still haven't added this functionality, but now the limitation from MailMessage is removed so we're one step closer.&lt;/p&gt;

&lt;p&gt;And finally, the old templates were limiting with what was available within messages.  You only had a fixed set of tokens that could be used within the email, such as [SiteName], but it was really limiting in additional fields or field manipulation.  Do you want to change the format a post date is displayed in?  Want to only show a certain excerpt of the post body?  Want a field that wasn't available in the standard set?  These things would often require code changes before, but now with nVelocity templates, you actually get the Post object, not just the common post tokens.  Want to change the date format?  Just use $post.PostDate.ToShortDateString().  Want the post author's display name?  Use $post.User.DisplayName.&lt;/p&gt;

&lt;p&gt;Aside from new functionality that is enabled, there are several benefits to what we already use emails for.&lt;/p&gt;

&lt;p&gt;First, email templates themselves are greatly simplified.  You no longer have a gigantic XML file with all templates, they're now template-per-file.  Templates are no longer in XML, so you don't need to worry about escaping certain characters of using &lt;br/&gt; instead of &lt;br&gt; or using an amperstand (&amp;) or other characters that need to be escaped in XML.  These minor things often confused users who didn't know about XML, or even seasoned developers who had a knee-jerk moment.&lt;/p&gt;

&lt;p&gt;Second, when you need to do something more complicated, there are now some solid extensibility points.  This makes it much easier to integrate advanced functionality in a simple way.&lt;/p&gt;

&lt;p&gt;More advanced pieces of email generation is now simpler to test.  With the extensibility, code is compartmentalized and easier to break down and test certain subsets.  Additionally, we also plan on making it easier to unit test specific email templates, to ensure the template is rendered without errors and with the right content.  I'll be covered the ways to extend the templating in upcoming posts.&lt;/p&gt;

&lt;p&gt;Finally, for portions like forum notifications, the number of messages generated is reduced which helps to improve overall performance.&lt;/p&gt;

&lt;p&gt;In the next post, will give an overview of ways to extend the functionality of the templates.&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/invalidlogic/~4/LhPdGKeDQrg" height="1" width="1"/&gt;</description><feedburner:origLink>http://invalidlogic.com/code/tc5-0-email-templates-an-overview/</feedburner:origLink></item><item><title>Telligent Community and Telligent Enterprise released!</title><link>http://feedproxy.google.com/~r/invalidlogic/~3/VZqYOC6lT3I/</link><pubDate>Wed, 24 Jun 2009 00:22:00 GMT</pubDate><guid isPermaLink="false">http://invalidlogic.com/technology/telligent-community-and-telligent-enterprise-released/</guid><dc:creator>Ken Robertson</dc:creator><slash:comments>0</slash:comments><category domain="http://invalidlogic.com/technology/">Technology</category><description>&lt;p&gt;Today, all the Telligenti have been buzzing regarding the recent release of Telligent Community and Telligent Enterprise.  From &lt;a href="http://telligent.com/newsroom/press-releases/telligent-announces-telligent-community-5-0-and-telligent-enterprise-2-0-and-previews-new-analytics-application/"&gt;telligent.com&lt;/a&gt;:&lt;/p&gt;
&lt;blockquote&gt;&amp;quot;Telligent, a leader in community, collaboration and social analytics software, today announced the availability of version 5.0 of Telligent Community (previously Community Server) and version 2.0 of Telligent Enterprise (previously Community Server Evolution). The latest versions of Telligent&amp;rsquo;s community and collaboration software represent the company&amp;rsquo;s ongoing commitment to innovation and enterprise collaboration.&amp;quot;&lt;/blockquote&gt;
&lt;p&gt;Finally, after months of feverish development, we've reached the point of a release for what is probably our biggest release in history.  Our v5.0 is unlike any of our previous major releases.  We have a completely new permissions system, revamped groups, new search, new email templating, and new widget based theming.&lt;/p&gt;
&lt;p&gt;Soon I'll be having a series of posts going over some of the bigger technical points in some of my areas of expertise.  In particular with this release, I'd worked on the search implementation and the new email templating.&lt;/p&gt;
&lt;p&gt;In previous versions of CS, we had two implementations of search, the default Search Barrel and the more powerful Enterprise Search, which was built on Lucene.Net.  Now, we've changed the search to be much easier to extend and change out.  Previously, search was tightly coupled to the index.  You couldn't easily add new types to Enterprise Search or index additional fields.&lt;/p&gt;
&lt;p&gt;Our new search is comprised of a series of mappers, which define how to convert an object into a searchable document, and define your own content handlers, which are used to grab objects that need to be indexed, have them mapped, and passed over to the index.  You can easily build on top of existing mappers, create mappers for new types, and add new content handlers to the search process.  Additionally, the search is broken out into indexing and search, allowing you to easily create your own implementations.  Our included implementation is now based on Solr.  Why Solr?  A better question is why not Solr?  It did everything we wanted and then some.  It is feature packed, high performance, and super reliable.  With it, we were also able to easily build in thread collapsing.  Tired of the search results all being messages from the same thread?  Now we can collapse down the results, combining all the posts from a single thread into just one result.&lt;/p&gt;
&lt;p&gt;What's new with emails?  Over time, we found the old email templates to be too limiting.  We had one big XML file containing all the emails, people often ran into confusion when editing HTML emails (since they had to be XML escaped), and the default tokens were limiting depending on the types of customizations you'd want to make.  Our new emails are entirely based on nVelocity.  If you are familiar at all with the theming in Graffiti, you will be right at home in the new email templates.  The templates produce the mime documents that get sent out, allowing you do manipulate the message headers, attachments, and body content.  Instead of providing a fixed set of tokens like [PostDate], you get the actual objects.  You can now use $post.PostDate, or call $post.PostDate.ToString() and pass in a custom formatter.  Want to do more?  Can easily create Chalk modules to add new macros, or TemplateModules to manipulate the nVelocity context before templating, or the processed mime object after processing (useful for adding binary attachments and such).&lt;/p&gt;
&lt;p&gt;Want to know more?  Keep posted.&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/invalidlogic/~4/VZqYOC6lT3I" height="1" width="1"/&gt;</description><feedburner:origLink>http://invalidlogic.com/technology/telligent-community-and-telligent-enterprise-released/</feedburner:origLink></item><item><title>Know thy customer</title><link>http://feedproxy.google.com/~r/invalidlogic/~3/ZaIVxUV1mas/</link><pubDate>Fri, 12 Jun 2009 15:43:48 GMT</pubDate><guid isPermaLink="false">http://invalidlogic.com/software/know-thy-customer/</guid><dc:creator>Ken Robertson</dc:creator><slash:comments>0</slash:comments><category domain="http://invalidlogic.com/software/">Software</category><description>&lt;p&gt;I frequently read stuff on WebHostingTalk.  Yesterday I was catching up on the happenings of the week when I saw a &lt;a href="http://www.webhostingtalk.com/showthread.php?t=868221"&gt;post&lt;/a&gt; of a type I've seen elsewhere before.  The premise is "we're a software development company, we're writing this product, what do you, our target customer, want in it?"&lt;/p&gt;

&lt;p&gt;I always see those types of questions as a danger sign.&lt;/p&gt;

&lt;p&gt;First, you should already know your customer base.  Would you want a company who has no idea about taxes writing accounting software?  Hmm.  Maybe this way... would you want an auto mechanic who was given a manual on heart surgery to do your bypass?  You, yourself, cannot solve a problem unless you understand the problem.&lt;/p&gt;

&lt;p&gt;Working with a target audience is good.  However I'd argue, show them something and ask for feedback, don't just ask them at the beginning without having anything to show.  Also, narrow down who you ask.  If you ask the world, you will get inundated with responses, but how to do you know the quality of those responses?  Find target customers to work with.  Those interested in your product, who have a reputation in the field or some sort of credibility, and allow their interests to be vested in your success.&lt;/p&gt;

&lt;p&gt;By asking the world and trying to meet all those requests, you'll lack a sound focus on your product and scope.  You may end up trying to do everything instead of tackling what is important.  If you have to ask what the customer wants without having anything started, how do you actually know what is important?&lt;/p&gt;

&lt;p&gt;In the post they also say they're beginning development within 72 hours and hope to have a prototype in a few weeks.&lt;/p&gt;

&lt;p&gt;If you don't know your customer, how can you begin in 72 hours?  What are you going to begin?  You don't have a plan, priorities, or anything yet.  And to get a prototype out in a few weeks with no game plan is unlikely.&lt;/p&gt;

&lt;p&gt;Not to rag on anyone or anything.  I wish them the best of luck, but far to often people over simply the process of building a product.  Products aren't easy.  It is easy to write a program, but there is far more work to turn it into a product.&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/invalidlogic/~4/ZaIVxUV1mas" height="1" width="1"/&gt;</description><feedburner:origLink>http://invalidlogic.com/software/know-thy-customer/</feedburner:origLink></item><item><title>Contemplating some computing changes</title><link>http://feedproxy.google.com/~r/invalidlogic/~3/clQqMvY0-WU/</link><pubDate>Sat, 02 May 2009 16:16:58 GMT</pubDate><guid isPermaLink="false">http://invalidlogic.com/life/contemplating-some-computing-changes/</guid><dc:creator>Ken Robertson</dc:creator><slash:comments>1</slash:comments><category domain="http://invalidlogic.com/life/">Life</category><description>&lt;p&gt;Recently have been thinking about some computing changes.&lt;/p&gt;

&lt;p&gt;I switched over to a Mac almost a year and a half ago, and have been all Mac for a year now (Mac Pro desktop and Macbook Pro laptop).  I have definitely fallen in love with my Mac and the tools on it.  I absolutely love Spaces/Expose, Things, Quicksilver, TextMate, and the strong console environment (I'm a linux geek deep down too).&lt;/p&gt;

&lt;p&gt;I still code in Windows though.  During the day, I live in VMware Fusion.  Fusion is a great app, but some of the annoyances of using VM so much are starting to catch up with me.  First, I like to keep Outlook and coding separate, so I actually run two VMs all day long, one with XP and Outlook with 512mb ram, and then I code in a Windows 2008 VM with 2gb ram (I know 2gb is not helping).&lt;/p&gt;

&lt;p&gt;My Mac Pro has 8gb of ram total, and while during the day I only have 2.5gb of VMs running, I constantly find the memory bar in iStatPro bumping up against full.  I find that a little puzzling and is one reason I haven't gone beyond 2gb on the dev VM.  Other than those VMs, I usually have Adium, Safari, TokBox, and sometimes a Terminal session open (I seem to use irb a lot, even if just as a calculator).&lt;/p&gt;

&lt;p&gt;I'd like to find a better way to improve my life.&lt;/p&gt;

&lt;p&gt;One possibility is to move my desktop back to Windows.  I would certainly gain a lot of speed, getting full use of the ram and running native, but Spaces/Expose are so ingrained into my daily use, it would be hard to lose them.  If I did though, I would still keep OS X on my laptop so I can still use Things, TextMate and some of the other Mac tools.  Also, the reality is I don't really do much Ruby coding on my desktop.  I always do Rails/Merb coding at night and its almost always on my laptop, in the living room.&lt;/p&gt;

&lt;p&gt;In running prices, I think I could almost sell my Mac Pro and build a new Core i7 12gb SSD system for the same price.  Sadly, Mac desktops have a huge premium.  Though it is beyond me how they make dual Xeons so quiet.&lt;/p&gt;

&lt;p&gt;The other option is to keep the Mac Pro, start running my dev VM with more ram and possibly upgrading to 16gb ram.  An SSD or two is likely in my future as well, so I could have one for the OS and one for my dev VM.  I would also need to find someway else of using Outlook, perhaps just running it on a spare PC and RDC to it or something.&lt;/p&gt;

&lt;p&gt;One thing is for certain though, running my dev VM on my laptop is a painful experience.  I've been playing with ASP.NET MVC lately and using my VM on my laptop is just annoying.  I already have my MBP maxed out at 4gb ram, and it runs the same 2gb VM.  But even aside from memory, virtualization uses more CPU which means more heat on the laptop and sometimes the fan goes wild even though I'm just doing basic stuff.  In talking with &lt;a href="http://twitter.com/jaymed"&gt;Jayme&lt;/a&gt; though, he says he RDCs from his laptop to his desktop to code, so I could probably just have a small Windows XP VM and RDC into my desktop or into the dev VM on my desktop to make life easier.&lt;/p&gt;

&lt;p&gt;As a trial though, I've installed Windows 7 RC x64 on my desktop with Boot Camp and will try it out this week or coding.  I've installed &lt;a href="http://insentient.net/"&gt;Switcher&lt;/a&gt;, which seems like a nice replacement for Expose, but don't know about Spaces yet.  Maybe I'll try a day or two with my dev VM bumped up to 4gb as well.&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/invalidlogic/~4/clQqMvY0-WU" height="1" width="1"/&gt;</description><feedburner:origLink>http://invalidlogic.com/life/contemplating-some-computing-changes/</feedburner:origLink></item><item><title>Drawing lessons from a failure</title><link>http://feedproxy.google.com/~r/invalidlogic/~3/lbv4MjeCqEg/</link><pubDate>Fri, 01 May 2009 01:45:37 GMT</pubDate><guid isPermaLink="false">http://invalidlogic.com/life/drawing-lessons-from-a-failure/</guid><dc:creator>Ken Robertson</dc:creator><slash:comments>0</slash:comments><category domain="http://invalidlogic.com/life/">Life</category><description>&lt;p&gt;Recently, a sandwich shop here in town closed up.  I wasn't really all that surprised, since I knew it was doomed for failure from the beginning, but I was thinking about it and saw some useful lessons in it.&lt;/p&gt;

&lt;p&gt;This is the story of the Mr. Pickles Restaurant in Lodi, CA.  For almost 2 years, my wife and I lived just down the street from one of them in Elk Grove and I literally went there 2-3 times a week.  It was awesome.  When I saw one was opening here in town, I was excited to finally get a new sandwich shop in town, and the same one I loved going to before, but had a sense from the beginning that it might be ill fated.  The building it was opening in was previously a Togo's which had closed a few years before because no one went there either.  I knew the Mr. Pickles could fall to the same fate.&lt;/p&gt;

&lt;p&gt;The place was on the David Letterman show shortly after it opened in his "Small Town News" segments.  They had a guy in a &lt;a href="http://www.youtube.com/watch?v=7ZrHhea-PeM"&gt;pickle costume dancing&lt;/a&gt; on the street corner.  The cops were called on the giant pickle for holding up traffic one day.  It made &lt;a href="http://www.lodinews.com/articles/2008/04/10/news/2_danceoff_080410.txt"&gt;the local newspaper&lt;/a&gt;'s cop log, and ended up on &lt;a href="http://www.lodinews.com/articles/2008/04/03/news/3_letterman_080403.txt"&gt;Letterman&lt;/a&gt;.  And yet just one year after that, it is closed up.&lt;/p&gt;

&lt;p&gt;&lt;b&gt;Location == Usability&lt;/b&gt;&lt;/p&gt;

&lt;p&gt;The saying "location, location, location" is often over used, but always true.  Can also say "usability, usability, usability", but it is more of a tongue twister.&lt;/p&gt;

&lt;p&gt;Things like being on the right street corner are important, but there are other factors of a location that killed this place.  It is on a small lot on the corner of a busy street.  There are maybe 6 parking spots.  This is a big killer for your lunch crowd.  First, it is busy, so pulling into a small lot might be fun.  Then you find the lot is full of 3 other cars looking for a spot, which are there are none.  So you fight your way out, go down the street, flip a U, and go park across the street in the much bigger lot and then you need wait at the crosswalk to go get lunch.  Lesson: Don't make people have to do extra work to get to your place, or use your app.  If it is difficult to just get in the door, people won't bother.  If you app and slow to load, people will just move on.  If it is a pain to register, people will skip it.  A recent &lt;a href="http://www.pingdom.com/_img/press/pingdom_20090423_report_airline_websites_downtime.pdf"&gt;paper by Pingdom&lt;/a&gt; mentioned 28% of online shoppers will not wait more than 4 seconds for a page to load.  The number goes up to 1/3 when looking at broadband users.&lt;/p&gt;

&lt;p&gt;&lt;b&gt;Choose your competition&lt;/b&gt;&lt;/p&gt;

&lt;p&gt;Another killer... when you end up going across the street to park, in the nice big parking lot, there is another sandwich shop which has been in town since forever which everyone knows and loves.  Right across the street from stiff competition isn't the best place.  Just the act of having to go across the street could motivate the person to go to the other place instead.  Lesson: taking on competition is great, but sometimes focusing on where they're weak might to better.  With a restaurant here in Lodi, there are plenty of busy areas that could use a deli.  Or be much more specialized with your sandwiches, rather than run of the mill.  With software, if you competitor is weak in one aspect, make yours be awesome at it as well.&lt;/p&gt;

&lt;p&gt;&lt;b&gt;Brand yourself, and stick to it&lt;/b&gt;&lt;/p&gt;

&lt;p&gt;One of the things this sandwich chain thrives on is individuality.  It is a chain of franchises, so each restaurant has some differences.  One thing is they all have the same sandwiches, but they all name them differently.&lt;/p&gt;

&lt;p&gt;This can be a positive and a negative.  You can go to one location, fall in love with a sandwich, but then go to another one and be completely lost looking at the menu.  This can be confusing, especially if you don't know they do this.&lt;/p&gt;

&lt;p&gt;You also need to stick to it though.  The sandwich shop here in town copped out.  There is one 20 mins north from us in Elk Grove, and one 20 mins south in Stockton.  Instead of coming up with their own names, this restaurant copied the names of the ones in Stockton.  If your chain promotes individuality, then work it.  In this case, I walked in expecting a new set of names only to realize it lacked originality.  The franchise owner for this store was a disappointment.&lt;/p&gt;

&lt;p&gt;&lt;b&gt;Watch associations, and keep clean toilets&lt;/b&gt;&lt;/p&gt;

&lt;p&gt;One thing about the building for the restaurant is that it lacked an inside bathroom.  Bathrooms are important.  People like to wash their hands before eating, people got to go pee after drinking a soda, etc.  If your only option is a bathroom out around back, using it becomes unattractive.  You start getting pictures of those gross bathrooms around back at the gas station where the key is tied to a giant hub cap.  Associations are important.  You don't want people about to eat picturing bacteria infested bathrooms with keys on hubcaps.  Not sure of a parallel to software, but don't write something that sucks.  Associations come from negative outlooks.  People thought Rails was slow because Twitter had problems.  Think of the anagrams for FORD.&lt;/p&gt;

&lt;p&gt;&lt;b&gt;Meet basic expectations, or exceed when you change expectations&lt;/b&gt;&lt;/p&gt;

&lt;p&gt;One thing I've noticed at the Mr. Pickles I have been to is that they don't have fountain drinks.  This is such a basic requirement for most people that they don't understand why a place wouldn't have them.  People want to fill up themselves, they might want more than a 12oz soda, and they often like to refill before leaving.  Fountain drinks aren't that expensive.  From what I know, soda is a tremendous rip off.  But Mr. Pickles doesn't have them.  The one here in town just had normal 12oz soda cans, and a couple 20oz glasses of things like Gatorade.  Nothing special, just what you'd normally find in your own fridge or at the grocery store.&lt;/p&gt;

&lt;p&gt;Couple this with the bathroom experience, and some people like my parents only tried this Mr. Pickles once.  They failed to meet basic expectations.  If your app fails to load on the first try, forget it, you might be lucky if they try again.&lt;/p&gt;

&lt;p&gt;In some cases, when you don't meet basic expectations like fountain drinks, you need to turn it into something special.  The Mr. Pickles in Elk Grove which we loved so much didn't have fountain drinks either, but instead of offering normal 12oz sodas, they were fully stocked in specialty drinks.  Those brands you've never heard of but have the awesome flavors?  They had a ton of them.  They had a couple Pepsis and Sierra Mists for the vanilla people, but they had tons of brands you've never heard of with funky names and labels that made it an adventure to try them.  When we went there, I made an effort to try all the different ones they had.  The owner would regularly cycle out the ones that weren't selling well and get something new.  We got to know him and he'd tell me when he got something new in and ask my opinion.&lt;/p&gt;

&lt;p&gt;The one in Lodi again copied the Stockton store which lacked originality.  If you're going to copy another place, copy one that rocks, not the plain one.  The Stockton one stocked only normal drinks.  Its only saving grace is they got a good location.  The Lodi one unfortunately didn't duplicate that.  If you're not going to meet a basic expectation, then turn it into something more exciting.  Turn it into an adventure, a feature, a positive, something to differentiate yourself rather than undermine you.&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/invalidlogic/~4/lbv4MjeCqEg" height="1" width="1"/&gt;</description><feedburner:origLink>http://invalidlogic.com/life/drawing-lessons-from-a-failure/</feedburner:origLink></item><item><title>New Papercut released!</title><link>http://feedproxy.google.com/~r/invalidlogic/~3/jbSnRFqyRT0/</link><pubDate>Sat, 25 Apr 2009 05:57:29 GMT</pubDate><guid isPermaLink="false">http://invalidlogic.com/software/new-papercut-released/</guid><dc:creator>Ken Robertson</dc:creator><slash:comments>2</slash:comments><category domain="http://invalidlogic.com/software/">Software</category><description>&lt;p&gt;Last year, I had &lt;a href="http://invalidlogic.com/software/introducing-papercut/"&gt;introduced Papercut&lt;/a&gt; as a simple utility for testing email capabilities of a site or application. &amp;nbsp;Since then, I've used it quite frequently and&amp;nbsp;occasionally&amp;nbsp;get emails from others who've also found it useful (I always appreciate those).&lt;/p&gt;
&lt;p&gt;Tonight, I am pleased to release a new release. &amp;nbsp;Although it isn't ground breaking, it fixes a few minor nuances I've had and adds some new functionality I've really been wanting.&lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;Added the ability to send messages on to a live email server. &amp;nbsp;Get the test message in Papercut but want to see it in a live client? &amp;nbsp;Can forward it on and chose which mail server to send it to and the from/to users in the SMTP commands. &amp;nbsp;It doesn't alter the message, only the commands executed on the server (so it will go to the specified user).&lt;/li&gt;
    &lt;li&gt;Ensure the window is raised to the top when you click the tray icon and it is already open.&lt;/li&gt;
    &lt;li&gt;Changed the raw view of messages to use a fixed width font (Consolas or Courier New) and widened the default window some so a full line would fit in the main view.&lt;/li&gt;
    &lt;li&gt;Fixed an issue with clicking the delete button too quickly. &amp;nbsp;It would try to delete the same message twice and could cause an error. &amp;nbsp;It will now handle rapid clicking.&lt;/li&gt;
    &lt;li&gt;Added multiple selection in the message list so you can now do bulk deletes. &amp;nbsp;Hit Ctrl-A, select all, and hit delete. &amp;nbsp;Yay!&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Now for the linky details:&lt;/p&gt;
&lt;p style="margin-left: 40px; "&gt;&lt;a href="http://invalidlogic.com/papercut/"&gt;Project page&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin-left: 40px; "&gt;&lt;a href="http://invalidlogic.com/papercut/papercut-2009-04-24.zip"&gt;New binary download&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin-left: 40px; "&gt;&lt;a href="http://invalidlogic.com/papercut/papercut-source-2009-04-24.zip"&gt;New source download&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/invalidlogic/~4/jbSnRFqyRT0" height="1" width="1"/&gt;</description><feedburner:origLink>http://invalidlogic.com/software/new-papercut-released/</feedburner:origLink></item><item><title>XenServer now free, but what's its future?</title><link>http://feedproxy.google.com/~r/invalidlogic/~3/_vhLLYx12WY/</link><pubDate>Tue, 24 Feb 2009 07:04:32 GMT</pubDate><guid isPermaLink="false">http://invalidlogic.com/technology/xenserver-now-free-but-what-s-its-future/</guid><dc:creator>Ken Robertson</dc:creator><slash:comments>0</slash:comments><category domain="http://invalidlogic.com/technology/">Technology</category><description>&lt;p&gt;A while ago, I'd read a prediction about &lt;a href="http://www.brianmadden.com/blogs/brianmadden/archive/2008/06/30/prediction-citrix-will-drop-the-open-source-xen-hypervisor-for-hyper-v-the-rest-of-the-open-source-world-drops-xen-for-kvm.aspx"&gt;Citrix eventually dropping the Xen hypervisor&lt;/a&gt;.  The article and site mostly focus on aspects of XenApp and VMware's VDI.  The prediction was that Citrix drop Xen in favor of Hyper-V and focus more on tools, saying they're selling the tools already, not the hypervisor.  Today, it looks like that prediction may be on its way to becoming true.&lt;/p&gt;

&lt;p&gt;Today, &lt;a href="http://community.citrix.com/blogs/citrite/simoncr/2009/02/23/Free%2C+as+in+Virtual+Infrastructure"&gt;Citrix announced&lt;/a&gt; that XenServer will now be free, and that Citrix is now focusing on building tools... but not just for Xen, but also for Hyper-V.&lt;/p&gt;

&lt;p&gt;Additionally, today &lt;a href="http://www.internetnews.com/software/article.php/3806136/Red+Hat+Lays+Out+Its+Virtualization+Play.htm"&gt;RedHat unveiled&lt;/a&gt; some of its virtualization plans.  They have some big plans for its acquisition of &lt;a href="http://qumranet.com/"&gt;Qumranet&lt;/a&gt;, developers of KVM (Kernel Virtual Machine), last September.  Its plans include in elimination of Xen and migration to being a strong contender with KVM.&lt;/p&gt;

&lt;p&gt;It looks like 2009 will be a pretty big year for virtualization.  In reading online, a lot of general opinion is that for open source server virtualization, people will be dropping Xen in favor of KVM.  When RedHat acquired Qumranet, their intent was obvious.  Since then, Fedora has also dropped Xen from its standard support, as well as Ubuntu 8.10, which seems to be focusing on KVM now as well.  If the major distros are dropping mainline Xen support, and Citrix is making XenSource free, what will drive innovation with Xen?  Citrix will be focusing on tools.  They can let Microsoft innovate on Hyper-V and then they just need to do the tools.  One of the main confidence boosters for people is that KVM is already in the Linux kernel, making almost all distributions instantly compatible, while Xen has struggled to get into the kernel.&lt;/p&gt;

&lt;p&gt;A few weeks ago, I'd installed &lt;a href="http://pve.proxmox.com/"&gt;Proxmox Virtual Environment&lt;/a&gt; and was quite impressed with it.  Proxmox is a free packaged system that supports KVM virtualization.  I didn't really benchmark its Windows guest performance, but it fired up and ran quite smoothly.  Had virtual environment installed and running VMs in only 15 minutes.&lt;/p&gt;

&lt;p&gt;For me, I'm somewhat unsure about the Xen vs KVM debate.  XenServer is fairly nice and has a rich API to go along with it and a pretty decent management app.  KVM is less mature, but gaining a lot of momentum.  Virtualization is a market I'm always interested in and like to dabble with each release that comes out of VMware, Citrix, and Microsoft, though KVM is certain catching my eye.&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/invalidlogic/~4/_vhLLYx12WY" height="1" width="1"/&gt;</description><feedburner:origLink>http://invalidlogic.com/technology/xenserver-now-free-but-what-s-its-future/</feedburner:origLink></item><item><title>Awesome virtual server hosting</title><link>http://feedproxy.google.com/~r/invalidlogic/~3/S88HDRJySf0/</link><pubDate>Sat, 07 Feb 2009 04:00:06 GMT</pubDate><guid isPermaLink="false">http://invalidlogic.com/technology/awesome-virtual-server-hosting/</guid><dc:creator>Ken Robertson</dc:creator><slash:comments>1</slash:comments><category domain="http://invalidlogic.com/technology/">Technology</category><description>&lt;p&gt;For a while now, I've run a small virtual server business, hosted on a couple of servers that I own in a local Sacramento datacenter.&lt;/p&gt;

&lt;p&gt;Currently, I'm looking for a few additional customers.  I don't actively recruit, however looking to fill some extra capacity I have.&lt;/p&gt;

&lt;p&gt;Some information:&lt;/p&gt;

&lt;ul&gt;
	&lt;li&gt;Windows Server 2008 or any linux distro available.&lt;/li&gt;
	&lt;li&gt;Virtualization with XenServer 5.&lt;/li&gt;
	&lt;li&gt;Low load servers, not oversold or overcommitted.&lt;/li&gt;
	&lt;li&gt;Top quality bandwidth.  I don't like crappy connectivity.  Currently get bandwidth through XO and Verizon, soon moving to a new datacenter with Level3 and XO.&lt;/li&gt;
	&lt;li&gt;Hardware firewall and hosted anti-spam solution.&lt;/li&gt;
	&lt;li&gt;Shared SQL Server 2005 (soon to be moved to 2008) server&lt;/li&gt;
	&lt;li&gt;Manage your sites with DotNetPanel, email with SmarterMail&lt;/li&gt;
	&lt;li&gt;All servers are Dell PowerEdge 1950s, 2x quad core processors, 8-16gb RAM (upgrading all to 16gb soon)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Some other important points:&lt;/p&gt;

&lt;ul&gt;
	&lt;li&gt;Your virtual server is your own responsibility.  You break IIS, you fix it!&lt;/li&gt;
	&lt;li&gt;No set limits for number of domains/email accounts, but be reasonable.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I usually cater to a more technical crowd.  Developers can appreciate the quality, understand they get what they pay for, and are pretty much self-managing.  My current users really don't come to me for that much.&lt;/p&gt;

&lt;p&gt;Plans are either:&lt;/p&gt;

&lt;ul&gt;
	&lt;li&gt;512mb RAM&lt;/li&gt;
	&lt;li&gt;20gb space&lt;/li&gt;
	&lt;li&gt;150gb bandwidth&lt;/li&gt;
	&lt;li&gt;$50/month for Linux, $70/month for Windows&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Or,&lt;/p&gt;

&lt;ul&gt;
	&lt;li&gt;1024mb RAM&lt;/li&gt;
	&lt;li&gt;40gb space&lt;/li&gt;
	&lt;li&gt;300gb bandwidth&lt;/li&gt;
	&lt;li&gt;$100/month for Linux, $120/month for Windows&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Space is limited, as I only have a couple servers.  I'm not buying any additional ones, so not going beyond my current capabilities.  Once the space fills up, it is done.&lt;/p&gt;

&lt;p&gt;Hosting with me is not right for everyone.  If you need a lot of support, then it may be better to look elsewhere.  I don't run this as a full-on business where I cater to all the customers needs.  That said, if you know what you're doing, want a quality virtual server on quality hardware and connectivity, then I'm just what you're looking for.&lt;/p&gt;

&lt;p&gt;If you're interested, please &lt;a href="http://invalidlogic.com/contact/"&gt;contact me&lt;/a&gt; directly.&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/invalidlogic/~4/S88HDRJySf0" height="1" width="1"/&gt;</description><feedburner:origLink>http://invalidlogic.com/technology/awesome-virtual-server-hosting/</feedburner:origLink></item><item><title>Working from home through life's stages</title><link>http://feedproxy.google.com/~r/invalidlogic/~3/5dhz6Z1hNMA/</link><pubDate>Fri, 06 Feb 2009 05:38:00 GMT</pubDate><guid isPermaLink="false">http://invalidlogic.com/life/working-from-home-through-life-s-stages/</guid><dc:creator>Ken Robertson</dc:creator><slash:comments>0</slash:comments><category domain="http://invalidlogic.com/life/">Life</category><description>&lt;p&gt;I had been talking to a friend recently about working from home and how it has been over the past years.  I'd realized that I have a special perspective on working from home as I've been doing it for last 4 1/2 years and have been progressing through several of life's stages.  Over that time, I've collected a good set of pros/cons of each, and some tips overall that could be valuable.&lt;/p&gt;

&lt;p&gt;I started at Telligent as a contractor when the company was only a month old, and three months later was hired on as a full-time, salaried employee.  For my first year at Telligent, I was single (well, engaged), living on my own with a roommate, and independent.  After that, I spent two years married with no children.  And I've spent the past year and a half married with one child (and will be two children in 5 more months).  These are pretty much the three stages others in the workforce would find themselves in.  Each of them have their own sets of challenges for working at home, as well as different sets of benefits.  Additionally, the transition from each can present some difficulties.&lt;/p&gt;

&lt;h3&gt;Single/On Your Own&lt;/h3&gt;

&lt;p&gt;This stage I pretty much characterize as the "bad habit risk" stage.  When I first started working from home, I was engaged, but at the time primarily saw my wife on weekends.  She lived about 45 minutes away, and we'd usually meet up once a week for lunch or spend the night together, but mainly saw each other on weekends.  So during the week, I was on my own schedule.  Working from home in this way, you can develop some really odd hours and habits.  I was very much a night person, so my sleep schedule got all off.  I was usually up from 9am to 3 or 4am.  There were times where I'd still be up at night when Scott, on the east coast, would just be getting up.  I would pretty much work, in some capacity all day.  Partially because Telligent was very young, so I was doing a lot of hacking on things.  Rob would say something like "it'd be cool if you can read the forums through NNTP" and I went off and wrote an NNTP server for Community Server.&lt;/p&gt;

&lt;p&gt;It is easy to develop this kind of schedule when on your own though, since you don't generally have anything to counter balance you.  If you want to work all day, you can.  If you want to stay up all night coding, you can.  There aren't as many external boundaries as there are at other stages.&lt;/p&gt;

&lt;p&gt;In terms of just awesome code hacking, this stage is awesome... you have all the time you want.  You can get as deeply engrossed in code as you want.  However some negatives are vitamin-D deficiencies, skewed eating schedules, and can make future transitions harder.  My eating schedule was so far off at that time.  I'd eat lunch like 3-5pm and dinner at around 10pm.  My mother used to say it was bad to eat late and go to bed, but in reality my schedule was like everyone else's, just off 3 hours.  I get up at 9am, adjust 3 hours and it is around most people's time, ~6am.  I ate lunch at 3-5pm, which adjusted is 12-2pm.  I had dinner at 10pm, which is 7pm when adjusted, and so on.&lt;/p&gt;

&lt;h3&gt;Married w/o Kids&lt;/h3&gt;

&lt;p&gt;The next stage is when I got married, but didn't have any kids yet.  This stage can be characterized as "limited face time".&lt;/p&gt;

&lt;p&gt;The transition to this stage can be kind of tough.  My days used to be 9am to 3am, but my wife got up earlier and would often wake me up while she was getting ready, and me being up late and moving around could keep her up at night.  Also, I was used to working through the day pretty much, but now she'd want to spend time together at night.  I had adjust to more normal hours, and normal work hours.  As a result, I saw a drop in terms of overall output.  A lot of it was from not being able to put as much time into things, but part of it was my most productive time (at night) was now gone, so I needed to find ways to be more product at other times.&lt;/p&gt;

&lt;p&gt;With this, process becomes more important.  I got on more of a daily schedule.  I read up on Getting Things Done and tried to be organized.  Before, I was very productive, but lacked organization.  I made up for it with an abundance of time.  Now, I was limited in time, so needed to compensate by being organized.&lt;/p&gt;

&lt;p&gt;One of the challenges with this stage can be personal interaction.  Gone were the times of die-hard hacking til wee hours, and instead I found it challenging that the only person I had interactions with on a daily basis was my wife.  I love my wife, but I didn't get to interact with enough people.  Sure I might go out and grab lunch, but not going to spend time chatting with the clerk at Togos.&lt;/p&gt;

&lt;p&gt;Some other challenges include bleed-over effects between work and personal time.  It is very easy for work to bleed over into personal time, especially with email.  It is best to just simply close email at a certain point in the day.  Maybe check it a time or two for emergencies, but generally just accept that most things can wait until the morning.  Nothing is that urgent.  Allowing the two (work/home) to encroach can strain things at home, and an unhappy wife means an unhappy dev.&lt;/p&gt;


&lt;h3&gt;Married with Kids&lt;/h3&gt;

&lt;p&gt;This would be my current stage.  The transition period to this stage sucks, but is limited.  Overall, the lessons learned from the no-kids stage are valuable, but the transition period is marred with being constantly tired and insomnia.  I was only off for 2 weeks after my son was born, and that wasn't long enough.  He was still getting up ever 2 hours at night, and my wife and I were both super tired.  This meant productivity was down.  Luckily, once he started sleeping better, it improves and eventually returns to normal.  The next time around, I'm taking 6 weeks off.  By that point, should be better adjusted and ready to come back.  In general, take as much time as you can, because it is nice to enjoy the new member of the family, but also the longer you wait the better your sleep schedule will be.&lt;/p&gt;

&lt;p&gt;My own experiences with this stage might be unique, but I think it is also where you benefit most from working at home.&lt;/p&gt;

&lt;p&gt;Our situation is where my wife is a pre-school teacher here in town.  Since pre-school days are pretty short, she is basically just part time and is usually home by 1pm.  Since August though, attendance at the school was down (damn economy), so they cut their Tuesday/Thursday class.  This did mean my wife basically got a 40% pay cut, but it also meant she (and my son) were around all day on Tuesdays and Thursdays.&lt;/p&gt;

&lt;p&gt;The benefit of this stage is being able to spend quality time with the family.  It is nice to have no commute, so whenever my wife is home, my son is home.  When I take breaks every few hours, I can just go out in the living room and play around with my son.  People who have long commutes often miss out on the family time.  In working from home, you don't have that and if your kids are around, you can take a few minutes out to go see them.&lt;/p&gt;

&lt;p&gt;This can be a double edged sword though.  First, they can distractions if you allow them to be.  You might be tempted to go out and play when you need to get stuff done.  Or more so, a crying baby can kill concentration.  And second, it can pull at your strings a lot.  There are sometimes where my son gets used to me being around and misses me, so he'll come to my door during the day and bang on it, or follow me into my office, and so on.  When they're being cute and having fun, you can feel guilty saying "Daddy has go do some work".  Part of it is realizing you still have it better than most and to not feel guilty too much.&lt;/p&gt;

&lt;p&gt;Additionally, it is important to lay some boundaries and close yourself off.  Even if kids aren't around much during the day, you may still need to contend with summer vacations.  For me, when I am working, my office door is closed.  I work in my office, when I am out of my office, I am not working.  If the door is closed, do not bother (or please knock).  Though along with that is setting some work hours.  I don't want to be interrupted to change a diaper at 11am, but at 6pm it is ok.&lt;/p&gt;

&lt;h3&gt;Overall&lt;/h3&gt;

&lt;p&gt;Overall it does take a lot of discipline to successfully work at home.  It is not something that is for everyone, and it is something that you go through in waves.  At times you will love it, and at times you might hate it.  It all comes down to your own discipline to keeping motivation, keeping a schedule, and not burning out.&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/invalidlogic/~4/5dhz6Z1hNMA" height="1" width="1"/&gt;</description><feedburner:origLink>http://invalidlogic.com/life/working-from-home-through-life-s-stages/</feedburner:origLink></item><item><title>Desperate Domain Resellers?</title><link>http://feedproxy.google.com/~r/invalidlogic/~3/KAqY1_7x28Q/</link><pubDate>Thu, 15 Jan 2009 05:21:00 GMT</pubDate><guid isPermaLink="false">http://invalidlogic.com/technology/desperate-domain-resellers/</guid><dc:creator>Ken Robertson</dc:creator><slash:comments>1</slash:comments><category domain="http://invalidlogic.com/technology/">Technology</category><description>&lt;p&gt;This morning I woke up to this email waiting for me:&lt;/p&gt;
&lt;blockquote&gt;From: xxx@googlemail.com&lt;br /&gt;
To: me&lt;br /&gt;
Subject: Regarding your domain name whobroke.us&lt;br /&gt;
&lt;br /&gt;
Hi,&lt;br /&gt;
&lt;br /&gt;
I wondered if you would be interested in buying the .COM version of your domain name whobroke.us for $195 ? &lt;br /&gt;
Let me know.&lt;br /&gt;
Shawn.&lt;/blockquote&gt;
&lt;p&gt;So I have this domain name, whobroke.us.  Last January I went on a domain-spree and thought it could be a political domain or something like that.  It is now pending expiration, since I never did anything with it.  But I get this email today from someone wanting to sell me the .com version.  Ok...&lt;/p&gt;
&lt;p&gt;So I go over to GoDaddy just to look up the domain, and low-and-behold, the domain is available... I could get it for $9.99.  On the offchance, I though maybe he meant whobrokeus.com, so I looked it up and it is available as well. &amp;nbsp;I sent him a reply, however I haven't heard back yet.  My guess is it is an automated script since a few hours after I emailed him, I received another message (the same one) from him again.&lt;/p&gt;
&lt;p&gt;I guess domain resellers now are so desperate that they'll try and sell you readily available domains at a huge mark up.  Hey, someone agrees to buy it for $195, run out and buy it for $10, pocket $185!&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/invalidlogic/~4/KAqY1_7x28Q" height="1" width="1"/&gt;</description><feedburner:origLink>http://invalidlogic.com/technology/desperate-domain-resellers/</feedburner:origLink></item></channel></rss>
