<?xml version='1.0' encoding='UTF-8'?><rss xmlns:atom="http://www.w3.org/2005/Atom" xmlns:openSearch="http://a9.com/-/spec/opensearchrss/1.0/" xmlns:blogger="http://schemas.google.com/blogger/2008" xmlns:georss="http://www.georss.org/georss" xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr="http://purl.org/syndication/thread/1.0" version="2.0"><channel><atom:id>tag:blogger.com,1999:blog-4239786610619534317</atom:id><lastBuildDate>Fri, 11 Oct 2024 23:22:14 +0000</lastBuildDate><category>solved</category><category>it</category><category>mvc</category><category>sysadmin</category><category>about</category><category>asp</category><category>asp.net</category><category>cloud</category><category>servicestack.net</category><category>sql</category><category>usability</category><title>Tune Your Guitar</title><description>Exploring ways to setup Software projects for success by making good Architecture and Design decisions.</description><link>http://tunurgitr.blogspot.com/</link><managingEditor>noreply@blogger.com (Anonymous)</managingEditor><generator>Blogger</generator><openSearch:totalResults>10</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><item><guid isPermaLink="false">tag:blogger.com,1999:blog-4239786610619534317.post-8298839212893201823</guid><pubDate>Fri, 02 Sep 2016 13:47:00 +0000</pubDate><atom:updated>2016-09-02T06:47:44.959-07:00</atom:updated><title>Adding disk space to a graylog 1.x OVA without creating a new drive</title><description>&lt;p&gt;There are a few tutorials out there that explain how to do this by adding a new drive. Most notably:
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;http://docs.graylog.org/en/1.2/pages/installation/graylog_ctl.html#extend-disk-space&quot;&gt;http://docs.graylog.org/en/1.2/pages/installation/graylog_ctl.html#extend-disk-space&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
However, I found you can skip the hassle of a second drive by following these steps:
&lt;/p&gt;


&lt;h3&gt;1. Extend Disk in VMWare&lt;/h3&gt;
&lt;h3&gt;2. Parted&lt;/h3&gt;
&lt;p&gt;Run the following command&lt;/p&gt;
&lt;blockquote&gt;
&lt;pre&gt;sudo parted&lt;/pre&gt;
&lt;/blockquote&gt;

&lt;p&gt;Then inside parted, run:&lt;/p&gt;
&lt;blockquote&gt;
&lt;pre&gt;print&lt;/pre&gt;
&lt;/blockquote&gt;
&lt;p&gt;
This will list your volumes. For me it was:
&lt;/p&gt;

&lt;blockquote&gt;
&lt;pre&gt;
Number  Start   End     Size    Type      File system  Flags
 1      1049kB  256MB   255MB   primary   ext2         boot
 2      257MB   21.0GB  20.7GB  extended
 5      257MB   21.0GB  20.7GB  logical                lvm
&lt;/pre&gt;
&lt;/blockquote&gt;

&lt;p&gt;
Next, inside parted, run:
&lt;/p&gt;
&lt;blockquote&gt;
&lt;pre&gt;
resizepart
Partition number? &lt;b&gt;2&lt;/b&gt;
End? [21.0GB]? &lt;b&gt;50000 &lt;/b&gt;(to extend to 50,000mb ~50gb)
&lt;/pre&gt;
&lt;/blockquote&gt;

&lt;blockquote&gt;
&lt;pre&gt;
resizepart
Partition number? &lt;b&gt;5&lt;/b&gt;
End? [21.0GB]? &lt;b&gt;50000 &lt;/b&gt;(to extend to 50,000mb ~50gb)
&lt;/pre&gt;
&lt;/blockquote&gt;

&lt;blockquote&gt;
&lt;pre&gt;exit&lt;/pre&gt;
&lt;/blockquote&gt;

&lt;p&gt;If you want, you can run &lt;code&gt;print&lt;/code&gt; again to see the new sizes&lt;/p&gt;

&lt;br /&gt;
&lt;h3&gt;3. lvm&lt;/h3&gt;

&lt;p&gt;Launch LVM:&lt;/p&gt;
&lt;blockquote&gt;
&lt;pre&gt;sudo lvm&lt;/pre&gt;
&lt;/blockquote&gt;

&lt;p&gt;Then inside LVM, run: &lt;code&gt;pvdisplay&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;This shows all of the physical volumes. In my case:&lt;/p&gt;
&lt;blockquote&gt;
&lt;pre&gt;
 --- Physical volume --- 
  PV Name               /dev/sda5 
  VG Name               graylog-vg 
  PV Size               19.29 GiB / not usable 2.00 MiB 
  Allocatable           yes (but full) 
  PE Size               4.00 MiB 
  Total PE              4938 
  Free PE               0 
  Allocated PE          4938 
  PV UUID               ifegZp-w4fj-zQwe-8DQW-LWaB-CxOo-mL3qLG 
&lt;/pre&gt;
&lt;/blockquote&gt;

&lt;p&gt;Next, resize this volume by running:&lt;/p&gt;
&lt;blockquote&gt;
&lt;pre&gt;pvresize /dev/sda5&lt;/pre&gt;
&lt;/blockquote&gt;

&lt;p&gt;This extends the physical volume to fill the rest of the space freed up via parted&lt;/p&gt;

&lt;p&gt;Next, run the following command to show the new size:&lt;/p&gt;
&lt;blockquote&gt;
&lt;pre&gt;pvdisplay&lt;/pre&gt;
&lt;/blockquote&gt;

&lt;p&gt;Next, run this command to show the logical volumes:&lt;/p&gt;
&lt;blockquote&gt;
&lt;pre&gt;lvdisplay&lt;/pre&gt;
&lt;/blockquote&gt;

&lt;p&gt;Then resize the main logical volume:&lt;/p&gt;
&lt;blockquote&gt;
&lt;pre&gt;lvresize -l&amp;nbsp;+100%FREE /dev/graylog-vg/root&lt;/pre&gt;
&lt;/blockquote&gt;

&lt;p&gt;This resizes the selected volume to take up the rest of the free space&lt;/p&gt;

&lt;p&gt;You can confirm the new size by running &lt;pre&gt;lvdisplay&lt;/pre&gt;&lt;/p&gt;

&lt;br /&gt;
&lt;h3&gt;4. resize2fs&lt;/h3&gt;
&lt;p&gt;
The problem now is that if you run &quot;df -h&quot; you still only see the originally-remaining free space. To fix that you have to run:
&lt;/p&gt;
&lt;blockquote&gt;
&lt;pre&gt;
sudo resize2fs /dev/mapper/graylog--vg-root
&lt;/pre&gt;
&lt;/blockquote&gt;
</description><link>http://tunurgitr.blogspot.com/2016/09/adding-disk-space-to-graylog-1x-ova.html</link><author>noreply@blogger.com (Anonymous)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-4239786610619534317.post-3794355368329387231</guid><pubDate>Fri, 02 Sep 2016 13:35:00 +0000</pubDate><atom:updated>2016-09-02T06:35:54.804-07:00</atom:updated><title>angular.copy() error: &quot;destination.push is not a function&quot;</title><description>&lt;p&gt;Recentlly I got the following error:&lt;/p&gt;

&lt;blockquote&gt;
&lt;code&gt;
TypeError: destination.push is not a function
&lt;/code&gt;
&lt;/blockquote&gt;

&lt;p&gt;Turns out I was trying to use angular.copy(source, target) where the target was an object and the source was an array.&lt;/p&gt;

&lt;p&gt;When using angular.copy(source, dest), both types must be the same &quot;type&quot;, either Object, or Array&lt;/p&gt;</description><link>http://tunurgitr.blogspot.com/2016/09/angularcopy-error-destinationpush-is.html</link><author>noreply@blogger.com (Anonymous)</author><thr:total>6</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-4239786610619534317.post-478858717858596229</guid><pubDate>Tue, 17 Apr 2012 16:40:00 +0000</pubDate><atom:updated>2012-04-17T09:40:13.162-07:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">asp.net</category><category domain="http://www.blogger.com/atom/ns#">mvc</category><category domain="http://www.blogger.com/atom/ns#">servicestack.net</category><title>MiniProfiler for AJAX calls with ServiceStack.Net</title><description>I was surprised not to find this documented elsewhere on the Web.&lt;br /&gt;
ServiceStack.Net comes with a (slightly-modified) version of the MiniProfiler formerly-known-as &quot;MVC MiniProfiler&quot; now just referred to as &quot;MiniProfiler&quot; (&lt;a href=&quot;http://miniprofiler.com/&quot;&gt;http://miniprofiler.com&lt;/a&gt;) -- and it works great on their &quot;HTML&quot; service pages...but I wanted to get it to show on my MVC pages AND I also wanted it to update as I made JSON-formatted ajax calls to my web services. &amp;nbsp;So, here&#39;s what I did:&lt;br /&gt;
&lt;br /&gt;
First, I&#39;ll here&#39;s my &amp;quot;_Layout.cshtml&amp;quot; file:
&lt;br /&gt;
&lt;script src=&quot;https://gist.github.com/2407327.js?file=_Layout.cshtml&quot;&gt;
&lt;/script&gt;
&lt;ol&gt;
&lt;li&gt;You&#39;ll notice that I do RenderIncludes() &lt;em&gt;before&lt;/em&gt; I include jquery.  I had some problems doing it in the other order, all my AJAX calls were erroring.&lt;/li&gt;
&lt;li&gt;RenderIncludes() produces an HtmlEncoded string, so you end up with a bunch of &amp;amp;lt; and stuff in your code, I&#39;m wrapping it with @Html.Raw so that we get the actual raw text on the page.
&lt;/li&gt;
&lt;/ol&gt;
That takes care of rendering the MiniProfiler for your MVC controller logic, but now we need to handle the ServiceStack.Net AJAX requests. Here&#39;s the javascript I used:&lt;br /&gt;
&lt;script src=&quot;https://gist.github.com/2407327.js?file=miniProfilerAjaxHook.js&quot;&gt;
&lt;/script&gt;
&lt;br /&gt;
Basically, I&#39;m grabbing the special Response header that ServiceStack adds called &quot;X-MiniProfiler-Ids&quot; that&#39;s a JSON-formatted array of ID numbers that correspond to MiniProfiler line-items -- then I&#39;m telling the MiniProfiler to go get the data for those Ids.&lt;br /&gt;
That&#39;s it. After that, it &quot;just works&quot;</description><link>http://tunurgitr.blogspot.com/2012/04/miniprofiler-for-ajax-calls-with.html</link><author>noreply@blogger.com (Anonymous)</author><thr:total>1</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-4239786610619534317.post-6692447480770438357</guid><pubDate>Fri, 08 Jul 2011 21:41:00 +0000</pubDate><atom:updated>2011-07-08T15:09:36.165-07:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">solved</category><title>Expression Design Slice Size Problems</title><description>&lt;p&gt;Expression Design will sometimes...very annoyingly refuse to export slices or even whole images at the dimensions you specify.&lt;/p&gt;&lt;p&gt;To summarize some other pretty long blog threads &lt;a href=&quot;http://social.expression.microsoft.com/Forums/en/design/thread/d375da18-4c80-4ee7-ac02-f4f1732fa3cc&quot;&gt;here&lt;/a&gt; and &lt;a href=&quot;http://blogs.msdn.com/b/avip/archive/2010/10/29/expression-design-problems-with-exporting-slices-wrong-sizes.aspx&quot;&gt;here&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;
&lt;p&gt;The interesting part is...I can replicate this problem with a line (even if the lines boundaries are *exactly* at pixel boundaries), but if I have a rectangle that&#39;s positioned at exact pixel boundaries, the problem goes away.&lt;br /&gt;
&lt;br /&gt;
&lt;p&gt;The fix is:&lt;br /&gt;
&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Turn of anti-aliasing&lt;br /&gt;
&lt;br /&gt;
OR&lt;br /&gt;
&lt;br /&gt;
&lt;/li&gt;
&lt;li&gt;If you can, use rectangles instead of lines&lt;br /&gt;
&lt;br /&gt;
OR&lt;br /&gt;
&lt;br /&gt;
&lt;/li&gt;
&lt;li&gt;Move vector shapes away from the edges of your image/slice&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;If you have lines right at the edge of your image and you have anti-aliasing turned on -- Expression Design decides that anti-aliasing is more important than your dimensions....surely you don&#39;t want to waste all that anti-aliasing data outside the edges :-) *sigh*&lt;/p&gt;</description><link>http://tunurgitr.blogspot.com/2011/07/expression-design-slice-size-problems.html</link><author>noreply@blogger.com (Anonymous)</author><thr:total>1</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-4239786610619534317.post-818847898727136392</guid><pubDate>Mon, 27 Jun 2011 23:41:00 +0000</pubDate><atom:updated>2011-07-08T15:07:27.058-07:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">asp</category><category domain="http://www.blogger.com/atom/ns#">mvc</category><category domain="http://www.blogger.com/atom/ns#">solved</category><title>Weird Error Running ASP MVC 3 Site in Debug Mode</title><description>&lt;p&gt;Saw this error today:&lt;/p&gt;&lt;blockquote&gt;It is an error to use a section registered as allowDefinition=&#39;MachineToApplication&#39; beyond application level. This error can be caused by a virtual directory not being configured as an application in IIS.&lt;/blockquote&gt;&lt;p&gt;Actually, the problem was I had edited the wrong web.config file :-)&lt;/p&gt;&lt;p&gt;In ASP.Net MVC, there&#39;s a web.config under the main root, and a web.config under the Views folder.&lt;/p&gt;&lt;p&gt;So, my tip of the day is, make sure you&#39;re editing the one you&#39;re supposed to be.&lt;/p&gt;</description><link>http://tunurgitr.blogspot.com/2011/06/weird-iis-error.html</link><author>noreply@blogger.com (Anonymous)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-4239786610619534317.post-4136491162106122821</guid><pubDate>Thu, 14 Oct 2010 00:09:00 +0000</pubDate><atom:updated>2011-07-08T15:06:58.710-07:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">it</category><category domain="http://www.blogger.com/atom/ns#">solved</category><category domain="http://www.blogger.com/atom/ns#">sql</category><category domain="http://www.blogger.com/atom/ns#">sysadmin</category><title>Darned SQL Agent Service</title><description>This took me a little while to solve.&lt;br /&gt;
&lt;br /&gt;
My SQL agent service would start and then immediately stop unexpectedly -- this is after running a repair of my SQL installation.&lt;br /&gt;
&lt;br /&gt;
I took the advice given here: &lt;a href=&quot;http://support.microsoft.com/kb/288577&quot;&gt;http://support.microsoft.com/kb/288577&lt;/a&gt; and tried to execute SQLAGENT.EXE from the command prompt, and started down the path of troubleshooting the error message.&lt;br /&gt;
&lt;br /&gt;
It wasn&#39;t until (much) later that I thought to try using runas to run the command as the user that the Agent service is configured to use.&lt;br /&gt;
&lt;br /&gt;
Then, when I ran the command SQLAGENT.EXE -c -v, I got this helpful message:&lt;br /&gt;
&lt;br /&gt;
&lt;code&gt;2010-10-13 20:03:17 - ! [246] Startup error: Unable to read SQLServerAgent registry settings (from Software\Microsoft\Microsoft SQL Server\MSSQL10_50.TFS\SQLServerAgent)&lt;/code&gt;&lt;br /&gt;
&lt;br /&gt;
After changing the permissions there, everything is working great.</description><link>http://tunurgitr.blogspot.com/2010/10/darned-sql-agent-service.html</link><author>noreply@blogger.com (Anonymous)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-4239786610619534317.post-3937837667145322884</guid><pubDate>Mon, 02 Nov 2009 20:23:00 +0000</pubDate><atom:updated>2009-11-02T13:13:07.660-08:00</atom:updated><title>Convention over Documentation</title><description>&lt;a href=&quot;http://en.wikipedia.org/wiki/Convention_over_configuration&quot;&gt;Convention over Configuration&lt;/a&gt; seems to be an increasingly popular approach to software development, especially in a world of increasing development frameworks. I think the general principle holds a lot of promise for the world of IT as well.&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;strong&gt;&lt;span style=&quot;font-size:130%;&quot;&gt;What is Convention over Configuration?&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;I think the best place to start is to summarize the idea of Convention over Configuration -- and I think the best way to explain it is by an over-simplified example:&lt;br /&gt;&lt;br /&gt;Imagine you have a framework that automatically took objects you&#39;ve created in your code and saved them to database. A traditional approach would be to have some kind of configuration file that contains maps which classes go into which database table. Something like:&lt;br /&gt;&amp;lt;class table=&quot;&amp;amp;biz_users&quot;&amp;amp; name=&quot;&amp;amp;BusinessUser&quot;&amp;gt;&lt;br /&gt;&lt;br /&gt;Using the principle of Convention over Configuration, the designer of the framework might simplify this and simply specify that all classes will be saved into database tables with the same name as the classes. While it may take a little bit of re-work to make sure class names will all make valid database table names, you are accomplishing several things:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;You&#39;re removing a layer of complexity without significantly affecting your flexibility. You can still have tables named whatever you want, your code just has to match.&lt;/li&gt;&lt;li&gt;You&#39;re eliminating a whole series of bugs that could arise from type-o&#39;s or other errors in your configuration file.&lt;/li&gt;&lt;li&gt;You&#39;re making troubleshooting a lot easier, because you can look at the database and know exactly what class each table is representing without having to go back through an additional configuration file.&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;In short, you&#39;re saving yourself a lot of work and potential headaches.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;span style=&quot;font-size:130%;&quot;&gt;How does this apply to IT?&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;I think the ideas behind this software development principle could more adequately applied to the IT field as &quot;Convention over Documentation&quot;.&lt;/p&gt;&lt;p&gt;For IT shops managing multiple clients, often each client has their own set of documentation for how users are setup, how drives are mapped, how printers are installed, etc.&lt;/p&gt;&lt;p&gt;The principle of &quot;Convention over Documentation&quot; would say to come up with a standard set of &quot;conventions&quot; that your IT shop uses, then reconfigure clients to match these conventions and document any exceptions. &lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;span style=&quot;font-size:130%;&quot;&gt;An Example&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;I think it&#39;s easiest to explain this with an example contrasting &quot;Convention over Documentation&quot; with a more traditional &quot;Documentation-only&quot; approach:&lt;/p&gt;&lt;p&gt;You may have some clients that have network printers directly installed on their PCs, other clients may have printers shared off the server and manually setup for each user, and others may have different kinds of scripts mapping network printers.&lt;/p&gt;&lt;p&gt;If you leave clients all configured differently, any support requests for network printer installations will involve:&lt;/p&gt;&lt;ol&gt;&lt;li&gt;Support technician looking up printer install documentation on this client&lt;/li&gt;&lt;li&gt;Support technician going through documented install process for this client (or more often, support technician going through whatever install process they are most comfortable with)&lt;/li&gt;&lt;li&gt;Support technician updating documentation on where printers are installed&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;And that&#39;s not even considering what to do if this is a request for installing a new printer, or the support technician needs to troubleshoot a problem with printing. If you have real-world IT experience, you&#39;ve probably seen what kind of mess this process often produces.&lt;/p&gt;&lt;p&gt;Using the principle of &quot;Convention over Documentation&quot;, the IT shop would have a standard procedure for installing network printers (hopefully one that enables centralized management). The process for setting up a printer for a new user would be more like this:&lt;/p&gt;&lt;ol&gt;&lt;li&gt;Support technician connects in to client&#39;s print serve and identifies the printer needed.&lt;/li&gt;&lt;li&gt;Support technician modifies user&#39;s Active Directory account so that group membership will trigger scripts to install this printer for the end user.&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;Hopefully, this will cover most cases, but like anything with IT, there will inevitably some client that needs printers installed differently from your established standard. I would argue that having a standard convention makes identifying exceptions more straight-forward:&lt;/p&gt;&lt;p&gt;While going through the installation process, if the printer isn&#39;t installed on the print server, or the appropriate Active Directory groups aren&#39;t created, this will trigger the support technician to go look for a documented exception to the standard configuration.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;span style=&quot;font-size:130%;&quot;&gt;Arguments *for* &quot;Convention over Documentation&quot;&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;ol&gt;&lt;li&gt;Reduces the amount of documentation, and therefore decreases the potential for inaccurate, out-of-date, or incomplete documentation.&lt;/li&gt;&lt;li&gt;Increases the speed at which support incidents can be addressed by: (1) reducing the amount of time the support technician spends reading documentation and (2) increasing the familiarity of the support technician with the client&#39;s configuration.&lt;/li&gt;&lt;li&gt;Reduces configuration mistakes since each configuration is basically the same. &lt;/li&gt;&lt;/ol&gt;&lt;p&gt;&lt;strong&gt;&lt;span style=&quot;font-size:130%;&quot;&gt;Arguments *against* &quot;Convention over Documentation&quot;&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;ol&gt;&lt;li&gt;The approach requires reconfiguring client&#39;s networks, which takes time&lt;/li&gt;&lt;li&gt;There will inevitably be some good reasons some clients may have for their network being inconsistent with an IT shop&#39;s established standards.&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;Personally, I think that, in most cases, the amount of time you save in the future and the other effeciencies gained by consistent configuration more than makes up for objection #1.&lt;/p&gt;&lt;p&gt;As far as #2, while you will inevitably have some exceptions, I think some simple guidelines will help with handling them effectively:&lt;/p&gt;&lt;ol&gt;&lt;li&gt;Make absolutely sure that an exception is required.&lt;/li&gt;&lt;li&gt;Make sure your standard process helps the support technician identify exceptions.&lt;/li&gt;&lt;li&gt;Keep all exceptions documented and keep the documentation easily accessible.&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;&lt;/p&gt;</description><link>http://tunurgitr.blogspot.com/2009/11/convention-over-documentation.html</link><author>noreply@blogger.com (Anonymous)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-4239786610619534317.post-9220126404670499446</guid><pubDate>Sat, 26 Sep 2009 04:05:00 +0000</pubDate><atom:updated>2011-07-08T15:09:48.327-07:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">it</category><category domain="http://www.blogger.com/atom/ns#">sysadmin</category><category domain="http://www.blogger.com/atom/ns#">usability</category><title>Overlooked Users</title><description>When I&#39;m trying to evaluate/install/manage software I sometimes feel like the software companies really don&#39;t care about my pain. They apparently think nothing of publishing pages of pre-installation notes followed by an installation with a myriad of painstaking steps that must be followed precisely or else you end up with an irrcoverable mess.&lt;br /&gt;
&lt;br /&gt;
Now, sometimes they can get away with it when their products are popular enough that end users demand them -- like the Blackberry server.&lt;br /&gt;
&lt;br /&gt;
But, companies that make less visible software should be careful.  For example, Symantec&#39;s Corporate Antivirus product has a few notorious issues (failed uninstall cleanup, Outlook plugin issues) that aren&#39;t deal-killers in themselves. But, when an IT department looks to compare antivirus products, the idea of not having to deal with these problems can sound pretty appealing.&lt;br /&gt;
&lt;br /&gt;
So, if you write software, keep in mind that end users aren&#39;t the only ones that have to use it.  If you are causing the admins pain, you&#39;re opening the door for your competitors.</description><link>http://tunurgitr.blogspot.com/2009/09/overlooked-users.html</link><author>noreply@blogger.com (Anonymous)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-4239786610619534317.post-1705592490820712146</guid><pubDate>Tue, 22 Sep 2009 00:54:00 +0000</pubDate><atom:updated>2009-09-21T18:21:46.455-07:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">cloud</category><title>Usability and the Cloud</title><description>I would argue that one of the benefits of the move towards cloud computing is improved usability. As more data is stored in the cloud, people need to manage it less, and fewer tasks mean more usable solutions.&lt;br /&gt;&lt;br /&gt;Perhaps it&#39;s easier to illustrate with a &quot;for instance&quot;:&lt;br /&gt;&lt;br /&gt;Say you&#39;ve got some newer computer users all using POP email into Outlook. Now they get new computers. Throw in multiple email accounts, some people sharing email addresses, and you&#39;ve got yourself a real set of issues for most people.&lt;br /&gt;&lt;br /&gt;Now, if you these same people had been using Gmail, hosted Exchange, or something like that, this process would have been a painless, 1-2-3 experience.&lt;br /&gt;&lt;br /&gt;I&#39;m not pretending that this ease of use doesn&#39;t come with some tradeoffs like ownership of data, service availability, and dependency on 3rd party systems.&lt;br /&gt;&lt;br /&gt;But if you think about it, are most computer users more likely to have a system failure with inadequate backups or have a cloud provider go out of business? Delving into these issues is a topic for another time, but I hope you get my points.&lt;br /&gt;&lt;br /&gt;For more advanced users, this may be an issue, but for a lot of people, removing system tasks from their scope of responsibility is a welcome change -- one that&#39;s worth the other risks that come with cloud services.</description><link>http://tunurgitr.blogspot.com/2009/09/usability-and-cloud.html</link><author>noreply@blogger.com (Anonymous)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-4239786610619534317.post-7122419036468192710</guid><pubDate>Tue, 22 Sep 2009 00:31:00 +0000</pubDate><atom:updated>2009-09-21T17:51:25.698-07:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">about</category><title>About this Blog</title><description>I&#39;ve been working with computers as long as I can remember. As a kid I remember using Wordstar on my dad&#39;s IBM 8088.&lt;br /&gt;&lt;br /&gt;I remember the piece of paper that went over the function keys to help remind you that if you needed to underline something you would need to press CTRL+SHIFT+ALT+F7 or something like that.&lt;br /&gt;&lt;br /&gt;Looking back, it&#39;s crazy to think that we used to think of that as an usable solution, but that&#39;s where technology was at the time -- that&#39;s all we had.&lt;br /&gt;&lt;br /&gt;Doing anything with a computer involved having some significant knowledge, or knowing someone who knew how to do it.&lt;br /&gt;&lt;br /&gt;Usually the &quot;nerd&quot; would begin their explanation with the phrase &quot;all you have to do is...&quot;, and then would follow a series of technical steps that they thought were very simple, but that any non-expert would have very little chance of figuring out on their own.&lt;br /&gt;&lt;br /&gt;Over the years, as technology has improved, the &quot;nerds&quot; are still around to give out these explanations, but as improvements in usability have moved forward, complicated steps to solving problems have become increasingly socially unacceptable.&lt;br /&gt;&lt;br /&gt;Over time, I&#39;ve come to believe that the reasons for a lot of usability problems aren&#39;t that it would take a lot of work to do things differently. Mostly, it&#39;s just that IT people (myself included) are like most people in that we forget that other people think differently than us.  We are so used to designing solutions focused on how the computers work, we forget that the more important thing is to design thinking about how people work.&lt;br /&gt;&lt;br /&gt;This blog is really just recording my journey trying to make the solutions I help design more usable, and therefore more effective.&lt;br /&gt;&lt;br /&gt;I&#39;ll have my opinions, and I hope you as readers will share yours as well. Hopefully we can all learn how to create better solutions.</description><link>http://tunurgitr.blogspot.com/2009/09/about-this-blog.html</link><author>noreply@blogger.com (Anonymous)</author><thr:total>0</thr:total></item></channel></rss>