Intro

In spring of 2021, I founded the University of New Hampshire at Manchester Programming Club. I haven’t mentioned it on this blog yet, and I’d like to commit an account of that experience to the record while it’s relatively fresh in my memory.

A colorful computer screen with the words 'university of new hampshire programming club' on it

Table of Contents

Why

I was - and still am - rapidly learning various aspects of software development and computer science. I was completing tutorials and boot camps, building personal projects, and doing well at school, but I recognized something was missing in my education. I didn’t have anyone to talk about code with, let alone actually collaborate with.

I looked for other clubs, and might have put my energies there had I found one. But there were none at UHNM related to computers. I mulled around with the idea of starting one for a couple weeks and eventually figured “why not?”. The worst that could happen would be that the club would fail. But I’d learn in the process and, just as important, make a connection or two.

How

I reached out to my faculty advisor and the Office of Student Engagement. I took the suggestion of one of them and also reached out to several computing-type clubs on the other UNH campus; the Linux Club & Wildcat Women in Computer Science. Meeting with those presidents was a good stepping off point, and gave me some insights as to the components of club success.

Next, I made a simple Jekyll blog-style website hosted on Github pages, a github account for the club, a github team repo for the club, and an email for the club. The next step was recruitment.

UNHM was online in 2021 for most classes. There were a lot of Zoom meetings. Zoom meetings have a chat function, and a message from me about the programming club was in the chat every Zoom meeting for the rest of the semester. For in person classes, I approached every student in the class and personally invited them to join the club.

I stressed that the club would be a nonjudgemental place regarding programming ability, and was open to students of all abilities. I figured a new coder might be insecure about their abilities, and I suspect stressing this attitude helped bring in members.

I was quickly joined by other students who were passionate about programming, and word of mouth accrued about 6 people who started regularly showing up for meetings.

The vision for the club

My vision for the club was not entirely vague. I knew my goal - connecting and collaborating - so I knew what the club had to facilitate. I didn’t want to have a board of directors or other official trying to micromanage programming projects. That’s a lot of work and we aren’t experienced enough to do that well, nor do we have enough time with busy school schedules. I just wanted it to be, basically, a conversation and networking space with a lot of coding happening. I wanted it to be flexible enough to appeal to students with all sorts of goals around coding. Fairly early I envisioned what I see as a core principle of the club, a member privilege, which I laid out as followed.

Every member has the right to initiate a new project on the Github organization page, promote and seek to recruit collaborators from club membership on club platforms, and shall be vested with leadership of the project they initiated.

Early on in the Constition Process, I released a vision statement so prospective members could get an idea of what my goals were.

The Constitution Process

A painting of the United States consitutional convention

While I had my goals for the club, I knew the club had to be built out via a consensus process. I had no interest in attempting to make the club my personal fiefdom, and I doubt many would be interested in joining that sort of org anyway. I also didn’t want the club to peter out after my graduation if that could be helped.

After my meetings with the presidents of other clubs, I determined that the most important thing for club success was a democratically drafted constitution. There were a couple reasons for this:

  1. It encourages more engagement as members have participated in the creation process and are thusly more invested; they have real ownership in the club.
  2. More ideas are brought to the table, criticized, discussed, and improved upon.
  3. Gets everyone on the same page.
  4. It is sustainable. When a leader leaves, the club has something to go off of. It is known when and how elections are held and decisions made.
  5. When decisions are made, they are more respected, because they have come from process not from fiat.

A Constitution was necessary for becoming an “official” club and getting recognized by the university anyway. But club constitutions differed in how seriously they were drafted and adhered to. To avoid those pitfalls, we began tackling the Constitution at the weekly meetings, now moved from Zoom to Discord, which is a far superior meeting platform.

Line by Line, we drafted a satisfactory constitution for our club, starting with our mission statement.

The mission of the UNHM Programming Club is to provide members the opportunity to collaborate on group programming projects, expose professional networking opportunities, discuss trends in computer languages and employment, and explore software development strategies, with the aim of preparing its members to enter the workforce with marketable programming competency.

It took a total of 9 weekly meetings. We started around March 13th and were recognized by the school by May 8th. Throughout this process, the many years I have spent on the board of the directors at VFW post 3719 came in handy. Concepts like quorum were really second nature to me. I believe I did a satisfactory job as chair of these meetings.

At this point, though I was elected President, it had very much become “our” club, with members contributing in a multitude of ways, from deliberating on the constitution to starting a discord server and bot to taking on officer roles. Essentially all articles of the constitution were discussed in detail, language modified until consensus reached, and each was ultimately approved unanimously.

I believe it made for a much better constitution to draft it line by line. Attendees forsaw all kinds of potential issues that one person would be unlikely to percieve on their own. Additionally, all attendees became familiar with the final document. The alternative would have been to draft it myself and submit the entire thing for one-off ratification, which would have been more a rubber-stamping than a true democratic process, and would have resulted in an inferior document.

You can view the current constitution here

Challenges

We have had some setbacks and challenges. Here are some:

The summer web project

A faculty member was told about the club, and suggested that he could lead us on a web development project over the summer. While we had envisioned student led projects, not faculty-led ones, we saw great benefit in having an experienced software developer guide us through the process. We discussed it, and the board of directors ultimately approved the project as a special one-off and, after deliberation, we generated a project proposal.

Unfortunately, we were ghosted by that faculty member after the project proposal. He stopped responding to to contact attempts and the project never started. I am unsure why that happened, but it was disappointing.

Discord Bot hosting

The Discord Bot was one of the funnest early projects. It was started by a pretty skilled member coder, Bryan, our Discord Administrator officer, who had made bots before and who did most of the work, but several members, including myself, had the opportunity to contribute various features.

The Discord bot could take votes in meetings, register new members, greet new prospective members in the discord and set their permissions, simulate buying and selling stocks, provide webcomics, dog pics, cat pics, and do a goofy random face mashup thing.

A programmatically generated face mashup of a few famous people in one ugly face

Unfortunately, the face mashup feature was not very optimized and we quickly used up the last of our very limited Google Cloud free hosting. Hosting subsequently became a recurrent meeting item as we had lost a highly useful tool that facilitated both the processing of new members and meeting management.

We debated all sorts of hosting solutions, from using a Raspberry Pi to paying for some hosting myself out of pocket, to getting funds from the school for hosting. Eventually, we contacted the IT department of the school to see if they could provide hosting. We met with the head of the department, were told that they could do it, and have been waiting for the specifics of how that hosting will be provided since.

We do believe that IT will eventually come through, and getting hosting through them is a much better long-term solution to club hosting needs, but it’s a slow process and we have been without a bot for months now.

School Requirements

The school has some requirements from clubs besides a constitution. We are supposed to put on a yearly event and make a showing at club fairs. We did have a bench at the last club fair, which was a great experience and led to some new members, but we haven’t planned or executed an event and it’s dubious whether we will actually do that this year. However, we also haven’t yet recieved any funds from the school, which look to be fairly limited anyway.

To be frank, I’ve debated with myself whether the club needs to be strictly affiliated with the school. Initially it appeared that the major benefit was simply that we can call ourselves official and be listed on the school organizations list. Now however, with the possibility of getting hosting from the IT department, I see more merit in it. Additionally, we could tap alumni organizations for speakers.

There is a drawback to being official though - if we were unaffiliated with any university, we could recruit from all universities, and even recruit non-student professionals.

At any rate, there’s little interest in giving up our official status, not even from me, so the organization will continue to be strictly tied to the University of New Hampshire.

School curriculum

In general, the heavy workload during a school semester limits how much most members are willing to contribute to side programming projects. The club has been only modestly productive. I know that in my case, getting excited and writing thousands of lines for club projects did threaten to interfere with my academics on a few occasions, though I ultimately pulled off a solid semester. Even staying on top of releasing weekly meeting records has been somewhat difficult, and I’ve been late on a few of them.

UNHM perhaps has an underdeveloped Computer Science program. It’s a relatively recent addition. There aren’t a ton of students in it. We have had success recruiting Data Science and Engineering majors, however, who have been valuable contributors to meetings.

UNHM is also very Python-focused. Python is great language, and I enjoy writing it, but I do sometimes wish they offered more with Javascript, the language I’m most passionate about. Mostly because Javascript projects can be run on the web from any machine - it’s easy to show off the results of your work, as we can embed it right in the website, while most python is behind the scenes. (You can of course write websites and discord bots with python, but with the hosting issue being what it is, the utility of python is slightly less for us).

What We’ve Built

Since the club is about collaborative programming, here are some cool projects we’ve built so far.

The future

I think that in an ideal (for the club) world, I would stay on as a passionate president for as long as I was a student and members elected me, and pour my energies into improving the club. But life induced me to leave UNHM and move several states away.

In early 2021 my dear mother Eileen passed away after a short and tortuous battle with glioblastoma, a type of brain cancer. She never got to see this endeavor, which she surely would have delighted in.

A picture of myself, Isla, and my mother on our wedding day

I had wanted to leave New England since 2020, but was not willing to be far from my mother and her battle. After she passed, I reevaluated. I had married my lovely wife Isla in late 2019, and where we are to raise our (hopefully in the future) kids was a central issue in our lives. I have extended family in this region of the country and, while my siblings are in New England, there is a high probability they will move out eventually as well. So we got a small farm in rural America. I found a decent looking school, California University of Pennsylvania, and put in for a transfer.

I have had some guilt about the decision to leave UNH, as the other contributing members of the club have invested time and trusted me to be its president. It will be disappointing for us if the club simply peters out after all the work we put in to it. But, there is hope. First, the club’s Vice President, Davis Moore, is willing to take on the mantle of president if elected in the Spring elections. He’s very sharp and has, in my opinion, a good personality for leadership. He may well be able to salvage the club. Additionally, I’ll stay on as an adjunct member and continue to contribute remotely to programming projects and offer what aid to him I can. If the club survives, I do look forward to seeing how it evolves under his leadership.

Still, even if the club does fade, I know it was a valuable experience for myself and the other members. We’ve gotten to practice leadership, had tons of valuable conversations, been exposed to new ideas, and have networked with each other. I do not think anyone will regret their participation in this enterprise. And I know my original goals - connecting and collaborating - have been accomplished.

I may take another swing at starting a school programming club, depending on what the extant student orgs at CalU are like and how managable the workload is. Or maybe I’ll start a non-exclusive org. Or maybe I’ll just focus extra energies in my own projects.

Thanks for reading!