Thursday, October 21, 2010

MySQL Connector/Net 6.3.5 maintenance released



We're happy to announce the latest maintenance release of MySQL Connector/Net 6.3.5.

Version 6.3.5 maintenance release includes:

  • Fixes to some installer bugs related to .NET Framework 4.0

  • Fixes for several other bugs


For details see http://dev.mysql.com/doc/refman/5.1/en/connector-net-news-6-3-5.html

MySQL Connector 6.3.5 :

  1. Provides secure, high-performance data connectivity with MySQL.

  2. Implements ADO.NET interfaces that integrate into ADO.NET aware tools.

  3. Is a fully managed ADO.NET driver written in 100% pure C#.

  4. Provide Visual Studio Integration


If you are a current user, we look forward to your feedback on all the new capabilities we are delivering.

As always, you will find binaries and source on our download pages.

Please get your copy from http://dev.mysql.com/downloads/connector/net/6.3.html.

To get started quickly, please take a look at our short tutorials.

MySQL Connector/NET Tutorials
http://dev.mysql.com/doc/refman/5.1/en/connector-net-tutorials.html

Blog postings and general information can be found on our Developer Zone site.

MySQL Developer Zone
http://dev.mysql.com/usingmysql/dotnet/

.NET Forum
http://forums.mysql.com/list.php?38

Blog
http://planet.mysql.com

Connecotor/NET Documentation and details on changes between releases can be found on these pages

If you need any additional info or help please get in touch with us by posting in our forums or leaving comments on our blog pages.

Thursday, September 9, 2010

MySQL Connector/Net 6.3.4 GA has been released

We're proud to announce the next release of MySQL Connector/Net version 6.3.4.  This release is GA (Generally Available).

We hope you will make MySQL Connector/Net your preferred set of .NET components including our ADO.Net library and other Microsoft .NET frameworks components such as our Visual Studio plugin and Entity Framework for MySQL.

We are dedicated to providing the best tools for your MySQL database .NET applications.

Special thanks go to all the great MySQL beta testers that provided valuable ideas, insights, and bug reports to the Connector/Net team.  Your beta feedback truly helped us improve the product.

Version 6.3.4 provides the following new features:
- The ability to dynamically enable/disable query analysis at runtime.
- Visual Studio 2010 compatibility
- Improved compatibility with Visual Studio wizards using our new SQL Server mode
- Support for Model-First development using Entity Framework
- Nested transaction scopes
- Other improvements and bug fixes!
For details see
http://dev.mysql.com/doc/refman/5.1/en/connector-net-news-6-3-4.html
http://dev.mysql.com/doc/refman/5.1/en/connector-net-news-6-3-3.html
http://dev.mysql.com/doc/refman/5.1/en/connector-net-news-6-3-2.html
http://dev.mysql.com/doc/refman/5.1/en/connector-net-news-6-3-1.html
http://dev.mysql.com/doc/refman/5.1/en/connector-net-news-6-3-0.html

If you are a current user, we look forward to your feedback on all the new capabilities we are delivering.  As always, you will find binaries and source on our download pages.

Please get your copy from http://dev.mysql.com/downloads/connector/net/6.3.html

To get started quickly, please take a look at our short tutorials.

MySQL Connector/NET Tutorials
http://dev.mysql.com/doc/refman/5.1/en/connector-net-tutorials.html

Blog postings and general information can be found on our Developer Zone site.

MySQL Developer Zone
http://dev.mysql.com/usingmysql/dotnet/

.NET Forum
http://forums.mysql.com/list.php?38

Blog
http://planet.mysql.com

Connector/NET Documentation and details on changes between releases can be found on these pages
http://dev.mysql.com/doc/refman/5.1/en/changes-6.3.x.html
http://dev.mysql.com/doc/refman/5.1/en/connector-net.html
http://dev.mysql.com/doc/refman/5.1/en/connector-net-news-6-3-4.htm

If you need any additional info or help please get in touch with us.  Post in our forums or leave comments on our blog pages.

Monday, August 30, 2010

MySQL Connector/Net 6.2.4 Maintenance release

We're happy to announce the latest maintenance release of MySQL Connector/Net 6.2.4.

Version 6.2.4 maintenance release includes:

  • Enhancement that allows a procedure to be recreated with a different number of parameters

  • Fixes for 29 bugs


For details see http://dev.mysql.com/doc/refman/5.1/en/connector-net-news-6-2-4.html

MySQL Connector 6.2.4 :

  1. Provides secure, high-performance data connectivity with MySQL.

  2. Implements ADO.NET interfaces that integrate into ADO.NET aware tools.

  3. Is a fully managed ADO.NET driver written in 100% pure C#.

  4. Provide Visual Studio Integration


If you are a current user, we look forward to your feedback on all the new capabilities we are delivering.

As always, you will find binaries and source on our download pages.

Please get your copy from http://dev.mysql.com/downloads/connector/net/6.2.html.

To get started quickly, please take a look at our short tutorials.

MySQL Connector/NET Tutorials
http://dev.mysql.com/doc/refman/5.1/en/connector-net-tutorials.html

Blog postings and general information can be found on our Developer Zone site.

MySQL Developer Zone
http://dev.mysql.com/usingmysql/dotnet/

.NET Forum
http://forums.mysql.com/list.php?38

Blog
http://planet.mysql.com

Connecotor/NET Documentation and details on changes between releases can be found on these pages

If you need any additional info or help please get in touch with us by posting in our forums or leaving comments on our blog pages.

MySQL Connector/Net 6.1.5 has been released

MySQL Connector/Net 6.1.5, a new version of the all-managed .NET driver for MySQL has been released. This is a maintenance release of the 6.1 branch and is suitable for use with MySQL server versions 5.0 and higher. It is now available in source and binary form from http://dev.mysql.com/downloads/connector/net/6.1.html] and mirror sites (note that not all mirror sites may be up to date at this point of time - if you can’t find this version on some mirror, please try again later or choose another download site.)

This is maintenance release.  Please review the change log (included with product or at http://dev.mysql.com/doc/refman/5.1/en/connector-net-news-6-1-5.html) for details.

Thank you for working with MySQL!

MySQL Connector/Net 6.0.7 has been released


MySQL Connector/Net 6.0.7, a new version of the all-managed .NET driver for MySQL has been released. This is a maintenance release of the 6.0 branch and is suitable for use with MySQL server versions 5.0 and higher. It is now available in source and binary form from http://dev.mysql.com/downloads/connector/net/6.0.html] and mirror sites (note that not all mirror sites may be up to date at this point of time - if you can’t find this version on some mirror, please try again later or choose another download site.)

This is maintenance release.  Please review the change log (included with product or at http://dev.mysql.com/doc/refman/5.1/en/connector-net-news-6-0-7.html) for details.

Thank you for working with MySQL!

Tuesday, July 27, 2010

MySQL Connector/Net 6.3.3 (beta 2) has been released

MySQL Connector/Net 6.3.3, a new version of the all-managed .NET driver for MySQL has been released. This is a beta release and is intended to introduce you to the new features and enhancements we are planning. This release should not be used in a production environment.  It is now available in source and binary form from http://dev.mysql.com/downloads/connector/net/6.3.html] and mirror sites (note that not all mirror sites may be up to date at this point of time - if you can’t find this version on some mirror, please try again later or choose another download site.)

The new features or changes in this release are:

  • Visual Studio 2010 RTM support

  • New sql editor.  Create a new file with a .mysql extension to see it in action

  • Please check the changelog and release notes for more information


What we know may be broken
Documentation is not yet integrated into VS 2010.

Please let us know what else we broke and how we can make it better!

Friday, June 11, 2010

Want to know why you computer is slow to boot?

Ask Soluto!  Soluto is a brand new company and product that aims to take the guess work out of determining what is making Windows slow to boot.  We've all got moms, dads, brothers, and sisters who call us up on some Saturday and ask us to look at their computer and speed it up only to find it loaded to the gills with toolbars and "ink reminders".

Now with Soluto, they can just install the slick program, reboot their system, and let it do the work.  It uses a kernel-driver along with a database of applications and user experiences they have collected to determine what an application does and make recommendations to you.

I installed it but it found little it could do to speed up my system.  I have already trimmed almost all the fat from my rig.

Here's a shot of the UI.


You can hover over this timeline of your boot and it will explain each element, what it does, and give you a recommendation as to pausing (not starting) or delaying (start on-demand).  So the next time uncle Bob calls and wants you to speed up his computer, just send him to Soluto!

Thursday, June 10, 2010

XAMPP - Where have you been all my life?



I love Wordpress.  Really there isn't a better blogging platform on this platform.  It's that good.  And I've been using it to self-host my blog for the past year or so.  For awhile, I hosted it using II6 on WHS v1.  That was a real pain as it took several days to find a URL rewriting solution that worked with IIS6.  The past few months I've been hosting it on my Windows 7-based media center.  Since that runs IIS7, URL rewriting was easier using the standard URL rewrite module.

A few days ago I decided to test out WHS "Vail".  After installing it, I wanted to move my blog onto it so I downloaded the Microsoft Web Platform Installer.  It promptly let me know that it couldn't find any products in my selected language.  Huh?  This is what drives people crazy about Windows software.  Crap just doesn't make sense sometimes.

I googled and found several links describing how to manually setup Wordpress on Windows Server 2008 but each of them had about 30 steps.  Sheesh.  I was about to punt back to media center when I remembered trying out XAMPP a few months back.

Man, this thing is beautiful.  I downloaded the installer, double clicked it, and watched it dump Apache, MySQL, and a bunch of other stuff into c:\xampp.  It then brought up this nice UI where I could enable Apache and MySQL as a service and start them.




A simple file copy of my wordpress folder to the c:\xampp\htdocs, a copy of my wordpress mysql database to c:\xampp\mysql\data and create the proper username in mysql and I was set.  That only other thing I had to do was to open the appropriate holes in my Windows firewall.  Five minutes and I was done!  Windows may be pretty awesome but XAMPP is pretty awesome too.

Tuesday, June 1, 2010

My month on OS/X is finished

Well, I've finished my month on OS/X.  It wasn't really a month but rather a couple of weeks here and there.  To be honest I didn't really hit too many situations where I felt like I needed Windows.  I didn't have good luck with Chicken-of-the-VNC and the Mac version of remote desktop is not nearly as good as on Windows.  That being said I love the fact that iCal and Contacts sync with Google.

I'm writing this under Windows 7 but I'm typing it into the web UI.  I'll likely hang out in OS/X a bit more as I have some video editing I need to do and iMovie just blows away any free products on Windows.

MySQL Connector/Net 6.3.2 beta has been released

Sorry for this not getting out sooner.  Connector/Net 6.3.2 was released several days ago but somehow the release announcement was never made.


MySQL Connector/Net 6.3.2, a new version of the all-managed .NET driver for MySQL has been released. This is a beta release and is intended to introduce you to the new features and enhancements we are planning. This

release should not be used in a production environment.  It is now available in source and binary form from

[http://dev.mysql.com/downloads/connector/net/6.3.html] and mirror sites (note that not all mirror sites may be up to date at this point of time - if you can't find this version on some mirror, please try again later

or choose another download site.)


The new features or changes in this release are:



  • Visual Studio 2010 RTM support

  • New sql editor.  Create a new file with a .mysql extension to see it in action



What we know may be broken

Documentation is not updated yet and is not integrated into VS 2010


Please let us know what else we broke and how we can make it better!

Sunday, May 9, 2010

Loving me some mint!

I'm not sure if I manage my money like most people but I'm sure falling in love with Mint.  To be fair I've only been seriously using it for the past week of so but I've but with a key workaround I've managed to replace Money with Mint.  Yes, I know Money has been discontinued by Microsoft so I could move to Quicken.

I signed up for Mint several months ago but they just recently added my bank so I can manage my checking and savings accounts.  The charts are great.  The quick links that show my spending in a given category are nice.  And the budget tracking and alerts are awesome.  They also recently added a feature that allows you to manually add a "pending" transaction.  This is part of what I needed to fully move.  The other thing was the ability to "reconcile" transactions against the bank.  This is where the workaround comes in.

The way mint works is that you login and then it downloads transactions from your bank and shows you all non-pending transactions along with your current balance.  Seeing my current balance is nice but I also want to see money spent on things that have not cleared yet such as bills paid or large expenditures I just made.  This is where the manual add comes in.

To reconcile your receipts to the bank you have to be a little clever.  You have to use the tags feature of Mint.  First, create a new tag called 'Checked'.  You can call it whatever you like but I thought 'Checked' sounded good.  Then you need to apply the 'Checked' tag to all of your transactions that you are satisfied are correct.  My guess, at this point, is that is all of them.

The next thing is to understand that when new transactions come in they have no tags applied.  So, to see all transactions that are 'not checked' then you simply need to do a search.  Enter this in the search box -tag:Checked.  That means find me all transactions that are not checked.  Then, compare each one with the receipts you have and apply the checked tag appropriately.

It's actually very easy.  Now you have the power of mint with the ability to add pending transactions and reconcile your account with your receipts.  Nice.

Thursday, May 6, 2010

My 30 days on OS/X - day 6

Well, I've only had to run back to Windows once.  I have VNC installed on my Windows 7 Media Center computer but somehow I just couldn't get Chicken of the VNC to work right and  we were having a volume issue.

So far what's the verdict?  Well, there are some things I really like and some things I don't.  Here's a breakdown of the software I was using on Windows, what I'm using on Mac, and if it's better or worse.

  • HydraIRC is  a great Windows IRC client.  On the Mac I'm using Colloquy and I must say I prefer Colloquy.  It's faster to connect and has a better default profile for notifying you when things happen.  With HydraIRC you could easily miss a PM. Not going to happen with Colloquy.

  • Skype is skype

  • I use Digsby for IM, Facebook, and Twitter on Window.  On the Mac, I'm using Adium for IM and Facebook and Twhirl for twitter.  This is a push.  I prefer how Adium handles conversations but prefer Digsby for twitters.

  • Use Chrome for browsing on both but I have to say that I prefer Chrome on Windows.

  • I love how Apple Mail handles mail.  The keyboard interface is great and the find is awesome.  Much better than Thunderbird. I also love the LDAP integration with Address Book (seeing my co-workers pictures in mail is great)

  • iMovie is GarageBand is better than anything at the same price on Windows

  • iPhoto is ok


I still plan on finishing my 30 day experiment.  Will I stay on OS/X after the experiment is over?  I doubt it.  There's simply not enough 'can't live without' features on OS/X to justify the pain.  Ok, back to work.

Friday, April 30, 2010

It's time for something fun

So, a few years ago I had this rule that about every 6 months I would use a version of Linux for a few weeks just to see how it had progressed and compare that to Windows.  I can't really recall when I stopped but I do remember that I really enjoyed having a better understanding of other systems.  I think it's time to do it again.  However, this time I won't be using Linux.

I have access to both Windows 7 and Macs.  I've been a Windows developer for a long time but with the improvements made in virtual machine solutions I've started doing most of my development work in vms.  I find it refreshing to keep all my development work sandboxed in a system that I can easily take and rollback snapshots as needed.  I recently ran some winsat checks on my native box (a Core i7 rig with 8gigs DDR3 memory) and a virtual machine configured to use all 8 cpus.  The results were nearly identical with the virtual machine turning in 95% performance on cpu tests and beating the host system in disk tests (the vm was using a 80gig file as a disk).

So, since the VM is giving me enough performance to do my work I am really free to use whatever I like as a host system.  So, here I am preparing to embark on a fun adventure.

I"m going to use Snow Leopard (in 64 bit mode) for 30 days while doing my Windows work in a VM.  I don't intend to run back to Windows for anything during that time as I really want to force myself to use OS/X.  During this time I'll blog frequently about issues I'm facing, things I like, things I don't like, and work arounds I've found.

So, to get started here's what my day normally looks like on the computer.

  • Lots of development work on Windows (Visual Studio 2008 and 2010)

  • IRC/Skype chatting with friends and co-workers

  • Email with co-workers

  • Using Google calendar to manage my day to day activities

  • Editing Word/Excel/Powerpoint documents (these are more rare these days but they do happen)

  • Watching recorded tv shows from my Media Center HTPC

  • Watching shows from NetFlix and Hulu

  • Listening to music from Pandora, Slacker, Sky.FM, and personal music collection

  • Blog reading/writing

  • Facebook and twitter'ing


Well, wish me luck.

Wednesday, April 28, 2010

MySQL Connector/Net 6.1.4 has been released

MySQL Connector/Net 6.1.4, a new version of the all-managed .NET driver for MySQL has been released. This is our latest GA release and is suitable for use in all scenarios against servers ranging from version 4.1 to 5.5!

It is now available in source and binary form from [http://dev.mysql.com/downloads/connector/net/6.1.html] and mirror sites (note that not all mirror sites may be up to date at this point of time - if you can't find this version on some mirror, please try again later or choose another download site.)

This is a maintenance release and includes many bug fixes.  Please review the change log for details.

Thank you for using our product!

MySQL Connector/Net 6.0.6 has been released

MySQL Connector/Net 6.0.6, a new version of the all-managed .NET driver for MySQL has been released. This is a maintenance release and is approved for use in all situations.

It is now available in source and binary form from [http://dev.mysql.com/downloads/connector/net/6.0.html] and mirror sites (note that not all mirror sites may be up to date at this point of time - if you can't find this version on some mirror, please try again later or choose another download site.)

There are lots of bug fixes in this release so please review the changelog.

Thank you!

Thursday, March 18, 2010

Enjoying March Madness



It's been a lot of hard work (and we are still not finished) but it's time for March Madness and there's nothing like watching it in 140" of glorious 1080i HD.  Behold!

Wednesday, March 3, 2010

Maybe we should link those tables? Nah....

So this morning I got a LinkedIn request from a friend of mine and saw this when I accepted it.  The last names are blacked out (to protect the innocent) but trust me when I tell you it was the same person.  So I guess I *may* know the person I am now connected with. Nice!

Tuesday, March 2, 2010

MySQL Connector/Net 6.3 Alpha 2 has been released

MySQL Connector/Net 6.3.1, a new version of the all-managed .NET driver
for MySQL has been released. This is an alpha release and is intended to
introduce you to the new features and enhancements we are planning. This
release should not be used in a production environment.

It is now available in source and binary form from
[http://dev.mysql.com/downloads/connector/net/6.3.html] and mirror sites
(note that not all mirror sites may be up to date at this point of time
- if you can't find this version on some mirror, please try again later
or choose another download site.)

The new features or changes in this release are:

  • Visual Studio 2010 RC support

  • Nested transaction scope support


What we know may be broken
----------------------------

  • Documentation is not updated yet and is not integrated into VS 2010

  • Some users are having trouble installing.  We are working hard to determine what is causing this problem.  These users may continue having trouble with 6.3.1.  Please be patient as we work through this.


Please let us know what else we broke and how we can make it better!

Saturday, February 20, 2010

Wireless mic required -- or not

We recently acquired Rock Band 2 and I've been looking around for a wireless mic to use with it.  I was going to pick up a copy of Lips but I was at my local Best Buy last night and saw a game on their clearance table that seemed interesting.  It was a singing game based on High School Musical and appeared to come with a mic (though you couldn't see the mic).  The game was marked $9.99 so I examined it more closely.

Reading the box there was a small blurb on the back that said the following:
Gameplay requires use of a Logitech or Xbox 360 wireless microphone.

There were also several areas on the box that said a microphone was included.  So, trusting what it is telling me, I picked it up.  Yep, you guessed it.  The microphone was wired.  Maybe the reason it was on the clearance table is that noone could play it since a wireless mic is required but it doesn't come with one.

NOTE:  I didn't have a camera with me so I couldn't take a picture of the box.  You'll just have to trust me.

One of the things OS/X does right

I'm writing this on a 2008 Macbook Pro that I dual boot between Snow Leopard and Windows 7.  I spend most of my time in Windows but occasionally I pop into SL to test something out or use iMovie to edit some video.  From time to time, when OS/X boots, you get this nice System Update dialog that explains that some installed software on your system needs to be updated.  Here's a shot of the one I just got.


What's interesting to notice is that it is listing non-Apple products as having upgrade available.  My Epson printer drivers and Microsoft provided remote desktop client software are both listed.

Why can't Microsoft do this?  Why do I have to manually check for upgrades for products like this?

Keeping a system fully updated is the easiest way to keep things running smoothly.  Microsoft does a nice job of this with system level patches and hardware components, but it does nothing to help keep my products updated.   Windows 7 gets a lot of things right but this one goes to OS/X.

Wednesday, February 17, 2010

The loser always complains

Years ago my father would sit and complain about the officiating during UK basketball road games.  He would say that you could take the sports section of the newspapers, pick out the home team on all college basketball games, and 90% of them would be winners.  It didn't matter who was playing at all.  It just mattered where they were playing.  I tested that theory a few times and while it may not have been 90% it was clear that most of the time the home team won.  Was the officiating bias?  Who knows but I would like to think it isn't.

Last night we all got to witness a slugfest in Starkville, MS.  It ended with a UK overtime win but the real story is all the whiners that are complaining about the officiating and the truly classless fans who threw water bottles on the floor.

Was the officiating bad?  Yes, but was it one-sided.  I don't think so.  Here are some highlights:

  • Yes, the goal-tending call could have gone either way but you try and make that call correct 100% of the time at game speed.  UK had a similar play a few games ago that was called.

  • Some guy on the Rupps Rafters forum posted images from his DVR that clearly show that the charge called on Patrick Patterson late in the game was not a charge at all.

  • Varnado said in post-game comments that he thought his fourth foul was suspect.  It may have been but how about the no-call when you were completely draped over a UK player in the second half?  That could have been called intentional but was not even called at all.

  • And what about the foul called on Cousins when video replay clearly showed he didn't even touch the guy at all?


The point is that in a fast-paced, very competitive game like that there are going to be missed calls.  You are asking 3 *humans* to keep their eye on something like 400 square feet of court and catch everything that goes on, not to mention keeping your eye on the shot clock in case it doesn't start, and making sure the score is correct, and making sure substitutions are done correctly, and..  Well, you get the point.  It's hard.  But the good thing is that over a 40 minute game the calls will normally balance out (sort of -- see my opening remarks about home court advantage).

Yes, I'm a UK fan and I'm glad they won.  But I'm also certain that if Varnardo doesn't foul out and if their leading scorer plays it could have been very different.  Mississippi St. is a good team and I'm glad we don't have to play them in Starkville again this season.

I'm not complaining about the refs because my chosen team won.  The next time UK loses I'm sure I'll complain about the officiating.  You see -- the loser always complains.

Monday, February 15, 2010

MySQL Connector/Net 6.3.0 alpha 1 has been released

MySQL Connector/Net 6.3.0, a new version of the all-managed .NET driver
for MySQL has been released. This is an alpha release and is intended to
introduce you to the new features and enhancements we are planning. This
release should not be used in a production environment.

It is now available in source and binary form from
[http://dev.mysql.com/downloads/connector/net/6.3.html] and mirror sites
(note that not all mirror sites may be up to date at this point of time
- if you can't find this version on some mirror, please try again later
or choose another download site.)

New features or changes:

  • Visual Studio 2010 RC support

  • Nested transaction scope support


What we know may be broken

  • Documentation is not updated yet and is not integrated into VS 2010

  • Data editing view (in VS) does not function in this build


Please let us know what else we broke and how we can make it better!

Friday, February 12, 2010

Custom Installer and .NET 4 problem? Solved!

I recently encountered a problem with custom installers and .NET 4. If you are using an Installer-derived class in an assembly that allows partially trusted callers then you may see this when you attempt to install with InstallUtil:

Inheritance security rules violated by type: 'Class'. Derived types must either match the security accessibility of the base type or be less accessible.

After a little googling, I found this post that helped me solve part of the issue.  The other thing you need to do is go to your installer class and add the following attributes to it.  These will demand full trust for the installer class.

[PermissionSetAttribute(SecurityAction.InheritanceDemand, Name = "FullTrust")]
[PermissionSetAttribute(SecurityAction.LinkDemand, Name = "FullTrust")]

That’s it!  Your installer class should work with .NET 2 and .NET 4 now.

Tuesday, February 2, 2010

The one where I realized Apple is brilliant

A few days ago I was following one of the many live blogs of the Apple iPad announcement and had both a sense of excitement and disappointment.  I've read all the twitter and blog posts about how the product will fail or how it will change the world.  Remember, it is "magical".  But it was during that live blog that I realized what I think Apple is doing and, if I'm right, they are absolutely brilliant.

Now, before I reveal my brilliance let me just say that I am 100% sure that I am not the first to figure this out.  In fact, I'm quite embarrassed that it too me this long but it's ok.  I'll live.

So, we all know that Microsoft and Apple have been mortal enemies for as long as personal computers have been around.  They've been battling on the personal computer battleground and Apple has been taking heavy losses.  In fact, I think we would all agree that generally the desktop battle has been over for a while.  So what does an army do when they are being defeated?  Worded differently, what do you do when you are losing the game?  Change the rules of the game of course!

It's long been common knowledge that we will eventually not be using desktop computers as we now know them.  With cloud storage and cloud apps we now need much less hardware to get work done.  And with hardware miniaturization we can do more and more with smaller and smaller packages.  Heck, my phone could quite likely land one of the Apollo missions.  So what should Apple do?  Take over the small-form-factor, mobile computer business of course!  But where is the epiphany?

Well, my light bulb went on during the live blog when I saw the keyboard dock for the iPad.  My thought was 'Holy cow, that looks just like a computer'.  Guess what. It is a computer.  And by all accounts I've read, it's a damn fast computer that runs iWork (I'll get to that in a minute).  So while all the Microsofties will snicker at Apple having 7-9% of the installed desktop space, I'm guessing that Apple counts those numbers a little differently.

Now there are rumors that Apple is working on a larger iPad that is more like a computer. So, while Apple battles with Microsoft on the desktop front my guess is that they don't really care about that space.  They are just keeping an opposing army busy while they completely dominate and take over the rest of the battlefield.  Is there any question that Apple has and probably will continue to dominate the mobile phone and now the tablet space?  Yes, I know that Microsoft is working with partners on iSlate and that Windows 7 is touch capable but if you think Microsoft can deliver a fully integrated and solid user experience then just read some of my KISS posts.  They suck at UI and user experience.

Oh, and let's not forget about price.  I recently read this piece about premium-priced computers.  Apple computers are generally much more expensive than PCs but many will argue they are worth it.  I own a Macbook Pro and I will admit that it is the best laptop I've ever owned.  Form, function, and finish are all excellent.  So it's easy to argue that they should sell for more but how much more?  In any product comparison there is a price point where most people will not buy the better model.  The price is just too high.

The base iPad sells for $499 so suddenly your grandma can get a fully functional Apple computer for < $500.  So let me ask you this.  If an Apple laptop is $1000 and the roughly equivalent PC is $600 which one do most people get?  Easy right?  The PC.  But if the Apple is $500 and the PC is $250, now which one do most people get?  Hmm.  Not so easy.  It's easy to see a future with a completely functional, touch screen, Apple computer for $750.  I can tell you that unless things change with Windows, I know which one I'll get for my grandma.

Do I have a third choice?

So, a while back I started this series called KISS.  This stood for Keep It Simple Stupid which is an age-old phrase commonly applied to computers.  I posted several times about areas where Windows really breaks this rule.  While I'm not announcing the revival of that project, I did recently run across another instance I thought would be fun to share.

Now, this is something I've seen many, many times which is actually a sad confession.  Sad because it shows that Windows users really can use lame UI for years and not even really notice it.  We are just used to crap.

So, yesterday I was setting up a new Windows Server 2008 R2 box in VirtualBox (a killer VM product if you don't already know) and came to the following screen during setup.



So, let us be clear.  This is a brand new machine (VM) and my two choices are Upgrade and Custom?  Huh?  First, there is nothing to upgrade so is it even a choice?  So my other choice is Custom (advanced) which sounds like I want to do very advanced things like partition the drive, etc.  Why is there not a ‘Simple Install’ option?  Linux has this.  OS/X has this.

Oh, and before you comment that this is a server install so the user is likely quite technical, the Windows 7 and Vista install was just like this.  Yes I am a geek so this dialog has never tripped me up but what would my mom do with this dialog?  I know what she would do.  She would call me.

Monday, February 1, 2010

Site redesign

Hey yall.  Spent some time tonight working on a new site design.  Yeah, I know this theme is popular and all over the net but it's really cool and I didn't want to spend much time looking for a nice theme.  Anyway, I'm still tweaking things so let me what works, what doesn't, and what you think.

Monday, January 18, 2010

Come see what’s new with 6.2

This Thursday (1/21) we will be hosting a webinar where we go over the new features in Connector/Net 6.2.  You can get more information and register for the webinar here.

Tuesday, January 12, 2010

MySQL Embedded and Windows webinar coming up

One of the best kept secrets in the MySQL world are the terrific (and free) webinars that are available.  In fact we have just such a webinar coming up this Thursday.  This one is covers using MySQL embedded with Windows and is presented by Mike Frank.  You can find out more and register here.

It’s free and I know you can spare an hour so what are you waiting for?

Wednesday, January 6, 2010

Tracing changes in MySQL Connector/Net 6.2 – Part 2

In our last installment we found our hero investigating the tracing changes found in Connector/Net 6.2.  This time we’ll take a closer look at the format of the trace data and how developers can use that information to write new and interesting trace listeners.

Understanding the plumbing

The first thing we need to understand is a little about how the trace messages are routed.  The main method we are interested in is TraceSource.TraceEvent.  Here is the signature.

public void TraceEvent(
TraceEventType eventType,
int id,
string format,
params Object[] args)


All the other TraceSource methods like TraceInformation eventually boil down to a call to TraceEvent.  TraceEvent will run through all the attached listeners and call the TraceEvent method on each.



The default behavior of listeners is to eventually call String.Format using the format given.  It plugs the parameters in and comes out with a string that can be sent to the console, to a file, or some other output.  Thankfully Microsoft saw fit to make TraceEvent virtual allowing derivative listeners to override and do interesting things.



How we use TraceEvent



Here is the signature for TraceListener.TraceEvent.



public virtual void TraceEvent(
TraceEventCache eventCache,
string source,
TraceEventType eventType,
int id,
string format,
params Object[] args)


eventCache is provided by the framework and contains information such as process id, thread id, timestamp, etc.


source  is the name of the TraceSource that provided the event


eventType is the .NET defined type of this event.  This can have values such as Information, Warning, Error, etc.


id  is the application provided event id.  This value is application defined and we’ll explain how we use it later in this post.


format is the parameters string message that listeners such as ConsoleTraceListener would use for output


args is the array of arguments available to plug into the format string.  This is the actual data for the event.



The key to using the data provided in TraceEvent is simply to know that the data always comes in a specific order and format.  The following information only applies to events coming from the mysql source.  The eventCache, source, eventType, and format parameters are self explanatory so we’ll start with id.



The id parameter is our MySql-centric event id.  We wanted to give very specific information about the type of event.  We have a public enum available in the 6.2 assembly called MySqlTraceEventType.  Here is the definition.



public enum MySqlTraceEventType : int
{
ConnectionOpened = 1,
ConnectionClosed,
QueryOpened,
ResultOpened,
ResultClosed,
QueryClosed,
StatementPrepared,
StatementExecuted,
StatementClosed,
NonQuery,
UsageAdvisorWarning,
Warning,
Error
}


Before we talk about the event-specific data points, let me mention about a small problem we needed to solve.  We wanted to have a numeric id attached to each event that would allow all the events belonging to a given query to be gathered together.  The only way we could accomplish that was to use a counter that gets incremented each time a driver is opened.  (remember we needed a value that is unique on the same thread so we can’t use process id, thread id, or event MySQL server thread id). We’ll call this the driver id and every event that comes from the mysql source has this driver id as the first member in the args array.



Here’s a table that lists each mysql event and what the arguments array looks like.  Please keep in mind that these arguments start in the second element (index == 1)























































































Event Arguments
ConnectionOpened connection string
ConnectionClosed <none>
QueryOpened mysql connection id, query text
ResultOpened field count, affected rows (-1 if select), inserted id (-1 if select)
ResultClosed total rows read, rows skipped, size of resultset (in bytes)
QueryClosed <none>
StatementPrepared prepared sql, statement id
StatementExecuted statement id, mysql server thread id
StatementClosed statement id
NonQuery <varies>
UsageAdvisorWarning usage advisor flag (see below)
Warning level, code, message
Error error  number, message


Here’s the definition of the publicly available UsageAdvisorWarningFlags enum.



public enum UsageAdvisorWarningFlags
{
NoIndex = 1,
BadIndex,
SkippedRows,
SkippedColumns,
FieldConversion
}


So that’s it.  This information will be documented and may change slightly as we find problems.  In fact we’ve already identified a small issue and may add a “current database” parameter to the connection opened event since the current database can be different than what is set on the connection string.  Be sure, when we make these changes they’ll be documented and by checking the version of the assemblies involved you can do the right thing.



Armed with this information you should be able to go forth and make very interesting trace sniffing apps for MySQL.  If you accept such a challenge, drop me a line.  I would love to know what you think!

Tracing changes in MySQL Connector/Net 6.2 – Part 1

For years, Connector/Net has been a key part of any MySQL & .NET developer’s toolbox.  Tracing is also a key part of a developer’s life and Connector/Net has always output trace messages.

This first post is a review of .NET tracing systems and how we changed our trace output.  The second post will cover how developers can use the new tracing format to develop new applications.

Tracing in .NET 1.x

.NET shipped with a very simple tracing system.  You have a static class named Trace that has static methods such as Write and WriteLine.  An application can use code like the following to output a message to the trace log.

Now that we have output our message, how do we direct it somewhere?  You do that with listeners.  There are a few standard listeners included in the framework (ConsoleTraceListener, XmlTraceListener, EventLogTraceListener) but you are free to create your own.  You can attach a listener at runtime or via an application configuration file.  There’s no need to show you how that is done.  You can easily find it on the web.  What we really want to talk about are changes in .NET 2 tracing and how Connector/Net makes use of it.

Tracing in .NET 2.x

Developers usually want to just trace a particular part of an application.  They may just want to get the network tracing or maybe just the file I/O.  To accommodate this, Microsoft created a new class named TraceSource.  You can really think of it as just a Trace class with a name.  Now when you add listeners via the config file you have to add them to a source with a particular name.  Here’s what it might look like.

<configuration>
<system.diagnostics>
<sources>
<source name="TraceTest" switchName="SourceSwitch"
switchType="System.Diagnostics.SourceSwitch" >
<listeners>
<add name="console" />
<remove name ="Default" />
</listeners>
</source>
</sources>
<switches>
<!-- You can set the level at which tracing is to occur -->
<add name="SourceSwitch" value="Warning" />
<!-- You can turn tracing off -->
<!--add name="SourceSwitch" value="Off" -->
</switches>
<sharedListeners>
<add name="console"
type="System.Diagnostics.ConsoleTraceListener"
initializeData="false"/>
</sharedListeners>
</system.diagnostics>
</configuration>


You can also specify a switch level, a filter level, and trace options (like should the output include process id, thread id, timestamp, etc).



Starting with Connector/Net 6.2, we have started using TraceSource to output our trace data.  Our source is named, cleverly enough, mysql.



Using the mysql trace source



Using our new tracing is very simple. Just use a configuration block similar to what I have above except use “mysql” as the name of the source instead of “TraceTest”.  One question you may have, though, is how to add listeners to our source at runtime.  You do that with the new MySqlTrace class.  Here’s how.



MySqlTrace.Listeners.Add(new ConsoleTraceListener());


Difference is in the details



We’ve also increased the level of detail included in our trace messages.  Each trace message includes a counter value that attaches it to other trace messages belong to the same connection.  We did this to enable the development of applications such as a powerful log viewer that will also serve as a visual trace listener.  With this app, a developer would be able to query the log output for various scenarios.  Examples would be “show me all queries where all the rows were not read



So where to from here?



There’s much more to say about our new trace output and, in my next post, I’ll go into the exact format of the data, and we (and you) can use that data to create new and exciting trace listeners.