I recently decided that it would be a good idea to take an online course or two, from Coursera
. 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.
Labels: programming, Windows
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".
OK, I haven't written a blog post in a while, so this one is going to be a bit of a grab bag.
First, on the weight loss front, I'm down 15 pounds so far, over about eight weeks, so I'm losing almost two pounds a week. My plan was to shoot for one lb per week, so I'm doing fine on that. I'm also getting in maybe five or six hours of walking a week, which is pretty reasonable. I still haven't figured out what I'm going to do when it gets too cold to walk outside though.
On the tech front, I picked up a new iPhone 5s a couple of weeks ago. My previous phone was an iPhone 4, so there's a good bit of new stuff for me in the 5s, including Siri.
- I'm finding that I'm not using Siri much, though it's kind of fun and does seem to work well.
- The fingerprint sensor works quite well, and I'm using that to unlock the phone most of the time now.
- Overall, I've found that the speed of the phone is greatly improved over the iPhone 4, especially for certain things, like using the camera.
- The battery life is pretty bad. I'm usually at 50% by the end of the day, and I really don't think I do anything that crazy with it.
- The iPhone 4, on Verizon was 3G. The 5s is LTE. I haven't seen much of a difference in speed, in everyday use. But I haven't really done much that would stress the network connection. In general, anything that relies on the internet connection over LTE has worked well.
I went to NYCC this year. I didn't go to San Diego this year, nor did I go to any other conventions, so this was my one and only convention for the year. The con was very well managed, and very crowded. Getting in could take a while, but once you were in, it wasn't that much of a hassle to move around. The exhibit hall was quite crowded, but navigable. There were a few interesting panels, but nothing quite like you get in San Diego. I bought only a handful of books, mostly discounted hardcovers and trade paperbacks. (I realized at one point that I still have stuff I bought at NYCC 2011 that I haven't read yet.) I'm not sure if I'll bother going next year. Maybe I'll just go in for one day. It's fun, but there's not really enough interesting stuff to keep me occupied for all four days. (In fact, I wound up skipping Sunday and going to the Met and MoMA instead. The Magritte exhibit at MoMA is pretty good, by the way.)
Labels: Apple, comics, health
I decided recently that I really need to lose some weight. So I started using Lose It
about two weeks ago, to track my calories. I also bought (and read) their book
. I'm not sure if my scale is accurate enough to say whether or not I've really lost any weight yet, but, if it is, then I've lost a couple of pounds. My goal is one pound a week, until I've lost 30 pounds, so, if that works, I should hit my goal in mid-March 2014. Assuming that Lose It is giving me correct numbers about my calorie budget, then I don't think I'll have a huge problem sticking with the program. I've stayed within my calorie budget every day so far, though I've had to make some guesses about calories recently, so I don't know if I've *really* stayed within the budget.
The last several days have been a bit rough. I went out to dinner with a friend on Wednesday, and had a meatball parm sandwich, which was definitely a bad idea. Then, we had a department lunch on Thursday at an Italian restaurant. We had three entree choices, and I ordered the one that seemed likely to have the fewest calories, but it probably still had more calories than I wanted. Then, on Friday, we had a department barbeque, which I just skipped out on. But another friend wanted to go out for dinner Friday night, so I did that, and had a small steak. Saturday was fine; I only ate good stuff that I knew the calorie count on. But today, I went downhill a bit again, since I went out to brunch with my brother (banana pancakes), then picked up a couple of empanadas at the Somerville Jazz Festival this afternoon. (They were from a restaurant here on Main St that makes *great* empanadas!) If I guessed right on calorie counts, then I'm still within my budget. But who knows, really?
I should be able to do reasonably well in this coming week. We've got no work events that should cause me to deviate from eating relatively low-calorie lunches. I don't have any particular plans for going out to dinner, but I probably will once or twice. I'll just have to be careful.
On the exercise front, I'm just trying to get in a lot of walking. The weather has been pretty good, so it hasn't been a problem to do a fair amount of walking. I'm worried about keeping that up once it gets cold out though. I've been looking around at cheap treadmills that would fit in my apartment, or a local gym that's got treadmills. (We have a gym at work, but I'm not that enthusiastic about it, for several reasons.) The treadmill thing is actually turning into a challenge. I haven't found a local store that actually carries manual treadmills, which is what I'd need to buy if I want a reasonably-priced, compact, folding, model. I can just order one from Amazon, but I'd really like to check one out first. And, on the gym front, there's a new fitness place opening on Main St, but they only have exercise bikes, no treadmills. I also tried the local YMCA, but I had trouble finding anyone to talk to there, so I have no idea if they have treadmills or not. I may have to try calling them during the week.
I don't want to turn my blog into a diet and fitness blog, but I thought there would be some value in writing this up, for future reference. If I meet my goal in March, then I can look back and see where I started. And, if I don't, maybe I can look back and figure out what I did wrong!
Labels: food, health
contact and calendar management
A few years back, I wrote up a couple of blog posts on my search for the "holy grail" of contact and calendar management. Back then, I had a BlackBerry, and I was hoping to find a good way to keep things in sync between the phone, my PC, and my Mac. I went through a few less than perfect options, which aren't worth going into at this point.
Nowadays, I've got an iPhone, and I've found that iCloud does a fine job of keeping the iPhone, iPad, and Mac in sync. On the PC, I really don't bother trying to keep a full set of contacts in Outlook anymore, nor do I keep my calendar there. I can always look anything up on icloud.com or on my iPhone. And, while I use Gmail for most of my mail, I don't really feel a need to keep my Gmail contacts fully up-to-date either. There's really only a small set of people who I e-mail regularly, and they're all in my Google contacts, so there's no problem there.
So, since everything's working so well, of course I'm starting to mess around with it. I installed the vipOrbit
app on my iPhone this week. It's a program for managing contacts and calendars. Right now, the iPhone and iPad clients are free, the Mac desktop client is $30, and the sync service that I would need to subscribe to is $45/year. So I thought I'd start out by trying the iPhone app, and see if it was worth going any farther with it. The app imported my contacts from the main iPhone contact app with no problems. But, I found that it did not import all the fields. In particular, it didn't import birthdays or the free-form notes field from contacts. The app has several user-defined fields available, so maybe there was a way to map those and import the birthdays and notes into them, but it wasn't obvious how I could do that. I played around with the app a bit, and, while I think it might be useful for a salesperson tracking leads and/or customers, it's not really useful enough for me to justify both the price and the inconvenience of keeping my contacts and calendar outside of the normal default iPhone apps.
Next, I may choose to try out fruux
. Fruux is just a sync & backup service for contacts, calendars, and tasks. So, I'd keep using the default iOS apps, but would keep things in sync with fruux instead of iCloud. I honestly have no good reason to do this, except "just for the hell of it". Or maybe so I can say I'm not 100% tied in to the Apple ecosystem.
Labels: Apple, GTD, software
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.
Labels: Dynamics AX, programming
© 2011 Andrew Huey