Got more questions? Find advice on: SQL | XML | Regular Expressions | Windows
in Search
Welcome to AspAdvice Sign in | Join | Help

In the Trenches

Joe's Thoughts

  • My Adventures with VS.NET 2005 Part 1.

    So far I have been seriously using it for a while 2 months (since RTM). I have updated several projects to .NET 2.0 and I love the new coding abilities such as generics to name a few. Though here are some of the things I dislike.

     

    When I loaded VS.NET Professional Edition, all went well, I ran VS.NET 2005 for the first time and it asked me for a profile. I selected general developer, since it said that was for people moving from VS.NET 2003/2002.

     

    Well some of the things that started becoming a real bugger is the bouncing of the screen (when doing window forms applications). I would have the design view open and click the solution explorer and the screen would bounce because the layout tool bar would disappear. What happened next was just nuts, I would sometimes end up opening the wrong file or worse, end up coping the file to another project in the solution without wanting to (cause I was clicking on an item when the screen starts bouncing). This also happened when leaving code view to the solution explorer the text edit tool bar would disappear.

     

    My solution was to show the Build toolbar and put it to the very right on the same level the layout/text toolbars would show up. Now I have no more screens bouncing.

     

    My other big beef has been with ASP.NET, someone decided that we no longer need a component tray and do not need to drag n drop components from the tool box (the tool box doesn’t allow components to be added). Yea I have no idea who, but they should be soften up a bit. Now what we have a designer surface and we have to place non UI elements on the surface, this only clutters up the design surface (much like how things were in VB6). If the item is a non UI rendering item, it shouldn’t be allowed to be on the surface. On top of that work of art, they made it so that only items inheriting web.ui.control can be in the tool box or on the form (even if they are non UI like the ObjectDataSourceControl). Get this, even the Typed Dataset can’t directly be put on the form either.

     

    Databinding in ASP.NET, still has a long way to go, it still lacks the grace of databinding of  winforms. It’s not because they couldn’t do it, I’ve done up sample projects, it can be done. No, instead in ASP.NET 2.0 they insist on pushing people towards their narrow view of databinding. Hence if you have a DAL and that DAL doesn’t conform well with the ObjectDatasource control, then your SOL, you have to build your own. None of my DAL’s will work since they are classes that inherit form a TypedDataset and hence fill themselves and not return an object, it doesn’t list my Fill sub routine.

     

    Anyways, these are just some of the issues at hand so far, the actual conversion went rather well, I had some code changes but nothing major, I will note that many of my custom controls that used the System.Design bits for attributes did have a funny change. I had to change them from version 7.50.0.0 to 2.0.0.0, odd huh? All that just to get my Datasource/Datamember properties to work again on my custom controls.

    In other news, I will be in Orlando this March 25, presenting Game Development with .NET at the Orlando Code Camp, I look forward to seeing you all there. Other then that, it’s my Birthday today, YAHOO, maybe I’ll just relax (NOT, too much to do).

  • Orlando Launch Event,

    Well, it was another great conference, it’s always great to meet old friends and make new friends, and even get paddled LOL.

     

    For those of you that didn’t know, Orlando just had a VS/SQL .NET Launch and all attendees received a free copy of VS.NET Standard with SQL Server (Standard (I believe)). Tallahassee is having another launch on the 14th, and Tampa is having one on the 15th http://msevents.microsoft.com/cui/EventDetail.aspx?culture=en-US&EventID=1032281178 plus one in Miami (sorry no link (sold out anyways)) on the 13th at the Falls 12 theater.

     

    What can you expect at these launch events? Well you can expect to learn about some of the great features in the new VS.NET and SQL Server releases. So if you have been too busy to play with the beta’s then the launch events are a great way to catch up with all the features available in these new products. It’s also a great chance to network and get some of those burning questions answered. I happened to be one of the "ask the experts" people. So here is my list of the top 5 questions asked by the audience.

     

    1)       Q: Can I run VS.NET 2005 on the same Machine as VS.NET 2003
    A: Yes you can!

    2)       Q: Can I run MSDE (mini SQL 2000) with SQL Server Express
    A: Yes, just run them on as separate instance names (mycomputer/sql2000 and mycomputer/sql2005). Though it did have issues while in beta.

    3)       Q: Can I run a 2.0 application on a machine with 1.1 of the .NET framework
    A: No, due to the fact that if you use even one bit of any 2.0 features it would just blow up if it was even able to run, since the 2.0 feature/control/component wasn’t in 1.1 of the framework.

    4)       Q: Is it true I can do .NET in SQL Server?
    A: Yes!

    5)       Q: If I open my 1.1 project in 2.0, will everything compile?
    A: It should, LOL.

     

    Yep, it was a load of fun, the next upcoming events I’ll be attending/speaking is the Code Camp in South Florida this February, yep, while the whole Florida gang was together (almost all of us, you know who you are that weren’t there, we missed you!) we finally got that code camp finalized. Also Orlando is doing a code camp in March, Jacksonville is looking (after much plodding to NOT I repeat NOT do one during either Orlando or South FL) is going to be either April or May, while Tampa is rumored to be July. Tallahassee was thinking of between March and May, but now it will not be March and won’t be April (if Jax takes that month). So maybe May or June, I’ll have to get back to you on that. As always, if you want to know the dates, check out http://www.devfish.net for all the news of Florida Code Camps, I can’t wait to hear word on Atlanta’s, they were interesting this year LOL.

     

    In other news, I will be putting up a demo (beta in demo) of the product I spent the last 2 years working on, check out the site on Tuesday (12/13/2005) for how to get the download.

    http://www.connectblocks.com

     

    Personal news: We got a new dog, he’s an English Mastiff, I always wanted one, and our other dog is half mastiff and weighs at 130, though our new dog Wade should be around 180 to 240. Yes I like big dogs, they are fun when you want to have fun with them and then they leave you alone and aren’t up your butt when you don’t want them. Nice lazy dog, even as a puppy. Well got to go, have to tear out the carpet to start laying tile in the kids room, WHO THE #$#$#$ would put white carpet in the bedrooms? The rest of the house is in tile, with white carpet in all the bedrooms, I already did the master bedroom.

     

    If I don’t write again, I wish everyone a safe and fun holiday, We will be traveling to Orlando and then to Miami to spend the holiday with family (on my fathers side, nice roast pig, only get that once a year, people would look at me funny if I did it up here LOL).

     

    Happy Holidays to all and all a good Holiday!

  • CODE CAMP TALLAHASSEE!!!!!!!!

    Yep it’s that time of year, we are gearing up for an exciting .NET event, everyone is encouraged to attend. So far this year, we had the first ever Code Camp South Florida, Code Camp Tampa and Code Camp Jacksonville (which recently ran last month (August 27th)). We (Capital City .NET Users Group of Florida) have worked hard to bring Tallahassee a code camp, we are forming a great list of speakers (Check them out here: http://tallahassee.devcamps.com/devcamps/TLH/Sessions.aspx). We are also fortunate enough to have the whole event held in the shores building by FSU (don’t worry, not a game day).

     

    Many of the speakers that spoke at the other code camps thoughout Florida as well as many new local speakers will be speaking on a range of topics, from beginner level to the more advanced topics we all enjoy.

     

    To register, please visit this link: http://msevents.microsoft.com/CUI/EventDetail.aspx?EventID=1032280313&Culture=en-US

     

     

    To learn more about our code camp, please visit:

    http://tallahassee.devcamps.com

     

    This event will be held on a Saturday, so no excuses, 8 to 5, September 24th.

     

    Come all to a day of feasting on knowledge, plus pick some brains, they might be pretty tasty.

  • Lost Love

    Today as I sit in the airport (in Tampa) on my way to NYC and I witnessed a lost love happen before my eyes.

     

    Iraq, it isn't only a place where people die, it’s a place where peoples loved ones go, it's a place where worry over their loved ones is a daily experience.

     

    Before my eyes there was a soldier, this was there with his love and the product of his love (little girl). They were in tears, the woman I can only assume was either his girl friend or wife as she was very upset. She couldn't let him go, they would embrace and kiss and then separate only to find themselves right back into each others arms. One final touch he held her face in his hands and from what I can gather he said "I love you, I will be back". He then grabbed the little girl out of the arms of another woman (friend or family). He then hugged her and kissed her forehead and gave the little girl back. He walked away, this time not turning back, not looking back. I could only imagine how hard it was for him to do.

     

    I myself have had to let go, but I know I will return (well better chance of returning). It’s very hard to leave the ones you love so far away. You see their faces every single day, you see them grow and climb and adventure out into the world. It's so hard to leave, even for one week while everyone you love is so far away. To spend 6-12 months away seems unbearable to me now. How many loves are lost? How many people just drift away from each other? How does one cope?

     

    A person I know had recently had such an experience when he left; it sounded so exiting; now I wonder how his wife and child dealt with such an event. How did they cope, how strong they were to be able to keep it together. It must have been pretty hard.  I salute you both Mr. and Mrs. Smith. As well as every other family going though such hardships, wondering if they lost a love.

     

    This was on my way to NYC, while there on the last day I was there, I read an article in the NY Times and it went about how Bush claims we are a nation at war, yet everyone is going about everything like nothing is happening, there is no sacrifice like there was during other wars. The public basically goes about its business without even thinking about Iraq, and our soldiers. Many people have put the little plastic yellow bow on their cars, but it makes you wonder how they actually think they are supporting the troops that way, or giving their image a boast. This isn’t a war; it’s a conflict, whether it just or unjust isn’t my topic for today. I just wonder about how much real support goes out. I was then in the airport again on Sunday (7/24/05) and saw more soldiers and even a few on the flight I was on to Atlanta. They looked tired and tense, one even looked scared. They are so young, to fight an old mans war, I yearn for the day my generation wrestles power away from the old generation. Though its many years away, and I have to wonder how good that will be, since so many seem uninterested.

     

    Do I personally support the war, well I have to wonder, I did a while back, now, well it’s muddy. I know we can’t just leave, then all those deaths would truly be for nothing, nothing at all. We also would give power over to the very people we are fighting now, the extremist. So the key here is how to complete the mission and leave. I fear we are stuck there for a few more years.

     

    Back home now, miss the big city and all its wonders and smelly roads (they really should come up with a better way of disposing trash then putting it on the street). Got to see the Blue Man Group, that was pretty interesting, saw more bars and restaurants in one week then I visit in a year (in the case of bars, ever). Over all it was a fun business trip, in more then one way. I even came up with some exiting new product idea’s that I’m working on now.

     

    Though I'm home, with my loved ones, and that soldier I saw is now somewhere away from his. Seems unfair.

     

     

  • Actipro Software

    I can’t begin to tell everyone how happy I have been with their controls.

     

    Actipro has several controls, my favorite are the Syntax Editor, Tab Strip Control, Dock Manager. If you want an application that looks and feels like VS.NET 2005, then these are the set of controls to get.

     

    What have I done with them, well I’m using Syntax Editor for the code entry all over the place in my components as well as in my IDE (www.connectblocks.com). This has been an invaluable control, without it I would have had to build one and that would have taken a very long time. Plus it wouldn’t have half the great features and the features are not stopping any time soon. I’m as excited as a little boy in Disney World at some of the upcoming changes. One of which is how to describe a language. This control is also being used in some of the more popular components and you might not even know it. Have you used www.codesmithtools.com ?

     

    Next on my list is the dockmanager, I was previously using the free Magic Library for my docking windows. That one was nice, but Actirpo’s  is miles ahead. Actipro’s documanager and tabstrip controls I can set different themes as to how they look (has several built in themes). It also does the position graph on the screen when you move a window around. What makes the dockmanager stick out from many of its competition is the simple fact that you can setup the dockmanager at designtime via the designer. That’s right, no code entry!  Next is the tabstrip control, just like the dockmanager, it has theme support and is completely able to setup the control at designtime via the designer as well. Plus since its 100% .NET (unlike the TabControl MS gives (com wrapped)) you have more control over how it looks and runs.

     

    What is Actipro doing next, well besides the improvements on these controls above, they are coming out with a Menu and toolbar that will just make heads roll when it comes out, I personally await their release as a little boy that waits for Summer break, it just can’t get here fast enough.

     

    Personally what I feel makes Actipro standout from the rest is the personal interaction one receives, many larger companies just feel so out of touch from their users. This one time I was very disappointed with ComponentOne, they had a certain interface that looked exactly the same (how you setup the columns), this was for both the Datagrid and Combobox they provided. The problem lays in the fact that the interface didn’t work the same, looked and felt the same, but one behaved differently then the other (combobox at designtime produced errors) though this was a while back and they probably fixed it by now. Why I’m even saying anything about this is the fact that when I brought it up I was put down about it. Saying how that it’s a different control and this is to be expected and that you just have to do things differently in both. Well no mater, you don’t, I repeat DON’T make an interface and design look exactly the same as another and then make it behave different. There comes an established  view once you work with controls in a company, you then expect to be able on similar items to do things the same, who can remember these details of something that looks exactly the same as another but has this one little quark? Hence their support was very lacking!

     

    For all of Actipro’s support over the past year I could not be thankful enough, keep up the good work.

     

    For more information check out

     

    www.actiprosoftware.com

     

     

  • InteropServices.SEHException

    Well, in my adventures I ran into a bug, not sure if it’s a bug or not, not sure how I even generated it or what code causes it, though it’s some kind of bug or something or other.

     

    I built a custom PrintView using the printdoucment class which we all know is just a wrapper around the COM object. Why has MS not dedicated enough resources in getting rid of the COM’s? They are like some disease that won’t go away!

     

    I built my PrintDocument so that it could read an XML file and get the datasource and build a report, but guess what? I kept getting this error "InteropServices.SEHException: External component has thrown an exception", it seems that if I add “Application.EnableVisualStyles()” to my Main Sub routine in my application and then tried to use my component, I would get this very nice and extremely useful error. Granted I built a form in the background, populated it with controls and then used databinding to navigate between sets of records and then steal all the paints of each control to paint my report. Never mind that, but having that EnableVisualStyles only messed up my whole solution. Never mind it was almost impossible to find, only until I started looking for something non-print related that I found this:

     

    http://blogs.msdn.com/asanto/archive/2004/08/18/216825.aspx

     

    So, take out that line and boom my report reader works like a charm, I suspect that what happened was it was trying to use the visualstyles on my controls and got turned around somewhere and decided to give my live hell. Those good for nothing COMS!!

     

    Anyways, since I found little to no info, I figured to write this, so keep it safe when using the print controls/components.

     

    Does anyone know why they are still COM wrappers in 2005? It’s just insane if you ask me, though maybe that will change one day.

     

    To all a good night and happy Forth of July!!!

  • Windowsforms.com Forums

    Well in someone’s brilliant mind, it was decided to cut out using the forums on the windows forms site and to use the ones on the MSDN site.

     

    What a mess, according to the message on the home page of the www.windowsforms.com site it states that the posts will be ported. So let me get this straight, if I was to make a new inventory system for a client to replace their old inventory program and I had a whole new data structure and all. If I was just to cut off the old one and then start up the new one and then later try to figure out how to move the inventory over, would I still have a job????

     

    Well not only have they succeeded in messing up plenty of current threads, they started a new forums and without having all the posts migrated over yet. Hence you still have to search the old one for answers. Plus on top of that major mess up, they don’t even have half the number of useful forums. Top that off and almost all the current topics are all 2.0 related when the old forum was flooded with 1.1 related questions. The people answering questions don’t know if it’s 2.0 or 1.1 when they answer, since all 2.0 questions (since it’s in beta) should have its own forum and not within the rest of the forums (what messily few there are).

     

    Am I upset, you bet! Just another example of no contact other then a one paragraph statement, where is the community in these choices? They are going to cut people right out of even trying to figure out why the forums are not up. Hell I didn’t think to read the home page until the second day.  Which only makes me wonder how many people got lost and couldn’t be helped; there should have been a statement on the forums page its self.

     

     The good thing is that now it’s all more centrally located. This should help when someone has questions that might not be 100% winforms (like SQL questions) and so they don’t have to find another site for this information.

     

    It’s just amazing how little fanfare there was of this migration, and how little respect MS has shown to the winforms community.

  • Outsourcing, why?

    I’m an American developer, I work for a small company, I don’t have enough developers to help move a big project faster. What do I do?

     

    I outsource it, whether it is in the US or in Poland.

     

    Outsourcing has given many companies the edge they need to complete, imagine, one doesn’t have a whole crew of developers on the payroll, one can have a project manager and maybe a small handful of developers (depending on what the company does) and then for things that are time consuming but simple (boring long work) one can outsource that bit and make the whole operation more productive.

     

    Some of the routine coding is truly a waste of highly skilled developers time. It’s almost as bad as developing a custom control and taking a week to do it, when you already found a $50 USD control that does exact what you want and more.

     

    Many know me in the past to be very anti-outsourcing, now I see its benefit and do not fear it anymore. I’ve used several resources including www.rentacoder.com for my projects. Here is what I learned.

     

    If it requires a bunch of R/D to develop the control/component/screen/whatever, you are best not to outsource it. My experience is that few want to take the time to learn some special technology just for this one project, many stick with the broad technologies available.  So if it’s boring and it’s just doing hundreds of stored procedures or data entry screens, then you have an excellent project for outsourcing. These require little thought and are pretty straight lined as to exactly what you want and what you expect. 

     

    You might ask why I sound so negative about more complex narrow technology work being outsourced. Well I have had my share of projects that just couldn’t find developers for and/or failed. When I did they (the outsourced developer) were more costly then if we just built it ourselves when we had time. The other thing I noticed is that when the project was complex, I would get more 1st world country citizens actually bid on the project. Of course this brought the projects costs way up, but it confirms what I have noticed in the market.

     

    What is it that I noticed? It’s that if you stay on the edge and a few steps ahead you can make it in this world of outsourcing; this might change as the future bumps along but so far this seems to be a fair statement. I’m sure many would disagree, but so far as a small company dealing with others in the world from India to Poland and even Russia, I can say that one really has to define exactly what one wants and it can’t be too edgy either.

     

    Thanks to outsourcing we are further ahead then where we would be now, also thanks to outsourcing we got a nifty new logo (www.connectblocks.com), yea the site needs work, we are working on that and moving things around, so check back in a few weeks.

     

    Why am I even blogging about this? Well some of it is out of frustration and some is out of revelation and even more is out of education. Now lets not pigeon hole all outsourced developers, I believe many just don’t have the same resources as US developers and hence my revelation, though I have met some really sharp guys in several countries that are just flooded with work and they are very edgy (not in the too much caffeine sense). I personally wonder how this compares to US workers. I see such little representation of US workers at most of the outsource project sites, that it’s very hard to tell. Does this mean they don’t need to go to such services as much as others? Does this mean they don’t realize they can be outsource material too? Are they even aware?

     

    Whatever the reasons, I have found my balance as to what works and doesn’t work with outsourcing bits of projects. Though I’m sure it’s very much different with much larger companies and I bet it’s a whole lot different when the entire project is outsourced (though if one is to believe the numbers, projects that are totally outsourced have a larger number of failure then projects that are managed and shared in the states).

     

    Here are some interesting links:

    http://www.ebstrategy.com/Outsourcing/cases/failures.htm http://www.enterblog.com/200310190649.html

     

    I also know of a company that is building an accounting software project, the entire project is being outsourced, though they have been trying to release for the past 2 years, always something new has to be added before release. It tends to make me wonder if the outsourced company isn’t milking it for all it’s worth, coming up with new ideas and reworking things every now and then, all for the sole reason to keep the cash flowing in. Once the product is released they could start on the next version but what if the product flops? That’s the risk, so I can see why one feels the need to milk it before it’s released to the public.

     

    So I say to everyone that deals with one to one developers (us small guys dealing with small guys), take it easy and when you find some good outsourced resources (regardless of where they are), take care of them, give them more then they ask, you won’t regret it.

     

    I’ll end this here with a farewell and happy father’s day to all.

  • Flash in DNN

    Well, after looking everywhere, I needed a quick solution to my problem.

     

    Problem was I didn’t want to edit every damm skin in DNN that I might use, just so the logo works. Yes I had hired a guy to do up a Flash logo, just so I could have the cool block rotation (www.connectblocks.com). What I then discovered was something even funnier.

     

    Ok, I’m using DNN 3.13 (I think), I went to site settings (after logging in as admin) and then to logo and uploaded the .swf file and then updated and boom, nothing. I get a missing picture icon. Why do they allow uploads of .swf if DNN doesn’t know how to handle it?

     

    Well my solution is only good if you have one portal (or all your portals will share the same logo).

     

    Go to Root/Admin/Skins/ and you will find a logo.ascx file there.

     

    I then just copied my flash HTML bit there (at the bottom).

     

    <object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=7,0,0,0" width="350" height="110" id="dynamic_logo" align="middle" VIEWASTEXT>

    <param name="allowScriptAccess" value="sameDomain" />

    <param name="movie" value="dynamic_logo.swf" />

    <param name="quality" value="high" />

    <param name="bgcolor" value="#ffffff" />

    <embed src="dynamic_logo.swf" quality="high" bgcolor="#ffffff" width="350" height="110" name="dynamic_logo" align="middle" allowScriptAccess="sameDomain" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" />

    </object>

     

    Now of course, the other issue is you need to go back to that settings page under Admin and make sure no logo is set (set it to none). Otherwise you will have two images on the screen. This was a lot easier then editing skins, I’m sure others have an even better way, I’m sure I could actually edit the source code and give it some understanding of .swf files but man who has that kind of time.

     

    Just thought I would pass this along, not long enough for an article, but good enough as a tip. I couldn’t find anything on the net via Google, other then people saying (email me and I’ll give you a class). Don’t you just hate that, it’s almost like a trap..

  • Loads of Fun at TECHED 2005

    Well, I’m here at INETA booth volunteering my time for the mission. It’s been great. Why just today (Tuesday) we were going around and finding people wearing their tags (INETA tags for their badges) and it was exciting, we had people run from us when they saw us going after them. We would scream, HEY THERE’S ONE OVER THERE!!! And run to the person. Shower them with gifts and send them on their way for the prize drawing. Then we got stopped, we were too rowdy (believe it or not). We got a stop and return to our Cabana NOW! From some security guy throwing his weight around, talk about a rude guy. It was pretty bad. So now we are caged monkeys in our cage with security over in the corner keeping a key on us.

     

    Other then that things are going pretty well, the most valuable thing I learned was how to do multiprogramming languages in C++, I could actually have a .vb and .cs with my .cpp files and compile the whole thing. Yep, no magic, it’s actually pretty easy to explain, though you would think MS would make it a little easier. Basically you tell the C++ compiler which command line compiler to run for which files and it pre compiles them, and then embeds them into the same assembly output. Talk about way cool. Before that I knew about being able to expose managed functions (even VB.NET functions via a C++ wrapper) to native via IJW and there has been some expansion on that too.

     

    Well it’s only Tuesday, I wish there was more to say, I’ve had so much fun that I’ve missed most of the planned sessions I was going to attend. If you are around Thursday, I’ll be manning the INETA booth, come around and say howdy, would be great to talk to you.

  • Events, Code Camps and ranting

    Hi everyone!

     

    Well just here to let everyone know a couple things.

     

    If any of you are going to the Atlanta code camp (www.atlantacodecamp.com)  or TechEd in Orlando, give me a ring. I love to get together with like minded people.

     

    I have also written up a short article on using NativeWindow Class (Thinks Mick/Jacob). This is a wonderful class; you wouldn’t believe the hell I was going though before they brought it to my attention. Here is a link: http://aspadvice.com/blogs/jfuentes/articles/3341.aspx

     

    I also want to rant a little, WTF is MS thinking now a days? Ok, version 2.0 of .NET is going to be out this year (we all hope) and yet another year goes by where we don’t have a decent built in reporter designer. Yea we have Crystal reports, but hey that has a license limit and after that people need to buy the license for more users (worthless). Then there is Reporting services (which in 2005 is already installed (instead of like a plugin in 2003)) but that’s a single database and not everyone has SQL server installed. So the rest of us poor saps have to use the god awful printdocument and printpreview/printsetup components (which BTW hasn’t changed one bit in 2005 (so far)). What’s the deal here? I’m writing up my own report designer for the IDE I built but it would have been nice to be able to have some better tools. End of rant LOL.

     

    Hope everyone is doing well and I’m glad that this weekend looks to be dry (raining so much).

     

    Also we have a local MSDN event (for any of you that might read my blogs that are local to Tallahassee, FL) got to our groups site at www.tlhdotnet.net for more information.

  • Sold! Freaky, Connectblocks and VB.NET vs. C#

    It’s been a while since I have been able to post anything.

     

    Latest news, well I’m getting closer to releasing Connect Blocks Developer to beta (www.connectblocks.com). I finally sold my old home in Madison Florida, talk about an ordeal, first I had to live with renters for about 2 years and each renter tore up the house more and more. What’s with people? The last renter just about destroyed the house. Ten thousand dollars worth of time and money later I had it back together and ready to sell. One whole year after it hit the market I finally got it sold in March 2005. You just don’t know how good I feel, I didn’t make much off the deal, after paying friends back for time and money loaned and such and different credit cards I used to get things done. Well I just about broke even, but now I don’t have two mortgages anymore YAHOO!!! That’s enough to make me happy alone.

     

    This month also marks my Mothers passing, what’s really odd is that I sold the house (that she died in) on the same day and around the same time of day on the same month that she died. It didn’t freak me out until much later on (about a week later).

     

    In other news, recently I had a friend that works for the state hand me a document that a vender (no less) gave them titled “Visual Basic .NET vs. Visual C#.NET” man all I can say is that the guy that wrote is was so biased he might have bettered titled it “Why you MUST USE C# instead of VB.NET”. What were most funny were sections in it where he states that when developing in C# one can’t use VB.NET compiled assemblies and vice versa one can’t use C# compiled assemblies in VB.NET. Plus in another section they say “This leads to the argument that the language that one uses in .NET is completely irrelevant as they all generate the same IL and therefore some even claim that you can develop parts of your application in different languages and put them together. In theory, this can be done, but in practicality, it is not possible.”

     

    What do you think of those eggs, well I guess all my applications that use a combination of Managed C++ (for bits to expose to native), application blocks written in C# and all my other classes all written in VB.NET, I must be living in the NOT POSSIBLE WORLD.

     

    Oh there are so many funny parts; one part says basically that the IL produced by VB.NET isn’t the same as C# when people use VB only functions. Come on here; let’s see can anyone with a toaster for brains figure out that if you use something that isn’t available in another language why the IL would look different? Gezz, all one has to do is remove the Microsoft.VisualBasic reference and only stay strictly .NET (which is what I do so that conversions are easier to do). What’s really funny his how this guy portrays C# applications being able to run on many other platforms one day? Ok let me see, if the applications is compiled to IL and there is a runtime on the other platform then is it really running C#? Just too funny! The guy even went so far to say that functions/subs written in VB.NET that use optional parameters, when compiled the compiler makes overloads LOL just too funny, it just makes all the parameters required when viewed from like C#, where is this guy getting this information? Most of the rest of the document was out dated and many other bits soon to be taken care of in .NET 2.0, while a great bit of it was just “SO WHAT!”, hell the guy knew so little about VB.NET that he claims that the only method for doing events was to use the “WithEvents” keyword when declaring the object and the “Handles object.Event” bit at the end of the method and how bad this format was. I guess he never heard of Add/RemoveHandler. Just too funny, if I wasn’t worried about anyone getting in trouble I would post the document, but for now I will accept request.

     

    Why am I upset about this? Well that’s easy, we are in the state capital, the state like most government likes Java, here we have a vender that is showing a rift in .NET (yes it exists (the feud between C# and VB.NET)) but one shouldn’t show crap like this and make statements so untrue that languages within .NET don’t really talk to each other very well and “NOT POSSIBLE”, this just gives more power to the Java heads. We need a united front not a divided front. This document only serves to divided people not join people, it would seem that the vendor was only interested in getting people to C# (state workers) so that they would have an easier life, which reminds me of the statement that the author states basically “C# forces developers to think more about logic and architecture before they start to write” and that it forces developers to write good code. Wow, amazing huh, no such thing as bad code in C#, it forces you to write only good code. Wow that would make it the first language in the world that doesn’t allow bad code.

     

    Basically I try to promote .NET as much as possible in this region; documents floating around like this for inexperienced people to read just don’t help. You see the Java heads can use this you know. They would say “well since you got to relearn a language you might as well learn Java” and it works, if a VB.Classic developer reads this document they will tell their superiors that they need to be retrained to learn C# and that’s when Java will come into play. Funny thing is that this document was for those state workers with VB.classic experience and in the summary it states reasons you should standardize on VB.NET, one of which are “You have a development team with past visual Basic Experience”, so why so bias other then to make the vendors life easier, it’s supposed to be the other way around, the vendor makes the workers life easier.

     

    Oh well, I guess I just gripe too much, I got a couple members of  the VB team coming to Tallahassee (Jay and Jay) and I invited the author to come and get fractural and up to date information for his document, I kept it nice and civil. I really hope he comes, for we don’t need this around, it’s hard enough getting projects in .NET then to have this crap over our heads (as developers doing state work in the state capital).

     

    I need to write more often then I do

     

    Take care everyone.

  • My fun with the Microsoft Offline Application Block

    Well it’s been a bit since I last posted. I’m back full steam away with 7 books to review and presentations to build.

     

    I’m to present (Strongly Typed DAL’s) at Florida’s Code Camp this February 5th.  So all please come, I’ve heard that more slots will be opened up so don’t despair, check out www.devfish.com for all the latest news.

     

    Ok, on to the purpose of this post, I have been working with the offline application block, what I can say. Like any open source project (even one from MS (or sponsored or whatever)) this project just bites the big one, on documentation.  I have spent hours looking though code and trying to figure things out, this is basic stuff the documentation should have gone though. Here’s a question that maybe someone can answer, WTF is the reason for giving a quick start example that just caches the data to memory if you are trying to show how offline works?

     

    Also I have found that in their Insurance claim quick start if you click that you are off line and save data then it still saves it to the database, what’s this? So you are offline but not really offline (just saying your offline) and it still updates the server, I disable my network connection when I hit the offline button to make it work like it was offline. I also had to change a setting in the app.config to use the IsolatedStorageCacheStorage storage class (in storage settings). It defaults to the SingletonCachestorage which looks like it store it on another web URL in state or something.

     

    So why have a quick start that won’t work like a basic smart client as defined by MS? Beats me, and none of the documentation tells you that “to change the quick start to store the cache data locally do this”. So as you can imagine it was a very frustrating experience.

     

    Another problem I found is how it calls the OnlineProxy, it’s not nice, you see in the controller you setup the Service Agent, and in the Service Agent under (GetWorkItems) you setup a OnlineProxyContext, this is all find and dandy, it uses reflection to call the calling assembly and run the OnlineProxy Class of the assembly that is using the Application Block. What it doesn’t do is pass any parameters or arguments. So I went and did this. (changed the OnlineProxyContext class in the Offline Project)

     

    private string assemblyName;

    private string className;

    private string methodName;

    private object[] _obj;

     

    public OnlineProxyContext(string assemblyName, string className, string methodName,object[] tag)

                {

    /// Added the tag parameter so one can pass objects along to the onlineproxy. JF

                      this.assemblyName = assemblyName;

                      this.className = className;

                      this.methodName = methodName;

                      this._obj = tag;

                }

     

    [ReflectionPermission(SecurityAction.Demand, Flags=ReflectionPermissionFlag.MemberAccess)]

          public void InvokeMethodThroughReflection(Payload dataToSend)

                {

                      try

                      {

                            object createdObject = Activator.CreateInstance(assemblyName,className).Unwrap();

    ///This is my part here JF

                            if (this._obj != null)

                            {

                                  createdObject.GetType().GetProperty("tag").SetValue(createdObject,this._obj,null);

                            }

                            MethodInfo method = createdObject.GetType().GetMethod(methodName, BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic);

                            method.Invoke(createdObject, new object[] { dataToSend });

                      }

                      catch(Exception e)

                      {

                            InvalidOnlineProxyContextDefinitionException exception = new InvalidOnlineProxyContextDefinitionException(GenerateExceptionMessage(), e);

                            ExceptionManager.Publish(exception);

     

                            dataToSend.RecordFailure(exception);

                      }

                }

     

    So as you can see in the above code sample I added a tag and I added the tag property to the OnlineProxy class in my project. Yea I guess I should have also added to make sure the property exists but this is all going into my template and so I know it’s always going to be there. So this in turn fixed my major problem, you see I use DAL’s and the DAL handles everything, but it has some parameters I need passed to it. So in my Online Proxy Class I handle it like so.

     

      Private _Obj As Object()

        Private _Type As Plain.Access_Type = Plain.Access_Type.None

        Private _DAL As Object

     

        Public Property Tag() As Object()

            Get

                Return _Obj

            End Get

            Set(ByVal Value As Object())

                _Obj = Value

                If Not Value Is Nothing Then

                    _DAL = Value(0)

                    _Type = CType(Value(1), Plain.Access_Type)

                End If

            End Set

        End Property

     

    Now of course I could have also did a TypeOf and made sure about the type, but this is all in a template of mine so I always know there will always be two elements in the object array and they will always be in the same order. 

     

    This was my solution to an otherwise troublesome experience. You don’t want to get me started on the Auto Updater block, I might write something up on that too when I get to using the changes and making sure they work.

     

    MS should have really had provided more documentation and at least one quick start for each provider they provided. At least decent documentation on what to change in a quick start to get different behaviors, over all it looks good, I am not happy with how exceptions are caught, but I’m also not rewriting all that code for that issue. I really disliked having to do since any future updates will have to be changed or I will have to change code to take advantage of future updates. Which I guess would happen anyways, but proper components continue to work the old way while offering new features (not cold turkey).

     

    Hope this helps someone and isn’t just my blabbering.

     

  • Happy Holidays and about that Updater Block!

    Hi everyone, it’s been a while, these holiday seasons can be something else huh.

     

    In today’s world, we should all be very thankful for being able to alive and to see the New Year.

     

    Well I have a couple things to say, I will be presenting a topic (don’t know which one (submitted a couple different ones)) at Nova University on the 5th of February. There is a free Code Camp event sponsored by Microsoft to be held on the school grounds.

     

    http://msevents.microsoft.com/CUI/EventDetail.aspx?EventID=1032267147&Culture=en-US  

     

    Please register if you want to attend this event.

     

    For any of you in the Jacksonville area I will be in presenting a topic on DALs (Data Access Layers) on the 26th of January.

     

    I would also like to take the time and talk about the application updater block (found here at: http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnbda/html/updater.asp ). This block is very useful and I encourage others with WinForms projects to seek it out. This one tool I found to have a weakness. Let’s say you have a central portal type application that uses a menu and late binds to forms in separate DLL’s. Each DLL has forms in them and the forms are shown though the portal. Well if you wanted to be able to auto update the DLL’s the portal uses and each one has a different vendor or source then you are SOL. The way the updater is built it pulls information from the app.config of the portal. That information has nothing to do with each DLL app. My solution was to change the source code so that I could spec what configuration file to use and I have a configuration file for each DLL. Then I activate the Updater block on the portal and have it go though each DLL and check for updates (loop). This has been the solution to this problem.

     

    Another problem I ran across is the fact that the autostart.exe will set the files to be put in another folder and then run the app from that folder, well I have apps with configuration settings that are pointed to a set folders off the root. So if I now run the app from Folder 2.0.0 then those folders don’t exist. I base this as the root being application.startuppath. Of course there are a number of ways to work around this, I could always assume that root is one folder down from the path and put all the folders the app uses there. What I did was change the source for appstart to where it will copy the files from the new version folder to the root (where app start is) and then run it from the root. So yea I still have those version folders but it makes it easier to just copy the contents of a version folder if I needed to go back a version.

     

    Over all it’s a very good resource and well worth the time to learn how to use it.

     

    Also as for personal notes: I went to Miami this Xmas and played in the pool and ate roasted big at the annual Xmas party. Look for pictures (none of my pig brain eating aunt, she didn’t feel well enough to come this year) to be on the site before long. I still have another vacation to go and we are spending new years in Orlando.

     

    Happy Holidays!

     

    Joe Fuentes

  • Been a long time since I posted, here is a catch up of what I've been up to.

    Well, it’s been a long time since my last blog entry.

     

    So much has happened.

     

    My son is now attending Pre-K to help him prepare for kindergarten.

     

    I got to go to VS Live in Orlando, took the whole family since Ivan was threatening north Florida and I didn’t want to leave them there. I also got pictures, here I am with a couple of the Microsoft Profiler girls that got everyone to fill out some survey, here we are at a private VIP party, I might have had too many drinks. http://aspadvice.com/blogs/jfuentes/gallery/image/111.aspx Notice the red haired guy to the left of the picture, he’s from Sun Microsystems, and he came along with this guy that was like 7’7 mountain man. He was at VS Live to check out .NET.

     

    Now we are preparing for Williams first real Halloween, can you believe some people want to ban it all together, that’s almost as funny as http://www.whitehouse.org/initiatives/purity/ (note don’t click at work, no nudity but offensive content to some). 

     

    We made it though our first year as foster parents and have been re-certified and licensed (must be re-certified and licensed every year on your anniversary).  We still have our first foster child (Jeremiah) and he’s doing great, I’ll post some pictures soon.

     

    I’ve helped start up a new group, Capital City .NET Users Group of Florida, and built this site http://www.tlhdotnet.net , though I just looked and I might have already mentioned this, we did change names though, it used to be (Tallahassee .NET Users Group), though we felt the new name better said who we are.

     

    We had our first meeting which included me and Russ Fustino. It went great, afterwards we headed over to Andrews and had a great round table discussion or is that rectangle table discussion LOL. It was great having him over. In December we have Rob Howard coming to town to visit us. He will be presenting at our Dec. 2nd meeting. We are so pleased to have him visit.  Here are some photos from the meeting. http://www.tlhdotnet.net/Default.aspx?tabid=36

     

    I’m currently working on a new book review which I hope to have in place soon, check out the book reviews at http://aspalliance.com/ArticleListing.aspx?cId=11 my last one was http://aspalliance.com/537 my next one is on a book titled “Seeing Data” this is a must have book for all win form and future Avalon developers.

     

    About my beta, we are soon to be out with a beta on the product that has been in development, going on 2 years now. An IDE to make smart/rich client development smooth and painless. You can sign up for the beta at www.connectblocks.com this will be the first of 4 beta’s, the first is on the Developer component, while the next will be the Connector and followed by the Block Suite of controls and components. Finally we have Block Reporter, which is a report designer and viewer add-on or run alone application. I can’t wait to start getting feed back on these products and seeing them prosper in the world. They have been my little babies for so long I just hope they manage to work up right with all the other applications of the world. If you wish to be in the beta, then just sign up and register on the site, we could use all the help we can get.

     

    Well, it was great writing this, I’ll be in NYC next week, so I plan to write much more and keep my blogs up to date.

     

    Take care everyone.