Monday, June 29, 2009

Network, network, network!

I've been spending a lot of time building technical skills, either reading or sitting at the keyboard and programming. When I'm not doing that, I've been checking the job boards and talking with recruiters.

Which means that I have been neglecting the third "leg" of my search: networking.

This week I am going to put more effort into networking: going out and talking with people, meeting new people, and discussing trends in the market.

Thursday, June 25, 2009

I know more than I realize

I know more about Microsoft's database technologies than I realized. I've just finished reading Roman's Access Database Design and Programming. Each chapter was familiar, from the database design concepts to the SQL language syntax to the DAO and ADO classes and methods for accessing data.

I had worked with ADO a few years ago, writing utility program to manipulate ODBC and MS-Jet databases. The "ODBCdump" program extracted records from an ODBC database (any source type) and converted them to text for processing in pipelines. The "ODBCsql" program executed SQL commands against a database and was useful for injecting data into a database. I used both of these programs as part of the "source code statistics" system at UPS.

I had additional programs that were specific to MS-Jet databases. These had the benefit of not needing a pre-specified DSN; I could use the MDB file directly. They also extracted and inserted text. One created a crosstab extract of the data; not easy at the DAO level.

I know more about databases and SQL than I thought.

But I won't get cocky. My experience covers ODBC, DAO, and ADO, and some bits of SQL. My experience stops shy of Microsoft SQL Server, which has a lot more administration and tuning. And my experience has been with the smaller utilities, not the large systems. (But isn't it a good idea in large systems to separate the data access into a smaller section?)

I think I'm in a good position to pick up the admin bits of SQL Server and continue my career.

Wednesday, June 24, 2009

Summary of Open Source Bridge

Some notes on the Open Source Bridge conference in Portland, Oregon:

There were somewhat more than 400 attendees, many of whom were also presenters. (These numbers were announced at theopening keynote.) A large percentage of attendees are women.

OSB is lighter than OSCON, the O'Reilly-run open source conference. OSB is three days; OSCON runs for 5 (well, 4.5) days. OSB is staffed by volunteers; OSCON has volunteers and paid staff.

These were the planned sessions that I attended. They occurred on the first two days:

* Drupal: What is it Good For?

The Drupal CMS is good for brochures and social sites. It's not good for e-commerce. It is flexible, powerful, and rapid; it has a long learning curve.

* Drizzle: Rethinking MySQL for the web

Perhaps not rethinking it for the web but thinking about where technology is going. MySQL (as with just about every other significant application) has been designed for single-processor, Moore's Law systems. Yet technology is moving to multiple cores. The MySQL team wants to leap over the current generation of tech and "skate to where the puck will be". The new design with use C++ (not C), count on lots of processors, and expose APIs for different projects to plug into the pieces that they need.

* How to build a successful open source consulting company

More of a conversation than a presentation. The discussion started on the topic of open source consulting but quickly moved to general consulting and freelance work. The lesson: Open source business is the same as any other business, and must worry about the same things.

* Clustering Data - How to have fun in N dimensions

A rather lightweight talk about adjusting data to identify the major clusters. Lightweight, yet just what I needed for that bit of analysis. I have a much better understanding now.

* Open Source Development - The Dark Side

A thought-provoking session on the chauvanism, sexism, and cultural biases in the open source development community. (And in the tech community in general.) The open source community is especially susceptible to these problems, since there are a lot of "cowboy coders" and people who want to avoid the stuffy corporate cultures.

The speaker emphasized the need for professional behavior, and made it clear that this referred to standards of the craft, not obliging corporate non-think.

A good session, and one that sould be repeated. We have problems, and we need people to stand up and tell us that we have problems.

* Scala for recovering Java developers

An interesting language. A functional language that runs on the JVM. I need to look into this more, but it falls on the "interesting but not an immediate payoff" category.

* Ubiquitous Angels

A presentation on sensors, the internet, the web, and real-time information for everyday tasks. How can technology help us? One example: real-time traffic information can feed into GPS direction units, and avoid traffic jams. What else can we do with information?

* Configuration Management: A Panel Discussion

Five people talking about the major programs in the configuration management space: cfengine, Puppet, AutomateIt, Chef, and bcfg2. Configuration management is not version control. CVS and SVN are not in this space. These tools help administrators ensure consistent configurations across multiple systems. This topic definitely goes on the "learn more" list.

* PHP - architecting and profiling for performance

Simple and easy changes can offer significant improvement of web server performance. One needs to be aware of them, be disciplined enough to use them, and have the right tools to measure performance. The presenter showed a nice tool for displaying performance breakdowns; it let us identify the bottlenecks visually (and quickly).

* Faking it til you make it - A woman on the fringe of open source

Thoughtful comments from one woman on her journey into the tech world. We're all aliens, all posers, expecting to be revealed and kicked out at any moment. Or so we think. Yet we are all here, in the world, doing what we can.

* Re-factor your mind: meditation

A session lighter on tech and heavier on wetware. The presenter walked us through some meditation examples. A good reminder that our most important process is between our ears, and it needs maintenance.

The third day of the conference was the "unconference": A day where individual attendees proposed and held sessions. We met at the beginning of the day. With assistance from volunteer coordinators, people thought up ideas, added them to a schedule, and announced them to the other attendees.

* Balancing work and life

An issue that extends into all aspects of our culture, not just open source development. A few key points:

- Learn to say "no" to a client, a co-worker, or a partner.

- Say "no" judiciously

- Be aware of what you accept; avoid accepting things that you will resent later. (Such as a low-paying contract.)

* The User Experience is important

More than just the usability study of your GUI, the user experience is broad view of an application, from acquisition to configuration to use. We do a poor job of designing the user experience in open source; we need to improve.

* Anticipatory anthropology

Using the art of questioning to let people express ideas fully. Similar to the Socratic method, but designed to reveal the vision, not a prespecified answer.

* How to run a software conference

Reflections on the preparations, logistics, and execution of a large conference. (The OSB conference itself. No coincidence there.)

Running a conference is a project, like any other project. It has a goal, deliverables, commitments from others, and a very definite deadline. Flexibility is important. Adapting is important. Changing plans is important. Plans are helpful but often wrong; you need to fix them as you learn.

Finally, some random ideas from the conference:

- Of man's great inventions (fire, the alphabet, movable type), we can add the Backspace key. The ability to make mistakes, recognize them, and correct them is important.

- The scrying pool of yore is now an iPod with an internet connection. We are all wizards!

- Companies should be run by (and for) the people who create value.

- Go to the third world and live among them for a significant period of time. Mankind has been in the modern age for only a short period of time; we evolved in the jungle and in the savannah. After living in an agrarian culture, come back to the first world and tell us which is "weird".

- Open source succeeds not because the people are smarter or the tools are free. Open source succeeds because people recognize and accept failure, learn from it, and change their code/design/plan quickly. They are not locked in to specific plans or programs. (In contrast, commercial development often has large plans, large code bases, perceptions of value of the code base, egos, politics, and reluctance to give things up.)

There is a lot in open source. Not just in programs and tech, but in the community. This conference showed the diversity of talent, the dedication to projects, and the acceptance of new ideas.

Sunday, June 21, 2009

Open Source Bridge conference - after

The Open Source Bridge conference is concluded (for 2009) and I am back home.

This was a good conference. The sessions were informative and the people were interesting. The best sessions were the in-between, informal conversations with people. While small (about 400 attendees) just about each person I met had an interesting story. There was an interesting mix of skills and knowledge, too. Attendees had more than just programming skills; people were interested in usability, women in tech, and the open source community.

Staying the extra day for the "unconference" was worth the expense. The unconference was a set of sessions proposed by attendees, not planned in advance. On Friday (the unconference day) we started in the ballroom. Individuals proposed topics and scheduled them. Volunteers for the conference handled scheduling conflicts. Attendees picked the sessions they wanted to attend, and then went to them. The sessions were less formal than the "speaker at the front" normal sessions; they tended to be discussions among equals. Sometimes the discussions wandered to other topics. Always something interesting, whether it was "Anticipatory Anthropology" or "How to Start A Business".

I made a number of contacts; some I have already sent messages to on LinkedIn.

The Portland area was nice, as on my previous visits. As I walked around town, I would think to myself "I could live here". The software/tech environment seems vibrant too.

Wednesday, June 17, 2009

Open Source Bridge - day 1

The 'osb' conference started well. I attended several interesting sessions on open source technology, including Drupal, Drizzle, and Symfony. I also talked with a number of people. I am once again impressed with the knowledge that people have.

So impressed that I have changed my travel plans and will stay an additional day to attend the "unconference" day. This day has sessions that are less formal. Both Holiday Inn and Southwest Airlines were happy to make the change. Holiday Inn matched the 'advance' rate, and Southwest chrged a mere six dollars for the change.

Monday, June 15, 2009

My first web app

I have successfully built my first web application. Using a combination of shell scripts, Perl, Perl's DBI module, MySQL, SQL, Apache, PHP, HTML, and CSS, I have created a small system to collect, store, and present information on source code. More than static HTML pages, this application creates the pages dynamically, from the data collected.

The application runs on three different computers. One collects the data on the supplied source code; the second runs the MySQL server, the web server, and the PHP processor; and the third displays the results in a browser.

This is about as simple as a web application can get. (Much like the "world's simplest bank" described in an episode of "This American Life". The bank had one deposit customer and one loan customer, each with one account.)

I don't expect to be considered as an expert because of this simple web app. But I can say, with confidence, that I understand the concepts.

Thursday, June 11, 2009

Google Android phone

Last night I attended the local CALUG (Linux User Group) meeting and saw a presentation on the Android platform. The development can be done in Eclipse with Java (not quite J2ME but close) and there is a lot of support built into the supplied classes. The package includes an emulator so you can test your program on a virtual phone immediately. It is an impressive achievement.

Wednesday, June 10, 2009

Another leap

I took a bit of a leap today and registered for the Open Source Bridge conference. This is a small conference in Portland with technical and business sessions. Some of the technical sessions cover Drupal, MySQL, PHP, and JavaScript. The business sessions cover things such as organizing an open source project, working with the government, and bootstrapping an open source business.

I wish I had learned about this conference earlier - I could have saved on the registration fee and airfare. Oh well, we make do with what we have!

Easy as Perl

I modified the Source-Stat collection programs to accept command-line options for the host name, database name, and project name. The modifications were easy. Very easy. The GetOpts::Long package does the heavy lifting; all I had to do was include the package, define the options and their container varaibles, and call a single function.

The ability to add functionality this easily comes from CPAN, the collection of Perl libraries. Knowing what is in the library is the trick; I stumbled across this library. I've written a number of Perl programs in the past few years; I wonder what things I have built that were already available. Time to go looking for an index into CPAN.

Tuesday, June 9, 2009

More database progress

And with a little more persistence this afternoon, I expanded the Perl program to insert records into a database table. This test shows that I have the proper rights granted and the proper SQL syntax for updates.

Next will be some improvements to the programs on the remote computer. They collect statistics on source code. I have the raw lines of code (LOC) and now need to collect the source lines of code (SLOC) which is the count of program lines. SLOC excludes comments and whitespace. To collect that I need filters for source files. C, C++, C#, and Java are fairly strightforward. Perl, with its =cut blocks, here files, and regular expressions that can be delimited by anything make the comment-removal task somewhat trickier. I may leverage a program such as SLOCcount.

I also need to add some options for the database name and host computer. I've hard-coded those values for the first version, so I could focus on the DBI and SQL portions. Now that they are working, I can make the program more flexible.

A little database work

With a little perseverence this morning, I wrote a small Perl program that connected to the SourceStat database. Using DBI made the job quite easy. I had a few errors: wrong database name, comma when it should be semicolon, and things like that. But nothing significant.

This program shows that I can connect to the database from a remote computer. Next will be a shell/Perl program set to update the database with some statistics.

Tuesday, June 2, 2009

What I did right

I have been doing a number of things in my leap. Some thoughts on what seems to have worked well:

- Have a pile of cash. I had saved for a few years before leaping.

- Exercise. Every day, if possible. It gets one out and interacting with people. And exercise is good for you!

- Keep a normal routine. I get up at the usual time and go to bed at the usual time. Dress as if going to work.

- Keep a normal diet. I have three meals a day, just as in the office. I avoid the temptation of M&Ms and such during the day. (Usually. But I had a stash of M&Ms at the office too.)

- Network. Meet people. I suspect that the job will not come from a job board or a recruiter, but from a contact of a contact who I happened to meet at the local grocery store.

- Keep on top of finances.

- Post on lots of job boards. Yeah, I'm expecting the opportunity to reach me through a contact. But you never know.

- Plan the day. I start with a list of tasks for the day. Some days have more than others. I usually prioritize tasks into three categories: must do, want to do, nice to do.

- Use technology to your advantage. I use e-mail and on-line folders to organize and store messages. I use an on-line calendar to schedule events.

- Use social networks. I use LinkedIn, LiveJournal, FaceBook, and MySpace. LinkedIn is the professional network. The others are for friends; I use several because friends are on different networks.

- Set up weekly routines. I have a routine for visiting job boards: some on Monday, others on Tuesday, etc. For each week I repeat. (I allow variations for holidays and other events.) The routine keeps my postings "live" and up to date. Theoretically, a newer posting should appear higher in the results list.

- Use time and resources to your advantage. I use my computers at home to learn new technologies. This month I am learning PHP and MySQL. The experience is not as intense as in the workplace and does not count as much, but I gain a degree of familiarity.

- Attend non-search events, but keep your search in mind. I play trivia with friends on Monday nights. I use it as an opportunity to talk with other people and let them know about my skills. (But only for a few minutes. People are there to have fun, not find me a job. Don't be pushy.)

Those are the things that work for me -- or at least keep me sane. I'm probably missing a few. What would you add?

A new approach

I'm taking a new approach with recruiters. Rather than wait (passively) for them to approach me with opportunities, I will reach out to them on a regular basis.

I started this week by selecting a few recruiters and sending them an e-mail with a description of my current activities. I have two objectives: let them know that I am developing skills, and remind them of my existence.

One might say that this is a form of advertising.

Monday, June 1, 2009

Interviews, serendipity, and free stuff

The phone screen never happened -- the client has deferred interviews until later in June. It sounds like they are quite busy, and I know how frantic things can be.

I interviewed a staffing company, and that went well. They have a number of opportunities, some north of the city. They sent me some general information and I expect details on positions later this week.

Friday is trash day in the city, and on the way home, I passed a pile of trash with a ViewSonic P815 monitor. It seemed to be in good shape, so I took it home. It does work, as far as I can test it. The monitor powers on and displays the configuration menu. (So the tube and the logic work.) I need a cable to attach it to a PC; this monitor has a detachable VGA cable, which was not included.

Friday evening saw a meeting of the local ACM chapter. I was elected to a member-at-large position. Six months ago I would not have considered running, as I had no time and no confidence in my abilities. Now I think it will be a good way for me to contribute to the ACM and its work with students.

Linkedin has yielded a contact with job opportunities. The person runs a small search firm and has an opportunity somewhere in the state. I have a call scheduled with him this afternoon.