Thursday, July 30, 2009

Start-up opportunity

I met with Ben A. and discussed his start-up opportunity. He has an interesting idea and I need a little time to get things sorted out in my head. (I won't discuss details here.)

We talked for about two hours, reviewing his plan and some of the technology that is necessary to make it happen. It is certainly reachable with technology; for me the question is will it succeed in the marketplace?

Javascript experiments part 1

I experimented with Javascript this morning. The "Javascript Missing Manual" explains the language and the concepts clearly and with meaningful examples. (I'm using the ACM's connection to O'Reilly Safari for the on-line version of the book. I prefer paper books but on-line at least allows for copy and paste of code samples.)

So far, I've learned a bit about Javascript. Read that as "made errors and then figured out what was wrong". I learn only from my mistakes, so the more mistakes the more I learn!

I'm using KWrite as an editor and Opera as the browser. I'm not concerned about browser compatibility since I am using jQuery and it handles most of the browser issues. I'm not too fond of KWrite though; I would prefer an editor with better syntax highlighting.

In other news, a recruiter from ManPower called last yesterday with an opening for what they called a senior architect. I looked at the job description that they sent via e-mail and am not quite sure what to call it. The hiring company (I think that it is Lexis/Nexis) wants a person with strong technical skills, strong project management skills, and strong presentation and mentoring skills. The recruiter told me that the position was in either Cary, NC or in a city (I forget the name) Ontario.

The recruiter called back an hour later and asked if I had reviewed the description and the questions accompanying it, and also indicated that this was an urgent item. I promised a response by this morning, and she seem satisfied if a little disappointed.

I'm not too keen on recruiters playing the "urgent" card, especially when they don't really know the candidate. I'm guessing that an "urgent" position has been handed out to several firms and they are running to find candidates quickly. A brief search of the web showed that there were several job postings with selected text identical to Manpower's description.

I understand that staffing companies compete, and that they need to supply candidates before the other guy. I think the last minute scramble to search the web job boards, quickly identify candidates with scripted questions, vet them with a senior recruiter, and possibly place them before a hiring company is a poor use of time and resources. It certainly wastes my time, and I can't see it making the recruiters any friends. It sends the message "you are a commodity that we happen to have a need for right now, and we'll take advantage of that, but after this opportunity we're not really interested in talking with you".

Maybe this is the result of the "hiring company pays" model. Since I'm not paying, than I am the commodity.

Wednesday, July 29, 2009

Javascript and interview

I read more on Javascript this morning. I learned abuot opening new windows and with my new-found knowledge I understand better the problems we had at UPS with the HTML help files generated by RoboHelp. (They would open new windows or replace contents of existing windows, usually when we wanted the other behavior.)

Today's phone interview went well. It was a technical screening interview, to verify that I have the skills that they need. Or to at least get me to the next level of interview. I did better than I thought on the database questions and worse than I thought on the C#/.NET questions. If I pass, I will be invited for an in-person interview.

The person running the Yahoo-like start-up called today, and we have a meeting set for tomorrow. From his explanation, this is a completely new venture - no code or infrastructure exist. No employees, either. I've begun listing the things that they will have to worry about, from development and source code control to production and migration processes. I filled the back of an envelope quickly and I am still thinking of more things. There is quite a lot; fortunately they don't have to be handled all at once. Many items can be deferred; the important thing is to decide which.

Tuesday, July 28, 2009

Well, today I read up on Javascript but ran no experiments. I'm comfortable with the language - lots of operations are similar to those in Perl. I have some specific tasks in mind for Javascript: setting the focus to an input field, verifying that text has been entered, and validating text against a format. (All things that can be done natively in HTML 5, since they are so common on the web. I won't need the exact code when the web grows up to HTML 5, but I can use it before then.) I see more reading in the future.

The phone interview with OMB turned out to be not OMB but the contracting company that provides people to OMB. (There are lots of layers in this opportunity.) The job has a number of challenges -- better than the original description. Of the positions I am discussing with folks, this one seems most interesting. The manager I spoke with said he had a few other candidates to interview; I hope to hear something in the next few days.

Tomorrow I have another phone interview with a different company, one a little more local to Baltimore than the OMB. It's a drive, though, not within the transit circle.

Back to normal

After the conference, one returns to the normal routine.

I spent a bit of the morning going through contacts from OSCON and connecting with them through LinkedIn and e-mail. One company (Eventbrite) is looking for a Python programmer for San Francisco. I'm not the right person for that slot, since I don't know Python. (Note to self: add Python to the list of tech to learn.)

I met some former co-workers for lunch yesterday. It got me out of the apartment, and away from the computer -- for a short time.

This morning I checked Craigslist and responded to an ad placed by Ukazoo. They ran ads a few months ago, and I responded to them too -- with no response from Ukazoo. I find the position interesting but the ad a little disturbing: it lists "experience 0 to 15 years". I wonder if they are discriminating on age. And with the frequency of ads either they are expanding, or they didn't hire someone, or they cannot hold on to people.

Today I have a phone interview with someone from OMB. Also, I plan to experiment with Javascript.

Friday, July 24, 2009

OSCON 2009 day 5

Day 5 of OSCON 2009 -- the last day of the conference.

The OSCON schedule is pretty aggressive: four full days of keynotes, sessions, and events with evening activities too. The fifth day is a "half day" with keynotes and sessions running up to noon or thereabouts. Yet it doesn't end at noon. There was a get-together (with lunch provided) after the wrap-up session and then informal conversations for as long as one wanted. I spent some time chatting with a fellow Nokia N800 enthusiast.

Keynote sessions today covered open source principles in federal government and "rewilding", the ability to value natural effects and refrain from controlling them. (Think wildfires on a natural schedule for stronger forests, but applied to many other areas.)

I attended sessions on HTML 5 and cloud computing. There are good things in HTML 5 and the major browsers are on board to implement the standard. Cloud computing still eludes me, but it is slowly coming into focus. Right now, I view it as commodity computing power for web servers, scalable up and down as you need it. There are competing APIs, just as there were competing standards in the early days of electricity. I'm confident that common standards will emerge; once they do I expect adoption to increase quickly.

Cloud computing also raises the bar for programming. One needs strong languages to work effectively in the cloud; transporting current applications won't work. Programs need to be designed for scalability and parallel processing (or at least multiple instances). Languages such as Ruby and Groovy are more effective; I'm not sure that Java or C# can do the job.

Looking back at the conference, I am impressed with the variety of projects. Open source has moved beyond the typical set of Linux, Apache, and Perl. (Of course, it expanded beyond those many years ago.) There are lots -- and I do mean lots -- of projects and new concepts in open source. It will take some effort to identify the relevant fraction and keep up with them. If you're not paying attention, then you are falling behind!

Thursday, July 23, 2009

OSCON 2009 day 4

Another packed day at OSCON.

The day started with keynote sessions.

Technical sessions included cloud computing with Eucalyptus, managing innovative teams, graph databases, and patterns in dynamic languages. The last was the best of the sessions. The presenter showed how Ruby and Groovy have implemented some patterns (Iterator and Command) into their syntax, and how other patterns (Strategy, Decorator, and Command) can be implemented easily. The "patterns" book was written in the age of C++ but languages have advanced a lot.

A bonus in the "patterns" session was seeing what Ruby and Groovy can really do. They have capabilities that are not present in the traditional languages of C++ and Java. (Which is interesting since Groovy sits on top of Java, or at least the JVM.)

In other news, I have given away almost all of my business cards. Next time I must bring more!

Wednesday, July 22, 2009

OSCON 2009 day 3

I attended several sessions today. First up was Tim O'Reilly's keynote on open source and transparency in government. Then sessions on maintenance and abstractions, private cloud systems, profiling tools for Perl, leading teams, testing web apps, Ruby on Rails 3, and visualizing large data sets.

There were conversations between classes and at lunch. Some even talked about computers and tech! (I think that others, like myself, need to talk about other things to keep from going crazy.)

I ended the day with an informal session held by Yahoo. They are looking to hire people and they presented information about Yahoo -- their internal systems, the skills they look for, and the good (and bad) things about working at Yahoo. I chatted with a few Yahoo-vians (Yahooligans?) and left my contact information.

Tuesday, July 21, 2009

OSCON 2009 - days 1 and 2

I've attended some good sessions at OSCON 2009 so far. Yesterday saw sessions for the Google App Engine and iPhone programming. The former lets you create cloud applications; the latter lets you build apps for iPhones. Both are easier than I expected.

Today I was in sessions for Gearman (the remote worker task manager), improving APIs (Damien Conway), and Semantic technologies for storing data.

The best sessions have been lunch and dinner, where I can meet other folks and we can exchange ideas more informally. Today at lunch I chatted with a few folks and one of them showed me a web site that tracks consulting jobs by rate, technology, and location. Very interesting! This kind of information lets one identify the "up and coming" technologies.

Saturday, July 18, 2009

Javascript

I've been experimenting with Javascript these past few days. Using the ACM-provided subscription to Safari, I've been reading books on Javascript and going through the tutorials. The overview of browser internals from Dynamic HTML has been very helpful -- it provided a good mental map of the innards of the browser.

The tutorial exercises, so far, have been light. They are designed for people familiar with web pages but not coding. But I'm happy with the pace; I need to absorb/internalize the browser side of things.

While that's going on, I've been thinking about creating my own task for Javascript code. I work better with specific goals, and I used that technique to learn about PHP programming on the server side. My goal there was to provide statistics for source code.

I'm thinking of a list subscription web service, one that allows individuals to sign up for different lists. I had wanted this at UPS; it would have eliminated some administrative work for Worldship builds. The idea is this: System administrators create mailing lists and use them to send notices (for whatever events they want). Individuals sign up for mailing lists (subscribe) and unsubscribe as they want. A self-service mailing list, if you will. (I need a way to verify e-mail addresses; I can't allow Sam to sign up with Ryan's address.)

Wednesday, July 15, 2009

Job criteria

I'm often asked to describe my ideal position. I look for several things.

First and foremost: smart, creative people. I don't need specific technology

Second: challenging work. I want to contribute and I want to learn new things.

Third: new technology. For me, this would be web technologies, social networks, and mobile app technologies.

Fourth: location. The location tells me the commute and the possible options for the commute. My preference is a location with options for the commute. If I have to drive, then my preference is for a location away from the rush hour traffic.

Fifth: the compensation package. This includes salary, insurance, time off, and retirement package.

Most job boards and recruiters match the technology against current skills, with no thought to the other criteria.

Yet another recruiter interview

I received a call from yet another recruiter this morning. This recruiter has a position with a company in Maryland, north of Baltimore. I like that location more than the southern ones; the commute is much easier.

Looking back, a number of recruiters have called me recently. I'm taking that as a result of the market, and not as a result of my resume-writing skills. This could be a good thing.

I scheduled a meeting with this recruiter for the afternoon.

Tuesday, July 14, 2009

Interview again

I interviewed another recruiter today. (Different from Friday and yesterday.) The meeting went better than I expected.

This recruiter is a big name recruiter/staffing company and they have lots of paperwork. I'm less than thrilled with that aspect. On the plus side, they have some opportunities that may be of interest.

The recruiter called this morning, apparently as a result of my updating my resume on dice.com. Since I had nothing else planned for this afternoon, I set up an interview.

The position is with a small defense contractor in Annapolis Junction. Plusses: Not too far, small company, and its a job. Negatives: defense world, clearance world, have to drive to the office.

I'm glad I went. I'm hoping for one of the other opportunities to come through. (They also have mildly interesting technology but are reachable by means other than car.)

Monday, July 13, 2009

Interview and web pages

I interviewed a recruiter today. (A different one than Friday's interview.) This one also seems a decent person and a capable recruiter. I reiterated my desire to work with smart, creative people. To me, that is more important than a specific technology or location.

This week-end I picked up Dynamic HTML: The Definitive Guide and started reading it. I found the first edition, which is a bit dated now. It talks about IE 4 and Netscape 4 and the proposed HTML 4. A lot of the proposed topics in the book have become standards and I should look into finding the latest edition.

Yet a lot of the book is helpful to me. It has given me a better understanding of the browser and how it has grown from a simple HTML renderer to include style sheets, the DOM, and Javascript. These are the components (along with AJAX and the XmlHttpRequest, which are covered in later editions) that make for dynamic web pages.

Sunday, July 12, 2009

Interview with a recruiter

I interviewed a recruiter from Prism on Friday. They are in Virginia; I am in Baltimore; we met in the middle at Union Station in Washington. They seem a decent bunch of folks. One thing I like about them is their policy of meeting candidates. (Not all recruiters have this policy.)

Prism works with a number of companies and organizations in the Washington area. My impression is that most of their clients are in the defense industry. This is disapppointing, as I am looking for smaller companies.

In other news, I visited the Book Thing on Saturday and wore my "Thorium-Indium-Potassium" t-shirt. It's a good conversation starter, as enough people recognize that the symbols are elements, yet they spell out the word "think". Science and fun, together!

The shirt started a conversation with another visitor to the Book Thing. He's a local engineer and in need of assistance with an MS-Access application he wrote. I didn't have an answer for him immediately but we did exchange cards. And later that day, after some research, I found a possible solution for him and sent him an e-mail.

One never knows when one will meet an opportunity!

Thursday, July 9, 2009

Interview!

I interviewed with Tricom today. They are a small company that supplies talent to local government agencies and schools.

I think the interview went well. They seem a decent set of chaps and they have a good process for their interview. The interview consists of three parts: an review of their company, a test for the candidate, and a discussion of the position. They put some thought into each of these parts.

For the test, I picked the SQL database access question. My first through was "Oh this will be hard". After building a small GUI, my second thought was "This isn't so hard". Then moving to the database access, my initial thought was "oh my gosh I have no idea how to do this", quickly replaced with "use the help!". With the on-line Microsoft help, I was able to use a set of classes and methods to extract the desired data. Why does my brain, when confronted with a problem and have no immediate solution, think that I will fail? Has it no confidence in the rest of my brain?

They have some other candidates, and should get back to me next week.

Wednesday, July 8, 2009

Networking and GnuPG

Two things to report today: some networking tonight and an interview with a staffing company for tomorrow.

I went to the CALUG (Columbia Area Linux User Group) meeting tonight. At this meeting, like last night's, was a recruiter! (A different recruiter from a different company.) The main topic of the meeting was GnuPG, but we talked with the recruiter first about a challenge that she had: interviewing and identifying competent Linux administrators.

Vetting a Linux administrator (or a Unix administrator) is easy... if you are an experienced administrator. If you're not, then the problem is quite hard. Various folks had suggestions. The recruiter was hoping to come up with a list of questions for candidates. This method has two problems: administration is general and some questions may not apply in some cases, and a candidate can easily answer a question and fool the questioner (unless they are an administrator).

Tomorrow I interview at Tricom, a small staffing company in Crofton. They e-mailed me this morning about a local position which requires VB.NET; I sent them a response with the good/bad matches to my skills; they want to see me tomorrow. I have the time, so off I will go! If anything, the interview will be good practice. (The position is local which is nice, and connected to the University of Maryland which may give me some good connections, but it uses VB.NET which I have never used, and has no (apparent) connection to web development. An interview should provide more information.)

Tuesday, July 7, 2009

Silverlight: pretty but confusing

I went to the CMAP (Central Maryland Assotiation of .NET Professionals) tonght, and attended a presentation on Silverlight version 3. The presenter was knowledgeable and competent. His material covered  a lot and in a clear manner, and he answered questions quickly and precisely. So I think that I have a good understanding of SIlverlight.

What I don't understand in Microsoft's overall strategy for development platforms. They have several, with lots of overlap.

First is Windows Presentation Framework (WPF), or the "classic" .NET development environment. Applications run under .NET on Windows and nowhere else. Except maybe on Linux under Mono, the .NET clone (not a Microsoft product). Mono lets many WPF applications run, but not all, since not everything in .NET has been ported to Mono. So an app can run under Mono, unless it can't.

Second is ASP.NET, which handles web applications. These may include Javascript in the client and AJAX between client and server. The server will always be Windows Server with IIS and the browser is always Internet Explorer except in some cases when it can be Firefox on Windows or Safari on OSX.

Third is Silverlight, which has morphed from a video player into a full-blown development platform capable of executing logic and displaying a GUI to the user. Silverlight runs in the browser (Internet Explorer, Firefox, or Safari) except when it runs in non-browser mode. There is a clone called Moonlight (also a non-Microsoft product) that lets Silverlight applications run on Linux. Unless they do something that isn't supported in Moonlight, in which case they can't run on Linux.

Fourth is something called "RIA services" (the RIA stands for "Rich Internet Application") which can be used for, well, rich internet applications.

All of these platforms overlap. If I were starting to build an application today, I wouldn't know which one to pick. I don't have time to learn them all (each is quite complex with various strengths and limitations, many of them not obvious) and once I picked one I would immediately have "buyer's regret", fearing that a different platform would have been a better choice.

In sum, I think the meeting was good, and the presentation was good, but now I even more convinced that the Microsoft platform is expensive and time-consuming.

Networking opportunities

In an earlier post, I said that I would put more effort into networking. I've made some progress.

I have two networking opportunities lined up for this week. First is a meeting of CMAP, the Central Maryland Association of .NET Professionals. (That acronym doesn't look quite right. Where's the ".NET"?) They will have a presentation on the latest version of Silverlight. This will be the first CMAP meeting that I attend.

The second opportunity is a meeting of CALUG, the Columbia Area Lunix User Group. I've attended a few of their meetings and they always have interesting topics. This month's meeting is about GnuPG, the excryption tool for Linux. Previous meetings had presentations on the Google Android phone platform and the KDE desktop manager.

I want to look around for other opportunities, perhaps on a slightly more professional level. The GBTC group (Greater Baltimore Technical Council) may be a good start.

Web services are easy; web systems are not

I've successfully built a web service!

It was easier than I expected. I leveraged my existing "source statistics" web application and created a new "page" that provides the statistics data in XML format. The PHP program for the web service is simpler than the PHP program for the standard web page, since it doesn't need the descriptive text and graphics.

I also created a small program to use the web service (the client program). I wrote it in Ruby. I picked that language for two reasons: I want more experience with Ruby and the examples in the RESTful Web Services book are in Ruby. The web service client program took longer than the web service, mostly for me to learn about parsing XML in Ruby.

Ruby has a very nice XML parser! The REXML library pulled in the XML document and let me iterate over the desired elements. After a little experimentation, I had the program I wanted.

The more I learn about web services, the more I understand the issues. Web services, by themselves, are easy. The difficult part is composing a system of web services. The higher level requires a good understanding of the low-level services available, plus an understanding of performance and scalability.

What tools and techniques are available to architects?

Friday, July 3, 2009

Web services are easy

I started reading about web services today, using the on-line Safari book collection. I'm reading O'Reilly's RESTful Web Services, which seems a good introduction to them.

Web services are easier than I thought. Here's a quick run-down:

Web services run on top of HTTP just like the web. With a "normal" web request, a human uses a browser to request a document. The web server returns the document in HTML format. (There are some variations on this, such as dynamically generated documents.) The browser renders the HTML for the human.

With a web service, a program makes the request, not a human. The request goes to the web server, which returns data in XML format, not HTML. Like a normal request, the result may be static or dynamically generated. The program then picks apart the XML and does whatever it needs with the data. There are some differences between REST and SOAP, but the idea is the same.

I suspect that the big challenge is not the technicals of requests and responses, but organizing the front-end and back-end programs. Web services define an interface, and they are always important to get right.

Wednesday, July 1, 2009

Phone interview with CACI

I had a phone interview with CACI today. This was the second phone interview. The first one was a few weeks ago with the project manager. This one was with a technical lead. He described the work that they do, asked me a few questions about C#, and let me ask a few questions.

The C# questions were fairly easy, although I  stumbled on the "what is the difference between a shared and private assembly?" question. He also asked about PHP, which was not on the original description. I told him a little about my first web app using PHP and MySQL.

I think that the interview went fairly well, but I'm not pinning my hopes on this position. They are migrating a system from C++ (and other languages) to C#. I would rather move to dynamic languages (Python or Ruby).

Their offices are close to a stop on the MARC rail line: about a one mile walk. This is an advantage; I would like a situation where I do not have to drive.