Friday, April 17, 2009

Open source or Windows?

It seems that one of the great decisions before me is the choice of technologies. Microsoft or open source? Microsoft has the complete stack: operating system, development tools, web server, application server, and office programs. Open source has counter offers: operating system, web server, application servers, and office programs. Microsoft is by far the more popular stack, especially among companies. (On the other hand, defense agencies have a lot of positions for opern source technologies including PHP and Ruby on Rails.)

None of my current computers will support Windows Vista. If we assume that Windows XP is gone (not necessarily true) and that one must either run Windows Vista or Windows Server 2003 (or Windows Server 2008) then I need a more powerful computer. Possibly a computer that can support multiple virtual PC guests, although I am not sure that the Microsoft licenses allow Windows to run as a guest virtual OS under a non-Microsoft OS like Linux.

If I had to, I could purchase a new computer (probably from TigerDirect) and put Windows on it. I would probably purchase the Microsoft MSDN package -- it uses a subscription model of $1200 for the first year and $800 for successive years -- to get the Windows license and the other licenses that I need for the Microsoft stack. Those licenses would include Windows, SQL Server, Sharepoint, APS.NET, IIS, Visual Studio, C#, and MS-Office.

The Microsoft route is expensive. I am considering the open source route. Linux instead of Windows. MySQL instead of SQL Server. Apache instead of IIS. PHP instead of ASP.NET.

I have a computer here that can run Linux (it does now) with Apache. I have installed PHP but Apache is not recognizing it; I have to adjust the configuration. In time, I am sure I can find the problem, correct it, and get PHP running. That opens the door for CMS systems like Joomla and Drupal.

A good chunk of today was spent with Apache, PHP, and configuration files. I made some progress but not enough; Apache serves static pages but does not recognize PHP. More work for me this week-end!

Wednesday, April 15, 2009

I went to both interviews -- the recruiter and the hiring company -- and both were good experiences. The recruiter is a decent chap and gave me honest feedback and good advice. He will keep me in his list but does not have anything that is a good match at the moment.

The interview with the hiring company (Quotient) also went well. This was the first interview in which I was excited about the opportunity! They have a lot of technologies and a dynamic environment. The latter can be a good thing or a bad thing -- it means that their plans change as conditions around them change. Changes could be caused by a new contract, a change to requirements for an existing contract, or maybe something else. It won't be the stodgy "arrive at 8:00, sit at your desk and perform the planned tasks, and leave at 5:00" work of the nineteen-fifties.

Quotient builds a lot of web applications and uses various content management systems. Many of their technology choices are dictated by their clients; clients hire them to modify or expand existing systems, and Quotient works within the existing set of tools and technologies. Which means that one client may be using the Microsoft stack (Windows, IIS, ASP.NET, and SQL Server), another client may be using an open-source stack (Linux, Apache, JSP, and MySQL), and a third client may be using a hybrid stack (Windows, Apache, PHP, and SQL Server). Flexibility is important for them.

Today I will invest some time in Perl and the database manipulation script. I'm working with text files first; later I will use Perl/DBI and talk to a MySQL database.

Monday, April 13, 2009

Sharepoint analysis

I've been busy these past few days.

I met with a former co-worker who was gracious enough to give me some advice and some listening time. He is working as an independent contractor and doing a lot of work with Sharepoint. He recommended that I build skills for it. It is a reasonable course, and one I had not considered. Sharepoint is rather popular and I had used it at UPS. Learning Sharepoint will be a challenge: it runs only on Microsoft Windows, and you need at least two computers: one for the server and the second for the client. The server piece runs on Windows Server, so you must have the "server" flavor of Windows: Windows Server 2003 for now, although Windows Server 2008 is out. (But does Sharepoint run on it?)

Configuring an environment for Sharepoint would require, at minimum: A PC running Windows Server, the Sharepoint server, MS SQL Server, and MS IIS; and another PC running Windows (probably Windows Vista) and Windows Internet Explorer. Even with the magic of virtual machines I would need to acquire hardware and software. At least one PC to host the virtual machines, the virtual PC software (probably VMware), and the licenses for Windows Server, Windows Vista, Sharepoint, and MS SQL Server. (IIS and IE are available at no charge.) Not a small outlay. It could probably be reduced by purchasing an MSDN subscription; the individual pieces are probably more expensive. Will think about this before jumping into it.

In other news, I have two interviews this week: one today and one tomorrow. The former is with a staffing company; they have a position in mind. The second is with a hiring company in Columbia. The second position sounds more challenging, the first has the better commute. But I won't worry about that choice until I pass the interviews.

Tuesday, April 7, 2009

Time-boxing and interactions

I'm following the advice of several people. That advice is: limit time spent on job-search activities (that is, don't let it take over my entire day) and get out and meet people. I think these are both good ideas, and to some extent complementary.

It is all too easy to spend the entire day looking at job boards, adjusting my resume, and updating the social network sites (such as LinkedIn). But I can do only so much in a given day before the tasks become trivial: re-scanning the same job board to see if something new has arrived, or pressing the refresh button to see if someone has accepted an invitation to join my network. Some work is necessary, but it should be *effective* work.

Getting out and going among people is also important. Sitting at home at the computer and phone does not keep my interpersonal skills fresh. Interaction with other people does. They don't have to be job search meetings or "network" meetings - they can be any interaction from a discussion with a friend to a conversation with the pharmacist. They can be long and cover many topics or short and only one topic. There is probably something wired into our brains that requires us to interact with other people. (And there is probably room for several doctoral theses on this subject.)

Yesterday I responded to an ad on craigslist, today I had a brief conversation with the recruiter for the position. It seems a decent match, and the position is closer than last week's, which is good. It also seems within the "transit circle", which is also good.

Friday, April 3, 2009

Sushi

I met my friend and former co-worker, and we did indeed have sushi this evening. And a good conversation about the economy, technology, and life in general.

Earlier today, I worked with Subversion. I successfully moved a repository from one computer to another. It was a small repository, which made the job easier. The process is the same for small and large repositories: disable access, dump the repository to a single file, move the file to the new server, load the repository from the file, and enable access. Then, on all client PCs, do either a "switch" command or a new "checkout". It took a little while to get the exact right "checkout" command, but things are working again. I can now take the repository off the first PC and free that space.

No contact from Dynasplint today, which is a little disappointing. I would have expected a thank you from them, to at least acknowledge my time and effort for the interview. Hmph.

Looking forward, I think I can start some efforts with Ruby and the measurement and analysis of source code. I am going to start with the rudimentary items: lines of source code and then non-comment lines of source code. The non-comment lines of code will be interesting. It is easy to remove comments for older languages such as FORTRAN, C, and C++. Java and C# aren't too bad, but C# has some interesting aspects such as attributes that can make line counting difficult. (Should an attribute line be counted as a source line? And how does it count towards complexity?)

Languages such as Perl and Ruby offer more challenges to identify comments. Lines that begin with the hash character ('#') are comments, and lines that have a hash in them are partially comments, but some lines can contain hash characters in string literals and those hashes do not demark comments.  And hashes in regular expressions do not demark comments. And regular expressions are hard to identify: they can begin with any character, not just the slash character.

I would like to use a modular approach, one in which I use separate programs to perform distinct functions. That may be difficult; I may have to parse (not just text-hack) Perl programs. Well, let me start and see how things turn out. I'm not going to design everything up front and then find that the design fails.

Interview - Dynasplint

I interviewed Dynasplint yesterday. They are a mid-sized company here in Maryland. I met with the director of IT, a programmer, and the director of HR. They asked several questions about SQL but not about C++ or X++.

They seem a decent set of folks, and I think that I could work with them. The biggest problem would be the commute: about an hour, driving. Transit is a possibility but that pushes the commute time to 1 hour 45 minutes.

The interview lasted two and a half hours, which is a good sign. I sent a thank-you e-mail yesterday and have heard nothing back, which is also good -- they haven't said "no".

Today I meet with a former co-worker for a light dinner. It might be sushi!

Wednesday, April 1, 2009

Interview

My work on job boards has begun to yield results. I have an interview tomorrow with a company in the area. They use C# and X++ (that's a new one to me). The have a very small IT shop and I spoke with the directory today. This may be an interesting opportunity.

In other areas, I had a breakthrough on the LDAP project. I now understand quite a bit more about LDAP and how it is used for authentication. I needed a better understanding of the authentication mechanisms in Linux. The LDAP book did not cover those, and shouldn't, since it focusses on LDAP. I don't have the complete set of answers, but I feel that I made progress today.