Since the inception of my software engineering career, decades ago, I have enjoyed creating resilient software systems and building efficient engineering teams. I found that one of the most important aspects affecting the success of any project is how close engineering teams align with user and community needs. This is one of the reasons it’s crucial for engineering to understand users.
During the past year and a half I’ve been deeply focused on distributed systems and advocacy around Apache Cassandra at DataStax. I chose to work at the company for their commitment to building extremely scalable and performant products. Another reason was my respect for people who work at the company, many of whom are active contributors and committers to Apache Cassandra, Spark and other important open-source projects. DataStax maintains deep experience in the area of distributed databases and I am happy to have been able to contribute to improving products and educational materials around Apache Cassandra. Having gotten to work with many engineering teams within DataStax I am excited about our future efforts! Continue reading “Career Update: Back to Engineering!”→
2018 might have been the first year I setup some resolutions. I honestly find them pretty silly. However I have joined the band wagon, and by doing so here are my thoughts on resolutions for 2019.
Alright, these are entirely new for this year. It seems wise that I’ll just put together three, listed below, since I have a number of failings from 2018 that I’ll need to slot into my continuing resolutions list, and of course turn those into successes this year!
Increase my streaming (specifically with Twitch) and the correlative videos around coding, systems, and related technologies. Possibly, even throw in some *gaming*!
Go office-less again. My aim is to not be tied to a desktop, an office, or related physical place and again go roaming coder again (also one of the inspirations behind getting a new laptop). This way I can also ensure I get out and to more meetups, hackathons, or whatever events that look good.
Compose and record some music. I would say record more music, but I haven’t recorded any music in ages so I’m going to remedy this at some point this year.
A few other things, which I wouldn’t declare as failures if I don’t get them finished this year, but the likelihood I start writing a book is pretty high. I’ll also organize more than a few larger type events (i.e. beyond a user group meetup, such as more conferences like ML4ALL or maybe a open spaces conf).
Heyo I sound like Congress now! The resolutions are from the previous year that I will be continuing to either succeed at or aim to succeed at. For specifics on each of these just navigate back to yesterday’s retrospective.
These resolutions are resolutions that I’ve just decided I’m done with. Not going to do anymore or maybe they were just one offs, things that were a do once thing, such as “see Within Temptation play a show“.
Re-initiate in Industry – This was really the only one off resolution from 2018. I managed to really get it done too. As for continuing to be involved in industry that’s kind of covered, easily, by continuing resolutions above.
With that, whether we’re ready for it or not, here’s 2019! Cheers!
Important! Do take note, I’m not paid by Dell, or System76, or anybody to write up reviews of laptops or hardware for that matter. These are my observations with these systems. I’m also not paid to use these systems for software development, but am only paid for the software development I produce with these machines. In other words, I very much roll Bring Your Own Device (BYOD) style and develop routinely without an assigned machine. I do what I can to stick to BYOD and such as it is, write up reviews of what I choose to use.
The Setting & Context for Purchase
Over the last year I’ve been pondering getting a Linux based laptop. At least a laptop that can run Linux native on the metal as the sole OS or at least a clean dual boot option. I wanted this for several specific reasons. The final decision to move forward occurred at this very tweet moment.
Alright y'all. Best linux laptops.
…and yes, this is gonna end up being a grand blog entry at some point of anguish, suffering, battles, troubleshooting, defeat, and a return to victory!
Here’s the short list of why I wanted a new laptop, that has good Linux support.
Most of my gaming is in Linux these days. Thanks Steam OS!
Most of my server workloads, server coding, internet coding, back-end work, and related coding is all for Linux. I haven’t deployed something to another OS in production for at least a decade now. As for front end apps, that’s also basically stuff that runs on Linux or MacOS. Web interfaces or usually just some simple CLI’s. I did write a Windows 8 “Metro UI” App, but it’s long gone and dead already along with the database (Riak) that it was an interface for.
Most of my automation work and related site reliability coding, ops hacking, my metasoftware engineering (great words for a title from Katie Keel @akatiekeel, see tweet below), and all that good fun is often done on MacOS but always ends up being deployed to run on a Linux machine in the end.
I’ve already got two Linux machines that I do a huge percentage of work on. The Dell XPS 13 and System 76 Leopard Workstation. However, the Leopard is in a bit of disrepair after a disturbingly wicked power surge here in Ballard (Seattle). The XPS 13 is just a bit weak, old, and the keyboard is still the crappy keyboard I detailed in the past review.
One of the big demandsfor this new laptop was that I wanted to be able to – at least with a somewhat efficient hardware performance level – edit video, stream video, run the virtual machines, the pertinent container ecosystems (i.e. distributed database stuff), of course lots of code, and play the few games I do play. This meant at basic some decent video – albeit I knew it wasn’t going to be what I had/have in my System76 machine – at least a terabyte of storage on my main drive, and 32 GB of RAM.
(probably not new) idea: since DevOps is a culture and not a person, let's call DevOps people metasoftware engineers instead.
We write software that runs software. We are software engineers just like devs, and we write apps for your apps.
Alright, that was the setting, so I went about searching through a lot of different laptop options. One of the most promising was this Huawai Matebook that Jeff & Adam pointed me at. It looked so good from the website that I decided I wanted to go check out the physical Matebook Pro somewhere, if possible, and found that option here in Seattle at the Microsoft store in University Park (It’s an outdoor mall, yuck, but whatevers).
I rolled over via bus and a short walk, walked into the Microsoft store and made a beeline right to where one of the Matebooks sat. It was gorgeous, absolutely beautiful, flawless, and outright better bang for the hardware buck than one of the Apple products from across the street! I was instantly sold.
But there was an issue. Hardware specs for this thing sit at 2GB Video, 8 GB RAM, and a 512 GB SSD. That’s a problem. I checked the site again to make sure there weren’t other options. Nope, it didn’t get much more built up than that. It just wouldn’t do.
I felt pained, annoyed, and frustrated. Does anybody actually want some decent power in a slim, elegant, and easy to carry laptop? Am I the only one wanting something like this? I started strolling around the floor of the Microsoft store. Looking at hard drives and Xbox stuff. Which just to point out, these Microsoft stores really are Xbox stores as much or more than they are anything else!
NOTE:All Huawai images copyright of Huawai. I’m hoping they’re cool since I’m pointing out their awesome laptop.
The reason I bring up the Matebook, is because I really was impressed by the build quality. It exceeded my expectation and based on this research, trying it out, I would happily suggest this laptop as a prime choice if the specs meet what you need. For me, sadly, I wanted and needed a bit more RAM and some more oomf in other categories.
The Final Decision
I walked around the Microsoft store checking out the Lenovo and a number of other laptops. I played some racing game thing on Xbox for a second. I wasn’t in so much of a hurry that I just had to buy something right then. I had after all waited almost a year to get to this point. Maybe I’d just save the cash and wait a little longer? Surely something would come along.
Then I walked up to another table. I first looked at the spec list, which I had been doing at every table except when I had walked up to the Matebook. I see 1 TB option on this machine. That’s cool. Then I see 32 GB of RAM. Holy shit when did the selection on the floor leap out of the piddly 8 GB range?! Then I see 4 GB Video! Specifically a NVIDIA® GeForce® GTX 1050Ti with 4GB GDDR5! Hell yeah. Alright, I’d looked and here’s the laptop that after months seemed to be the only ongoing choice to get this kind of specs in something that I sort of trusted the support for. So I started to play around with the keyboard and oh, looky there, it’s a touch screen too. Not that I cared, but it’s not a bad thing to have really, albeit a waste as I’ll likely never touch the screen.
So there it was, the decision was made, bagged, paid for, and out I walked with a brand new Dell XPS 15. Maybe I should have bought it from Dell, but meh, this will work. Support plan is nice, if anything fails I bring it into the store and they get me a new laptop too. Overall price $2499 for 3 years of coverage plus laptop. Also, yes, considering my unfortunate luck with hardware over the years – unless it’s a machine I’ve built myself – I get the coverage because I’ve got all of zero time to mess around with being my own technician.
Alright, so I set out to put this thing through some tasks as soon as I got home. Well, ok, not immediately cuz I had to shoot and put together this unboxing video. Here ya go, it’s a little long, but I also cover a lot of related topics of interest related to this machine.
First Test – Application Load
My first test was simply installing and setup of some standard software I use. That included Creative Cloud from Adobe, Jetbrains IDE’s and tooling, OBS for video streaming, Steam so I could pull down Cities: Skylines and Transport Fever, and some other miscellaneous software I would need. All this I would install while I get my Dropbox downloads going. With that I set out to install all of this stuff.
First I got Dropbox installed and began syncing. This would easily be about 380-400 Gig of files and video files. With that started I set out to install things I knew – or hoped – wouldn’t incur one of the required Windows reboots. First was Jetbrains IDE’s, which involves downloading their Toolbox and then clicking through every tool I’d want and letting it queue them all up. Then the same thing with Creative Cloud. Altogether that includes:
ReSharper Ultimate w/ the pertinent tools it downloads.
Premier Rush (eh? Never used it, but I’ll download it)
Fuse CC (Another tool I don’t know but hey, it’s there now!)
All of that downloaded and installed quickly. Having a gigabit connect really, REALLY, REALLY helps out massively to get this done! Between the solid connection, the SDD being pretty lightning fast, and the proc and memory not being a bottleneck, I lost track of timing this. Suffice it to say the hardware combination is pretty quick.
Second Test – Premiere Pro Rendering
With Premiere Pro installed I set about recollecting how to edit with this software. I’ve been using Screenflow for Mac and Kdenlive on Linux for so long I don’t remember a thing about how Premiere Pro works. However as I worked through transitions (building the above unboxing video) I started to recall how much power is in this software, and I also really got a feel for another thing, the trackpad, which I’ll add more about in a moment.
The rendering for MPG4 was a little faster than the Mac Book Pro I’ve got from almost ~5 years ago and above equivalent to performance with the next to latest generation Mac Book Pro laptops (i.e. It’s about ~2 years old that I’m comparing performance on). Overall, the performance of video rendering wasn’t super impressive. At least not like the leap from a MBP to my System76 Leopard Workstation, which screams through rendering at a reasonably large percentage (~25-40%) faster than my laptop machines. So the XPS 15 really is close or better – but just a little. I’d be curious to get hold of the latest MBP and compare the performance. Considering this has dedicated video, it has dedicated video, and both have similar processors and pretty hefty RAM.
Third Test – Trackpad
Ok, this is the closest I’ve ever used in usefulness, capability, and multi-finger touch as compared to an Apple product. The tactile feel in my opinion is better too with this fiber type material that Dell has used on the trackpad and the surrounding area around the trackpad and keyboard.
The first real test was the maneuvering one has to do when video editing with Premiere Pro. Lot’s of right clicking (double finger tap or the traditional bottom right of the trackpad!) swiping up and down but also side to side, and this Dell trackpad performed exceptionally well. Still not as transparently smooth as an Apple’s trackpad is, but it gets the job done and once I’m used to it, I’ll easily be just as fast as I was with an Apple trackpad. I give myself a day or two and I’ll be up to speed with it.
Fourth Test – Weight and Sizing
Here’s a few images of the XPS 15 compared to an older model (circa 2015) Mac Book Pro.
The build quality of the XPS 15, just like the XPS 13 I have from circa ~2015 is really good. There’s elements of it that don’t seem like they’re aligned correctly compared to the smooth feel and look of some of the other laptops, but overall it feels, and appears to be more egalitarian and functional focused versus many of the other laptop options. The edges are very smooth and the cover of the laptop is a single plate of aluminum, which gives it that feel when carrying it around similar to most of the modern laptops. The edges however aren’t there to look seemless or attractive, they’re there simply to provide side plates for USB, USB-C, Audio, HDMI, and related ports. No complaints but if you’re 100% focused on looks, this might not be an ideal option. Me… well I’m a funny looking fella and it’s probably noticeably I’m not staunchly focused on the appearance of anything. I’m all about function over form.
Further Tests – I’ll have more tests in the future, for now, that’s a wrap.
Other comments, observations, and notes on this laptop will be forthcoming. In a few months I’ll plan to write a follow up. In the meantime, if you’re looking for a relatively light (1.81 kg / 4 lbs), relatively powerful laptop (32 GB RAM, 4GB Video, 8th Gen i7 or i9 option) this is about as good as you’ll get for the price. If power isn’t your ultimate intent with a laptop purchase I highly suggest checking out the Matebook.
As for Windows 10. My verdict is still out on it, leaning toward “ugh, fuggidabout it I’m going back to MacOS/Linux land” but I’m going to give it a good go before I declare that. There’s definitely a few elements of the latest OS that I like and I also want to get a good feel for it’s Linux system before I write it off. Maybe I’ll stick with it after all? Until then, happy holiday hardware hacking!
Before diving into conclusions, let’s take a look at some answers to questions asked. This is a slice of answers, with totals for the charts and such. After a few months of answers I’ll have another follow up to see how things may or may not change.
Do you like video material?
What specifically do you, or would you like to watch in video? Screencasts, short videos, conversational, or some other type of videos?
I love both screencasts going through big topics and short videos that cover smaller tips and gotchas.
Videos with a specific outcome as the goal, whether achieved or not. Showing the process of something.. like hey, here’s how you building out a Postgres cluster using streaming replication and repmgr and pgpool… Kind of thing.
Bite sized content, maybe 2 minutes, to teach me one thing.
Editing. No jokes, no “hey what’s up guys” with 60 second intros. Discuss the problem, then solve it.
Demos, learning a new way of doing something
Doesn’t matter short or long, but has to be deeply technical with code examples that I can actually apply
I watch videos mostly for fun.
Short videos of say 5-10 minutes each covering different concept of the subject matter
(videos work best in a classroom setting where time/attention is precommitted, or as part of a tutorial)
If it’s too long, it ends up on my todo list forever (not good). So shorter is better. And something that benefits from visuals, rather than something that could just be written.
I also watch LinkedIn Learning when just starting a new tech. to get a general overview and pick up a tip or tow, then I read books and the Internet from there.
What kind of written material do you like?
Do you like other material mixed in that details the reason for the tech, the story, or such?
Is there anything that comes to mind, that you’d like to have me or the team I’m working with (@ DataStax) put together that you’d find useful, entertaining, or related.
Place priorities on designing materials for more depth (i.e., more linked material) as well as less attention-nuisance. That’s no criticism of your work, merely the gestalt of where we work — so less noise is a better way to stand out and make materials useful.
Maybe focus more on written material – code & architecture material (books, articles) rather than videos and twitch. It is much easier to consume and is easily googlable. Also I’d suggest making blog posts target a specific common issue or question – sometimes I see posts that I don’t really care about or the problem is so narrow that I don’t want to read about it. I’d read about building resilient and highly available architectures in various configurations.
Database reliability, scalability, migrations and such stuff is interesting.
Anything to do with machine learning.
Data model examples, starting up a Cassandra node, configuring YAML, etc
I’m going to go backwards through the questions and discuss what I’ve deducted, and in some ways what has surprised me among the answers!
First there’s the “Is there anything that comes to mind, that you’d like to have me or the team I’m working with (@ DataStax) put together that you’d find useful, entertaining, or related.” request and questions.
The answers here didn’t surprise me much at all. Within DevRel from Microsoft to DataStax to Google to many other organizations we have this ongoing battle between “write a whole book on it” or “make it 2 minutes short”. It’s wildly difficult to determine what format, what timing, and what structure material needs to be in for it to be most useful to people. So when I saw the answer that reads, “Place priorities on designing materials for more depth (i.e., more linked material) as well as less attention-nuisance.” I immediately thought, “yeah, for real, but ugh…” it’s difficult. However, I’m working on more thorough material, some of it will be paywalled via LinkedIn Learning or Pluralsight and other material may be available by book in the coming months. But there will be other material that will indeed be long form how to material on how to really put things together – from scratch and from the basis of “we have X thing and need to hack it so we can add a feature”.
The next answer I got in this section that I completely agree with is increasing the focus on written material. I’m making tons of video, and I’ve got that down to the point where it’s actually easier and faster to do most of it then it is to write things down. However I realized, especially from my own point of view, that written material actually ends up being vastly more useful than video material. That’s also why, even with the video material, when I’m covering specifics I aim to provide a linkable timeline and a blog entry with the code and other changes shown in the video. Thanks for reinforcing these efforts and giving me that indirect encouragement to make this process and the results even better. More written material is on its way!
As for the database reliability, scalability, migrations, machine learning, data modeling, Cassandra node starting, and all that it’s in the queue and I’m getting to it as fast as I possibly can.
Next question I asked is, “Do you like other material mixed in that details the reason for the tech, the story, or such?”
It appears, albeit not a huge contingent of people, some people are curious about biking, train coding, and making good grub! Hey, that’s groovy cuz I’ve got a show coming out which is basically the behind the scenes videos about all those topics that make the coding and technology hacking possible!
The one outlier in this set however is clearly the request for “Ways to simplify life to dig through those algorithms faster, easier, better?” which I didn’t suspect would be any different then the other answers for this questions. Which left me surprised and ill-prepared on what to do about fulfilling what is clearly a demand. I’ll have to up level my blog posts around algorithms. I did do a couple a long while ago now in “Algorithms 101: Big Sums” which I completed in Go and another I wrote up “Algorithms 101: Roads & Town Centers” which I have 90% of the answer complete but I’ve never finished the blog entry! I guess it’s time to get the algorithm train coupled up and ready to depart!
Then the question, “What kind of written material do you like?”
Two options lead by a healthy margin for this question: Demos w/ Write Up and Blog Articles. With this coupled up to the first question it’s clear that written material via blog and demoes via blog should and ought to be top priority. They are, however they’re a whole helluva lot of work, so I only get them produced but so fast. Got some gems coming on Go, Bash, Cassandra, and a few other demo, tech, and historical information.
Next up was single page cheat sheets and documentation, followed closely by books. I kind of expected documentation and books, but wow that single page cheat sheets option is higher rated than I would have suspected and by proxy I’ve immediately added that to my produce this type of material list! I put it in as a very secondary thought but it’s going to get into that increased focus queue.
The last one with some semblance of demand is pamphlet size short form. This one almost seems like a fluke, but I’ll ponder putting together some of these. I know O’Reilly has their short novelette size books which cover a particular topic. They hand these out for free at conferences and seem pretty solid. Maybe I’ll work one of those into the queue? Maybe.
The other three options scraped by with 1%, so somebody was choosing them. So the vi mug isn’t a priority nor the short explainer videos. Which seems in contention with video content demands around shorter content. I guess, explainer videos just doesn’t sound useful!
The next question I just put together a top three of the results, “What specifically do you, or would you like to watch in video? Screencasts, short videos, conversational, or some other type of videos?”
Make screen casts.
Make screen casts generally short.
Make screen cases that are short and on a specific and deep dive into a topic.
This seems kind of in conflict with itself, but I’m going to aim for it and try to hone the skill further. So that I can produce screen casts, screen casts that are generally short, and make sure that these screen casts that are short are on a specific and deep dive into a topic. Whew, got it.
Finally, “do you like video material?”
At this time, 53.8% of you have said yes. I had guessed it would be around 50%.
I had guessed no would be about 25%, and at 23.1% I wasn’t to far off.
The other respective mishmash of answers made for interesting depth to the questions that followed this question.
Article Summary & TLDR
Produce more topic specific, detailed material around screen casts and blog entries!
I started working with the Quote Center (QC) back in November, and wrote about it in “After 816 Days I’m Taking a Job!” Now that I’m a few months into the effort, it’s sitrep time. Sitrep, btw is military speak for
S ituational R eport.
The three core priorities I have at Quote Center in my role are: Community Contributions, Site Reliability, and Talent Recon.
Community Contributions (and Organizing)
Some of the progress I’ve made, is direct and immediate involvement with some really interesting groups here in Portland. The first seemed a prime option, and that’s the Elastic User Group.
Myself and some of the QC Team traveled late last year to check out the Elasticon Tour stop in Seattle. It was an educational experience where I got some of my first introductions to Elasticsearch and also a new product Elastic had just released recently called Beats. I was fairly impressed by what I saw and several other things aligned perfectly for follow up community involvement after that.
I’ve since kept in touch with the Elastic Team and started coordinating the Elastic User Group in Portland (Join the group on Meetup for future meetings & content). In March the group will be hosting a great meetup from Ward & Jason…
One of the other priorities I’ve been focusing on is standard site reliability. Everything from automation to continuous integration and deployment. I’ve been making progress, albeit at this stage going from zero to something, in the space of a site reliability practice takes time. I’ve achieved a few good milestones however, which will help build upon the next steps of the progress.
We’ve started to slowly streamline and change our practice around Rackspace and AWS Usage. This is a very good thing as we move toward a faster paced continuous integration process around our various projects. At this time it’s a wide mixture of .NET Solutions that we’re moving toward .NET Core. At the same time there are some Node.js and other project stacks that we’re adding to our build server process.
Our build server at this time is shaping up to be Team City. We have some build processes that are running in Jenkins, but those are being moved off and onto a TeamCity Server for a number of reasons. I’m going to outline these reasons and I’m happy to hear any reasons there may be other better options. So feel free to throw a tweet at me or leave a comment or three.
Jetbrains has a pretty solid and reliable product in Team City. It tends to be cohesive in building the core types of applications that we would prospectively have: Java, .NET, Node.js, C/C++ and a few others. That makes it easy to get all projects onto one build server type.
TeamCity has intelligence about what is and isn’t available for Java & .NET, enabling various package management and other capabilities without extensive scripting or extra coding needed. There are numerous plugins to help with these capabilities also.
TeamCity has fairly solid, quick, and informative support.
Those are my top reasons at this point. Another reason, which isn’t really something I felt should be enumerated, because it’s a feeling versus something I’ve confirmed. That is, the Jenkins Community honestly feels a bit haphazard and disconnected. Maybe I’m just not asking or haven’t seen the right forums to read or something, but I’ve found it a frustrating experience to deal with the Jenkins Server and find information and help regarding getting a disparate and wide ranging set of tech stacks building on it. TeamCity has always just been easy, and getting some continuous integration going the easiest way possible is very appealing.
We use a number of resources for monitoring of our systems. New Relic is one of them, and they’re great, however it’s a bit tough when things are locked down inside of a closed (physically closed) network. How does one monitor those systems and the respective network? Well, you get Nagios or something of the sort installed and running.
I installed it, but Nagios left me with another one of those dirty feelings like I just spilled a bunch of sour milk everywhere. I went about cleaning up the Nagios mess I’d made and, upon attending the aforementioned Elasticon Tour Stop in Seattle, decided to give Beats a try. After a solid couple weeks of testing and confirming the various things work well and would work well for our specific needs, I went about deploying Beats among our systems.
So far, albeit only being a few weeks into using Beats (and still learning how to actually make reports in Kibana) Beats appears to have been a good decision. Dramatically more cohesive and not spastically splintered all over the place like Nagios. I’m already looking into adding additional Beats beyond the known three; Topbeats, Packetbeats, and Filebeats. There are a number of other beats that we could add specific to our needs, that would be good open source projects. Stay tuned for those, I’ll talk about them in this space and get a release out to all as soon as we lay a single line of code for those.
Currently, nothing to report, but more to come in the space of talent recon.