Happy New Year

I thought I would write up a quick New Year’s post today, with a few status updates. I mostly write this kind of post for my own future reference, just to see where I’ve been, and what progress (if any) I’ve made in certain areas.

First, I’m happy to say that I stepped on the scale this morning, and it read 200 pounds. I started my diet around Sept 1, at 230 lbs, with the goal of losing a pound a week, until I hit 200. So I hit my goal, and I hit it earlier than expected. I guess my next goal will be to get down to 180, again at one pound per week. We’ll see if I can manage that. I’m still logging all my calories with the Lose It app on my phone. I think that’s really been the key factor in being successful. I’m not sure when I was last under 200 lbs. Maybe back in college?

On another front, I haven’t done quite so good. I blogged, back in November, about Coursera. I had enrolled in two courses, Algorithms, Parts I and II. Part I was technically done before I enrolled, and Part II was just starting up. My plan was to breeze through the first part, then catch up with the second. I was doing OK up through the end of November, and gotten through about 80% of the material in Part I, but then I got busy with other stuff in December, and never went back to it. Meanwhile, Part II wrapped up, so here it is, 2014, and I haven’t done anything on Coursera in a month. It looks like I can still watch the lectures, and even submit the programming assignments for auto-grading, so I may just pick it up again this month, and finish Part I. Or I may wait until it “officially” starts up again, on January 30, and try to take it in “real-time”. Then, I can take Part II in real-time, when it’s next offered in March. Or maybe I’ll just try something different this year, either from Coursera or EdX.

Professionally, I started my job at SHI in January 2013, so I’m at just about the one year mark there. I had my performance review with my boss yesterday, and it went pretty well. I’ll likely stick with SHI for another year. Given that I’m doing almost 100% Dynamics AX work though, I want to see about doing more web stuff on the side this year. Last year, I did a project for my former employer, Electric Vine, that allowed me to exercise my ASP.NET and JavaScript skills a bit, but I don’t have any consulting work planned for 2014. I should really find some, or maybe get involved in an open source project, or something like that.

Coursera

I recently decided that it would be a good idea to take an online course or two, from Coursera or EdX. I noticed that Algorithms II, a Princeton course with Robert Sedgewick as lecturer, was just starting up, so I signed up for that. I then also noticed that, while the Algorithms I class had ended recently, it was still possible to sign up for it and work through it. So I decided to do that first, and see if I could then move onto Algorithms II before it ended. Well, I’m getting through the material, but it’s taking some time, so I don’t think I’ll necessarily “catch up” prior to the official end of the Algorithms II class, but that’s not really necessary, though it would be nice.

The class uses Java, which I wasn’t initially that thrilled about, but I’m not really having any trouble with it. It’s similar enough to languages I know, like C++ and C#, that it’s easy enough to pick it up as I go. And the kind of work we’re doing in the class is such that I don’t need to worry much about user interface details or anything like that. Everything we’ve done so far is pretty much command-line stuff, with a little simple graphics work. So I haven’t had to worry about learning whatever the Java equivalent of Windows Forms or WPF is. (Swing maybe?)

The course material consists primarily of lecture videos (with Robert Sedgewick), programming assignments, and quizzes. For the first class, I’m choosing to watch the videos and do the programming assignments, but I’m skipping the quizzes.

The textbook for the Course is Algorithms (4th Edition), by Sedgewick and Kevin Wayne, who was also involved in creating the class, though he hasn’t shown up as a lecturer yet. (I’m not sure if all the lectures are by Sedgewick, or if they switch over to Wayne at some point.) The textbook is fairly expensive, but it’s not required. There’s a “booksite” for it that has all the material you’d need from the textbook.

The course recommends, but doesn’t require, that you use an IDE called “DrJava.” They even have a nice little installer that will quickly set up an environment for you with the JRE, DrJava, and some libraries that are used as part of the class. Very convenient and simple. I’m using the Windows version, but they have versions for Windows, Mac, and Linux.

DrJava isn’t a great IDE, but it’s simple and easy to use. I wouldn’t want to use it for day-to-day work, but just to write and test the kind of programs you need to create for an Intro to Algorithms course, it’s fine. (I do find myself falling back on Komodo Edit sometimes, though, when I need to do some “major” editing.)

So, basically, everything you need for the course is free (Coursera stuff, the textbook web site, and the development environment), which is great.

The lectures are quite good. I’m guessing that this is basically the same material that’s actually used for the Princeton undergrad Algorithms course, with some tweaks made to accommodate the requirements and limitations of the online course environment. Good use is made of visualizations for the algorithms, which is really key in understanding this kind of stuff.

The programming assignments are well thought-out too. They need to be structured in such a way that they can be run through an “auto-grader” that can evaluate and grade them in a reasonable way, so that imposes some limitations on them, but that’s fine. Basically, the programs need to be written to a well-defined API that the auto-grader will exercise, and then report on. It tests boundary conditions, large inputs, timing, memory use, and so on. The assignments are generally written so that there are levels of correctness that can be evaluated. There may be, say, 50 tests the grader can run your code through. Maybe the first time you submit your code, you’ll pass 25 of them. Then, you can tweak it and re-submit, and maybe get 35 right, and so on. So, the process of working through an assignment can be iterative, and you can learn as you go.

I think it’s great that stuff like this is available on the internet for free. I’m not sure where all this will lead though. More access to quality higher education for more people? Or will this stuff all be monetized at some point, leading to some kind of new status quo in higher education, where things are far more centralized than they are now, and the educational experience is far less personal? I don’t know; I’m sure people smarter than me have probably spend a lot of time thinking about that. For me, right now, it means I can take something vaguely equivalent to a Princeton undergrad course for free, in my living room!

Visual Studio 2013

I haven’t been paying too much attention to the VS 2013 launch, but I did read a few blog posts about it yesterday, including this one. Honestly, I haven’t really done much with VS 2012 yet, other than using it to work on some Project Euler problems at home, and using it as a front-end to TFS 2012 at work. (My day-to-day programming work is mostly done in the AX IDE environment right now.) Some of the stuff they’re doing sounds interesting, but it doesn’t really apply to me right now. One of these days, I’d like to get back into some serious .NET work, possibly including some Azure stuff, and ASP.NET MVC, and maybe get a chance to mess around with stuff like Unity. I do have one new interesting side project going on right now, though, which I want to write up in more detail later.

Project Euler

I haven’t mentioned Project Euler on here in a while. Earlier this year, I got on a roll and solved the first 20 or so problems. Then, I got too busy with other stuff, and didn’t make any more progress. Well, I got interested in it again and finished through to problem 25. I’m hoping I can find time to get a few more done before the end of the year. I’m finding that Project Euler is a pretty good way to keep up some basic skills. The kind of programming I do at work is interesting, but it doesn’t really exercise certain “muscles”.

silliness in the Dynamics AX compare tool

I had a small issue crop up in AX a couple of weeks ago. It wasn’t big enough to spend any time on, but it was a bit of an annoyance. Well, I had some spare time yesterday, so I decided to see if I could fix it. The end result was that I did indeed fix it, but the journey to that point was kind of ridiculous, so I thought I’d write it up.

AX has a built-in compare tool, for comparing different versions of code in different AX layers, or in source control. It’s not a terribly great tool, and I’d rather have WinMerge or Beyond Compare, but it’s good enough. The initial form shows the names of the two files being compared, with a red box next to one, and a blue box next to the other, to indicate the colors that will be used to highlight the differences between the two files.

Well, the color in those little boxes mysteriously disappeared a couple of weeks ago. The tool still works, and the text is highlighted in red & blue, but there’s no visual indication of which text is from which file. Not a really big deal, but inconvenient.

Most of the tools built into AX are written in X++, and we have full source, so I went ahead and dug up the source for the form named “SysCompareForm.” I don’t think I should post any of the source here, but what I found is that those little red and blue boxes were actually HTML controls, each one displaying a web page, constructed in the code! I’d never really noticed before, but the boxes were not actually displaying solid red & blue, but rather were displaying red-to-white and blue-to-white gradients. And, of course, this being Microsoft, they were doing so in a way that only worked in older versions of IE. And, yeah, I’d recently upgraded IE on my VM from 8 to 10. So that was the problem: each of those little squares was actually rendering a web page with IE, just to get little red & blue swatches!

The cross-browser gradient situation has been a bit of a mess for a long time now, and you generally need to add about 10 lines to your CSS file just to do one gradient that works well across all browsers. So, I tried to update the code so it would render out OK in IE 10. Well, I messed around for a while, and couldn’t quite get it right. Then, I did some searching, and found this thread from a Russian web site, from someone else who had the problem and solved it. So, I just copied his code and went on with my life.

Apparently, this problem was fixed by Microsoft in a recent CU, but I guess it’s one that we haven’t applied yet. I wonder how much other stuff in AX is being done like this, and relying on HTML/CSS that only works in IE 8. Geez.

Visual Studio 2013 and Build

I watched a little bit of today’s keynote from the Build conference on my iPhone at lunch today. I have to say that Scott Hanselman’s bit was pretty cool. I don’t know if I’ll actually have any reason to use VS 2013 for an ASP.NET project any time soon though. I’m not really doing that kind of work right now, and I’m not sure when I’m likely to get back to it. But I’ll at least have to install the thing and mess around with it on a little sample project, just to keep up with what’s going on in ASP.NET.

On a related subject, I’m somewhat embarrassed to admit that I’ve never really learned much about ASP.NET MVC. I did learn the basics at one point, quite some time ago, but I’ve never used it on a real project, and I haven’t kept up with the most recent releases. Well, I started reading a book on MVC 4 recently. I haven’t gotten very far with it, but hopefully I can get far enough to at least say that I have a clue how it works.

vs 2012 express for web

I thought I was done blogging about VS 2012 for now, but I decided to start messing around with MVC 4 this week, so now I’ve gone ahead and installed VS 2012 Express for Web. I was kind of hoping that the install wouldn’t take that long, since one would assume that most of the components would already be on my machine, from VS Express for Desktop. But no. It took more than an hour to download and install everything. And I had to update NuGet in Express for Web, even though it was already up to date in Express for Desktop. And I had to apply the RemoveAllCaps fix again too. So I’m guessing that there’s less overlap between the Desktop and Web products than I would have hoped. But that’s OK — I’ve got plenty of hard drive space on my ThinkPad!

Meanwhile, Visual Studio 2013 has been announced. That was a bit of a surprise, since I’d assumed that the next major version would be VS 2014. There’s some pretty neat stuff in VS 2013, though a lot of it likely won’t be applicable to anything I’m doing at work or at home right now.

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…)

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#!

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…