Sunday, January 29, 2012

A tool to help understand web pages

With a little Ruby, a little GNU, and some reading, I built a small utility to help me understand web pages.

The utility takes the HTML, picks out the links, and draws a map of the web site. It shows which pages link to other pages. (It works only for static pages, not dynamic ones.) The result is a PostScript image with pages listed and arrows connecting the pages.

I can use this to navigate web pages and get a view from a height. I can also find 'orphan' web pages, pages that are not linked.

I used a lot of off-the-shelf components: Ruby and its built-in functions for parsing HTML, GNU sort, and GraphViz. The components do the heavy lifting, and save me a lot of time.

It was a good exercise. I learned a lot, and now I have a useful tool!

Saturday, January 28, 2012

Three years

It was three years ago that I started this part of my journey. I left the comfort of a secure position in a large company and struck out in search of new opportunities. At the time, I knew that it was risky, and that it was either a smart thing to do or a very foolish thing to do.

Looking back, the evidence leans towards the "smart" side. I have acquired a position with a smaller company, and the pay is a little less than before, yet I have met knew people, broadened my view of the technology world, and learned a lot about tech and myself. I am more in touch with the local technology and creative scene. I have a better appreciation for project management and corporate management. I have shed some arrogance and improved my interpersonal skills.

Looking forward, I am positioned for the coming changes in technology. Mobile computing, cloud-based processing, new languages, big data, and user experience will all change the way we build programs. The old ways of project management won't carry us through the changes. (Yet they are not obsolete. The previous techniques for project management are still useful; they are not enough on their own.)

I'm looking forward to the next chapters.

Saturday, January 21, 2012

CreateBaltimore

I invested time at the CreateBaltimore un-conference today. This was a meeting of folks in Baltimore who consider themselves creative, and who want to help improve the city and the state of its inhabitants. It's a good arrangement: people self-select themselves in, so the attendees are all interested in problems and solutions. (It's also a casual and not glamorous event, so there is no incentive for fame-seekers to attend.)

The conference started late, due to inclement weather, but it still allowed for a long session (from 10:00 to 17:00) for conference sessions and informal conversations. It was an excellent way to meet folks in the area, folks who want to make a change. (And a few were looking for developers!)

Wednesday, January 11, 2012

A group meeting about git

Tonight's CALUG meeting had a presentation on 'git', the version control package. (I am starting to think of software in terms of "packages". Probably an influence of Linux.)

I like git. I find it easy to use. Yet I think it has a ways to go. A few years ago, I would have thought that git (with its GUI tools) was a sufficient product. Today, after the "tablet revolution", I feel differently.

Tablet computers have raised the bar for a typical application. Now I expect that an application installs quickly, configures itself (except for a user ID, password, and possibly an update frequency), and handles everything through a simple graphical interface. (Not the command line, and not a complicated multi-dialog interface.)

I believe that the folks working on git can improve it and make it "first class".

I will point out that other version control systems have similar challenges. Microsoft's TFS has a good user interface, but requires lots of configuration. Subversion and CVS need bolted-on graphic front ends which work -- more or less -- and they also need a lot of configuring.

Someone will figure out version control, really figure it out, and then we will have the "iPod of version control". I think that git is in the best position to achieve that goal.

Sunday, January 8, 2012

Apache and PHP

I configured Apache and PHP today, and converted a web page from plain HTML to PHP format. With these changes, we can create templates for web pages and slug in the content that we want. (That's the whole point of PHP.) Separating the content from the HTML will make it easier to update the web page, since we can replace the content file and leave the HTML in place.

Saturday, January 7, 2012

Changing servers at the new year

I'm changing my server configuration at home. These changes will support my efforts with local organizations and their web sites.

I installed Ubuntu Linux Server on //ophelia (an old Dell Optiplex GX280). This install was quite simple, with a no-nonsense approach and few questions. I picked SSH, LAMP, NFS, Samba, and printer server options. It doesn't include NTP, so I will have add it later.

My goal is to make //ophelia my main server, hosting my "alternate home" directory and serving web pages. Certainly not the configuration that a real shop would use, but acceptable for my needs.

Tuesday, January 3, 2012

Refactoring for fun and profit

I have been working on the "convert C++ to C#" project for several months, and this week I have achieved the "factor out code to objects" level. It has been a long, long wait, as I converted code and divided the poorly-organized C++ into better-organized (although not perfect) C# code.

Today I was ready to refactor code into smaller classes. I had the code converted to C#, and tests to ensure that refactoring would change no functionality, and I was looking at the code... and the changes just came to me. It was a no-brainer, an obvious operation. I was able to separate three sections of code into distinct classes -- but the last class needs a bit of work, given the (ugly) API that it requires. But I am even happy with that, since the API is obviously ugly and a sure sign that a better design is waiting.