tag:blogger.com,1999:blog-212581202024-03-08T00:31:09.462-08:00senfosenfohttp://www.blogger.com/profile/07217463643034901314noreply@blogger.comBlogger48125tag:blogger.com,1999:blog-21258120.post-47293724551154634922011-05-30T12:43:00.000-07:002011-05-30T12:46:40.346-07:00Boston Whale Whale TourI took a whale watching tour off the coast of Boston this Memorial Day weekend and saw a couple of humpback whales. Here is some video footage I took from the tour.<br /><br /><iframe width="560" height="349" src="http://www.youtube.com/embed/zZ5jWaf_46I" frameborder="0" allowfullscreen></iframe>senfohttp://www.blogger.com/profile/07217463643034901314noreply@blogger.com0tag:blogger.com,1999:blog-21258120.post-19305938356179370232009-07-17T09:25:00.000-07:002009-07-17T09:28:00.300-07:00Got My Google Voice InviteSweet, I have a <a href="http://www.google.com/voice">Google Voice</a> number. One interesting feature lets you embed voice mail messages into your blog:<br /><br /><br /><br /><object type="application/x-shockwave-flash" data="https://clients4.google.com/voice/embed/embedPlayer" width="100%" height="64"><param name="movie" value="https://clients4.google.com/voice/embed/embedPlayer" /><param name="wmode" value="transparent" /><param name="FlashVars" value="u=05957578679389213173&k=AHwOX_AkYhPsXYogdjVGmszeFVcJfYhrcsgTle8nS7J3TWU1y-kKS7gQ6GxfbdnyNSunGku6DbZ_qCR8GnA1_sEdSrvpeAQqiSULuzT9z5X_7SXpYfDuL6FUoix-Lo17kZN-ABAtcTSNjCVMCG_jrnnvjSO-TFOj9rcBcrZVkSkikkKH5SqhEVE&baseurl=https://clients4.google.com/voice&autoPlay=false" /></object>senfohttp://www.blogger.com/profile/07217463643034901314noreply@blogger.com0tag:blogger.com,1999:blog-21258120.post-1049355102891445552009-01-05T06:28:00.001-08:002009-01-05T06:35:10.540-08:00ASP.NET MVC AntiForgeryTokenI recently came across a new security feature that Microsoft has added to the ASP.NET MVC futures framework to assist in preventing <a href="http://en.wikipedia.org/wiki/Cross-site_request_forgery">Cross-site request forgery</a> (CSRF) attacks. I was going to write about it, but I did a quick Google search and found a <a href="http://blog.codeville.net/category/security/">great blog post</a> that gives the appropriate background information, as well as a demonstration of how to prevent CSRF attacks by using the ASP.NET MVC framework. If you're an ASP.NET developer interested in developing secure web applications, be sure to check out the post: <a href="http://blog.codeville.net/category/security/">http://blog.codeville.net/category/security/</a>senfohttp://www.blogger.com/profile/07217463643034901314noreply@blogger.com0tag:blogger.com,1999:blog-21258120.post-3948538560969038752008-07-30T19:24:00.000-07:002008-07-30T19:28:49.054-07:00Measuring ROI for Business Software InvestmentsAs they must do with any major investment, finance and technology leaders must develop a return-on-investment (ROI) model to justify software purchases. In many cases, organizations find it difficult to identify the indirect benefits and costs associated with software implementation.<br /><br />If this sounds familiar, be sure to check out <a href="http://office.microsoft.com/en-us/help/HA011999741033.aspx">this article</a>.senfohttp://www.blogger.com/profile/07217463643034901314noreply@blogger.com0tag:blogger.com,1999:blog-21258120.post-82570402867569835832008-05-16T08:16:00.000-07:002008-05-16T08:18:46.321-07:00Free SharePoint 2007 Screen CastsIf you're learning SharePoint 2007, be sure to check out <a href="http://www.sharepoint-screencasts.com/">these free screen casts</a>.senfohttp://www.blogger.com/profile/07217463643034901314noreply@blogger.com0tag:blogger.com,1999:blog-21258120.post-45521368124003996282008-04-29T10:37:00.001-07:002008-04-30T16:41:31.132-07:00Quote of the Day"A bad developer who comes across as a good developer is worse than a bad developer that every knows about." -- <a href="http://dwightrau.blogspot.com/">Dwight Rau</a>senfohttp://www.blogger.com/profile/07217463643034901314noreply@blogger.com0tag:blogger.com,1999:blog-21258120.post-16001194675219201252008-04-29T08:06:00.000-07:002008-04-29T08:18:22.359-07:00CDBurnerXPThis one is new to me, but I don't burn as many CD's as I used to. Frankly, I'm cheap and I can't justify spending money on software that I'll use once every few years. If you're looking for a free CD Burner for Windows, check out <a href="http://www.cdburnerxp.se/home">CDBurnerXP</a>.senfohttp://www.blogger.com/profile/07217463643034901314noreply@blogger.com0tag:blogger.com,1999:blog-21258120.post-79858910709798200632008-04-29T06:15:00.000-07:002008-04-29T06:19:58.935-07:00Generic Caching in ASP.NETIf you run a website with a high number of visitors and are interested in learning more about caching, <a href="http://www.objectreference.net/author/DaveTheKnave.aspx">DaveTheKnave</a> has put together a good article on <a href="http://www.objectreference.net/post/Implementing-Generic-Caching.aspx">Generic Caching</a> in ASP.NET that is worth checking out.senfohttp://www.blogger.com/profile/07217463643034901314noreply@blogger.com0tag:blogger.com,1999:blog-21258120.post-45445243642880957652008-01-20T19:22:00.000-08:002008-01-21T06:52:02.118-08:00Introducing OpenProjIf you're looking for a free replacement for Microsoft Project, look no further. Available for Windows, Mac, Linux and Unix, "<a href="http://openproj.org/openproj">OpenProj</a> is a free, open source project management solution."senfohttp://www.blogger.com/profile/07217463643034901314noreply@blogger.com0tag:blogger.com,1999:blog-21258120.post-8484217808726931712007-09-26T20:13:00.000-07:002007-09-26T20:15:35.164-07:00Generate Random SQL DataIf you ever need random data for your SQL tables, be sure to check out <a href="http://www.generatedata.com/">http://www.generatedata.com/</a>. Their random data generator generates transact SQL scripts that you can run to insert random data into your database. Other export formats are also available.senfohttp://www.blogger.com/profile/07217463643034901314noreply@blogger.com0tag:blogger.com,1999:blog-21258120.post-91852815310996434782007-09-18T15:11:00.000-07:002007-10-03T08:13:56.317-07:00ASP.NET Login Control Remember Me Doesn't WorkI recently did a quick Google search for an issue I was having with the ASP.NET login control where the Remember Me feature of the control appeared not to be working as I had expected. I found a few hits on Google Groups where users were experiencing the exact same symptom, but nobody was getting an answer to their question.<br /><br />First of all, I knew that the login control called the FormsAuthentication.SetAuthCookie() method to save the cookie, so I figured it must have something to do with the cookie expiring sooner than I wanted. Knowing that, I looked at the details of the cookie and noticed that it was set to expire 30 minutes in the future. So I did another quick Google search and found a great article on <a href="http://msdn2.microsoft.com/en-us/library/ms998317.aspx">Forms Authentication</a>. Sure enough, there is a section in web.config that is used to configure the authentication cookie, one of which is the timeout. I'd recommend reading that article, first, but this is the authentication section from my web.config with the cookie timeout configured for 30 days.<br /><br /><code><authentication mode="Forms"><br /> <forms<br /> loginUrl="Login/Login.aspx"<br /> name=".ASPXFORMSAUTH"<br /> protection="All"<br /> timeout="43200"<br /> requireSSL="false"<br /> slidingExpiration="true"<br /> cookieless="UseCookies"<br /> enableCrossAppRedirects="false"<br /> /><br /></authentication></code><br /><br />Hope that helps...senfohttp://www.blogger.com/profile/07217463643034901314noreply@blogger.com0tag:blogger.com,1999:blog-21258120.post-4998597202188834392007-08-28T06:31:00.000-07:002008-04-28T19:33:07.991-07:00Comparing the Timer Classes in .NETA few days ago, I ran into some issues with the timer that I was using in my Windows Service. As it turns out, not all timers in .NET are created equal. <a href="http://msdn2.microsoft.com/en-us/magazine/cc164015.aspx">This article</a> was able to give me some valuable insight that I was able to use to solve my problem.senfohttp://www.blogger.com/profile/07217463643034901314noreply@blogger.com0tag:blogger.com,1999:blog-21258120.post-64534767379202150192007-08-17T05:11:00.000-07:002007-08-17T05:38:57.107-07:00How To: Disable Clear Type for Office 2007It could be that I have something wrong with my eyes, but the ClearType fonts that Microsoft now uses for its new Office 2007 suite is incredibly painful to my eyes. If you would like to disable ClearType fonts in Office 2007 and/or have Office respect system settings, try the following:<br /><ol><br /> <li>Start -> Run -> Regedt32</li><li>Navigate to the following key:<br />HKEY_CURRENT_USER\Software\Microsoft\Office\12.0\Common</li><li>Add the following DWORD value:<br /> "RespectSystemFontSmooth"</li><li>Set the value to 1</li><li>Close RegEdit</li><br /></ol><br />That's it. Naturally, restart Office if it's already running, but you should notice that the Office 2007 suite now respects the system settings for font smoothing.senfohttp://www.blogger.com/profile/07217463643034901314noreply@blogger.com0tag:blogger.com,1999:blog-21258120.post-67056863670645325092007-08-03T06:39:00.000-07:002008-04-28T19:35:15.903-07:00Programatically Add User to SharePoint 2007There are a ton of articles out there detailing how to add a user to a SharePoint site; however, it's a struggle to find anything detailing how to perform the operation in a SharePoint 2007 environment.<br /><br /><code>private static void AddUser()<br /> {<br /> try<br /> {<br /> using (SPSite site = new SPSite("http://test1"))<br /> {<br /> ServerContext context = ServerContext.GetContext(site);<br /> UserProfileManager profileManager = new UserProfileManager(context);<br /><br /> if (!profileManager.UserExists("senfo"))<br /> {<br /> UserProfile profile = profileManager.CreateUserProfile("senfo");<br /><br /> profile[PropertyConstants.WorkEmail].Value = "me@myaddress.com";<br /> profile.Commit();<br /> }<br /> else<br /> {<br /> Console.WriteLine("User already exists...");<br /> }<br /> }<br /> }<br /> catch (UserNotFoundException err)<br /> {<br /> Console.WriteLine(err.ToString());<br /> }<br /> }</code><br /><br />It's important to note that if you're using multiple membership providers that this code will throw the following Exception "No mapping between account names and security IDs was done". To correct the issue, add "MembershipProviderName:" in front of the username. For example, "SqlMembershipProvider:senfo".senfohttp://www.blogger.com/profile/07217463643034901314noreply@blogger.com0tag:blogger.com,1999:blog-21258120.post-81089766515748301832007-07-31T17:27:00.000-07:002007-07-31T19:47:20.793-07:00Extension MethodsThis is the first in a series of posts that I will use to demonstrate some of the cool new features of the new C# 3.0 specification and Visual Studio 2008.<br /><br />If you asked me, the two coolest new features of C# 3.0 are LINQ and Extension Methods. There have been a ton of articles demonstrating the power of LINQ, so I'll focus my first post on Extension Methods.<br /><br />So what exactly is an extension method? In as few words as possible, it's a language feature that allows a developer to add new methods to existing types. And I see quite a bit of potential with this feature. For example, adding a SaveAsJpeg() method to the sealed System.Drawing.Bitmap class.<br /><br />Just a little background so we can begin. An extension method must be declared in a static class, which makes a lot of sense when you think about it.<br /><br />For demonstration purposes, let's create a static class called StringExtenstions that adds a Reverse() method to the string type.<br /><br /><code>public static class StringExtentions<br />{<br /> public static string Reverse(this string str)<br /> {<br /> StringBuilder sb = new StringBuilder();<br /><br /> // Reverse the string<br /> for (int i = str.Length - 1; i >= 0; i--)<br /> {<br /> sb.Append(str[i]);<br /> }<br /><br /> return sb.ToString();<br /> }<br />}<br /></code><br /><br />And believe it or not, that's it. You have just added a Reverse() method to all string types within your assembly. And how do you use it? Good question. Just like you would had the String class always had a Reverse() method.<br /><br /><code> string myString = "This is a test";<br /> string reversed = myString.Reverse();<br /></code><br /><br />It should be noted that unlike regular methods, extension methods cannot access private members of the class that they are extending.<br /><br />Stay tuned for more C# 3.0 goodness.senfohttp://www.blogger.com/profile/07217463643034901314noreply@blogger.com0tag:blogger.com,1999:blog-21258120.post-15326176869233561492007-06-03T14:26:00.000-07:002007-06-03T14:29:21.279-07:00Don’t buy an HDTV without reading this firstI was recently inquiring about the latest in HDTV technology and I came across a great <a href="http://blogs.zdnet.com/Ou/?p=458">HDTV survival guide</a> that I thought others might find useful. Definitely worth a read if you're in the market for an HDTV.senfohttp://www.blogger.com/profile/07217463643034901314noreply@blogger.com0tag:blogger.com,1999:blog-21258120.post-75761350295349288572007-04-10T07:08:00.000-07:002007-04-10T07:16:38.349-07:00Asynchronous Pages in ASP.NETIn my opinion, one of the most unappreciated enhancements to ASP.NET 2.0 is the ease in which one can design their code to run asynchronously. In my experience, developers have blown off the idea in the beginning because of not realizing the true potential of asynchronous development in a web application. This <a href="http://msdn.microsoft.com/msdnmag/issues/07/03/WickedCode/">MSDN article</a> goes into details about why asynchronous programming is important to your ASP.NET applications, and provides code samples to help you understand.<br /><br /><a href="http://www.dotnetkicks.com/kick/?url=http://msdn.microsoft.com/msdnmag/issues/07/03/WickedCode/"><img src="http://www.dotnetkicks.com/Services/Images/KickItImageGenerator.ashx?url=http://msdn.microsoft.com/msdnmag/issues/07/03/WickedCode/" border="0" alt="kick it on DotNetKicks.com" /></a>senfohttp://www.blogger.com/profile/07217463643034901314noreply@blogger.com0tag:blogger.com,1999:blog-21258120.post-11769013974939638562007-03-22T09:12:00.000-07:002007-03-22T09:12:00.235-07:00Infinities Loop : TRULY Understanding ViewStateI recently stumbled across this <a href="http://weblogs.asp.net/infinitiesloop/archive/2006/08/03/Truly-Understanding-Viewstate.aspx">article on ViewState</a>. I wasn't expecting to learn much, but I was pleasantly surprised. Definitely worth the read if you are an ASP.NET developer.senfohttp://www.blogger.com/profile/07217463643034901314noreply@blogger.com0tag:blogger.com,1999:blog-21258120.post-63605135085131251572007-03-08T04:05:00.000-08:002007-10-03T07:39:01.819-07:00Using code Tag to Display Code in Your Blog or WebsiteIf you post code to your blog or website, you might want to consider using the <code> element to help separate your content from the code. This can be achieved nicely by setting the style for the <code> element in your CSS. I use the following style in my blog to help format code snips that I post.<br /><br /><code>code<br />{<br /> background-color: #f6ffff;<br /> border: solid 2px #bbbbbb;<br /> display: block;<br /> font: courier;<br /> margin-left: -10px;<br /> overflow: auto;<br /> white-space: pre;<br /> width: 410px;<br />}</code><br /><br /><code>Sample:<br /><br /><code><br /> #include &lt;stdio.h&gt;<br /><br /> int main(void)<br /> {<br /> printf("Hello world!\n");<br /> return 0;<br /> }<br /></code><br /></code>senfohttp://www.blogger.com/profile/07217463643034901314noreply@blogger.com0tag:blogger.com,1999:blog-21258120.post-91734585042066542282007-03-02T05:13:00.000-08:002007-03-02T05:13:07.433-08:00Advanced OOP Design PatternsThis is, without a doubt, one of the best online resources I have come across, which clearly demonstrates some <a href="http://en.wikipedia.org/wiki/Design_Patterns">fundamental design patterns used in OOP</a>. After reading the excerpts from <a href="http://www.amazon.com/Design-Patterns-Object-Oriented-Addison-Wesley-Professional/dp/0201633612/ref=sr_11_1/103-3424508-5114254?ie=UTF8&qid=1172841095&sr=11-1">the book</a>, I'm convinced I'll be purchasing a hard copy as soon as possible. Whether you program in C++, C#, Java, or any other OOP language, these fundamental design patterns should be applied to your programs.senfohttp://www.blogger.com/profile/07217463643034901314noreply@blogger.com0tag:blogger.com,1999:blog-21258120.post-67875125506896303512007-02-17T11:43:00.000-08:002007-02-17T11:47:41.833-08:00Another Linux Desktop: XGLSpeaking of Linux desktops, here is another favorable desktop for Linux known as XGL.<br /><br /><object width="425" height="350"><param name="movie" value="http://www.youtube.com/v/Rj3UPnriIxc"></param><param name="wmode" value="transparent"></param><embed src="http://www.youtube.com/v/Rj3UPnriIxc" type="application/x-shockwave-flash" wmode="transparent" width="425" height="350"></embed></object><br /><br /><object width="425" height="350"><param name="movie" value="http://www.youtube.com/v/2a__LEQWBbg"></param><param name="wmode" value="transparent"></param><embed src="http://www.youtube.com/v/2a__LEQWBbg" type="application/x-shockwave-flash" wmode="transparent" width="425" height="350"></embed></object><br /><br /><object width="425" height="350"><param name="movie" value="http://www.youtube.com/v/Zd7whhgRWgQ"></param><param name="wmode" value="transparent"></param><embed src="http://www.youtube.com/v/Zd7whhgRWgQ" type="application/x-shockwave-flash" wmode="transparent" width="425" height="350"></embed></object>senfohttp://www.blogger.com/profile/07217463643034901314noreply@blogger.com0tag:blogger.com,1999:blog-21258120.post-11779649745727653792007-02-17T11:29:00.000-08:002007-02-17T11:37:12.020-08:00Project Looking Glass on UbuntuFor years, people have regarded Linux as a toy for geeks. Many claimed that the capabilities of desktop Linux lagged far behind the power of the desktops offered by Microsoft in the Windows operating system. Fortunately, those times are changing as innovations to the Linux desktop have placed Linux well ahead of the enhancements brought forth by Microsoft's latest operating system, <a href="http://www.microsoft.com/windows/products/windowsvista/default.mspx">Windows Vista</a>. One prime example of this is <a href="http://www.sun.com/software/looking_glass/">Project Looking Glass</a>, which is brought to you by none other than Sun.<br /><br /><object width="425" height="350"><param name="movie" value="http://www.youtube.com/v/EjQ4Nza34ak"></param><param name="wmode" value="transparent"></param><embed src="http://www.youtube.com/v/EjQ4Nza34ak" type="application/x-shockwave-flash" wmode="transparent" width="425" height="350"></embed></object>senfohttp://www.blogger.com/profile/07217463643034901314noreply@blogger.com0tag:blogger.com,1999:blog-21258120.post-39684394524858001952007-02-12T04:35:00.000-08:002007-02-12T05:09:47.545-08:00Complex Password More Weak?Firstly, I'd like to point out that I am a developer, I am not a writer. That said, I apologize ahead of time if this reads like a high school student wrote it. I did my best.<br /><br />At any rate, in this day in age, and with as much as we rely on the Internet for the important day-to-day aspects of our lives, we can never be too careful with our passwords. But is there a point in which password complexity can actually have an adverse affect on how secure a persons password really is? I say the answer to that question is an irrefutable, "yes".<br /><br />I want to point out that I am huge on personal security. Actually, I've been told that I'm obsessive, at times. Having said that, I have come up with passwords that I'm thoroughly convinced that it would take more than a trillion monkeys pounding away at a typewriter, over 100 lifetimes to crack. They're secure, but they mean something to me, so they're easy for me to remember. For the times that I need more protection, I resort to encrypting my data with a passphrase, which is even more complex. However, even though I consider the passwords that I use to be reasonably secure, I can't help but wonder what the person/people were thinking when they came up with the list of requirements for a site I was recently signing up for. Following is a list of requirements.<ol><br /> <li>must be at least 7 characters long</li><li>cannot contain the login id (exact or partial)</li><li>must contain at least one letter, one number, and one of the following special characters:<br /> $&#_!@%^*()-=+~\:;<,>.?/</li><li>cannot contain any repeat characters</li><li>cannot contain any of:<br /> |'`"</li><br /></ol>Two things from this list stand out. Firstly is that the password cannot contain any part of my login name. At first, I wasn't exactly sure how strict this rule would be enforced, but I later came to find out that any part of my login ID means exactly that. <strong>Any</strong> part. For example, if my login ID contains the letter 's', my password cannot cannot have the letter 's' anywhere in it. To make matters worse, the password also cannot repeat <strong>any</strong> characters. Yep, that means that you cannot have the same character in your password more than once.<br /><br />Amazed by the complexity of the requirements, I was finally able to come up with a password that would comply; however, there was no way that I was ever going to remember it, considering the passwords complexity and that it was for a site that I'll rarely visit. So, if I ever want to be able to get back into my account again, I really didn't have much choice except to either write down the password or save it in an encrypted file.<br /><br />In my opinion, this is an example of people getting quite ridiculous with their password requirements. As I mentioned before, I am pretty big on personal security, which is why I opted to save my password in an encrypted file. However, for the majority of the people that I know, this password format is so complex that their passwords will end up on a Post It note stuck under their keyboard. So much for security.<br /><br />It is my hope that developers will read this post and realize that there is a point that going overboard on password complexity can have an adverse affect on what their original intentions were. This, in my opinion, was obviously an example of going extremely overboard.senfohttp://www.blogger.com/profile/07217463643034901314noreply@blogger.com0tag:blogger.com,1999:blog-21258120.post-53444020588486738982007-01-26T14:43:00.000-08:002007-01-26T14:48:44.537-08:00C# 3.0: An Introduction<a href="http://dotnetslackers.com/articles/csharp/Csharp_3_0_An_Introduction.aspx">This article</a> hopes to bring readers up to speed on some of the changes we can look forward to in the C# 3.0 specification. Some of the new features include:<br /><ul style="padding: 0px;"><br /> <li>Object Initialization</li><li>Type Inferences</li><li>Anonymous Types</li><li>Lambda Expressions</li><li>Extension Methods</li><li>Queries (LINQ)</li><li>Expression Trees</li><br /></ul>senfohttp://www.blogger.com/profile/07217463643034901314noreply@blogger.com0tag:blogger.com,1999:blog-21258120.post-43849194769950396722007-01-25T05:26:00.000-08:002007-01-25T05:27:51.803-08:00SQL Injection Attacks by ExampleAre your applications susceptible to <a href="http://en.wikipedia.org/wiki/Sql_injection">SQL injection</a> attacks? I recently stumbled on a <a href="http://www.unixwiz.net/techtips/sql-injection.html">decent article</a> that hopes to educate readers by demonstrating sample SQL injection techniques. A recommended read for any SQL developers.senfohttp://www.blogger.com/profile/07217463643034901314noreply@blogger.com0