Wednesday, July 18, 2007

Jing, a Free Image Capture & Screen Recording tool

TechSmith released a free image capture / screen recorder tool yesterday called Jing. I focused on the video recording features because we have SnagIt here at work. Jing is very easy to use. I installed it, configured it (setting up Screencast), and created a video in about 10 minutes. Jing is cool because it allows you to record your entire screen, an entire application or objects within applications. After recording one click sends your video up to Screencast and even puts the URL to your video in your clipboard!

We will probably use this tool for training.

Thursday, July 12, 2007

Greater Lansing User Group .net (GLUG.net) July Meeting

Where: 1145 Engineering Building, Michigan State University

When: Thursday July 19th 6:00-8:00 PM

What: We always have give away hundreds or thousands of dollars worth of swag along with free pizza and pop for everyone. This month we will also be announcing the opening of the Flint branch and our Vice President Vivek has secured all our membership 100 MB of free hosting from Verio.

Julia Lerman will be our first female speaker. She will be presenting on ADO.NET Entity Framework.

Visit our website for more details: www.glugnet.org

Friday, July 6, 2007

Updating Binary Data in a Gridview

Our customer needed the ability to update an image in a database. I wanted them to be able to view and edit all the data through the datagrid.

In your data source you need to specify the select command to display the data and the updateCommand to update the data:

<asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:campDBConnection %>"

SelectCommand="usp_CAMP_get_rejected_batches"
SelectCommandType="StoredProcedure"
UpdateCommand="usp_camp_resubmit_deposit_ticket"
UpdateCommandType="StoredProcedure">


<UpdateParameters>
<asp:Parameter Name="deposit_id" Type="Int32" />
<asp:Parameter Name="deposit_slip_no" Type="String" />
<asp:Parameter Name="deposit_date" Type="DateTime" />
<asp:Parameter Name="Amount" Type="Decimal" />
<asp:Parameter Name="image" /> </UpdateParameters>
</asp:SqlDataSource>


I used a TemplateField to include the FileUpload control which allows a user to select a file from their computer for upload. This also allowed the same column to be used to display the image and change it.

<asp:TemplateField HeaderText="Deposit Ticket">
<EditItemTemplate>
<asp:FileUpload ID="imgUpload" runat="server" />
</EditItemTemplate>
<ItemTemplate>
<asp:Image ImageUrl='<%#DataBinder.Eval(Container.DataItem, "DEPOSIT_IMAGE_URL")%>' runat = "server" />
</ItemTemplate>
</asp:TemplateField>

I needed to add in the binary data into e.NewValues:

Protected Sub GridView1_RowUpdating(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewUpdateEventArgs) Handles GridView1.RowUpdating

e.NewValues.Add("image", CType(GridView1.Rows(e.RowIndex).Cells.Item(5).Controls(1), FileUpload).FileBytes)

End Sub


I also found a couple more gotchas:

  1. To format data in the grid you need to have HtmlEncode
    turned off

  2. For the upldate to send the primary key field and have that field set to invisible you need to specify the primary key in the DataKeyNames property for the GridView.

Friday, June 15, 2007

ArcREADY: Reinforcing the Foundations of Solutions Architecture

I went to ArcREADY: Reinforcing the Foundations of Solutions Architecture in Grand Rapids. It was presented by Josh Holmes. Josh presented these ideas by making analogies between software and other products (Wii, Xbox, can openers, Espresso makers etc.)

Here are my main take aways from the presentation:

Steps in architecting the user experience:
  • User Interface Design
  • User Research
  • Design Planning
  • Information Design
  • Usability Testing

There are 4 concepts to consider when architecting the user experience:

  1. Function (works great)
  2. Aesthetics (looks great)
  3. Interaction (relates to you)
  4. Process

There are 3 business principles to consider:

  1. What is possible?
  2. What is viable?
  3. What is desirable to users?

Tuesday, June 12, 2007

XSLT Tool - Cooktop

I've been using XML Notepad to help view XML files. Unfortunately XML Notepad doesn't have an XSLT editor.

I found a free one today: Cooktop

It worked for what I wanted and it was free. I would like to have one tool for viewing XML files and editing XSLT, but I don't like CookTop's display as well as I like XML Notepad's hierarchical view

Tuesday, May 29, 2007

Visual Studio 2005 Class Diagrammer

I like the Visual Studio 2005 Class Diagrammer

I looked at the Visual Studio 2005 Class Diagrammer briefly when I first started using the product. I didn't think it did much, thought Visio was better, and didn't use it anymore. End of story.

While preparing a presentation on my current project I found Visio wasn't creating the pretty diagrams I wanted. I decided to try the Diagrammer again. After you create a class diagram, you can hit the + key or hit the triple upside down ^ icon to get the diagram to expand. It does a nice job of displaying your class.

I've found a few useful features in the class diagram menu: Show Base Class, Show Derived Class, Change Members Format --> display full signature. There is also a Refactor -->Extract Interface which looks handy.

Changes made to the diagram or in code are instantly synchronized between the two.

Unfortunately there is no integration between Visio and the Class Diagrammer. You can click on an object in the class designer and copy paste it as a picture into PowerPoint Visio (I took independent pictures of each object and created new connector lines in Visio)

.NET report viewer page display problem

We had a problem getting our report viewer to display the current page and page count in the ReportViewer Control.

After searching around on the internet we found a fix. This fix has to be implemented after the page renders (trying to do it right after setting the zoomMode or after form.show won't update the page numbers)

'''
''' This is to get around a bug in the report viewer which caused it not to display the page numbers.
'''

''' ReportViewer1.SetDisplayMode(DisplayMode.PrintLayout)
''' ReportViewer1.ZoomMode = ZoomMode.PageWidth
'''

'''

''' The fix was found here; http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=297814&SiteID=1
Private Sub ReportViewer1_RenderingComplete(ByVal sender As Object, ByVal e As Microsoft.Reporting.WinForms.RenderingCompleteEventArgs) Handles ReportViewer1.RenderingComplete ReportViewer1.SetDisplayMode(DisplayMode.PrintLayout)

ReportViewer1.ZoomMode = ZoomMode.PageWidth

End Sub

Wednesday, April 18, 2007

Elected to Greater Lansing User Group .net

I was elected as a Program Director for the Greater Lansing User Group .net this evening.



Attendance is around 35 people per meeting which puts us in the top 10% of .net user groups nationwide.

Friday, April 6, 2007

April 2, 2007 Emerging Trends on the Internet
Sasha Verhage, Design lead for Google

Technology - focus on usability and the end result not technology ie. Ajax - some product managers want to 'ajaxify' products. Only do it where it makes sense.
· Google Maps
o Craig's list mashup
· Yahoo Mail – looks like Outlook.
· Ajax programming reduces page views and companies need to find alternate revenue streams (less ad views)

Live Testing
· Google Ads
o in one test changing the font can impact revenue. One test showed bolding search terms in ad results increased revenue 8%
o colors are also important. Green link colors for ads tested very high
o bucket testing (segmenting users into control groups and test groups)
o changing colors can increase revenue (7%-15% in one example based on 200,000 people
· blue color schemes generally win across all demographics
· Brand, Brand Halo - blind 'taste tests' remove branding from websites for blind
User Generated Content
· Use when appropriate (ie travel rating sites, Google Sketchup/Google Earch)

Attention Economy is real
· People trying to do more at once with technology (cell phones, ipods, facebook, myspace)
· multitasking is overrated (it takes ~15 minutes to return to a task you were deeply concentrating on prior to interruption)
· one study estimated interruptions and recovery time at 28% of employee time
· attention has economic value (free cell phones with voice ads, Slate.com customers can pay to have ads removed)

Search Engine Optimization
· SEO increases your likely hood of showing up based on the algorithm and what the user expressed
· trip Advisor gaming Google (the phrase 'Las Vegas' was memtioned 62 times per page on this small site)

Friday, January 19, 2007

Book Summary: Agile Software Development with Scrum

Agile Software Development with Scrum Ken Schwaber Mike Beedle

I really liked this book. Sounds like an interesting methodology. I'm trying to use some of the concepts at work (particularly the do work first and show it instead of discuss how to do it). Unfortunately my work environment isn't structured to fully support this development methodology.

Rough Schedule:
  1. Sprint Planning meeting to determine what goals to set for a sprint
  2. builds a product increment (working code) after a sprint (30 days of development time) Sprint Backlog cannot be changed from outside the team during a sprint
  3. demonstrates product increment to team management and client after a sprint (Sprint Review Meeting 4 hours)
  4. End of Sprint Meeting - reflect on what was accomplished during the sprint
  5. **Ongoing-15 minute daily team (ideally sized at 5-8 staff) meetings stating:
  1. what have I done since the last meeting
  2. what will I do until the next meeting
  3. what impediments are getting in my way
Scrum teams:
  1. autonomous
  2. self organizing
  3. don't have roles assigned by management (no titles)
  4. must not be disturbed or given direction by anyone outside the team during a sprint
  5. need to be cross functional
Terms:
  1. Scrum Master-facilitates meetings and removes impediments
  2. Product Backlog -prioritized list of business and technical functionality that needs to be completed for the system
  3. Product Owner-the only one who changes the product backlog
  4. Sprint Backlog-states what needs to be done in the current sprint
  5. Pigs-Team members
  6. Chickens-interested parties who will not be assigned work (they may attend scrum meetings but not speak)
  7. Release backlog - subset of the product backlog that is scheduled for a release
  8. Shared Resource Scrum Teams - responsible for code used across multiple Scrum teams

Saturday, January 6, 2007

Social Networking Sites (LinkedIn)

I use Facebook, MySpace, and LinkedIn.

Facebook primarily keeps me in touch with high school and college friends.
MySpace isn't as focused on school friends, it encompasses more people.

LinkedIn - This site focuses on professional connections. I've had it for a few years but haven't used it much because I don't know many people on it. Leo Dion just sent me this article on LinkedIn and I've decided to ramp up use of it. I think you should read the article and then decide if LinkedIn makes sense for you.

I've heard there are websites which will aggregate social networking sites (similar to the way Trillian works). I haven't found any of these to try out.

LinkedIn supports importing contacts from email clients which may help you start your network. I use Gmail. I had to export my contacts to csv files and then import them into LinkedIn to get it to work.

Saturday, December 30, 2006

Chat Applications & Interoperability (Google Talk)

I subscribed to many Google services last week, including Google Talk.

I like the Chat application very much because:
  1. The application is simple.
  2. Chat Histories are saved on Google Servers and available from anywhere in the world.
  3. You can access Google Chat from the Gmail web interface.
The only problem is most of the people I know don't use Google Talk. Well, today I found out Google Talk can also chat with most other Chat clients (in my case MSN and AIM)

Problem solved.

I followed these comprehensive instructions except that I wasn't able to get it to work with the servers they had listed. I used jaim.at for AIM and msn.jabber.anywise.com for MSN. Here is a List of Jabber servers.