Blog

Sunday, May 19, 2013
a bit more on Visual Studio 2012
I feel a little bad about yesterday's screed on the VS 2012 UI. (But not bad enough to delete it or anything. I still wish they hadn't mucked with the UI so much.) So today I thought I'd try to write a more positive post about VS 2012.

First, I'd like to link to this blog post on how cool it is that Microsoft has kept so much of the functionality of the full VS product in the Express editions. I do agree with him on this, and I am glad that Microsoft is willing to release such a full-featured product for free. Having said that, though, I'd also love to see a $99 "standard" version that comes a bit closer to the $499 "pro" version. I think my biggest issue with the Express product will be lack of support for extensions. I've gotten quite used to DPack, for instance, so it'll be hard to do without that.

Here's a good article on "Simple but Interesting Features of VS2012". Some of these features should be pretty useful. I'm glad that Microsoft is still adding little things like this to Visual Studio. It's easy to let small, useful, features get lost in favor of grand initiatives, and I'm happy to see that someone at MS still thinks about stuff like this.

Finally, here's a post about some really great new features in VS2012. I was pretty stoked about a few of these, until I realized that it was an April Fool's post. (Actually, a couple of these *would* be useful, and not that hard to implement...)

Labels: , ,

posted by Andy H. 9:31 AM
0 comments

Saturday, May 18, 2013
Visual Studio 2012, take two
So I managed to get VS 2012 installed. (See previous post for details on my first failed attempt.) I'd love to write up a blog post detailing some weird issue and how I worked around it, but I don't really have anything useful to offer along those lines. I basically just installed some pending Windows Updates, had a cup of coffee, then tried again.

After the install, I was prompted to install a patch that apparently fixes some compatibility issue. Then, I was prompted to install VS 2012 update 2. I did both of those things, and now have a usable VS 2012 install. I'm still not sure why Microsoft can't post updated installers for their products when they release patches and updates, but I'm used to the silliness now, so I just grin and bear it.

I had read a good bit of negative feedback about the UI changes in VS 2012, and I have to say that I agree with most of it, now that I've seem the product up close. It's much less pleasant to look at, compared to VS 2010. First, the upper-case menus are ridiculous. Whoever thought that was a good idea has hopefully been fired by now. (Who am I kidding, he probably got promoted!) You can fix that pretty easily with this NuGet package. And the guy who put it together gets extra points for the instructions: "YOU NO LIKE NO SHOUTING?! Run Disable-AllCaps".

The next easily-fixed interface blunder is the color scheme. The default is called "light", and it's kind of an all-grey mess, with a little bit of white, black, and blue.  If you switch to the "blue" theme, you get something a little like VS 2010, and much more usable.

The general flatness of the interface, though, is still pretty blah. There was really nothing wrong with the VS 2010 interface, and no reason to arbitrarily change stuff for the worse like this, and it's so hard to believe that anybody really thought they were making things better here.

There's a blog entry on the VS team blog that discusses the all-caps thing in specific. If you read it, you'll get a good picture of how a very large company can make really poor decisions about specific products, based on big-picture corporate strategies and directions, and how they can be (apparently) clueless about what they're doing. They talk about how the use of uppercase text is a "strong signature element" of MS user interfaces, including Zune and Bing. Now, really, how much thought does it take to figure out that the menu bar for a complex programming IDE has nothing to do with the user interface on a failed MP3 player or a web search engine? They end the blog post by saying that "we will enable you to customize the casing, and we are exploring options for how to expose that choice." Well, the blog post is about a year old, VS 2012 has had two update releases, and still no option in the product itself to change the menu casing.

Alright, so that was way too much grumbling about fairly trivial user interface stuff. I guess I'm just in a bit of a cranky mood today! I still look forward to trying out VS 2012, and seeing what useful new features have been added to the product, and to C#!

Labels: , ,

posted by Andy H. 5:43 PM
0 comments

Visual Studio 2012
I haven't bothered with VS2012 yet, but today I decided to try to install VS Express 2012 for Windows Desktop on my laptop. I really only want it, at this point, for developing console apps. I wanted to take a shot at using it for the Project Euler stuff that I've been playing around with, and I was also interested in trying out some of the async stuff in C# 5. So nothing fancy; I just wanted to get familiar with it.

Well, no luck. The install got about halfway through (judging by the progress bars), then got no further. I know some of the VS installs in the past have been notoriously slow. (I'm looking at *you* VS 2005 SP 1! Or was it VS 2008 SP1...?) But this one just stalled at the same spot for 2 or 3 hours, with no change, so I gave up on it.

I'm starting to wonder if I need to do a fresh install of Windows 8 on that laptop, just to clear up the cruft from previous VS installs. I really wish Microsoft could make an IDE that didn't cause so much grief just to install...

Labels: , ,

posted by Andy H. 3:42 PM
0 comments

Monday, December 31, 2012
Bullseye
The main product of the company I currently work for is a hosted store locator and lead manager service, named Bullseye. We've been concentrating on both improving it and marketing it recently, so there's some fairly interesting things going on that I thought I would write up. I've mentioned some of these things previously, but I thought it might be useful to have a single consolidated post with some pointers.

We have a Facebook store locator, which you can find at https://www.facebook.com/BullseyeStoreLocator. The Facebook locator was an interesting project. The first iteration was outsourced to an external developer, and was completed before I started working for the company. Due to some major changes in the way Facebook supported app development, we had to do a lot of work on the Facebook locator in mid-2011. I did a pretty major rewrite of it, using the Facebook C# SDK (which seems to have moved to Github, and gotten a nicely redesigned website since I last looked at it). Since that rewrite, one of our other developers has been working on it, mostly adding new features. The most recent new feature is one that allows you to attach 'like' buttons to individual locations in the returned results, linking them to individual Facebook pages for each location. It's described in a blog post here.

We also now have a Drupal module that allows you to easily implement a store locator in any Drupal 7 site. (I've blogged about this previously.) It's still a sandbox project under my drupal.org account. Cleaning it up and getting it ready to be promoted to a full project is on my rainy-day to-do list. (I've done a bit of work towards that goal, but I still need to do some more.)

And we now have a way to import and sync locations from Salesforce into Bullseye. This was another component that was initially outsourced. I've done some maintenance work on the project, and it's pretty interesting. We've implemented a way to filter the results that we pull in from Salesforce, using serialized LINQ expressions. I was initially leery about this approach, and there are still some things I don't like about it, but if you need to abstract out and save complex filter conditions to a database, I guess there isn't a better way to do it than this. The one difficulty is that it's fairly difficult to read and comprehend the expressions, once they're serialized, so it's important to keep track of the original LINQ expressions, for reference.

Labels: ,

posted by Andy H. 3:33 PM
0 comments

Wednesday, November 28, 2012
Selenium
OK, one more post for tonight. (This is another one I suspected that I may have previously written up, but apparently not.)

I've known about Selenium for awhile now, mostly because one of our clients has a "testing guy" and he uses it. I've always wanted to be able to do some automated testing of web site projects, but it always seemed like the tools for doing so were too limited or complex. I'll admit I put off downloading & learning Selenium, largely because I thought it would be a hassle and eat up a lot of time before I could really do anything useful with it. When I finally gave it a chance, though, I was surprised how easy it was to use.

I initially started with WebDriver, which is basically a couple of DLLs that let you "drive" Firefox (or another browser), sending keystrokes and click events, and looking for certain responses. You can get started with WebDriver quickly by grabbing it via NuGet. My first project with WebDriver was a simple console program that launches Firefox, then goes to several of the store locator web sites that use our Bullseye API, does a search at each one, and checks to see if it gets results. Nothing big, but just a useful program that I can run any time I roll out code changes to the API. Previously, I'd been checking this stuff by hand after each rollout.

Today, I took another step, and downloaded Selenium IDE. This is a Firefox plugin that lets you record a series of actions as you do them, then save them to a script. There are plugins allowing you save the script in several languages, including C#. So, I can record some steps, export some C# code, then fix it up to do some reasonable testing. My main purpose today was to record the steps involved in a fairly complex workflow on one of our client sites. It's a multi-step process (around 20 steps, I think). Just in and of itself, the script is useful to have, as I often need to step through it to establish a new test account, so now I can just "play" it instead of clicking through the whole process myself. But, I would also like to use it to automate some testing of this process. Now that I have a base script, I can go in and replace the values I entered today with variables, so I can abstract things out in such a way that I can run the code repeatedly, testing multiple scenarios. And since I can do this all in C#, I can also then check the database, and see if the values I entered were interpreted and stored in the database correctly.

This may all seem pretty routine to some people, but I have to admit that I've never really had a chance to do this kind of testing before. It's kind of cool!

I think my next project is going to have to be trying WebDriver with browsers other than Firefox.  I'd like to be able to test the same workflow in IE, Firefox, and Chrome, at least. (And if I get really ambitious, maybe I'll see about iOS browser automation...)

Labels: , ,

posted by Andy H. 9:56 PM
0 comments

Thursday, September 27, 2007
reference vs. value types, and LINQ
One of the people I work with was having some trouble with reference vs. value types (in C#) this week. This article seems to give a pretty clear explanation of how these things work. Always good to have a little refresher on the fundamentals.

And, in poking around on this guy's web site, I found LINQPad, a tool for executing LINQ queries. I have to admit that I haven't had any time to play around with LINQ at all, but I'm really curious about it. I like his idea of trying to do all your ad-hoc SQL queries in LINQ for a week, to force yourself to start getting used to it. Some of the stuff I'm doing this week is requiring me to do a *lot* of ad-hoc SQL, though. My brain is so completely wired for T-SQL at this point that I think I'd get really frustrated really quickly trying to use anything else.

Labels: , ,

posted by Andy H. 11:00 PM
0 comments

Saturday, September 02, 2006
computer books
I just finished ASP.NET 2.0: A Developer's Notebook. Looking back through old posts, it appears that I've been working my way through this one for quite a while now. Oh well. The next book in my stack is Expert C# Business Objects which, according to Amazon, I bought on Sept 20, 2005. So I guess it's about time to crack it open, right? Of course the C# 2005 version is out now. I'd like to read that one instead, but I don't want to just toss out a $60 computer book. I guess I'll start reading the one I've got, then maybe think about "upgrading" to the new one if it's really interesting.

Labels: ,

posted by Andy H. 9:46 PM
0 comments

Saturday, August 23, 2003
New version of #develop out today. I couldn't believe how nice this was when I first starting playing around with it. Open source stuff usually isn't this good. I've switched over to Visual Studio for the C# stuff we do at work, but I never wouldn't really gotten started with C# without #develop.

Labels:

posted by Andy H. 6:35 PM
0 comments

Thursday, February 20, 2003
I think I've finally finished converting my little calculator program from C++ to C#. The last stumbling block was figuring out how to substitute standard input with the contents of a string that had been passed on the command-line. The answer was to declare a TextReader object, then assign it to Console.In when I wanted to read from the console, or a StringReader object when I wanted to read from a string. Easy! (Once you've figured out that there's such a thing as a StringReader object, and that it's interchangeable with Console.In.)

Labels:

posted by Andy H. 9:49 PM
0 comments

Monday, February 10, 2003
I figured out how to create (and use) a hashtable of delegates in C# today! Yay! This article was helpful. A bit more work, and I'll be done rewriting my C++ calculator program in C#.

Labels:

posted by Andy H. 10:12 PM
0 comments

Thursday, February 06, 2003
I made a little progress on my pet C# project tonight. It's a little command-line calculator that I'm converting from C++. It now adds, subtracts, multiplies, and divides! Next, I need to reimplement the function handling (square root, cos, tan, etc). That's going to be interesting, since I was using function pointers for that, and now I'm going to have to figure out delegates, since C# has no function pointers.

Labels:

posted by Andy H. 8:35 PM
0 comments

Tuesday, January 28, 2003
I now have three O'Reilly books on .Net that I need to read:
.NET Framework Essentials,
Programming C#, and
ASP.NET in a Nutshell.
Hopefully, I can make it through enough of this stuff to get to the point that I can do some useful work with C# and ASP.NET!

Labels:

posted by Andy H. 9:17 PM
0 comments

Tuesday, January 21, 2003
Mr. Productivity
I just spent the last 2 hours working on converting an old C++ program to C#. I sorta like C#, but this particular program used every part of C++ that C# trashed or changed drastically: function pointers, unions, friend classes, oddball stream handling, and other stuff like that. That's good, of course, since the whole point of this exercise is to learn C#. Actually, I haven't used C++ in so long, I don't remember what some of the fancy stuff in this program is doing anyway.

Labels:

posted by Andy H. 10:27 PM
0 comments


This page is powered by Blogger. Isn't yours?
© 2011 Andrew Huey