Oh, this is just SO satisfying. I have finished refactoring my app and it's so cool to see this working just the way I had dreamt it up. I was only able to do this from a lot of ideas I have collected from many of the presentations at Vermont.NET over the last six months - most notably for this particular solution: Ken Getz on Visual Inheritance in Windows Forms (April 2003), Carl Franklin on Objects (August 2003) (this really got me thinking about taking my use of inheritence to a whole new level) and Billy Hollis on Dynamically Loading Forms and other Advanced Object Techniques (October 2003). Hey whad'ya know - all three are INETA speakers, too!
I also had some prior education with reflection with a previous app that dynamically loaded ActiveX User Controls into a .net windows form application.
I am going to attempt to explain the basic setup here in case anyone might be able to learn from it. If you look at this in a browser (not your aggregator) you will see that I have color coded some of the objects to make it a little easier to explain.
I am creating a pluggable framework of test entry forms. These are a variety of different tests that are performed on building sites - making sure a factory doesn't sink into the ground or a road doesn't buckle or a bridge doesn't collapse.
Every test will have a few things in common - not just data entry, but functionality as well. So I have built those things into a base form and an associated base class. The base form lives is in its own DLL. The base class is in my Business Layer.
Then for each new test, I create a new form inherited from the base form and add to it additional controls that are specific to that test. I also create a new class that inherits from the base class. This new class also has it's own explicit functionality.
This is the whole point behind inheriting classes. So why did I find it so challenging? Combining the derived forms AND derived classes was a little daunting and took some experimentation before I understood how everything worked together. It felt to me something like that now famous “cog“ ad that Honda did.
When the user chooses to work with TestA, an instance of “FormTestA” is created. It gets what it needs from the base form. The base form creates the base class, then FormTestA creates IT's derived class and get's what it needs from the base class that the base form created. (Are you with me so far?) It is really fun to step through the code and watch the debugger go back and forth between the two classes and the two forms. Some of that coolness I think I may have had something to do with -- but most of it feels like magic.
Then the last trick was to make this really pluggable because we plan to add tests over time and all I want to do is throw another dll into the mix. This is where reflection comes in. Each test will has it's own dll containing a derived form and a derived class. That dll references the business layer and the BaseForm.dll. In the ParentMDI form, when the user selects which test to work with, I instantiate the specific test's derived form via reflection and then it does all of it's own work from there. THere is heavy interaction from the parentMDI form which calls functions that reside in the derived forms and classes. And it all just works!
It is just so much fun to finally have the tools (i.e comprehension) to create a solution that uses some of the techniques that used to make me dizzy. So Ken, Billy, Carl and a HOST of others - THANKS!! Oh, and always -- Deborah Kurata who dragged me into the world of Objects many years ago and continues to enlighten many on OOP. Thanks Deborah!!
The Pew Internet and American Life Project issued a report on the Consumption of Information Goods and Services in the United States yesterday. The report concludes that "There is a trendsetting technology elite in the U.S. who chart the course for the use of information goods and services." Within this elite group of techies, "wired women like tools to communicate, not gadgets to show off."
Check out at least this one section of the report for some interesting statistics.
I (and many other user group leaders) have been very fortunate to have publishers like Addison-Wesley, SAMS/Que, Prentice-Hall, O'Reilly, APress (oh am I forgetting anyone??) donate books to the user group. My husband refers to this as “the daily book delivery” though that is quite an exaggeration!
Today was a box from A-W. With some hot off the presses books. One I fear may never leave my office: A First Lookat ADO.NET and System.Xml v2.0. Well, maybe “A First Look at ASP.NET 2.0” might stick around for a while, too!
I was also happy to see the Jon Box/Dan Fox collaboration : Building Solutions with the Microsoft .NET Compact Framework: Architecture and Best Practices for Mobile Development
At PDC I made a new friend, Olga Londer , and the recent book that she collaborated on was in the box too! Microsoft Content Management Server 2002: A Complete Guide. This is the same book that Owen Allen was happily shocked to discover a few weeks ago.
So to my friends at A-W (and all of the others including Amy Sorokas (now blogging!) and to all of those brainy people who give up a good part of their normal lives to write these books: THANK YOU!
Somewhere along the way, I was led to believe that the first Service Pack on .NET Framework 1.0 fixed this problem. But I think not. I just finally updated my intranet webserver (exists for testing purposes only) and opened up the first website in vs.net 2003 and could NOT debug it. After going over the obvious (did I remember to install the remote components? Was I in the Debugger Users group?) I finally tried editing machine.config (according to the above link) and finally had success. Damn! Why didn't I think of that first?!
READ Mark Pearce's comment. And please note I (Julie) am not a system admin! Purely a hacker when it comes to having to deal with that stupid server machine in the corner over there.
Update#2: Reset the processmodel in machine.config BACK to “machine”. I have always been an administrator - so that was not the issue either. What I finally did (thanks to a hint in Mark's comment) was look at the Temporary ASP.NET files folder on the webserver (c:\winnt\.net framework\xxxxxversion\) and added the ASPNET user into the permissions for this folder. I wonder why this was not done as part of the installation?
Last week a friend of mine called. She also happens to be the woman who was my very first ever consulting client 18 years ago and the relationship has evolved into a good friendship. She could not start up Windows XP. By the time I was able to return her call she was in the midst of what became a 4 hour phone call with Dell who was helping her out. This was a Dell laptop that was 8 months past its warranty. After these 4 hours and many more with further assistance, it became apparent that the system could not be restored at all or even reinstalled. My friend has since then lost so many days of work that she has decided to buy a new laptop and have that other one overhauled, if possible, and used as a secondary machine. She was so desparate that she couldn't even wait the week that Dell was quoting her for a new laptop and chose from one of the refurbished available machines she could order for overnight delivery.
The post mortem is that this irreconcilable problem was caused by a virus. This is a woman who I taught many years ago the importance of good backups and constant virus protection. Luckily the good backups are saving her butt today. And I know that she generally IS very good about updating her virus protection. However I learned that when she had the [now dead] box upgraded to Windows XP, the version of Anti-Virus that she had was “not compatible” with XP and her virus protection was left to the wind and then forgotten. I think that the information that is given by Symantec and other vendors is confusing to the faint-of-heart sometimes and they are scared into always buying new versions of the software when an older version most often works just fine on a newer O/S. So I'm upset that this is the main reason for this happening to my friend - to the tune of about $2500 and a little dismayed with whomever was entrusted to take care of her original upgrade to XP, leaving her so vulnerable.
Today is going to be refactoring day. (This has nothing to do with Whidbey - rather real refactoring)
My app that I am writing is going to have pluggable pieces. We are doing data entry and reporting for a variety of tests done out in the field.
So I have written this so that there is a base form and a base test class that each test's data entry form and associated class derive from. Currently everything is in one project - so that I could work through all of the logic. I only have one test created so that it's not a nightmare. Now it is time to break everything up.
I will be putting the base class and base form into one dll.
Then the derived class and derived form into it's own dll.
Then the main UI will be able to use reflection to grab the appropriate form dynamically out of it's dll and that form will call out to the base dll to define itself.
The [believe that] challenge ahead of me really is just getting all of the references set up properly.
It will be exciting (yes from a geek perspective) when it all works again after I have separated all of the pieces. It becomes, in my mind, something a George Rhoads kinetic sculpture (e.g. the one at the Logan Airport).
I generally try to avoid duplicating posts from others in the main feed of weblogs.asp.net, but this is important. Christian Weyer points out the MSDN article demonstrating how to host web services via Compact Framework.
I work out of my home office. I have a true network with a server setup so that I can emulate my client's environment - programming against a remote SQL Server and a remote IIS. I'd rather not get tangled up in the administration, but it's the price I have to pay. My biggest client is still using SQL7 and will wait for Yukon before upgrading and therefore I have stuck with SQL7 on my server all of this time, even using SQL2K client tools to access it (for a variety of reasons). I finally am giving in and upgrading my own SQL so that I can use SourceGear Vault (”Lonely Coder Edition”). The other thing I was holding out on was, though all of my windows forms apps are written in vs2003 against .NET 1.1, I hadn't touched my webservices or asp.net apps which are still against 1.0. So I just finally put .netfx 1.1 on the server, too, and will port all of the web apps as well. Then I get to move all of my online webapps over to Alentus' 1.1 boxes and also port all of my clients webstuff to 1.1 (which is already running SxS on their webserver). The only thing that I still really want to do but can't yet is get moved up to Win2K3 server. There has not been any real need to but I figure it's time. But my poor 4Gig SCSI hard drive is just about maxed out. I thought - aww heck, I'll just buy a new server box. Dell's got free shipping and all kinds of deals, but I just looked at how much I spent already christmas shopping and don't feel like forking over another $600 (that's after choosing 512MB Ram instead of 128MB). And I'd rather hold out for a longhorn box anyway. I even have a spare 40 GIG hard drive in my development box but it's not SCSI so I can't flip it into the other box. I'll probably just buy a new drive and start it fresh with win2k3 and then move everything over to that. These things only seem to be able to happen on Sunday nights. I can hardly find the time to set aside otherwise.
update: Planning to upgrade from SQL7 to SQL2000? Better read this FIRST! There is a known problem with the upgrade process and that link will enable you to download a fix.
This is for my friend Joy who seems to think that November is the ugliest time of the year in Vermont. (Besides she must be forgetting about mudseason!
I want to point out three problems that I got stuck on in a Windows Forms application. I kept thinking I was doing something wrong. But in fact, they are real issues. I will find time to check into this in Whidbey.
All three problems were solved by people who stopped banging their head on the wall (like me), and went a different route.
1) I could NOT get anchored controls from a base form to behave properly in a visually inherited form. Roland Wiegelt explains why this problem exists and how to get around it. Thanks Roland! [anchor, child, mdi, inherit]
2) A very useful feature in VB6, determining what action caused a form to begin closing (code directives, vs. application is shutting down vs. user clicked on the close (X) control on the form) was completely deprecated (i.e. gone - no replacement) in .NET. I found a nice solution written by Kourosh Derakhan on CodeProject that taps into the stacktrace to provide the same features. It's written in VB.NET but it's just CLR code, so just add a coupla “;”s and you've got the C# solution. There is also an article by VB MVP Bill McCarthy [that I missed] that he published during the Beta with a solution based on capturing a WndProc event on the form. [queryunload, unloadmode]
3) I spent hours and hours and hours fighting with the damned control box and forced RESTORE (sizing) on a maximized child window. My solution has NO NEED for a menu nor any need for the child window to be anything but maximized, but this control box (believe me every single propery related to it was set to false) forced itself into the spot where a menu might have been, causing constant vertical shifts in my MDI application. I found a newsgroup post where someone from Microsoft agreed that it was a problem and there was no workaround. So I finally gave in and added a menu that duplicates the functionality of my toolbar. It's completely redundant and will never be used. But it was the only way around the problem and nobody will ever really notice it's there. So it's not in the way. [mdi, child, restore, maximize]
Robert McLaws was a little curious if any one took offense at what may have come across as a self-appointed title of “Boy Wonder”, a title he explains was earned from his co-workers after working in a his low-lit office fondly referred to as the Bat Cave - ergo “Robin” aka Boy-Wonder. I had always wondered about that “Boy Wonder .NET” thing and admit to having jumped to a particular conclusion myself. Now I'm waiting for a sub-sub title of “notes from the BatCave”!
I don't particularly see the blog title as a branding thing which seems to be Robert's concern. I think he's remembered for his name (and his comments) more than the blog title. I know I want to change mine, but I haven't thought of a replacement. Probably the word “blabbing” has to stay. My husband might suggest “yibbidy yibbidy yibbidy” - what he thinks me and a few of my girlfriends sound like when we get together. :-)
As I'm sitting here typing code, I can't tell you how frequently when implement something an a little voice in my head says “Thanks Dave!”. Although I have programmed alone for many years, I did take a “real” job when I first moved to Vermont for a wonderfully cool ISV called Synergy Software for about 6 or 8 months. I worked very closedly with the first “REAL” programmer I had ever worked with in my life. A guy named Dave Dapkiewicz. Dave is a really cool guy and SO smart - I could never get over it and I haven't even talked with him in years but I'm always saying “thanks Dave” still!
Dave is an architect more than anything. We would work all day. then he would go home devour books all night and much to the chagrin of his business partner (who had to make sure we stayed within our deadlines!
) would drag me into his office in front of his whiteboard and rearchitect the whole solution. Every new idea was brilliant. It was so much fun to just THINK about design and amazing to see the ideas coming out of his head -- just making it better and better. We would hash through ideas - what if this what if that. He was designing patterns, thinking about a better class factory, hammering out performance testing. It was FUN (except when someone would come to see how I was progressing with the U.I. which I would have to re-work each time Dave rolled out a who new set of classes that I had to rip out and replace ). He completely changed the way I programmed and because of what I learned from him on this VB6 project - I was as prepared as any VB6 developer could be for .NET because I was already using many of the correct OO and coding techniques.
I have STILL have not managed to lure Dave to one of our user group meetings, but have had a number of his new disciples there.
From Rob Zelt (who attends meetings at www.trinug.org in North Carolina) (and via yet another Robert Scoble post), more affirmation on how great user groups are and how Microsoft and anyone can be part of the effort to keep them great.
The InkBlog (actually it's called “InkLog“) is here - tablet pc team's test site (by way of TabulaPC). When I took my notes in ink at PDC and then posted them, besides the fact that my handwriting was horrific (bad to start with and then writing too fast) I realized that Journal wouldn't let me embed links. So that wasn't really what I expect of a blog post - since linking is the key ingredient of blogging. I was using Journal and then saving the journal and ftp'ing up to my domain and then providing a link from a standard blog post.
Now the ink(b)log is obviously very cool. They must have a UI where they capture the ink and then it converts it to a GIF (just point to the ink and right click: save picture as comes up and the default file type of “gif“.)
But in the posts that I looked at I still don't see hyperlinks (yet, of course... since this is just a work in progress and I“m happy to see it already!) So - the gif makes sense, it's a file with a small footprint. But how would linking work in there? My guess to accomplish this would be to use a selection tool that is as smart as the lasso in Journal - because it can actually grab the outlines of the letters and then create a hotspot and associate a hyperlink to that. And it would need some type of visual clue there that says “hyperlink is HERE folks“. I felt a little silly running my mouse over the entire area of the ink blogs to see if there was a hyperlink anywhere! :-) Since they are using gif's, that's a good start, because you can create hotspots in gif's.
Not much to be done about the handwriting though! Hee hee.
It's fun to read all the excitement in the posts of the tablet folks who are now on their way home from Comdex and starting to mull over all that they saw. Since I am so new to this area, I have a lot to learn and these people have been involved with tablets for a long time. These folks are SO pumped up about what's coming out for TabletPC and they are positioned to really understand the importance of it all. I'm still pretty wide-eyed and impressed by anything.
So if you have any interest in tablets as a user or a developer, keep an eye at least on these places (and I'm happy to be educated to any that should also be listed here)
certainly there are more, but this is what has been very visible to me during Comdex. The flow of info is incredible. But now comes the analysis which will be really interesting.
This is a question I have seen now in my comments and over in the forums on TabletPCDeveloper.com. There is a bunch of functionality in the Tablet OS that lies between what is in the SDK and actual pen/ink usage on a tablet surface that could be solved with an emulator such as the ones for PocketPC and Mobile development. I haven't really worried about that area because I am fortunate enough to have a tablet to experiment on. Read here and here for more. Is it just that it's too hard to do? It could mean another step for MS in getting more developers to write Tablet apps.
I ran into a problem with form height in VS.NET design mode a while back and just had to jump over it unsolved. The same problem was addressed in a question on the TabletPCDeveloper forums <g> so I thought I would put it out where it might get some more visibility.
When you are in VS.NET, it seems that it is not possible to have a windowsform design surface with a height greater than 780. If you open up VS.NET on a tablet and the tablet is in portrait mode, then you have access to the full height of the tablet. Chris deHerrera (TabletPCTalk.com) showed this solution to me when I was in L.A.
It is definitely a problem for someone doing UI design [on a desktop] who wants to create a portrait screen that leverages the full height of the tablet (1002) and be able to place controls on that design surface at design time.
Another - gotta go check it in Whidbey- scenario.
Why is this?
(from MSDN Library) In Visual Basic 6.0, a Combobox or ListBox control could be bound to a database using ADO; when a value in the control was changed, the database was updated. In Visual Basic .NET, data binding for the Combobox Control (Windows Forms) and ListBox Control (Windows Forms) controls is read-only when a user changes the value by selecting an item from the list. When the value in the database changes, the control is updated, but when the value in the control is changed, the database is not updated.
So I have the properties of an particular class bound to various controls, some textboxes some comboboxes. When the user changes the text box, it gets back to the property SET method for that property, but not if the user makes a selection in the combobox. I don't mind writing the additional lines of code to change the property value in combobox_selectedIndexchanged. I'm just curious.
Now I have to go see how this behaves in Whidbey! I'll report back.
I know it's been around for a while, but it's the first I saw of it because I am new to the Tablet world. That is why I chose to tone down my original posting title.
Bill Evjen did something I had been meaning to do. The package of DVD's for Longhorn, Yukon and Whidbey that we received at PDC was a pretty groovy little production. Bill shows you what it looked like.
TabletTalkPC points out a press release for MindManager for the Tablet. Mindmanager is a product I had never seen before. It is designed to help organize ideas during brainstorming sessions. I was expecting to see the “grid“ that Bill Gates sets up on his notepad for meetings I just checked out how a desktop version looks. Not sure how you create the elements - visio like? - but the output integrates with MS Office apps as well as Project. Having it on a tablet suddenly makes it look like a really cool application. I look forward to checking it out!
It finally hit me this morning when reading another fascinating post about how things work at Microsoft - this one by Scott Guthrie.
I realized that it has similar appeal to a factory tour - which are often big tourist attractions. Here in Vermont, Ben & Jerry's Factory Tour and the Vermont Teddy Bear Factory Tour are the top 2 tourist attractions in the whole state. Hmmm - I wish it were Shelburne Museum or Shelburne Farms. Oh well. My husband still remembers the many factory tours he went on as a kid - for example a place where fire trucks were built. I recall a brewing plant tour - stinky!
The Microsoft Factory Tour is fascinating to the geek on two levels. One is for the same reason we like the B&J Tour, see how they do what they do! But the other is that there are some great lessons to be learned as software developers from one of the largest software development companies in the world. Perfect example is learning that the 2nd person on the asp.net team was put there as a dedicated performance tester. Yeah, I gotta get me one of those!
So who IS in charge of this website? My understanding is that someone else owned it but now Microsoft does. The latest “news” is from April. Hey why not just stick TabletPCTalk's rss feed in there?! Then you don't have to update it.
The latest Resource was added 2/28.
I even sent some info in the feedback (a week ago maybe?) and never heard a reply. Does it get to any one?
For all of the reasons stated here, I think there are a lot of people who would like to see this get going again. Although I am a little overbooked with my Microsoft related volunteer hours
, I am even willing to help out and I'm sure there are many in the still small community that would be willing to help out as well.
As Marc points out, the TabletPCDeveloper.com website is almost lifeless. I had an email from someone today that said “could you possibly look at my question on the tabletpcdev forums and see if you can answer it?”
That is a sad state.
So, well there are also the newsgroups as MS Tablet team member Stephen Fisher reminds us. I will try to spend some time there. But I'm somehow more akin to forums - can't say why.
So let's see if we developers can't breathe some life into that Website, eh? Maybe it's owners might get the hint that we WANT it to be a resource for folks who are developing applications for TabletPCs.
Update: Robert Scoble asks “what about the other great Tablet sites?“
My response: There are of course other fabulous tablet sites with forums, but they are mostly not about development. TabletPCBuzz.com does have one forum section for developers (with over 300 posts), so that's another place to look. TabletPCTalk has great forums, just not development related, from what I see. TabletPC2.com is another great tablet resource. However the reason I am focusing on TabletPCDeveloper is because it is focused on Development and that's where my interest lies.
Don't misunderstand me, there is a LOT of interesting, fascinating and innovative stuff on all of these sites. It's just that the poor little developer site is such a lonely place.
I definitely want feedback on this - most especially if I am ill-informed and spreading my disease.
**The Vermont SQL Server Special Interest Group (currently a SIG of VTdotNET but soon ready to spread their wings and be a full-fledged user group) has definitely become a mainstay in the Burlington area! I attended a meeting last night where group president, Eric Hall, fresh back from PASS, gave a presentaiton on SQL Server Reporting Services. It looks like potentially fearsome competition for Crystal and Active Reports, though I have to REALLY see what the report designer can truly do. Remember the “report designer” in VB6? (Basically useless.) There was a continuation of the giggling from PDC about how it looks a little like “Access for SQL Server“
There were 16 people at the meeting which, from what I hear is sizable for a SQL group and even more impressive considering that they are in Burlington, not Boston.
The group was started by some members of VTdotNET that wanted to focus more on SQL. We are also fortunate to have a fantastic local resource in Roman Rehak, who writes frequent SQL articles for Visual Studio Magazine, spoke at the last two PASS conferences, was the track chair for this year's PASS conference and is the SQL Track chair for this year's DevTeach conference. This is a guy who knows his stuff!
Besides Eric and Roman, another person who was instrumental in starting up the group is Laura Blood. Laura, like me, is an independent developer who has been programming for about 20 years. In fact, she and her husband are BOTH developers and own a very successful local consulting company called Blue Note Computing. It's just the two of them. But they have their hands in a lot of local development work. Laura started out using the Community Starter Kit for the SQL site, but found it cumbersome for her needs. She says she is having a lot more fun creating the site from scratch - mostly because it is a learning playground for her, much like www.vtdotnet.org was for me.
I don't know what it is about data, but there are a LOT of women in the SQL group, percentage wise (always counting...) and it's fun to meet so many other women programmers. We feel less and less like aliens every day!
So I'm really happy to see another developer community growing in our area. Obviously the two groups have a lot of overlap, but that just means more for everyone. I remember the days of attending the local MSDN events and nobody knew each other. Nobody talked to each other. Now when we arrive, it's just one big party!
While on the InfoWorld site checking out the link to Joy's blog, Joy decided to hang around a bit. First to the opinion page where it happened to strike her that it was all men's faces on there. Then a click here, a click there brings her to “sister publication, CIO.com[where] there is an article currently about the disparity of men vs. women in IT.”
So the irony is ...well, the usual. :-)
But what's interesting here is the article and the feedback on the article. The article reports on a study by Catalyst, an organization that studies the trends of Women in Business. The study was aimed at trying to understand why STILL so few women get to the top of I.T. It's not the question of “why there were so few women at PDC?“. It's more like this - most agree that in our programming world - at work, user groups, etc, there are about 10% women. Go to PDC or TechEd and that percentage of women drops to about 5-7%. Then look at the top layer of our own (conference speakers, authors, etc and that percentage drops to maybe 1-2%. Those are the numbers that are driving the question. Why aren't there also 10% up there? So anyway, if you're interested, definitely check out the article. This topic is going to heat up a lot more over time.
The comments are interesting - here's one to get a few people I know going “Nowhere does the article address the possibility that there are features inherently or historically part of the high-tech industry that either prevent women's advancement, or convince women to seek career satisfaction elsewhere.” Ummmm..... (let's just forget my complete addiction to software development!)
But the sickest twist comes from the title of the article. I believe it's just an unfortunate choice of words . “Why can't women keep up with men in high tech?” Keep up? I KNOW the article is about the glass ceiling, but christ, “keep up” can mean way too many things. Keep up with the changing technology? Keep up with the pace of the work?
Whoops! Methinks I have ranted!
Very cool, Joy!!! Infoworld has a new article about security (”You have to design for security, not just load a new program”) and included with the article is a sidebar highlight of Joy's post about Surfcontrol blocking blogs. Joy always has a great eye for interesting tech tidbits. Obviously, word is getting around!
This is amazing. I was sharing my struggle with the WinAPIs to overcome some issues with the tablet, and not one but two people have taken the time to write a solution for me to try out.
One is fellow dotnetweblogger, S.B. Chatterjee, who has worked out some C# code and the other is someone who was a complete stranger to me (which makes me appreciate the effort that much more!) named Aaron Robinson. And Aaron even translated it into VB. I can see by S.B.'s C# code that it is just a lot easier to emulate the C++ functionality that accesses this API stuff. If you look at the C++ code for this in Clayton Crook's download on www.TabletPCDeveloper.com, it's like 10 lines of code! Damn, that's not fair! :-) So some of the things you can do in C++, you can still do pretty readily in C#. I have to go look at Aaron's example now to see what I was missing. But from my experiments, it's really so much harder to do using the VB language. This is starting to shed some light for me on why those who understand both languages keep saying “C#” is better for writing things like tools than VB is. Not that it can't be done, just that (what I know of VB compared to knowing VERY little about any of the C's) isn't quite written do get so deep into the WinAPI for doing things more complex than just moving a file.
Oh god - did I have to say VB & C# in the same sentence? Here it comes....
update: So Aaron's program works great but now I see that in interacting with the position constants (0,90,180 and 270) that the C++ app did it looks goofy to me but now I see that my expecations were preventing me from seeing that it's okay that way. It MUST be the Acer. 90 degrees moves it 90 to the left. This is “upside down” for Acer's standard tablet mode. 270 degrees puts it into the same mode that the Acer goes to for Portrait. 180 goes upside down from Acer's definition what I will call “slate“ Landscape (as expected) and 0, which should bring me back to where I started (slate landscape) does nothing. So if the user wants landscape, they would have to get the 180. If you are in that “upside down” landscape mode, the Acer corrects it when you open it back up to keyboard mode. Very goofy indeed. But the user doesn't have to know. I guess Portrait=270 and Landscape = 180 and keyboard = itself! But the cooler part is that Aaron did in VB what was done in C++. A few more lines of code and I still have to figure out which lines he got right that I never did. SB's app is definitely talking to the WinAPI, I can see that working. Where mine pretended it did, but wasn't really. All very interesting stuff!
Well, that didn't take long. TabletTalkPC.com wins the day! Nice work, Chris.
I can't wait to read the details.
update: too many people trying to see it - simplegeek has exceeded their bandwith! Bummer. Sorry about that, dude! Next time, I'll just copy the image. I was trying to be a good linker!
Here is Leon's hilarious art work...which I stuck onto my domain.
So far, I am only seeing that Bill Gates announced the next version of the Tablet PC and reiterated what we basically heard at PDC - better handwriting recognition, [quoting Neowin] “deep integration of pen support” and a “rich set of capabilities“ that enable software developers to “deliver innovative software applications based on the Tablet PC platform”.
Ok, so what does it mean? I can't find anything yet to see if that was all he said or if any of this stuff was demonstrated. Does anyone know?? Did he discuss any specific capabilites or demonstrate the effect of the “deep interegration”? If so, can someone fill me in? Thanks
When I was sitting in the talk on ASP.NET Whidbey what's new in the IDE (not quite the right name) I remember saying out loud “but where's the BIN folder?” when they compiled the application. Luckily I happened to be sitting next to G. Andrew Duthie. Andrew had seen a preview of this and told me that it was such a cool session that I absolutely had to go. Having just authored the article “New Code Compilation Features in ASP.NET Whidbey” for MSDN online, he was able to give me the quick answer. For a more in-depth answer, check out the article.
I have been well aware that my perspective as a business application developer is limiting when I think of what can be done with ink on the tablets. This is evidenced in this quote from the ITWorld article a few weeks ago:
The way the Infragistics ink-enabled tools (for Windows Forms) work is that they embed a small icon in the edit control. The icon is there whether the control is active or not. Clicking on this icon pops up their custom input panel. On most controls that icon looks like this:
In the case of the UltraGrid, the icons magically appear/disappear on mouseOver/mouseOut which is nice because there's not too much real estate inside the cells. Like this:
Infra has a nice feature to simply disable those pen icons (inkprovider.visible=false). You can even test to see if you are on an ink-enabled machine with a boolean of “IsInkRecognitionAvailable” and then turn off the inking which clears those icons out of the controls.
I realized this wasn't quite 100% going to do the trick for me. In the case that the tablet is open and the user is using the keyboard, IsInkRecognitionAvailable still correctly returns TRUE because the machine IS inkable. But most likely, if the user is typing on the keyboard they are not also going to be using ink and therefore the pen icons are not necessary.
My particular solution is to continue to let “IsInkRecognitionAvailable” do it's job, since it will mostly do the right thing. But I also added an “Ink Toggle” switch on the toolbar so that the users can have some control over this as well.
So many functions, so little time! I noticed the Visual Basic keyword, “DirectCast”, in this code sample from Duncan Mackenzie. So I had to go look it up. It is similar to ctype(), in that it casts one type to another, but where cType only needs a defined conversion to exist between the object and the type that you are attempting to cast it to, DirectCast requires that they both are defined by the same base type. If that is the case, then you will prefer DirectCast because it's performace is better as it doesn't have to go through as many hoops to do the coersion. Makes sense. Here's the MSDN explanation.
Oh hooray, our prayers answered in only one day! Stephen Fisher, who is on the TabletPC team at Microsoft has started a weblog. Stephen, you can be our red phone! :-) Stephen's focus is on API Development and Engineering. Nice to have you on board.
From Camey Combs weblog:
I'm doing some research into .NET, specifically looking for compelling business cases for adopting it as the platform for future development. We currently have applications we've developed using VB 6.0, SQL Server, Oracle, ASP, Java, C and C++ as well as a lot of legacy code in PL/1 on an IBM mainframe. I'm not having trouble finding lots of praise for the .NET Framework and the technologies that accompany it, but I'm still searching for some more cynical statements. I'd really like to find some articles or cases where a business was very cynical about adoption, did it anyway and had some great benefit from it.
Any leads from the readership would be greatly appreciated.
Hmmm... anyone here on the DOT NET WEBLOGS with one or two thoughts on the topic? ;-) Why not go post a comment on Camey's blog.
I agree with Peter. I have been struggling a lot in this new territory. I have emailed Clayton Crooks, author of a forthcoming Tablet PC Developer book and I have also emailed “feedback” at TabletPCDeveloper.com which is actually a Microsoft website, although behond the “gotdotnet“ them, that is a bit mysterious. WhoIs finally settled that question for me. So we'll see. I REALLY want to see what the plans are for Lonestar. I have a lot of things I would love to see, now that I have been trying to do a managed app for the tablet.
#1 issue of the moment: I would love to be able to rotate the screen programmatically. Even if Peter is not sure if had reservations about my planned use for this. :-) My VB.NET skill just aren't cutting it and I am having a really hard time dealing with the WinAPI functions to do this. You can do it in CE.NET and C++ pretty easily, but in managed code.... blah. Clayton did write something in C++ that he compiled into a DLL and uploaded to the TabletPCDeveloper, but it's not happy on my little Acer.
Bill Evjen reports that the book “ASP.NET Professional Secrets“, which he collaborated on, is now starting to show up in the bookstores. Check it out.
Kit George's PDC presentation on the BCL (that I did not get a chance to see live) is the first thing you will see on the gotdotnet bcl technical articles page . This is probably the of the better places to start really learning Whidbey when you are past the instant gratification of playing with the VS.NET IDE. It's on my weekend agenda.
In my Whidbey presentation at Vermont.Net last Monday (which was a blast and I need to take some time out to write about that...) before I got to the heart of the presentation (ASPNet20 goodies!) I did a short VB Windows demo that demonstrated some of the new features in the IDE - mostly VB stuff. I used Jay Roxe's excellent video demo (the link is not directly to the video since they encourage you to download it first) and got my inspiration for my demo from there. Jay is a Visual Basic PM.
One of the things he showed is the snippets in Visual Basic. This is an IDE feature, not part of the CLR or the BCL. I'm sorry that this is not in Visual Studio for all languages (yet?) because it's a really cool feature.
I'll explain it in a moment, but the first thing I'd like to say is that because it is VERY cumbersome to create your own snippets, this is a perfect opportunity for someone to create a code snippet generator tool!
So snippets are xml files with a particular schema. THe elements of the xml describe basic header information, what version of the framework it's for, links directly into the help system for more information, descriptions, the actual code and what makes this really special, the
element, plus more.
I love that xml is used as an IDE solution. It's really powerful. There are also elements defined that just say “not in alpha, to be implemented...“
The snippet itself is stored as an individual file with the extension .snippet and stored in a file directory structure inside of Visual Studio .NET's folder system in the folder “Visual Basic Snippets”. Inside of there is a set of folders where you organize the different snippets. Back in your IDE, when you right click in the editor and choose snippets, you drill into that list of folders and select one of the snippets. The name that the snippet is listed under in the IDE comes out of the XML, not from the file name.
The snippet that gets pasted into your code (if you are fortunate enough to be coding in VB) is a template. First, there will be any link to more help on the topic that you embedded into the xml. Within the code, those neat little literal elements are basically place holders where you need to replace the logic. They are highlighted in yellow and you can tab through them (if you have more than one). What do I mean by placeholders? Well, if you are validating a phone number for example, (in Jay's example in fact), the snippet would have a regex class with a regex for a phone number in it. Then in the spot where the code validates that regex against the text, the place holder might originally have in it “555-555-1212” and you want to replace that with txtPhone.text.
The help file says that there are over 500 pre-defined snippets. I think that most of these are in the works as I only happen to see 21 at the time.
In the application I am writing, there are some data entry forms that are best as portrait and others that need to be landscape. The Windows XP Tablet PC o/s has a few ways to switch the orientation, the simplest of these is a small icon in the notification area that has a menu option on it of “Change Screen Orientation”. THat's a little tricky to get at when my already small Acer display is at 1024x768 - it's a teeny tiny target.
Another way that is really groovy is that when I put the tablet in “laptop” position, it automatically switches to landscape. When I flip it to the tablet position, it automatically switches to portrait. I'm not sure if this is Acer only or part of the Tablet PC O/S.
Programmatically, it's a different ball game. There is sample code on MSDN of how to detect the orientation. Basically you determine the height and width of the screen. But what I want to do is let them stay in tablet mode and switch the orientation as easily as possible.
But except for a small dll that someone kindly uploaded to www.tabletpcdeveloper.com, which is written in C++. Unfortunately, not knowing the author, I'm a bit timid about deploying it (nothing personal of course) but in my testing so far, it doesn't seem to fully function. I have not (with a LOT of searching) found any way (yet) to switch the orientation programmatically. Of course, I start by looking in the Tablet PC SDK, but it's not there. I wonder if this will be a feature in Lonestar???
The guy who wrote the c++ app obviously found how to access some info in the machine to get at this. Plus there must be some way to access the functionality that is available through the icon on the task bar.
I think I will look at the C++ source that I found and see if I can interpret it and then attempt to write something managed. Of course, there's all those C++ people I know. If I can't figure it out, I'll probably ping them. More to come...
Geeze, haven't you people been paying attention? I knew the answer right away. Is it an age thing? Go check out Robert's contest (and probably hang around his blog a little and check out some of the interesting things he has been doing lately with ES, Rotor, BSD, Security and more...)
(now that Robert Hurlbut's contest is over, I can replace the text and the link that I was asked to temporarily remove from the original version of this post!)
Wow, Sam snuck this one in.
A 6-part series on COM Interop on MSDN online! And I love the title: “Has anyone seen the bridge?“ Sam is a fan of Led Zeppelin , if you somehow missed that. Very cool. The first part went live today. I better add it to my reading list, somewhere towards the front.
Big congrats and thanks!
Robert points out the irony of Dave Winer suggesting that Microsoft is out to kill the web. While I think that technically Dave is repeating his thesis that Microsoft “never wanted the web” while highlighting (and I'm reading a bit of gloating in there) Jon Udell's statement about MS killing the web, I am still amused by the point that Robert is making - that RSS has a lot to do (in our world at least) with a lot less use of the browser. I still use the browser for many many reasons, just not to peruse weblogs.
These are great! The captions are even better. Thanks Carl & Mark. Don't forget to listen to the show. Carl warns that the audio is not terrific, but the best they could do under the circumstances.
sorry - not .net at all but... Here it comes!! Woo hoo!!
Tonight: Snow showers, heavy at times. Accumulation 6 to 10 inches, especially along the western slopes. Very windy. Low 20 to 25. Northwest wind 25 to 35 mph with gusts to 60 mph possible. chance of snow 90 percent.
Friday: Snow showers likely, mainly in the morning. Additional accumulation 1 to 2 inches. Windy. High in the upper 20S. Northwest wind 20 to 30 mph with gusts to 45 mph. Chance of snow 60 percent.
Friday Night: A slight chance of snow showers until midnight, otherwise partly cloudy. Brisk. Low in the upper teens. Chance of snow 20 percent.
“Western Slopes“ - that's where we live. So we are expecting about a foot in the next few days. Hope it sticks! We'll need more to be able to ski in the woods though. :-(
Like those 60mph winds? I'm starting to get used to them up here on the mountainside. Mostly they have been at night when we are sleeping - or in my case trying to sleep.
Vermont is not the only place this is happening. Liz Law wrote in her blog this morning about high winds - she's in Western NY and NJ is getting blown around too.
I have been the editor the INETA Newsletter since August of last year. It's kind of a secret outside of INETA since I don't put my name on it or anything. As editor I do a number of things: think up article ideas and find folks to author them (though I also get some wonderful unsolicited articles, too!), write a bunch myself, collect photos and then produce the whole thing (let me just get this out of the way: with FrontPage!) until I am happy with the balance of content and how it looks visually. I think starting next month there will be some other people with real live graphics skills (i.e. probably not using FrontPage) doing the actual production so I don't have to worry about some of the nasty details anymore.
Each month, I think the newsletter just gets better and better thanks to all of the great things going on in INETA and all the wonderful content that I am able to collect for various people. Soon you will be able to see them on the INETA website, but I really want to share what's going on in INETA and show the newsletter off, too. Hey, I'm really proud of it!
So I put the latest as well as the previous 3 issues on the vtdotnet website if you want to see.
Since so many of the people you know from the blogging community are also a part of the INETA community you will see many familiar faces and names, but better yet, you will discover lots of new people and maybe be a little surprised how far spread the International reach of INETA and of .NET truly are!
You CAN sign up for the newsletter on the home page of the INETA website and you will receive them via email.
There are now regional newsletters so I am not covering the whole world anymore. There is one in Europe that has it's 3rd edition coming up, one in Latin America and MEA is starting one up too. Eventually all of the international regions will have a newsletter so that they can be more localized and also try to use local languages.
So, the latest issue I think is a little too much North American focused. I'm used to having lots of international content and will definitely have more in the future. But that's my fault. It was just a big crunch due to PDC and still SO much great content to pore through. I hope you enjoy them!
IBM's Essex Junction facility is the largest employer in Vermont. We have seen I think over 2000 job losses in the last few years. In Vermont, there are not a lot of alternatives when you lose a job at IBM. Probably the next biggest employer group is the resorts which have very low paying jobs.
So yesterday, the Burlington Free Press announced this amazing news, that the Dept. of Defense has contracted this plant to provide chips - a 10 year contract at $60 million a year. (!) IBM's Fishkill plant is where IBM has been putting all of it's money lately and teh future of the Essex plant - which is now not set up for producing the new chip technology, was really debatable. The article states that this does not mean new jobs, but that it does mean security for the plant. I think that there are still maybe 7000 employees left there. I could be wrong about that number.
I have already heard this interpretation: “so the Department of Defense is making a $60 million/year investment in outdated chip technology?” Hmmm.
note - because of the bizarre way that the Free Press organizes it's web site, that link is going to deprecate at the end of the week so I have to remember to come back and fix it.
Here's an article on how the process of getting the world mobile (laptops, etc) has really outgrown the use of batteries and the future in fuel cells. Think about it, the battery is really the weakest link in becoming mobile. it's so damned heavy and if it runs out while your in the middle of something your screwed. Or, like me at TechEd - I didn't have a means to recharge my battery even though I was pretty dependent on my laptop. So I definitely took an interest in this topic.
“if you ever have or will cross an application domain boundary with a Remoting, Enterprise Services or Web service call on the current stacks“ you MUST listen to Joe Long's recorded presentation on the Indigo migration story. But I really like the way Clemens says, it so you should go read that FIRST!
add: Wow. Fixed. The feed was broken. Thanks Kent!!! Now that's, like, FOUR I owe you (adding in battery charges at TechEd).
A few days after MSDN deployed their first rss feeds, I wrote a user control to consume them. Unfortunately, stupid me, if the rss fails and the user control breaks, the page won't come up. Nice error handling, duh! I actually put that error handling in a DIFFERENT rss consuming user control so I'm just going to go stick that same logic in to this control. Cross yer fingers.
I looked up http://msdn.microsoft.com/netframework/rss.xml in my browser and it just has header info in it.
So did the feed change?
Even if you already read Mike Deem's post, be sure to check back. There are more Q&A's happening in the comments. Great reading.
why, under My Documents/MSDN of course! Thanks Dave Rothgery
I downloaded and installed the VB Language Enhancements for Whidbey White Paper & code from an MSI and cannot freakin' find it anywhere! :-) I had to stop looking after 20 minutes. So hopefully, I'll update this post with the location after Duncan or someone can clue me in. I'm not mad. I think it's kind of funny.
Yesterday Nino Benvenuti had a post about retaining your phone number when switching providers and then pointed to the FCC website FAQ's on the topic. Today it is on MSNBC's tech news highlights.
This is really one of the things I love about reading Mike's The Daily Grind. It's like like they do in the movies when someone is just completely out of control. A good healthy slap in the face makes them go - “oh, yeah, ok, I'm back on planet earth now.” I definitely depend on The Daily Grind for my Daily Sanity Check as well as providing some really useful links that I frequently haven't seen elsewhere.
One of the guys in my user group has a business as a pc support person. When I was gushing about WinFS last night, he asked a question that seemed pretty obvious from his perspective. “How the heck is the average user going to know how to backup their files?” The best answer I could give him is “dunno myself, but hopefully Microsoft has considered this.“ You know this problem. Your dad calls you and says “I need to back up [the latest chapter of your mom's book/the puppy pictures/the emails from clients]. Where are they? How do I do that?”
Though it's not reflected (yet) on my blogroll coded onto my weblog page, it occured to me that as it grows, there is a shift of focus. Not that I am reading less technical blogs, but many of the blogs I am reading now are tech related, but not so directly about coding. Robert Scoble has a lot to do with this I think. But there are others too. So this focus is -- something I'm trying to see if I can put in a “box”. Is it tied into social software? Nah, not that. It's a little about marketing, it's a little about the culture of the software industry. Yeah, actually, I think that's more like it. The culture of the software industry. So some of this is thanks to Scoble pointing everywhere, some is also thanks to seeing my referrals (thanks ScottW). I can see who is reading what I am writing - therefore we must have something in common - and I go see what that person is writing. The culture of Microsoft is a good chunk of what is really interesting to me now because we are really watching the company evolve. You can see this not only in the technical blogs of Microsoft-ies, but those of people like Laura John and John Porcaro. I have become fascinated with Shelley Powers' and Halley Suitt's blogs. Robert points to a blog I never knew about , Shel Israel, who is talking about the phenomenon of the Gates Foundation and how so many people don't want to recognize the incredible things the foundation is doing because they are stuck in the old habit of hating Microsoft. One of the comments on the blog said:
Could it also be that Gates' personality has changed - but the perceptions of him haven't? I recently met him again, after several years, and where he was arrogant, rude and unpleasant on my first encounter, he was relaxed, cheerful and very easy to talk to, on this occasion. It was a Bill Gates I'd not seen before - but one c olleagues tell me is often spotted these days. Maybe marriage, fatherhood and all those good things have shored up his insecure side? All I know is that Bill Gates 2003 is much more pleasant and sociable that Bill Gates 1993.
Well, this is just rambling because I'm thinking out loud. But all of this has struck me in a way that I'm starting to see that there is something much bigger going on. Yes, I know that Microsoft practially mandated that their employees become more engaged in the community - so yeah that is part of the reason. But it's almost like many of us, after working with Microsoft products for so many years, were almost waiting for this. So are they sucking us INTO their culture? Are they just taking over the world (granted our little world) (I'm kidding). I have certainly changed my perception of MS in the past few years. When Microsoft first started talking about Hailstorm, I RAN over to Java (and gave up after 3 months). BUt I was saying - it's like a big James Bond movie with Microsoft (i.e. Bill Gates) taking over the world and I do NOT want to be part of it. Now I feel, in comparison, as though my bodily fluids have just completely been replaced by the Koolaid. It's not like I'm going to go out and defend the technical feats of MS products against all of the other software companies. It's not about the technology. It's not about the tools. It's something else. Almost a little scary. I swear they were pumping the KoolAid out into the air at PDC! That must be it.
Maybe it's time for a vacation! Eh? :-)
Dell is doing the Free Shipping, double memory thingie again
If someone figures out a properly configured box for Longhorn -- cheap, let me know - quick!
Many of us were fortunate to see Lili Cheng present Wallop during the Microsoft Research keynote at PDC. Mary Jo Foley talks further with Lili to get a deeper perspective on the Wallop project and it's place in the larger picture - which is Microsoft's explorations into social computing. Very cool.
Generics is part of the CLR. But sometimes a familiar example - a picture - is pretty helpful to get you started. SoI will raise my hand here (for all of you who wouldn't dare do so in public) and admit that since I'm not intimate with C#, my first looks at generics (they are all in C#) were a little confusing because when they say - “this is the old way and this is the new way“, it's a little fuzzy since I'm spending too much time trying to “translate“ the C# code. It's hard to spot which is the new part (it's the
So if your perspective is from Visual Basic (6 or .NET), the explanation in the preview chapter on Generics - from MS Press's upcoming “Microsoft Visual Basic Programmer’s Introduction to Whidbey” by Sean Campbell Scott Swigart,Kris Horrocks, Derek Hatchard, and Peter Bernhardt - might finally get an “OOOOOOOH!” of understanding out of you.
A slice of their explanation
Dim employees As New Dictionary(Of String, Employee)
This translates to ‘Create a Dictionary where the keys will be Strings and the values will be Employees”. Any attempt to store anything other than an Employee will result in a compile time error. That’s worth repeating. With generics, if you use the wrong type, it’s a compile time error, not a runtime error. In fact, the following line must be commented out, or the application will not run, as the compiler knows that the Dictionary holds Employee classes, not Strings:
's = employees.Item("111-11-1111") ' This is now a syntax error
In addition, you now have full IntelliSense for the types in your collection.
Werner's over in Amsterdam to get a big academic award and they don't do a little event over there. It's A BIG CEREMONY with tux and tails and very la-di-da! Wish I were there to see it. Best of luck.
Very cool, Werner!!
When I returned from PDC, I did an “email” interview with Joris Evers, from IDG for an article on the Tablet PC's 1st anniversary. He asked me to participate as he had noticed some posts in my weblog about a production app I am writing for my client for use on a Tablet PC. There are others but I don't feel like grabbing all of those links. (I will flag them as category=Tablet.) So the article is here and I'm honored to be in some damn fine company with the likes of Werner Vogels and others who were also interviewed. But this is old news. I am making this post because Joris gave me permission to post the full text of my responses (from which he mined a few sentences) on my blog. So if you are interested, here is that text.
Interview that was used for IDG article published in ITWorld, Nov 6, 2003.
1) What do you think of the TabletPC platform.
Jury is still out. I’m experimenting with it and I have to really think out of the box some more in playing with it. Unquestionably, there is a huge place for TabletPC. I can’t get over how great the hand writing recognition was right out of the box, but it is still many times more efficient for me to type. I actually took ink notes at PDC and published them (in ink) just for the immediacy. But I have thought a lot about this since. I was writing so quickly that my handwriting is dreadful. I used Journal, so it was not possible to create hyperlinks. Some people loved the fact that I actually put little smiley faces in my notes when I really liked something, which I would never have done if I had just been typing. So that was an interesting experiment. I have not been in a situation yet where a keyboard was not an option except on the plane when the person in front of me decided to lean his seat all the way back. So I flipped into tablet mode which was all I had space left for and noticed that my productivity was definitely affected. Right now, as a developer, I think that it’s the forms that I see as the most tangible use right now. Being able to walk around with the tablet as though it were a clipboard and writing is huge. I’m afraid that I am still looking at the tablet with very narrow vision. When I saw the stuff coming out of Microsoft’s research labs revolving around ink, I was completely blown away. There will be things coming down the pipe, from Microsoft and from creative thinkers that will make people “need” ink more. I think it needs to be more than a novelty for more people to glom on to it. The applications, tools and utilities that developers will create are what will make this happen.
2) There does not seem to be a rush to write software for TabletPC among developers. Do you see that too? If so why, if not, what do you see?
In the weblog space, I don’t see a lot of people talking about production apps that they are doing. Outside of experimentation - as a working developer, you have to have a client or employer who has a need and a budget for new applications. We were initially targetting the Pocket PC for the particular project that I am working on, but the form factor was going to mean many many pages of input. When TabletPC became not only an end-user reality but a developer reality, we switched directions. What I mean by developer reality is that it is now relatively easy for me to create ink-enabled data entry applications and therefore not terribly expensive for my client.
3) What do you think about the enhancements for TabletPC Microsoft is
making in Visual Studio, will it get more developers on board?
I personally think it will be a combination of time and tools and utilities that will get more developers on board. One of the things that Microsoft has promised in the next version of Windows XP Tablet (code named Lonestar) is better hand writing recognition. This will have an impact because it’s not the writing that I find the problem but the correcting. It sounds like there will be some “inferrence” built in. So if I can identify a field that is a certain type of data – say temperature - the ink tools will use some additional logic to help in the hand writing recognition. Most of Lonestar is still undisclosed though. When I installed my PDC version of Whidbey, the first thing that I did was open up the documentation and see if “INK” was in there anywhere – inside of Whidbey. Not yet as far as I can see. But Longhorn is only going to take this and run even farther. There is a lot in there regarding “input” in general – it looks like keyboard, mouse, speech and ink are equals in a way. Clearly with all of the buses covered with “Do you think in Ink? Win $15,000…” Microsoft is very interested in pushing tablets into much wider use and pushing developers to come up with the goodies.
4) What were your issues in working on an application for TabletPC and have those been solved?
I started working on the application before I had a lot of experience as an end user. This resulted in my having a lot of usability questions and concerns for the end users of my application. For example, it took talking with the owner of the TabletPCTalk.com website to learn that it was really okay to rest my entire hand on the surface of the tablet while I was writing. It just didn’t seem right! He also showed me a lot of tricks that greatly improved my own personal experience with the tablet. I am also struggling with the fantasy of having the user’s experience be very close to that of filling out a paper form, but it is not really feasible yet in my mind. One of the big complaints about many paper forms is that there is never enough room to write in. We would have the same problem with the ink form if we wanted to have the entire form still remain on one page -- which is a major design goal requested by my client. Using the input panel seems to take away from the experience (as well as the screen real estate) because you have to click on a field and then move your hand to a different part of the screen to do your writing and then back again. Infragistics has solved that last problem by having an enhanced input panel pop up on the actual field. Even this still feels unnatural. Without the panel (either the built in one or a 3rd party tool) the choices are ink-enabled controls that you write directly in, or the alternate method of using the built in tablet panel. That mode where it becomes one big input box on the screen. I think that will freak my end users out at first and it will rely on a lot of acrobatics to edit any input. We have the challenge of not only teaching our end users many new lessons, but the additional one of gestures for editing. The input panels will make editing easier. Time will only tell if using the input panels will become natural enough that they don’t feel, to the end user, like they are adding time to the process. I think that there is a HUGE market here for 3rd party controls. Infragistics was SO quick to jump on this. I know that if I dig into the SDK I can make the controls do what I want, but I just don’t have the time right now.
5) Do you use a TabletPC? If so, which one and what do you think of it. If not, why not?
I have an Acer C110 which was purchased for me to use by my client for testing my application. The Acer C100’s will be used by the end users. I wanted to have the option of using Visual Studio .NET on the tablet, and the C110 had the resources. I brought the tablet with me to PDC so that I would be forced to get comfortable with it. I really like the launch keys and the wifi toggle button as well as the buttons on the tablet face. I also like the small form factor of this unit because it gives me a nice light weight machine. I have talked with others who would like a larger tablet. But this has so many features without the weight. I do have to wear my glasses when working on it though. It’s amazing how they got a full keyboard in there. Although you do notice a difference when you go to type on a regular sized keyboard after the fact. I have not personally compared it to other tablets since I was not involved in the purchase decision. Though when I was getting annoyed by the battery life, I did find in reviews that the C100’s and 100’s had a low rating for their battery life. I learned at PDC to shut off the wifi when not in use and also to dim the screen quite a bit. I also brought with me an extra battery. There are a lot of power options however which are a combination of proprietary stuff on the Acer and Tablet PC options. This helps somewhat.
Don't remember if I mentioned that I have put the PDC bits of Whidbey on my laptop and am going to run through some of it at the Vermont .NET User group meeting tomorrow night. I also want to tell them about Longhorn, etc. I see lots of screen shots of Longhorn (eg here at WinSuperSite). But I've been really hoping that someone would do some video screen capture of Longhorn in action. I've seen some of the videos that Paul & Keith took at PDC. I might just end up using those. That would be really fun to show. Otherwise, I'll just do a little slide show from Paul's screen shots. Usually we just have soda with our pizza at the meeting. I think it will be fun to literally bring some Koolaid. And I even have some red pills left over from my presentation at a group of mostly IBMers last spring.
This is my nightmare, though I'm sure many others have desks that look like this. It is why I am not running out to get a “longhorn“ box. I only have 2 computers at my desk - my dev box and the tablet. The laptop lives upstairs, the test machine sits on my husband's desk and the server is on my groovy new PURPLE cart from IKEA. So everything's spread out. There's too much crap on my desk to fit all of those computers. Jeff, man, you're a geek! :-)
(sorry, I just had to tell SOMEONE...)
Last week, CNN reported from “Rock the Vote” about the big PC vs. Mac question. Oh, but this brings the question to a higher level. Did anybody catch Dean on the news signing his “Declaration” on a TABLET??
I wonder if that will get him Jon Box's vote?
Hmm, it doesn't look my my Acer C110. I wonder what it is?
I love Laura's blog. It's a fresh perspective since she is not a programmer but [already] very ingrained in the Microsoft culture as a part of the MSDN team. Laura was clicking with her little Treo phone all over PDC and has fun insider pics although I think my little Kodak digital camera did better at night capturing the Band on the Runtime :-). Her blog is not about code, but about things that developers definitely can connect to. Check it out if you're not already subscribed. Laura also attended the Women who Code BOF at PDC because she has a great interest in the topic.
Bill Evjen has been wanting to blog since TechEd. I remember him saying to me in Dallas - “so what's the big deal with blogging?” He has been obviously bursting at the seams since then and started a blog on geekswithblogs.net during PDC. Bill has written a bunch of great web services books and is about to impress us all again with his upcoming C# book for, wait a minute, WROX? [Is he testing us? Did I miss something here? Is it a joke? Since I know he's a mostly VB programmer....] Anyway, I'm not saying this just because Bill is the Executive Director of INETA and I'm being a serious brown-noser. Really - if you're not subscribed yet, check him out too.
I talked with Chris deHerrera from www.tabletpctalk.com while at PDC about usability. I even encouraged him to write an article aimed at developers who are writing for the tablet but do not have a lot of end-user experience with them. He said that one problem with asking for recommendations is that the design ideas are pretty subjective. But I said I was more than willing to try out any recommendations he had. One of them was to change my already upsized fonts to 12 pt. We are using the Acer C100 series right now, which has a small form factor and a smallish screen. If you use anything less than 1024x768 resolution, the rendering pretty much sucks. So everything is teeny tiny and the 12pt font makes good sense here.
So I have done that and am playing with the screen. Of course, when the font gets that big, you start getting a real estate problem.
My app uses the, now “classic”, explorer interface. I have a menu and toolbar on the top and a treeview on the left with the forms popping in the main area of the MDI form. I'd like to point out that i am STILL using Duncan Mackenzie's wonderful extended databound treeview control that he put onto MSDN 1 1/2 years ago. This is the 3rd application I have used it in. (I know it was just meant as sample code, but it really does a great job!)
But this cuts down on the real estate left for the actual data entry form. And now the form needs more space because of the larger font. One idea I had was from my many years of working wtih Crystal REports. In the viewer they have a treeview and not only a run-time ability to hide and display it, but you can have a toggle button on the tool bar. So that is my current plan of attack. As soon as you make the treeview not visible, the form immediately fills the MDI form.
We also have some forms that are currently portrait, others that are landscape. We are trying to emulate them in the application as best we can. So I think that I am going to leverage a few tricks here. You can programmatically detect the tablet orientation as well as set it. Since the users of the application will mostly be doing one type of test during the day and not using a great variety of forms, I think that if they are in tablet mode (using ink, no keyboard available) I will automatically switch the screen orientation based on the the form's required orientation. So all they have to do is change the way they are holding the unit and then I will get the most use of the screen for the forms.
Just some thoughts. I really want to get them USING this thing so I can get a better feel for these types of issues which are pretty new problems to deal with.
Drank the Koolaid? Ready to go all the way and swallow the red pill? Chris Sells reports that the Visual Studio team is looking for help and Don Box points out that the C++ team is also trying to expand. Roy, I think these are probably in Redmond.
I'm really looking forward to this meeting of the Vermont Business for Social Responsiblity's “SOLO Circle“. VBSR is a big organization. SOLO is a group of independent consultants from many businesses that get together monthly in the Burlington area:
As we head toward the giving season, it's time to think about giving back.
How do you use your professional skills to make Vermont -- or the world--a better place? What do you do when everyone wants you to donate, and no one wants to pay? What are the creative ways you can give back without giving away the store?
Join us in a friendly discussion over a burger and a brew (if you so choose) at Richmond's Bridge Street Cafe.
I really don't want to install longhorn if I'm already seeing people more adept than me having problems. But I'd love to play with with some code and then build it like Don Box is doing and Sam is doing. Not that I can do anything like those two (heh!), but who better to learn from? I wonder if I could just install bits of the bits and accomplish this. Of course, this too will have to wait! Aargh. Priorities are falling to the wayside. Note to myself : #1 BILLABLE work that makes my client happy #2 Prep for Whidbey preview at vtdotnet in 3 days, #3 finishing touches on INETA Newsletter. Well the list goes to about 50 so I'll just stop there.
-- “hommie” :-)
Yes, I'm in it, but that's been pointed out already. I wanted to be sure that nobody was so shocked to see my name in there that they just couldn't read it any more. But if you keep reading, you will see some intriguing and enlightening quotes from All Things Distributed blogger Werner Vogels. Werner has been using his tablet for quite some time and if you have been reading his blog,you'll know that he is doing some really interesting things with it. Read on....
these were on my tablet , finally scooped 'em up
with Susan warren
with Sam Gentile
Scott & Ben
Kate Gregory &
(really far away)
Band on the Runtime front men. Ted Pattison and Don Box
Look closely! :-)
Hooray Hooray Hooray! Susan Warren is here. Blogging. Right on the dotnetWeblogs.
I was very happy to meet and spend time with Susan at PDC. She's the best!
A company in Vermont saw a great business opportunity in taking public data and putting it online. It is data that normally realtors and people in the real estate industry have to travel to town offices and drill through records to find. So they are trying to make it more accessible to the realtors and keep the realtors from being underfoot at the town offices. Sounds like a great business plan and a win-win, right? But it has caused an uproar in Vermont. It's tax data! One town that said “NO” got sued. So the selectboards (town government) in one town after another are reluctantly saying yes to the company.There is a great amount of control having people go to the offices to look up the data. I'm not sure what security will be in place or if it will be just wide open for the whole world to see. Even though this is the kind of thing I do for a living (i.e. software and web developer), the cons outweigh the pros for me, also. I'm not shy about telling the whole world how old I am. But having my property value and my tax information out their for the whole world to see is pretty intimate and a lot of people are worried about the implications in regards to becoming targets based on their apparent finances.
It seems that since it is public data, the only recourse is for residents of Vermont to get something changed at the state level. Vermont is a small state, so it is easy for everyone to engage with state politics. It will be interesting to see what happens with QueVT.
We all know what drudgery it is sometimes to work on OLD stuff and how much fun it is to work on new stuff. Here's a guy who's having some fun playing with new code and admitting to an addiction too.
Holy Crap. I missed THIS when I was away at PDC. Kasia took on Dave Winer. And you should see the comments! I know hardly anthing about unix or linux -- except that I basically think you gotta be really damn smart to work with it (which was some of the point a few made in teh comments)-- so I am absolutely completely null on this debate. I'm just impressed with her ---ummmm , let's just say gumption, since the word I REALLY want to use is not physically possible (nor polite)!
I have subscribed to Kasia's weblog for a long time because she is smart, funny and won't take shit from anyone. I'm a whimp so it's good for me to soak in some of that.
UPDATE! Scoble just pinged me (and apologized) and said that he just talked with Shawn Morrisey from MSDN who said that the PDC Hands On Labs will be going on MSDN for the whole world! I just want to assure you that he really DID ask before he gave me the previous answer. So hopefully this is the real story this time.
Very cool. The crowd goes wild...
In my previous post about MSDN putting the best of the MOC hands on labs online for free someone asked in the comments about the PDC Hands on Labs.
I asked Robert Scoble, our “MAN ON PDC“, and he said that the PDC Labs WILL
be going onto the myevents website in about a week. However (and don't shoot the messengers) it will be for PDC attendees only and you have to log in to the site as you did for registration.Remember, look at the first sentence of this post, right up there. They just put a bunch of hand on labs TOTALLY FREE AND ACCESSIBLE on the web.
So I'm looking at the VTdotNET website and want to add login capability to it so people can EDIT their book reviews or software evals. But now I think - too much work (in my free time that doesn't exist anymore?), I want to wait till aspnet20 is out.
I KNEW this was going to happen! I just knew it.
Being the editor of the INETA newsletter, I get some interesting tidbits sent my way to pass on to the subscribers of the newsletter (mostly User Group leaders but ANYONE can subscribe - here: www.ineta.org) Here's something from MSDN that's pretty cool and new. They have taken some of their most popular MOC training modules and put them on line for free. I have asked them why the phrase “low-cost“ is in there. From everything I see so far it is really is just FREE! (Why does this little word speak such volumes to computer geeks?) add: yes free is correct, low-cost was a misnomer
New to .NET? Get started with free online training & labs
Need a simple,
low-costfree, flexible way to start learning .NET development? Microsoft's new .NET Developer Jump Start training sessions provide guided online learning through selected core skills of .NET Web and Windows application development. These sessions consist of a short set of free online learning seminars and hands-on labs, hosted by MSDN Online, that help you practice the skills taught. http://msdn.microsoft.com/vstudio/using/training/seminarlabs/default.aspx
I should point out that this used to be the only newsletter INETA put out, but now the different regions have their own, LATAM, Europe, MEA, etc. I'll write more in a separate post about that sometime soon.
I have been watching Liz Lawley's blog and she is at a conference (of Internet Librarians?) right now. I can't figure out what exactly the conference name is, but it's in Monterey CA and she spoke on TUesday . There have been a lot of discussions on rss and aggregators as used for research. Interestingly Liz has a hard time with desktop aggregators because they are not online and mobile, but she did finally sign up for an online aggregator, Bloglines.
Liz also wrote an article in Many 2 Many (a group weblog on social software) about blogging where she brought in the discussion between Robert Scoble and Sam Gentile in the comments of one of my posts.
It is definitely interesting to look at the world of blogs, rss and research from the perspective of this conference. Liz has been blogging a lot about the sessions that she has been attending. I noticed that Sam Ruby also made mention of it.
Anyway,there's lots of things in LIz's blogs that I totally click with - definitely check it out. Liz is a professor at RIT.
CNN highlighted on their lead article this a.m. that during the “Rock the Vote” campaign, someone actually asked the candidates, “PC or Mac?”
I've always wondered though, isn't a Mac a personal computer, too?
Reclaiming the Soul of VB
by Patrick Meader
We want to put the magic back into VB, to re-instill and re-invigorate VB.NET with the soul of what made the product great in the first place. We want to satisfy the needs of all the different developer communities, including what we call the occupational programmer."
—Ari Bixhorn, lead product manager for Visual Studio .NET
Bill Evjen has been blogging for about a week and already I can see that this is going to one of the good ones. Bill is the guy who thought up INETA and made it happen.
I also have been really wowed by the constantly great content coming from Jon Box's blog which has been around for about 5 months.
Bill & Jon are both MSDN Regional Directors. Highly recommended.
A problem I had was also discovered and solved by Jim Blizzard which might point to an existing issue with side by side vs.net. I was NOT attempting to run whidbey side by side with prior versions of vs.net.
However, there had been an installation of vs.net 2002 on my laptop which I uninstalled prior to installing whidbey. There were two environmental variables LIB and INCLUDE that pointed to c:\program files\visual studio .net. THat was creating difficulties when I tried to get into the ASP.NET Config in Whidbey. I uninstalled Whidbey. Discovered the information about the variables, deleted them and then reinstalled Whidbey. Whidbey did not set up it's own envrionmental variables. The ASP.Net config worked fine after that.
Eric Sink explains some compelling reasons for lone coders to use source control and with SourceGear Vault single user edition (dirt cheap), you can!
It reminds me of when a friend who codes for a big consulting company saw my whiteboard in my home office and asked - “so what's that for, when you brainstorm with yourself?” Hey! I'm a Libra. I can't help it! :-)
Okay - (I think, I hope that) I'm done with worrying that people assume that I'm a crappy programmer just because I happen to mostly use VB as my main access point into the CLR. And I will ignore the nasty comment made by someone named Tim Harley in my previous post and others that will come along like it.
Even Don Box says he loves VB - though I think we'll always be really just his little pets. Maybe if I listened a little closer to some of the Band on the Run lyrics on the rooftop of the Standard, I'd know.
In my comments he lays out some proof here and in his own post on the same topic.
I know there are plenty of people who's respect I will just never earn as long as I have those two letters VB anywhere near me. Even people who are friends of mine. Oh well. I know I can always count on a few of my pals to back me up. And then some. Heh.
I'm not a plumber but I'm very good at what I do, my clients are happy, my programming is way better than average and always getting better. I love creating solutions for my clients and don't have time to become intimate with the plumbing of .net even though it fascinates me. Still, I'm a bit of a snob when it comes to wizards and still too much of a control freak to adopt the application blocks.
Now all you people who use VB - repeat after me... and then remind me when it's clear that I need it.
These are ordered alphabetically, not ranked. It is this post about writing your first longhorn application that hit it. #s 50-100 were all rated 21.6, so Sam's in their alphabetically. Might as well have been #50!
I keep having these blips of memories from talks and then when I go to write them down, I have already forgotten. Here is one of those (buried in my handwritten notes here).
When MS Research's, Rick Rashid, was presenting his keynote, he (or someone during that keynote) said that MSR has written a lot of automated testing tools and that they are or will be sharing them with us, the developers.
I'm not sure where or when this stuff becomes available to us but one place to keep an eye on is the MSR site for Software Productivity Tools.
Actually, the whole MSR site is pretty cool. I have NEVER looked at it before or what they are doing. Who knew? I'm still really excited about that whole keynote. It just opened my eyes up to a whole new world at Microsoft.
Here's an article from Fortune Mag. (oct 24) about MSR.
As I was looking at some of my horribly hand written notes from PDC (which I will type up one day) I was reminded of the importance of the use of the GPU (Graphical Processing Unit) in Longhorn.
This is the entire reason that Avalon can afford to go to vector graphics. Microsoft research has been doing a lot of work on leveraging the power of the GPU which mostly just sits around and waits for an occasional request. So by pushing all of the GUI work of even business applications into there, not just games, etc., they can achieve a LOT more graphically much more quickly and free up CPU resources for other types of tasks.
This is a new idea for someone who has been focused on business applications for 20 years and has really not paid any attention to the games arena. I know that my pal, Ali Aghareza, has said in the past that he would love to program games. Ali is a .NET plumber and my first response was - what a waste! Isnt' that what 10 year olds dream of? But he educated me on how incredibly difficult game programming is, and it made so much sense! So it's interesting to have a look at this stuff after having just focused on a certain aspect of processing for so long.
MSDN is also getting in on the concept of not trapping data in buckets which will also be implemented via WinFS. We got a sneak peak of annotations during Eric Rudder's Keynote. And it's already being implemented. Check out Sara William's blog talking about annotations on MSDN. She is definitely excited that we can see the fruits of her efforts on this!
am I the only person trying to create asp.net sites in whidbey or is everyone else just having no problems. Or everyone else is too stubborn and your going to figure it out yourself!
I think I'm having issues because I had the pre-pdc bits on this box (I checked it is no longer NDA that we had the alpha bits) and then uninstalled them and then installed the pdc bits instead.
Is there someplace other than the newsgroups we should be going?
you can do html newsgroups here:
or you can use their instrux for nntp newsgroups.
during the indigo presentatino when he was trying to visibly demonstrate about invading boundaries.
Well there is a picture of that here on Werner Vogel's site.
and the “I'm never going to bathe again” volunteer is David McNamee, a fellow blogger.
Just kidding David.
Many of us have become fan's of Eric Sink's blog since he shares with us so much of his business experience. We weren't the only one's to notice. Now he has a column in MSDN called “The Business of Software”. Check it out!
They are still hiding here on my computer. I stopped taking notes part way through the session so I could focus. But I don't think I want to share them. Plenty of other people did anyway. Being a non-plumber is the reason. I think I really get what he was showing but I just know something in there (one thing? hah!) will be so off target that it might give people like Don or Clemens Vasters a big laugh if they ever happened to read it. So I'll just keep them here to myself, and just keep listening when it comes to Indigo for now. I don't want to just USE this stuff (which is what Indigo will enable programmers to do), I want to really understand it first.
ok - I'm going to say this publically - go ahead slam me if you will
I cannot believe Don Box said at PDC that Indigo is being designed so that “even VB developers” will be able to use the more complicated features like security. Did anyone notice the loud groans in the room when he said that?
aaaaaaaaaaaaargh! Believe me I really really really understand that there are a lot of people who use VB as a rad tool and that MS keeps them at the forefront of their thoughts when designing features for VB, but there are other types of developers who happen to use VB as their primary language who actually do more than use the wizards. And Microsoft needs to remember that before they make sweeping statements like that. It is insulting and it degrades us in the developer community.
I'm not a plumber. I'm the first to admit it. But that doesn't make me a “mort“.
And please do not accuse me of starting another VB/C# war. That is NOT what this is about.
Hey, can't I make this a “pinned” post so nobody can add a comment? :-) Okay, where's that post button... here goes...
The explanation for C# getting refactoring support (eg highlight some code, click a menu item and poof that code gets wrapped in an if/end if statement, reorder parameters, etc.) and VB.NET doesn't because C# is so “code intensive“. (oh, yes, because us VBers only know how to drag and drop! -- oops sorry) Anyway, Paul Vick from the VB team says that VB.Net will infact get refactoring. Right now the plan is to call it something different becuase (my translation) MS thinks VB developers are too, what, stupid?, to understand what refactoring is. DOn't worry, I already gave Paul hell in his comments for that one. THat is NOT Paul's decision I”m sure - don't shoot the messenger. Anyway read all about it here And go vote for calling it refactoring in VB just like it is in C#.
Sorry if this is redundant. I must have missed previous refs to it. Definitely check out the MSDN Labs. It's where MSDN is experimenting with new methods of interacting with us developers. Right now it has the Longhorn SDK, the Logidex .NET Library and the Annotation Service. The annotation service must be what we are seeing in Whidbey where you can drill into the help system and add your own notes on line to a specific help topic.
Hey, I'm a geek and I did NOT get invited to the prom in highschool. Oh well. I have been making up for it ever since! :-) Anyway, I just got invited to a prom, the Women in Tech Blog Prom hosted by meg at MandarinDesign.com. It's an invitation only prom and I was invited by my new pal, Shelley Powers. YOu may have seen us -- ahem -- meeting each other -- yesterday here, here or here. Well, we got over it, what can I say. Her invitation says it all. Anyway, it was really hard for me to decide who I would invite and I invited Joy Larkin from www.cleverhack.com.
I knew that MSDN was helping out, but I didn't realize they had give them the website msdn.microsoft.com/dotnetrocks. Very nice!!
crack open a bottle of wine, uninstall the pre-alpha Whidbey bits (so nice to be able to talk about that finally) and then install the PDC bits for Whidbey and Yukon. Boy is my user group in for a treat next monday (11/10 - www.vtdotnet.org). Here we go. I am glad to have warnings from Sam Gentile and Jeff Key that the Longhorn install takes forever. I think I will just show them screen shots of that from the web. I think I'll go listen to Robert Scoble on DotNetRocks while uninstall and install goes on.
I noticed that there were almost 400 instances of people reading the “Who am I” (renamed “About Me“) article on my blogsite that just had a couple of pictures on it and nothing more. I just updated that in case you are curious about the gorey details of my life.
Yes, it is true - VB is also in the box
Some people have been confused by this, yes - VB will ship with Longhorn. I'm not sure why people keeping thinking VB isn't loved by Microsoft. It was highlighted as a key way to target Longhorn in the technical keynote on Monday. VB is a great language - and it is good for way more than "just" drag and drop development... if you haven't seen the new RAD features that are getting added in Whidbey, you should definetly check it out!
I know I am just SO politically incorrect, but I have added a section on my blog roll exclusively for blogs by other women. It's just easier to find them if I separate them out and also I really like to see how long the list is getting.
Of course, you can't see that in rss - you have to go the html version of my website at weblogs.asp.net/jlerman.
I still have a lot of catching up to do on the blog roll.