Greg Robinson's Blog

I report it, you decide

Click Once

Custom Authentication in Windows Forms

DataBinding Stuff

Favorite Links

My book contribution

My Book Reviews

My Personal Life

Richmond, VA .NET Users Group

Smart Client Stuff

What I am reading

May 2005 - Posts

No Touch Deployment and .Net Remoting

As we continue to go live with our NTD Windows Forms application (which replaced a desktop client\server app), that allows remote access to their sql server, I get emails from users like this:

"I still do not understand how this works when I'm not connected to the server, but it does."

My reply "It's magic"

Hats off to MS for coming up with NTD over http and .Net Remoting over http. 

 

 

The New World of Work

I receive an email from Bill Gates from time to time.  I found this one quite interesting:

 

Over the past decade, software has evolved to build bridges between disconnected islands of information and give people powerful ways to communicate, collaborate and access the data that's most important to them.

But the software challenges that lie ahead are less about getting access to the information people need, and more about making sense of the information they have -- giving them the ability to focus, prioritize and apply their expertise, visualize and understand key data, and reduce the amount of time they spend dealing with the complexity of an information-rich environment.

To tackle these challenges, information-worker software needs to evolve. It's time to build on the capabilities we have today and create software that helps information workers adapt and thrive in an ever-changing work environment. Advances in pattern recognition, smart content, visualization and simulation, as well as innovations in hardware, displays and wireless networks, all give us an opportunity to re-imagine how software can help people get their jobs done.

This is an important goal not only because the technology has evolved to make it possible, but also because the way we work is changing. Since you are a subscriber to executive emails from Microsoft, I hope you'll find this discussion of those changes useful.

Now more than ever, competitive advantage comes from the ability to transform ideas into value -- through process innovation, strategic insights and customized services. We are evolving toward a diverse yet unified global market, with customers, partners and suppliers that work together across cultures and continents. The global workforce is always on and always connected -- requiring new tools to help people organize and prioritize their work and personal lives. Business is becoming more transparent, with a greater need to ensure accountability, security and privacy within and across organizations. And a generation of young people who grew up with the Internet is entering the workforce, bringing along workstyles and technologies that feel as natural to them as pen and paper.

All of these changes are giving people new and better ways to work, but they also bring a new set of challenges: a deluge of information, constant demands on their attention, new skills to master and pressure to be ever more productive.

For example, "information overload" is becoming a serious drag on productivity -- the typical information worker in North America gets 10 times as much e-mail as in 1997, and that number continues to increase. A recent study showed that 56 percent of workers are overwhelmed by multiple simultaneous projects and interrupted too often; one-third say that multi-tasking and distractions are keeping them from stepping back to process and reflect on the work they're doing. In the United Kingdom, it's estimated that stress accounts for nearly one-third of absenteeism and sick leave.

It's also not easy enough just to find the information people need to do their jobs. The software innovations of the 1980s and 1990s, which revolutionized how we create and manipulate information, have created a new set of challenges: finding information, visualizing and understanding it, and taking action. Industry analysts estimate that information workers spend up to 30 percent of their working day just looking for data they need. All the time people spend tracking down information, managing and organizing documents, and making sure their teams have the data they need, could be much better spent on analysis, collaboration, insight and other work that adds value.

At Microsoft, we believe that the key to helping businesses become more agile and productive in the global economy is to empower individual workers -- giving them tools that improve efficiency and enable them to focus on the highest-value work. And a new generation of software is an important ingredient in making this happen.

How We Will Work

Over the next decade, we see a tremendous opportunity to help companies of all sizes maximize the impact of employees and workgroups, drive deeper connections with customers and partners, enable informed and timely decision-making, and manage and protect critical information.

The next generation of information-worker applications will build on promising technologies -- such as machine learning, rich metadata for data and objects, new services-based standards for collaboration, advances in computing and display hardware, and self-administering, self-configuring applications -- transforming them into software that will truly enhance the way people work --

Improving personal productivity: One consequence of an "always-on" environment is the challenge of prioritizing, focusing and working without interruption. Today's software can handle some of this, but hardly at a level that matches the judgment and awareness of a human being. That will change -- new software will learn from the way you work, understand your needs, and help you set priorities.

Pattern recognition and adaptive filtering: Rules and learned behavior will soon be able to automate many routine tasks. Software will be able to make inferences about what you're working on and deliver the information you need in an integrated and proactive way. As software learns your working preferences, it can flexibly manage your interruptions -- if you're working on a high-priority memo under a tight deadline, for example, software should be able to understand this and only allow phone calls or e-mails from, say, your manager or a family member.

Unified communication: Integrated communication will provide a single "point of entry" to the networked world that is consistent across applications and devices. People should have a unified, complete view of their communication options, whether by voice or text, real-time or offline, with ready access to tools like speech-to-text and machine translation. You should be able to listen to your email, or read your voicemail. Project notifications, meetings, business applications, contacts and schedules should be accessible within a single consistent view, whether you're at your desk, down the hall, on the road or working at home.

Presence: We're just beginning to tap the potential of presence information to help information and notifications flow where they're needed and better enable ad-hoc collaboration to solve problems and get things done. Presence information connects people and their schedules to documents and workflow, keeping you close to the changing data and expert insight that is relevant to what you're doing.

Team collaboration: Over the next decade, shared workspaces will become far more robust, with richer tools to automate workflow and connect all the people, data and resources it takes to get things done. They will capture live data and documents in ways that will benefit teams that work across the hall or around the globe. Meetings will be recorded with sophisticated cameras that can detect and focus on speakers around the room. Notes taken on a whiteboard will automatically be captured and emailed to participants, and attached to the video of the meeting. They will also serve as lasting repositories for institutional knowledge, so teams won't have to "reinvent the wheel" and work with limited knowledge of the company's past experience.

Optimizing supply chains: XML and rich Web services are increasingly making it possible for businesses to seamlessly share information and processes with partners, and build supply chains that stretch across multiple organizations but work as a unified whole. But there's still plenty of friction that can be removed from the way companies work together. Employees shouldn't have to manually match purchase orders with invoices. They shouldn't need to print and mail bills that could easily be sent in electronic form. Expanding the reach of Web services can help optimize and reduce the amount of unnecessary manual work and make these supply chains vastly more efficient.

Finding the right information: A new layer of context-sensitive services will give you flexible and intuitive ways to manage information that go beyond the "file and folder" metaphor of today. You shouldn't have to "think like a database" and formulate search queries to ask for the information you need. Pattern recognition can help tag and organize information automatically, as well as extract meaning from documents and enable them to be queried in more natural and intuitive ways.

Spotting trends for business intelligence: Sophisticated algorithms will be able to sort through millions of gigabytes of data to identify trends that human analysts might miss. Software should be able to find meaningful connections in mountains of data and present them to experts -- or even automated processes -- that can act on them. Software can ensure that actions which result in changes to other work processes will automatically ripple through the system, making the entire business more agile and responsive to information that affects the bottom line. Over time, software will "learn" what information people use -- and what they don't -- and will adjust its behavior accordingly.

Insights and structured workflow: Software should take a more holistic view of workflow, providing data and metrics on specific activities to make it easier and faster to spot inefficiencies and points of failure. Smarter workflow tools will use pattern recognition and logic to find problems such as repeated customer complaints or inventory problems, and route them to the right person for resolution. This will go a long way towards reducing frustration, lost time and errors that result from broken or inefficient processes.

A New Generation of Productivity Software

In a new world of work, where collaboration, business intelligence and prioritizing scarce time and attention are critical factors for success, the tools that information workers use must evolve in ways that do not add new complexity for people who already feel the pressure of an "always-on" world and ever-rising expectations for productivity.

We believe that the way out of this maze is through integration, simplification, and a new breed of software applications and services that manage complexity in the background, and extend human capabilities by automating low-value tasks and helping people make sense of complex data.

We aim to make this happen through a next-generation productivity platform that builds on the solid foundation of today's Microsoft Office system of programs and services. We will enable people to create more effective professional documents, access work information from anywhere, and better manage personal, team and project tasks. We're investing in a secure infrastructure that makes it easy for anyone to securely collaborate on documents and work processes. We're offering better data visualization and analysis tools that bring out the trends and patterns buried in mountains of data. We're making it easier for businesses to create, track, manage and distribute content both within and across organizational boundaries. And we're offering open XML standards and rapid development tools so corporate developers can build and extend applications that specifically target their needs.

Microsoft has been innovating for the information worker for more than two decades -- and in many ways we've only just begun to scratch the surface of how software can help people realize their full potential.

Bill Gates

You can learn more about our vision for the New World of Work at http://www.microsoft.com/mscorp/execmail.

To cancel your subscription to future executive emails, please reply to this email with the word UNSUBSCRIBE in the subject line. To contact Microsoft, write to us at One Microsoft Way, Redmond, Wash., 98052. To manage your Microsoft.com subscriptions, please sign in at the Microsoft Profile Center here: http://profile.microsoft.com/RegSysSubscriptionCnt/. To see the Microsoft.com Privacy Statement, please go to http://www.microsoft.com/info/privacy.mspx.
VS 2005 and .NET 2.0 update

I spent about an hour with this yesterday.  I opened our master solution with 2005 and to my surprise a conversion wizard kicked in.  It took about 10 minutes to run.  We had 0 conversions! 

I did a build.  We had 550+ warnings and 150+ errors. Most of the errors were quick fixes.  The warnings are impressive though.  Most are something like "a value is never assign to <object> prior to it's use and this may cause a NullReferenceException".  Very nice, I like this. 

Literal strings are in red font, very nice.  So far I am liking what I see.  

VS 2005 and .NET Framework 2.0

We are installing the above on a development machine today. Man are we excited.  I'll post back what we see and think.

 

 

Debugging once you go live: Trace Listeners

I wanted a way to debug our windows forms application once it was deployed to a client machine (Release build).  I use Debug.WriteLine and friends when debugging from the IDE, (Debug build) using the Output Window to see my output.  How does one do this with a release build though?

With the help of the good folks on DOTNET-CLR@DISCUSS.DEVELOP.COM, I got this figured out.  Trace Listeners and Trace Switches are your friends.

I added this to our app.config file:

<system.diagnostics>  
      <switches>
       <!-- Enable/disable profiling messages (0 = disable, 1 = enable) -->
           <add name="bsProfile" value="1" />
      </switches>
      <trace autoflush="true" indentsize="4">
           <listeners>
                <add name="FileListener"
                     type="System.Diagnostics.TextWriterTraceListener"
                     initializeData=".\AMNETRunTrace.txt" /> 
         </listeners>
      </trace>
 </system.diagnostics> 

When our app loads, I do this:

bsProfile = New BooleanSwitch("bsProfile", "Define whether profile information is displayed")

Now, when I want to insert some 'debug' statements, I do this:

Trace.WriteLineIf(bsProfile.Enabled, "User clicked the Send button")

Which says "write 'User clicked the Send button' to the AMNETRunTrace.txt file if <add name="bsProfile" value="1" />"

By default, I'll set <add name="bsProfile" value="0" />

If I need to debug something on a user's machine, I'll set it back to 1 (most likely ask them to do this) so I'll see my output in the text file.  Once I am done debugging, set it back to 0 and delete the file.

You can also output to the Event Log and Output window out of the box, or you could create your own custom listener, like an email listener that sends your support desk an email when something bad happens.

 

  

 

 

.Net opportunity in Richmond, VA

New contract-to-hire position that needs an immediate fill.  The job description basically entails the migration of vb6 to vb.net.  Client is looking for someone with strong vb.net experience.  This person will be the mentor of a Jr. team.  This is a windows forms project. 

Contact Info:

Tommy Edelblut Jr.
Technical Recruiter
(804)282-8788 x218
capitaltechsearch

Let him know Greg referred you.

Good luck.

 

 

Passing state\data between forms

I just finished reading yet another article\post on ways to do this in .Net.

Call me stupid, but I never gave it much thought. I always pass BindingContext and DataSets back and forth. Works well, saves writing a lot of custom properties and the like.

For example, in the parent form:

    Dim bc As New BindingContext

    Dim result As DialogResult

    bc = Me.BindingContext

    Dim frmUnlink As New frmUnlinkFirm(bc, dsSearch)

    result = frmUnlink.ShowDialog(Me)

Once the 2nd form is done, I can use both types (DataSet and BindingContext) again to do anything I have to do back in the calling form.

Is there something wrong with this approach? I never see this mentioned in 'how to' articles or posts.

If I can't use it, don't give it to me

Cool new feature in 2005:

http://te.3leafdev.com/2005/04/a_c_feature_in_.html

David Chappell on Indigo May 12th

http://blogs.msdn.com/gduthie/archive/2005/04/06/406028.aspx

More Posts