Somehow, you’ve stumbled across my new(ish) blog at MattDMo.com, and I’m glad you’re here. I wanted to use this first real post to talk a little bit about who I am, what I do, and my plans for this site. This is still very much a work in progress, but unlike some of my earlier attempts I actually have something of a vision of what I’d like this to become, so hopefully it’ll last. I really do appreciate comments and feedback, so if that part of the site is working please leave a little something to let me know you stopped by.
My name is Matt Morrison, but you can generally find me online as MattDMo, hence the domain name. I generally hang out on GitHub and the StackOverflow/StackExchange network, and when it’s working at the forum for my favorite piece of software – the text editor/programming environment Sublime Text. You can occasionally find me on Facebook and Twitter, and I’ve got a pretty sweet LinkedIn profile too.
What I Do
It may surprise some people that know me online, but I’m not a programmer in real life, at least not professionally – I’m a scientist. I have a pretty broad range of experiences, but I’ve focused on biochemistry and cell and molecular biology for most of my career, with a little bit of manufacturing, quality, and various associated things thrown in for good measure. I’m currently working for Shire doing bioanalytical assay development, but I spent many years at Cell Signaling Technology before then developing, producing, validating, and supporting antibodies and antibody-based products. I went to grad school at Penn State Hershey, originally as a PhD student in the Integrative Biosciences – Molecular Medicine program, but I eventually realized that the academic life wasn’t for me, and with the support of my advisor I published a first-author paper as my Master’s thesis and headed out into the real world.
I have lots of stuff going on, much of it related to Sublime Text in one way or another.
Neon Color Schemefor Sublime Text and TextMate is designed to make as many languages as possible look as good as possible, through taking advantage of the many scopes found in the
.tmLanguagelanguage definition files and their possible combinations. It’s a “bright on black” scheme, but plans for Neon Light are in the works, so stay tuned! You can find the original project on GitHub.
- As a related project, I just started
Neon-pygments, my first stab at a Pygments style, based on Neon. I’ll submit it to the Pygments project and see if they’ll accept it in the code base, but even if they don’t it’ll be a good exercise.
Python Improvedis a better Python
.tmLanguagesyntax definition for Sublime and TextMate that fixes a lot of issues with the current versions, and adds some additional features as well, including Django-specific syntax highlighting, support for Python 3 function annotations, and more. If you do any work with Python, I’d highly recommend getting it. Of course 🙂
- There are a bunch of projects that I’ve contributed to, just because I can:
Package Control(of course),
GenerateUUID, and others.
- This website and others tend to absorb a fairly large amount of my time. I have a really great hosting provider called WebFaction, and I have a ton of sites on there where I play with Django, Ruby on Rails, PHP (blech), HTML/JS/CSS, shell access, DNS, mail servers, and all sorts of other cool stuff. I’ll probably write another post at some point extolling all of WebFaction’s virtues, as there are many to behold, but their shell access via SSH and their very well put together online Control Panel are just terrific. They have all sorts of web services that can be installed very easily, unlimited subdomain names, and … but, I’m getting ahead of myself. Go check them out for yourself. You won’t be disappointed.
About This Site
No self-respecting nerd can start a technical blog without talking at least a little bit about the site itself. I’ve already mentioned my awesome hosting provider, so we’ll get down to the nitty-gritty details:
MattDMo.com is currently located on web351.webfaction.com, with dual 4-core Intel Xeon E3-1270 processors running at 3.4 GHz (54,402.16 bogomips total) and 16 GB RAM. It’s connected to the net using what looks like four bonded 100MB ethernet interfaces – not sure how I’d verify that, though. The machine is running CentOS 6.2 on kernel 2.6.32-358.6.2.el6.x86_64. Users can connect via SFTP and SSH with full shell access, and once logged in you have just about any development tool available to you that you could want, and if you don’t your 100 GB of disk space affords you the room to download and build it. They’re pretty good about keeping the latest (or nearly-latest) versions of things like Python and Ruby installed, and the one-click application installers are updated with bugfix releases all the time, which is a big deal when there’s so much PHP lying around.
As you can probably tell from a little blurb someplace around here, this site is running WordPress version something-or-other, with the whoziwhatsit theme (I don’t want to say here, because it changes frequently until I find something I like). I really don’t want to be running WP, just because of the huge potential security issues posed by running untrusted PHP code, but I’m having serious problems getting a decent blog up and running and looking good on Django. I’ve tried Zinnia and Mezzanine, and can usually (after quite a bit of configuring) get a bare-bones site running, but I can’t for the life of me get a decent theme installed that will give me a nice home page instead of just bare text and links – in that respect, WordPress has got them beat. Believe me, I’m not a dumb person, I know where to go looking for answers, and I’m not afraid to dive into the code and figure things out, but I really don’t want to build templates from scratch. I want to be able to install a plugin or an app, and get a pretty default page like you see here without trying to configure Bootstrap. In some cases it’s the documentation’s fault, it either plain doesn’t explain how to do something, or it breezes over it in such a trivialized manner that it’s assumed you already know how to configure everything yourself. But, enough about that for now, I’m sure I’ll have lots more complaining to do later, now that I got me my own expression platform!
Where I’m Going
If you’re still with me, great! You now get to share the secret of what I’m trying to do with this whole venture: write a book! But first, a little background. As you can probably already tell if you’ve been paying attention, I really like Sublime Text. If you’re not familiar with it, it’s a cross-platform (Win/Lin/OSX) text/source code editor that is almost completely customizable and extensible. All of the configuration files are either formatted in JSON or XML, and the main program is built around a central Python API that allows for the easy generation of plugins, from the very trivial to the incredibly complex. Nearly every aspect of the program has one or more configuration options associated with it, allowing you to do such diverse things as change buttons, fonts, and colors, tweak syntax highlighting, word wrapping, and auto-completion, and alter files at any point from as soon as they’re loaded to after they’re saved and closed.
I like messing around with things, and getting them to work just so. I’m one of those people that has to adjust the seat, the steering wheel, and all the mirrors when I get in the car, so everything is just right. I’m the same way with software – I can’t just take a default install of Microsoft Office and start working – I need to make sure it fits my needs, like not auto-selecting whole words, and being able to set print options every time I hit the Print button. I discovered Sublime Text sometime around the end of 2012, and I was hooked. I had run across TextMate a few months earlier, and liked it, but it wasn’t cross-platform (I work on Windows, Mac, and Linux (virtual) machines), and you weren’t able to do quite anything you wanted – it still had graphical Preferences menus, for example. Sublime had a pretty steep learning curve – everything was text, but once I figured out where everything was supposed to go, it just clicked. It certainly helped that Jon Skinner, the author of Sublime, was significantly influenced by TextMate, to the extent that many of the extensions can be used with very little, if any changes.
I had been aware of StackOverflow for a while, but hadn’t joined until the spring/summer of 2012, when I was in a bit of a career crisis and trying to decide if I should give up bench work and move into bioinformatics or some other kind of full-time programming. Early on I asked a question about Sublime, then started answering a few questions, because there’s no better way to learn than to have to explain something clearly to someone else. I now lurk on all the major ST tags, have a
sublimetext2 badge (
sublimetext3 should be coming shortly, with its increased use), and along the way have accumulated over 4000-something reputation points by answering over 200 questions. But, I’m not here to brag, I’m just pointing out my obsession with this piece of software. Other symptoms include publishing Neon and Python Improved, and getting more involved with troubleshooting on the sublimetext.com forum.
So, it wasn’t a huge surprise when I was contacted by Packt Publishing to be the Technical Reviewer for an upcoming Sublime Text book. I can easily think of six or eight more-qualified people than me (at least from a technical/Python programming perspective), but they asked me, so I said yes. Maybe the other guys said no, I don’t know. At any rate, I was pretty excited – I’d be able to help shape the direction of the book, plug my own projects in the front matter, and make sure that the right people/plugins/sites got mentioned in the text. I’d also get a free copy of the book when it’s printed, along with another free ebook of my choosing.
I wasn’t quite sure what to expect – I’m a bit of a grammar/spelling perfectionist when it comes to published material, and in fact at this very moment I’m helping a non-native speaker of English clean up his GitHub documentation. I give a lot of leeway to people for whom English is not their first language, as I understand it’s one of the toughest languages to learn as an adult. However, if I’m involved in any phase of document editing, I’ll be sure that things are spelled correctly and sentences make sense. This is why I have such a hard time writing first drafts – it’s got to be right when it comes out the first time, I can’t just speed-write and go back later to clean up. At any rate, I told the editorial staff this upfront, and they seemed OK with it.
To make a long story short, as of today I’m finishing up reviewing Chapter 4, with each chapter having 10-15 pages in it. Now, these aren’t the densely-packed pages one usually expects from a technical book, these are wide-margined Word documents with big fonts, inserted pictures, tables, etc. I’ve made between 60 and 100 comments on each chapter, from spelling mistakes to incomplete, nonsensical sentences to technical corrections and ideas. The writing is … atrocious. Like I said, while I will give a lot of leeway to non-native speakers of English, if you’re going to write a book for an American audience you should probably have more than a mediocre command of the language. There are many times during my reviews when I just throw my hands up in the air, because I can’t rewrite the entire chapter to my liking. It’s not just the grammar, spelling, and punctuation, but the content, too! The man is addicted to exclamation points in inappropriate places, and asks random dumb questions just to fill inches. A lot of the content is clearly taken directly from the Sublime Text docs, either unofficial or official, and he has this habit of posting links to his own gists instead of the main docs, which are maintained by the community.
I have never run across the author on StackOverflow or the Sublime forum, and he only has one extension on Package Control – a set of commands for creating Rails generators that as of right now has a grand total of 376 installs. Python Improved has been released for a month and already has over 800! Looking through his GitHub projects I’ve found that, except for his Package Control offering (which was made with several other people), none of his repos are original – they’re all forked, and none of the others have to do with Sublime. So, I’ve built a picture of this guy – not a real member of the community, with no discernible contributions, coming in to write a really lousy book, the need for which is demonstrably great, to judge from SO and the Sublime forum. They guy is not a Python programmer, and I just can’t wait until he gets to the plugin chapters. I’d be willing to bet that he’s just going to walk through one of the demo plugins already included in ST, and that will be that.
So, What to Do?
The need is clear – an extensive, well-written guide to configuring, using, customizing, and extending Sublime Text, and unfortunately “Mastering Sublime Text” is not going to be that book. I still haven’t decided if I’m going to stick it out through the end, or if I should just write to the editors and say, “Listen. I can write this book better than the guy you have now, with a ton of more relevant, useful information, and put it in a clear and well-presented manner. You can easily get an idea of my style by visiting SO and the Sublime forum, so it won’t be a mystery as to what kind of writer I am. I can speak and write the language as a native. What do you think?”
I’ve just filled out the initial “Potential Author” form on their website, so we’ll see where it goes. One of my ideas for this site was to start fleshing out the book with an outline, some sample chapters, etc., and perhaps publish the whole entire thing here if I can’t find a publisher who’s interested. My wife is an excellent graphic designer, and could do all the layout in InDesign and Acrobat. Who knows?
So, stay tuned. I really think there’s a market for this, and the market deserves more than it’s about to get. Any thoughts?