deborah: the Library of Congress cataloging numbers for children's literature, technology, and library science (Default)
2017-01-27 04:39 pm

Look, Ma! I'm a freelancer!

[personal profile] allen and I formed Suberic Networks back in 1997, which is hard to believe. Our baby is a millenial! Over the years we've providing hosting solutions to myriad non-profits, small businesses, informal organizations, clubs, and individuals. When doing freelance programming, we've done so under the umbrella of Suberic Networks.

Suberic was formed back in the wild old days of the Internet, when "there shalt be no commercial speech on the Internet" was extremely recent history (only three years after Canter and Siegel spammed Usenet). We've grown a lot over the years. I can't recall for sure, but I bet we once had little icons that said "Bobby approved!" and "Best when viewed in Lynx."

Today we're launching the new home page for Suberic Networks, LLC. Our gorgeous new logo was designed by Pablo Defendini. The site's launch aims to showcase my freelance programming work.
We build database-backed software solutions with rich user interfaces that provide a tested and welcoming user experience. Suberic Networks is particularly adept with the Perl and Python programming languages, and we can modernize legacy software as well as design, build, and test new projects. We have specialties in accessibility, user experience, digital libraries, and publishing.

I know many of you are involved with accessibility, library, archives, and publishing. Not coincidentally, those are particular strengths of Suberic Networks consulting! I encourage you to consult our expertise and consider whether we might be of use to your organization. And I'd be grateful if you'd signal boost (without spamming, of course) to interested parties.
deborah: The management regrets that it was unable to find a Gnomic Utterance that was suitably irrelevant. (gnomic)
2016-07-11 10:09 pm

my own checkered cap

first she had on her own checkered cap, then a bunch of gray caps, then a bunch of brown caps, then a bunch of blue caps, and on the very top a bunch of red caps.

Apologies to Esphyr Slobodkina

(For those more in the loop of
  1. obscure fairy lore or
  2. Dungeons & Dragons baddies based on obscure fairy lore than on
  3. 76 year old picture books
the allusion was to me being a person who chooses to wear many hats. Any implication of being beleaguered by monkeys is purely coincidental.)

After several happy years at Safari Books Online working with Python, I'm moving on to other projects. For now, I'm moving on to a variety of open source projects. I hope to have the chance to talk about the bigger ones soon. As for the smaller ones, well. Expect pull requests from me soon!

Seriously, though. I'm trying to talk myself out of adding (imagine Allie Brosh-style self-insert here) Fix All the Accessibility Bugs! to my todo list. That seems like a Poor Life Choice.

Much love to all my Safari Co-Workers who've been mentors in my journey into Python Infested Waters. I'm sure I'll see most of you in my new spaces as well. Liza will be sad that I'm looking forward to having time for Perl projects again -- though probably happy to know that I'm a convert to the Python culture 100%, if only partially to Python-as-language. (You'll pry regexes out of my cold dead fingers, Liza. Well, pretty easily; you've seen my fingers. But out of my metaphorical fingers.)

W3C work isn't going away, especially not since my W3C colleagues have been making noises about increasing their demands on my time, you know who you are. And there's likely to be more children's and YA lit in my life soon, as well! More details will be forthcoming if that happens.

Further up and further in!
deborah: the Library of Congress cataloging numbers for children's literature, technology, and library science (Default)
2015-12-07 01:51 pm
Entry tags:

On code reviews and being a programmer

I have finally started identifying as "I have all these huge posts in draft, but I really want to boil them down into something smarter before I post them. But I have one very simple thought just occurred to me.

I have finally started identifying myself as "a programmer" and not just "a person who writes a lot of code" or "an archivist who hacks a lot." I don't think it's actually because I now have a job title of "programmer." It's because I've been doing code reviews.

My code reviews are still very junior. In many ways, I'm too trusting of the code that I read; I sometimes read it as pseudocode and so don't see errors. But I forced myself to start doing it, and I started with just asking for more comments any place where the code wasn't self-explanatory -- which is really valuable, and I should not understate that with "just."

The obvious next step from there was to ask people to clarify their coding style to make it more self-documenting. If it took me too long to figure out what was going on, then either it's a complex bit of algorithm and needs better comments, or there's a fair chance the code is not as clearly written as it could be. I will admit this is an easier task than it could be because I am almost always code reviewing Python programmers, not Perl programmers. Python programmers don't have so much of the cultural machismo attached to writing WORN (write once, read never) code. (For what it's worth, I don't think that has anything to do with structures inherent in the languages. You can write unreadable Python just fine, and Perl Best Practices-compliant code is plenty readable. It's a cultural problem.)

From asking people to clarify their coding style it was actually a surprisingly short jump to pointing out ways code could be more efficient. Once you start looking at ways the code is not written very clearly, you start noticing inefficiencies. Before you post a comment you say to yourself, "that generator is kind of hard to read, I wonder why they used it? Before I critique it maybe I should check to see if that's the best way to do this thing." And then you find it's not; it's too slow, or too memory intensive, or the like.

Of course, I need to remember to comment on the elements of the code where I do have strengths, and I need to remember that those strengths, while they are not the same as those of senior engineers, are relevant skill sets which actually need to be addressed in the product by more people. In my case, that's accessibility along with usability and user experience.

Everyone doing a code review needs to check for security and accessibility issues, and don't worry if you don't know the details. All you have to do is say things like "I see you are taking user input here; did you verify all of the security issues were resolved?" Or "I see you have added a new interaction mode to the front page; did you do an accessibility review?"

Just make sure the person for whom your code reviewing those your limitations. If you are not particularly skilled with knowing performance tuning, then you probably shouldn't be the only person code reviewing a rewrite the database ORM. If you aren't sure, talk to the developer.

You can code review for developers who are far more experienced than you! You can code review even if you aren't doing a lot of programming yourself.

So give it a try.
deborah: the Library of Congress cataloging numbers for children's literature, technology, and library science (Default)
2013-10-02 07:47 pm
Entry tags:

This is not an Ada Lovelace Day Post

So it's hard to say I am currently admiring a woman who left computer science, and it's certainly not Ada Lovelace Day material, but let me flail for a minute.

So to start with, quoting [personal profile] allen:

Went to see [ profile] viennateng(with [ profile] highceilings opening) show tonight. I went with [personal profile] deborah and [personal profile] cnoocy. [personal profile] cthulhia showed up a few minutes after we did and sat behind us. [personal profile] ursamajor we met up with at the merch table between sets. [personal profile] momijizukamori found us after the show and walked back to the T with us.

The concert was excellent, too, in addition to the impromptu meet-up.

If it's not clear, all of those meetups were unplanned and coincidental. I also ran into M, a friend from high school.

Anyway, Vienna Teng. She got a BS in Computer Science at Stanford in 2000, and worked as a programmer for two years. Then career shift, boom, music, and that was her career for the next 8 years - and then she turned around and went back to grad school (dual Masters, MBA and Environmental Studies). And now she's making music again.

It's just, man. I'm currently working on my third completely unrelated Masters. (Library Science can be related to both Computer Science and Children's Literature, but I'm not interested in the overlaps, except inasmuch as I'm a programmer as a librarian and archivist.) And looking at how Vienna Teng has happily decided she can be a musician along with her other skills and studies, reminds me that this can be a successful way to be, rather than just undecided flailing.

And her music is freaking gorgeous.
deborah: The management regrets that it was unable to find a Gnomic Utterance that was suitably irrelevant. (gnomic)
2013-06-24 11:50 am

Oscar Romeo Lima Yankee question marc

This is the week for which I have taken a week of vacation time, and set aside for doing nothing but spending eight hours a day to get better at programming by voice. Among other things, this involves learning Emacs.

I are not braining today. /o\

(anyone who has favorite tips on Emacs for vim users, I would welcome sharing.)
deborah: The management regrets that it was unable to find a Gnomic Utterance that was suitably irrelevant. (gnomic)
2013-04-29 07:56 pm

Where does she find all those hat boxes?

After five awesome years, I'll be taking a hiatus from teaching my F & SF for children's and young adults class. I'm also going back to school for a third master's: computer science, this time. So that happened.

These are actually unrelated events, except inasmuch as I wouldn't be doing an MS program if I were still teaching. Once I realized I was taking a break from teaching, it occurred to me I'd have the time at last to take advantage of the free tuition benefit offered by my employer. That I went in about a week from "Maybe I should take some classes" to "You know what would be awesome? A degree program!" is par for the course of [personal profile] deborah. I would crack myself up if I didn't have to live with the aftermath of being me.

As I prepare for the mental shift from teaching master's students to being one, I think I might take some serious time to brush up my programming-by-voice skills. I haven't really spent any spoons on rewiring my brain for better dictation in years -- I don't use Natlink/Vocola or Utter Command or Dragonfly or even VoiceCode. When I was younger I was spending everything I had learning to function again, and then I knew all kinds of cruddy workarounds and just wrote terrible DNS scripting commands for Perl. And besides these days I can type a little.

I don't think my rotten VB workarounds and a little bit of typing will cut it for work + dreamwidth + grad school, though, so taking the time to buckle down and get better at dictating, while long overdue, is finally vital.
deborah: the Library of Congress cataloging numbers for children's literature, technology, and library science (Default)
2013-04-11 06:01 pm

I haven't drunk the Kool-Aid, but I do admit it is brightly colored and tasty looking

For a project at work (CIDER) we're using git pretty extensively, with an adapted version of the git-flow model. For all that I'm finding myself becoming a release engineer all over again -- not a career I intended to move back towards, but what can you do? -- I'm really enjoying our development model so far.

Our model is that people do all their work on spot branches, except for ongoing subtle improvements to template toolkit files, which has been happening on a single long-lived branch. When a fix is made the developer makes a pull request. One of the other two of our three core developers -- in practice always me -- does a quick code review, and tests it in our development environment just by doing git checkout --track origin/[branch] (or, in the case of the long-lived branch, git checkout [branch];git pull and running the Web server against the new contents of the directory. When it's tested in the development environment, we just accept the pull request and do a git pull in the production directory.

It's nothing fancy or unusual -- basically git-flow without continuous integration. But over the years of using CVS, RCS, subversion, and perforce, only perforce has given me anything close to as much satisfaction in the release management, and perforce wouldn't work for our current model (where one of our developers is a remote contractor).

Of course I also like using the same environment and tools for work and for dreamwidth, because it takes away the cognitive cost of switching when I come home and decide to work on dreamwidth.
deborah: the Library of Congress cataloging numbers for children's literature, technology, and library science (Default)
2013-02-12 11:22 am

Curse you, Bobby Tables!

Rather than completely retelling the story of how I, two years ago, became a pseudo-lawyer defending an SQL injection attack, I will point you to my housemate's blog post on the Safari Books Online blog about how that became a successful (friendly) PostScript injection last month: "Play New Tricks on an Old Dog: a PostScript Injection Attack".

Things we learn from this includes:

  • You need to protect your code from possible hostile injection.
  • PostScript is a real language.
  • Denis and Marc are awesome.

This year, for what it's worth, I defended "Stacking all of the Gorg in the galaxy on top of each other." Not nearly as funny as the successful injection attack, but a shout out to one of my favorite funny books, The True Meaning of Smekday.
deborah: the Library of Congress cataloging numbers for children's literature, technology, and library science (Default)
2012-10-26 10:17 am


My built-in china cabinet has long since ceased to be a cupboard to showcase hand-me-down wineglasses and become a closet for hats. Now I've outgrown that space, and my coat closet, too, has become overridden with hatboxes. Veils and feathers, fascinators and caps, boaters and fedoras.

What I'm saying is that I have a lot of hats.

I have almost as many metaphorical hats, though sadly they lack the trimmings of the physical kind. Usually I juggle my professional interests adequately, although every fall I come to terms anew with the reality that, for three months, my contributions to Dreamwidth are what I give up to make room for teaching. This year is slightly tighter than usual, because of membership on the Odyssey Award committee, but at least much of the time spent listening to audio books is time that would otherwise be dead space.

In any case, here is a description of the 48 hour period of which I'm currently in the center.

  • Yesterday morning, go to work as a digital archivist, where I've been having more opportunities to code of late as I've been contributing fixes and features to a blacklight/Hydra digital library portal we will be launching Any Day Now, and where I've been helping to manage our Open Access Week activities.
  • Leave after a short day to teach two sections of the children's and young adult SFF class I teach with Amy.
  • Get home at nearly 11 PM, go to bed, and wake up at 4:30 AM (on a gorgeous, starry autumn morning, Orion and Jupiter high in the sky) to catch the early train to New Haven for code4lib New England, where I'll be presenting on
  • On the train I'll be listening to audio books for the Odyssey Award committee;
  • when I return home I have some reading to do for Kirkus Reviews.

I do like hats. I like how they look and how they feel, how each one makes me into a slightly different person. But sometimes having so many gets a little complicated.