You are here:   Home
Register   |  Login

Feed Subscription

My Library

Minimize

Recent Entries

Minimize
Author: Alan Created: 2009-07-21 12:09:42Z
Alan McBee's public technical blog. I talk about development, architecture, artificial intelligence, with a heavy slant towards Microsoft technologies.

My cousin wrote me and a few of her friends, asking for advice on how to buy a computer.

… I'm putting some feelers out there to see what you all might recommend for what to include in on an AWESOME system. I would LOVE to get a Mac, but then we'd have to buy our programs all over again, like Photoshop and Lightroom as well as MS Office (does Mac have MS Office compatible?)

Boys, I need your help! Please shoot me off some advice about what makes a system AWESOME. We know we want a big screen and will need to include a printer in the purchase…. I want it to be awesome for editing my photography and a large memory is a plus too. Also please let me know anything about PC vs Mac. I have wanted to convert to Mac for a long while, but not sure about what it takes to work on a Mac in a PC majority world. Any advice or tidbits at all would be awesome on either PC or Mac.

This is what I wrote back:

Macs are good computers, but you tend to get less awesomeness for the money. Why? Because Apple keeps very tight control over the available software and peripherals to make sure everything works more or less the way it is supposed to. Macs are best for people who don't think of themselves as very technical (like being interested in the difference between CPU speed and bus speed). There is a way to run some or most Windows programs on Mac; I believe that includes Office. I can't really give you much advice over which Mac to pick to get if you go that way.

I favor Dell computers for PCs. After that, I think Lenovo makes good portable computers. I'm not as much a fan of Hewlett Packard; HP tends to put in their own additions on top of Microsoft Windows that, in my opinion, add only bells and whistles while making other features less stable. Dell is happy to give you a basic, working PC, and let Windows do whatever it wants.

When I select a computer, I try to get a balance between these factors:

  1. Manufacture reliability / quality
  2. Lower price
  3. Higher CPU speed (with multiple cores and/or raw speed)
  4. How much RAM (memory) is included
  5. Higher bus speed
  6. Available RAM expandability

It's important to get these items as good as you can because you will probably keep the computer for a while, and these are things that you can't really change over the life of the computer. You can add more RAM (see #4), but only up to the limit of #6, and usually running out of RAM becomes the main reason why older computers appear to run slower over time.

Once I have used those to narrow my selection down to a short list, I consider how much I want to spend on these things, in about this order:

  1. Larger and/or faster hard disk
  2. High quality, high resolution, and larger-sized monitor
  3. Video display adapter
  4. Printer/scanner
  5. Optical disc player/burner
  6. Speakers

Each of those things are very easily replaced or expanded after you have your computer. Very large hard disks are not that expensive, but you should be careful not to get a giant hard disk that is very slow. The hard disk can also make your computer appear sluggish over time, so it's important to get a moderately fast hard disk. However, like I said, you can replace hard disks, although replacing your main hard disk (the C: drive) can be a lot of work.

I tend to stay low-tech on things like keyboards and mice. My keyboard has a cord and is about 12 years old. My mouse doesn't, but it's not a blue-laser wonder mouse, either.

Don't be afraid to ask the tech guys at the stores lots of questions, and if they aren't explaining things to where you REALLY understand them, don't feel bad about asking to talk to someone else. it's YOUR decision, not theirs.

 

I was working on a .NET 2.0 Web Application, and had attempted to add a ScriptManager control to a Master page from the Toolbox, from the ASP.NET AJAX Extensions (1.6.0something). Visual Studio 2005 refused to do it, giving me this error message in a dialog box:

Control cannot be created because Visual Studio cannot find the control's type in the control's assembly

I Binged that error message, and found something that was close: Rick Strahl had an error in his web.config file. However, I did not have an error in my web.config file.

What I did have, however, was a <system.web>/<compilation> section that used the configSource attribute to use a separate .config file for that section. I find it helpful to have a separate .config file for almost every section in system.web. Unfortunately, Visual Studio doesn't care for me doing that. Once I brought all the child elements of the compilation element back into the web.config file, I could easily add the ScriptManager to my Master page. I'm not sure why -- I had already manually added the assembly to the <compilation> section, so VS didn't need to add it again, nor why the error message is as cryptic as it is considering the root cause.

For whatever reasons, I’m about two years behind the curve here. But, well, these are the cards I was dealt, and these are the cards I will play.

I’m beginning a series of entries about all the new data access stuff that I’m finding in Visual Studio 2008 / .NET Framework 3.5. I’ll discuss them in the context of a Visual Studio 2005 / .NET 2.0 application I wrote which analyzes historical data about public companies so that I can make decisions about whether to buy stock in those companies. At the heart of this program is a library which parses an HTML page from MSN where I have an account to retrieve historical data. Because of copyrights and terms of use agreements, I won’t be distributing or documenting that part of the program.

I have a simple data model in this Visual Studio 2005 Windows application. I’ve already converted the SQL Server 2005 database to SQL Server 2008; that went smoothly.

SQL Server 2008 Diagram

Simply, there are just two tables. One has a record for each company I want to look at. The other has an entry for each month where I pull down historical values. The column names are from the book that was the inspiration for doing this:

I loaded up Visual C# 2008, and then opened the old Visual Studio 2005 solution, which consisted of seven projects:

image

The conversion seemed to go pretty smoothly. There were some minor warnings about relative paths being different for the backup projects when they got moved to a different folder. That’s fine.

Next, I tried to compile the application. This didn’t go so well. What used to be one of my tried-and-true staples of quick-and-dirty personal projects seems to have lost a little weight. The strongly-typed DataTables in my strongly-typed DataSet object were missing a method they used to have: Select(string expression).

  1. public EquityDataSet.CompanyHistoryRow[] GetHistoryRows()
  2. {
  3.     return DataSet.CompanyHistory.Select("Ticker='" + Ticker + "'", "Year DESC, Month DESC") as EquityDataSet.CompanyHistoryRow[];
  4. }

Now, I know I should have been spending the last couple of years kicking around LINQ and the ADO.NET Entity Framework and so on, but I let my day job get a little ahead of me. No more excuses, it’s time to figure out how to take my existing code and make it all new and shiny again.

One of the first things I noticed is that the direct ancestor of my strongly typed CompanyHistoryDataTable class is no longer just a System.Data.DataTable class, but is now an instance from the new generic System.Data.TypedTableBase<CompanyHistoryRow>.

It puzzles me a little, because I can see that TypedTableBase<> is a kind of DataTable. So what happened to my Select method? Why did it disappear?

It pays to read more than just the first error in the Error List pane.

The type 'System.Data.TypedTableBase`1<T0>' is defined in an assembly that is not referenced. You must add a reference to assembly 'System.Data.DataSetExtensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089'.

These other errors indicate that I need to add references to an assembly that I’ve never used before: System.Data.DataSetExtensions. The conversion wizard automatically added it to the Data project, but failed to add it to any of the projects that depend on the Data project. I’m sure Bing would have turned up something, but it’s easy enough to fix.

A little cleanup of SQL Connection Strings, and voila, I have a running application, but it’s still in the ADO.NET 2.0 frame of mind.

Next steps: Looking at LINQ (not posted yet)

XOP and MTOM are the preferred approach for mixing raw binary with text-based XML and replace the now deprecated SOAP with Attachments (SwA) and WS-Attachments/DIME.

Also, MTOM builds upon XOP; they are not competing technologies.

I know; everyone else already knows this.

http://www.microsoft.com/presspass/features/2009/Jul09/07-20LinuxQA.mspx

Microsoft is releasing three drivers for the Linux kernel to the open source community. Some people say it's an elaborate trap. Some people will say anything.

Of course Microsoft is doing this because it's in their own best interests. That should be obvious.

What's not obvious is that it is also in the best interests of non-Microsoft shops (although that is what makes it, IMHO, in Microsoft's best interest). There's a paranoid fringe element that wants to do everything possible to eliminate Microsoft's power in the software development field. Nobody has explained to me yet why this is not hypocritical in the extreme. And not that hypocrisy is all bad, but at least admit it when you are doing it.

What I do know is that Microsoft already reached the top, and could have, had it wanted to, exerted its influence to "screw over" its customers. Kind of like Oracle does. But it didn't. They have aggressively protected their IP, sure. Again, I'm not sure how or why it's not logical or rational to protect your IP. But the open source community has to protect their IP as well. Only they can force you to reveal your value-add IP if you began with open source works.

I'm not seeing winners, and I'm not seeing losers. It's just a fun game to watch.

In the meantime, I'll stick to developing on a Microsoft platform because a) I know who I'm dealing with, b) they are pretty predictable, and c) I get a lot more done in a lot less time and with lower costs by using their stuff.

Search Blog