Friday, December 24, 2010

Lightswitch

Its finally here!   

Follow the announcement of  Lightswitch. The public beta is going to be available on late August,   I suggest you try it out.

LightSwitch is the simplest way to build business applications for the cloud and the desktop.

Sunday, December 12, 2010

Which Way Is Faster – Windows Phone 7 App

 

I am working on a Windows Phone 7 application, so that I can learn about development on the Windows Phone 7, so far it is a really great experience. I love using Linq, Xml serialization, extension methods, Visual Studio 2010, Silverlight, XAML, and all the technologies I am so familiar with.

I wrote a paper about the phone application which is called "Which Way Is Faster": A Mobile Phone Application Leveraging Location Tracking to Determine Which Commonly Traveled Routes are Faster.

The presentation and paper can be viewed here:

presentation

paper

Wednesday, December 08, 2010

Debugging SharePoint Code With a Console Application

 

Here is my SharePoint tip of the day. This is a helpful technique for debugging/testing SharePoint methods without having to fire up IIS. In my SharePoint code, I write my methods as public static methods that take an SPList or SPWeb object as a parameter. This may seem weird since you could just get these from SPContext.Current.Web. The reason for this is that this is a functional style programming technique where we don’t have class level variables. Instead the method takes in everything they need via parameters. The advantage of this is that I can write a console application and reference my SharePoint project and test my EventReceiver method (or Feature Receiver or WebPart or whatever) without having to deploy my SharePoint solutions, fire up IIS, etc. etc. It makes debugging and setting through code much quicker.  Of course once I have tested it in my console app, then I need to test it in the browser.

Sample Console Application. Note that I create my SPWeb object and list object using the non-SPContext way and pass them into my method which is contained in the referenced SharePoint project.

 

static void Main(string[] args)

{

try

{

   SPSite site = new SPSite("http://localdev/en-US/egs/contact/requestinformation");

   SPWeb currentWeb = site.OpenWeb();

   SPList ciList = currentWeb.Lists["CustomerInquiry"];

   SPList cirList = currentWeb.Lists["Customer Inquiry Routing"];

   SPList ciSettingsList = currentWeb.Lists["CustomerInquirySettings"];

   CustomerInquiryBL.Execute(cirList, ciList.Items[0], ciSettingsList, currentWeb);

}

catch (Exception ex)

{

   Console.WriteLine(ex);

}

Console.WriteLine("Press Any Key to Continue.");

Console.ReadKey();

}

Sunday, July 18, 2010

OneNote is an extension of my brain

OneNote 2010 is a great product. I have been using OneNote daily for a couple years now. It has become my default repository for important information.
- Tasks lists
- Design before I build software solutions for work
- Meeting notes
- Class notes

The great thing about OneNote is that it is a three dimensional space (notebooks, sections, pages) instead of a one dimensional space in a product like MS Word. Also, you spend much less time worry about formatting details, and more time getting your ideas and thoughts recorded.

OneNote is almost an extension of my brain.  Now with OneNote online, I use one note to plan with friends and family. I like the rich client with offline synchronization which makes OneNote a more productive experience than Google Docs.  I am on the road and often have a slow internet connection, so with offline sync, a slow connection doesn’t slow me down.

Saturday, July 10, 2010

Software Measurement - We Are Like Eskimos

I forget at times that Software Engineering is a young discipline. At times I am frustrated that it is not easier to measure good software and good software developers. The following gives some insightful perspective:

--------------------
Measurement can progress from lower to higher scales as societies, organizations, and practices mature. An illuminating example:


We can imagine, for example, that certain Eskimos might speak of
temperature only as freezing or not freezing and, thereby, place it on a
nominal scale. Others might try to express degrees of warmer and colder,
perhaps in terms of some series of natural events, and thereby achieve an
ordinal scale. As we all know, temperature became an interval scale with the
development of thermometry, and, after thermodynamics had used the
expansion ratio of gases to extrapolate to zero, it became a ratio scale."
— S. Stevens, 1956

There is an important lesson here for software engineers and managers—do not expect that everything you will want to measure can be expressed with ratio scales today. Software engineering is a young discipline. Just as with Stevens's Eskimos, it may take us time to evolve to where our measurement practices become comparable with those of other disciplines. Be willing to start with nominal and ordinal scales, just to get measurement started. But be mindful of the limitations of the computations and interpretations that you can make with the kinds of data you collect, and look for opportunities to evolve your measurement practices toward scales that provide greater information.

----------------------

The above is taken from

Goal-Driven Software Measurement —A Guidebook by Robert E. Park

Saturday, May 22, 2010

Channel 9 - RAM Disks speed up Visual Studio is a Vicious Rumor

 

It was cool to discover that Channel 9 linked to my blog post on how RAM disks do not speed up Visual Studio:

image 

Joe Nalewabau and Dan Fernandez talk about my blog. Starting at minute 19:50, Dan says:

Dan: "Joseph Fluckiger", I hope I am pronouncing that right. 

Joe: "I'll let you handle that one".

Dan: "Probabaly for the better."  :)

Dan: “We talked about this at our 1 year anniversary with Scott Hansleman using RAM disks to speed up Visual Studio. Joseph actually went through and did a test of RAM disk vs. no RAM disk. And he actually shows that RAM disks aren’t worth it. They are only a few milliseconds faster and you have to copy files into the RAM disk which is a pain.”

Dan: "Thank you Joseph for actually doing the work and verifying that it is a vicious rumor."

image

 

I found the Channel 9 reference because I was looking through my blog stats and saw that the RAM disk post is the most popular. Here are my blog stats:

image

LINQPad – A Must-Have Tool

I discovered a great little .NET developer tool yesterday: LINQPad. I needed to write a LINQ statement with a Group By and was having trouble figuring it out. While poking around on stack overflow, someone suggested this tool.

But even better, the most useful application of this little application is the ability to quickly write pieces of code. It has a nice little interface which applies indentation and colors to your code, but is also very light weight and fast. It even allows you to quickly execute your code and display the results with a nice little .Dump() utility. My Visual Studio has been quite slow lately since my project has hundreds of thousands of lines and I am also running Resharper.

Write snippets of Code quickly with LINQPad:

image

 

Learning LINQ:

image

Sunday, April 11, 2010

Should I Get a Graduate Degree in Software Engineering?

I recently decided to go back to school to get a degree in software engineering from the University Of Texas at Austin attending the executive format offered by the engineering department. Is it worth it? What is it like? You can read more on the UT website, but below I will give you my personal perspective, the answers to the questions I had when deciding whether to pursue the degree.

First question: Are the topics covered relevant?  I am a consultant software developer working for Catapult Systems working on enterprise software development. Am I going to learn things which I can apply? I don’t want academic fluff. I am a working professional and need real application. I am currently in my first semester and so far the material has been very interesting and I have been able to apply much of the material learned to my current projects at work. I’ve even integrated some of the code written for projects into projects at work. Below is a list of the courses offered. Here is a course list on the CLEE site. Of the 16 courses offered, students will be able to take 8 courses over the two year program. I have some detail on the first two classes since those are the two so far that I have taken.

  • Computer networks
    • Learn how the Internet works from the lowest layers, up to the applications you use on a daily basis including DNS, TCP, the OSI model, Shannon channel theorem (determines the bandwidth of a wire).
  • Software Validation
    • Formal methods for verifying software. I honestly have not enjoyed this class as much as my computer networking class, but it has given me exposure to Java, Alloy, JPF and several other diverse languages which is interesting since I have lived mostly in the Microsoft/Visual Studio world for the last 9 years.The quizzes involve writing code with a pencil and solving algorithms which leaves my head hurting but it is good practice to write keyboardless code.
  • Security
  • Distributed Systems
  • Mobile computing
  • Software Architecture and Software Engineering Processes and Requirements Engineering
  • Data engineering and Data mining
  • Methodologies for Hardware/Software Co-design
  • Real Time Systems

 

Second Question: What is the Format? The executive format executive degree classes meet once per month on Friday and Saturday for a total of 16 class hours per month. One four hour class in the morning from 8am-12, and one four hour class from 1-5PM with 3 breaks in each class. I live in Dallas so I drive down to Austin once per month which works well. I looked at the SMU and UTD and several online degree offerings.

Which School Should I Choose? I researched several schools and I attended a class at UTD, SMU and a class at UT. I noticed that the demographic at UTD was younger and the class was less interactive. The demographic at UT was more similar to my own: experienced professionals. The class asked many questions and made comments based on their experience which were as interesting as the comments of the professor. SMU was my 2nd choice, but UT has a better national ranking as is well known nationally. It is worth the extra 3 hour drive.

What is the Work Load Like? A full load in the executive program is two classes for a semester. Right now I have a Network Communications and a Validation class. For example, in March 2010 I had this workload. One professor said that expected work load outside of class per hour of class is 3-1. So for 8 hours of classes per months students would spend 24 hours outside of class.

  • One networks homework assignment with 12 problems. – 3 hrs
  • Two chapters in my networks book to read. – 8 hrs
  • One validation homework assignment using Java JPF which generated unit tests.  - 3 hrs
  • One 12 page paper to write on a technical networks topic. - 7 hrs
  • One networks quiz to study for. - 3 hrs
  • Group report and presentation for my validation class. We are building a validation framework called easyval.  - 6 hrs

 

For April, I have this work load:(this is the last month of the semester.)

  • Individual research paper on a networking topic of my choice and a presentation to prepare for. (I am going to build a simple browser for my project and measure where the bottlenecks are in web applications.)
  • Group report for my validation class.
  • One networking quiz to study for.

 

What Are the Benefits? If you’ve read Seven Habits of Highly effective people then you’ve heard the phrase “Sharpen the Saw”. One of the most valuable thing we have as programmers is our algorithm solving capability. Grad school keeps you on your toes. It expands your mental ability to solve algorithms because you are required to solve many difficult problems in homework and quizzes. Being tested so frequently expands your mental capabilities just like a hard workout expands your muscles and VO2.

Also, a graduate degree gives you a broader perspective of the software development world because of the variety of languages, and technologies that you get exposed to. But my favorite part of grad school is talking to my classmates and learning about what interesting software projects they work on. There are so many interesting companies represented: Samsung, IBM, FreeScale, Verizon Wireless, ATT, Oil and Gas, National Instruments, etc. It is a chance to rub shoulders with some of the best software developers around. Today at lunch I learned about the robots used in making flash memory at Samsung which has the largest microprocessor fabrication plant in the US here in Round Rock TX. He told a story of a programming error a couple months ago that caused erroneous wafers to be sent down the pipeline costing Samsung 10 million dollars and as a result no one in the Austin fab site got a bonus that month. Ouch, I'd hate to be the guy that wrote that bug. Yesterday at lunch a guy from National Instruments told us about developing Zigbee devices and using tools which detect conflicts between Zigbee devices at 3.4 MHz and Wi-Fi also in that same band. He showed us a cool graph of all the spectrums being broadcast. It is amazing how much invisible electromagnetic broadcasts are in the air around us. He explained some of the National Instruments products (which I used in my college Physics class). They use C, C++ and are now looking at using C#. Even though C# is 10 years old, they are just now starting to use it!

For myself, a graduate degree in software engineering is particularly useful because I am currently a non-formally educated software developer. My undergraduate degree was in Economics with a minor in Physics. This degree is giving me a feel for what an undergraduate software engineering degree is like and helping to fill in the gaps.

I must say that my current employer Catapult Systems has been very supportive, which is great. It is a bit of sacrifice for them since I don’t have as many overtime hours to work. I hope it is a good investment for Catapult as much as I think it will be for me personally.

If you are a software developer that wants to fundamentally improve your knowledge and understanding of software engineering and you are tough enough to handle the extra hours, I definitely recommend an executive format degree. It is not easy, you’ll give up a lot of free time and your load at work will not get any easier, but it is worth it. I see it is a 2 year investment with a 30+ year return. It is also an item I can mark off my bucket list.

SSD Performance Test

I’ve been running an SSD as my primary drive for a few weeks now and it performs quite well. Outlook doesn’t hang, and Visual Studio build times are cut way down. Boot up and shut down are much better. Total cost: $260 + $50 = 310.

Using winsat tool:

  • Patriot Torqx SSD 64 GB, as primary drive in laptop
    • Sequential read: 116 MB/s (3 x faster)
    • Random read: 39 MB/s (35 x faster)
    • Sequential write: 90 MB/s (2.5 x faster)

clip_image002

  • 7200 RPM 100 GB in expansion slot:
    • Sequential read: 40 MB/s
    • Random read: 1.11 MB/s
    • Sequential write: 34.7 MB/s

image

Wednesday, February 03, 2010

StackOverflow.com - Give It a Try

Stackoverflow.com is a fantastic online resource for answers to technical questions. There are several reasons that Stackoverflow.com is better than other sites. Jeff Atwood, who is the founder of stack overflow described the site succinctly as "expertsexchange.com without the evil. :)" The Webster's type definition would be:

Stack Overflow is a programming Q & A site collaboratively built and maintained by your fellow programmers. It is unique in that it uses aspects of wikis, blogs, digg, and forums to allow the best answers float to the top rather than stay buried somewhere among other less useful answers.

I loved experts exchange. It was the site that helped me get started in programming back when I was learning Perl. I was amazed at how quickly people would give of their time to answer my questions. Now I am glad to see an even better resource called stack overflow. Give it a try. You'll find higher quality answers than any other online Q&A site.