Nik Kantar 2019-05-01T00:00:00Z Nik Kantar See You at PyCon 2019 PyCon 2019 is here and so are we. 2019-05-01T00:00:00Z <p><a href="" title="PyCon 2019">PyCon 2019</a> is here!</p> <p>Strictly speaking, it's already begun, but I'm only attending the talks this year again. I know, I know—I keep saying I'll attend the sprints and then don't.</p> <p>I'm flying into Cleveland tomorrow (Thursday) night, and flying out Monday morning.</p> <p>If you're reading this and are going, say hi via <a href="" title="nkantar on Twitter">Twitter</a> or <a href="" title="">email</a>!</p> <p>See you there! :]</p> Supporting Windows It's neither ethical nor smart to ignore about half of all Python users. 2019-02-15T00:00:00Z <p><img src="/static/media/2019/02/i-heart-windows.png" alt="I &lt;3 Windows"></p> <p>Last year I went to <a href="" title="North Bay Python 2018">North Bay Python 2018</a> and saw a lot of <a href="/blog/nbpy-2018-talks" title="North Bay Python 2018: Talks">really fantastic talks</a>. One of my favorites from the conference—and in general—was the very last, which closed out the weekend: Steve Dower's "<a href="" title="Steve Dower: Python on Windows is Okay, Actually">Python on Windows is Okay, Actually</a>".</p> <p>In fact, I think it's so good and important that I'm going to embed it here, my anti-JS sentiment be damned:</p> <iframe style="display: block; margin: auto; max-width: 100%;" width="560" height="315" src="" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe><p>There's also a <a href="" title="Talk Python To Me Episode #191: Python&#39;s journey at Microsoft">Talk Python To Me episode</a> with him talking about some related things, and touching on the above in part. It's also very much worth listening, though it doesn't cover quite the same topic. I suggest you give it a chance, but the talk is more relevant to what I'm covering here.</p> <p>Now, I don't personally care about Windows. I haven't used it since XP was the main thing, and I'm perfectly fine with that. Back then I didn't do much development, and what I did was static sites and PHP, and even that usually via SFTP directly on a Linux server.</p> <p>I do, however, care about the Python community, because communities are made of <em>people.</em> And as we learned from Steve, quite a few of those people are using Windows. Trying to get them to switch is ridiculous both because it's patronizing and because it's impossible.</p> <p>I would instead much rather embrace them.</p> <p>Today I spent some time and made steps toward ensuring my two "serious" Python packages work on Windows. After some general cleanup, I added continuous integration on Windows to both, so now I get free test runs. It wasn't a lot of work, and it doesn't cost me a penny. Feel free to take a look at logs for both <a href="" title="Parsenvy - AppVeyor">Parsenvy</a> and <a href="" title="Keysort - AppVeyor">Keysort</a>.</p> <p>I was lucky enough that everything I did was already cross-platform, so tests passed right out of the box, but I was fully prepared to deal with whatever issues came up to get everything sorted out.</p> <p>Because I'm not comfortable writing software for only half the people who could theoretically use it. And you shouldn't be either.</p> <p>Steve, thank you for the motivation.</p> Goals for 2019 About as late as last year, here is my next set of professional goals. 2019-02-08T00:00:00Z <p>Before we <em>really</em> get started, here are the previous iterations: <a href="/blog/goals-for-2018" title="Goals for 2018">2018</a> (<a href="/blog/goals-for-2018-in-review" title="Goals for 2018 in Review">2018 review</a>), <a href="/blog/goals-for-2017" title="Goals for 2017">2017</a> (<a href="/blog/goals-for-2017-in-review" title="Goals for 2017 in Review">2017 review</a>), and <a href="/blog/goals-for-2016" title="Goals for 2016">2016</a> (<a href="/blog/goals-for-2016-in-review" title="Goals for 2016 in Review">2016 review</a>).</p> <hr> <p>It's an interesting time to be writing this post, since today was my last day at <a href="" title="Friendbuy">Friendbuy</a> and I start at <a href="" title="Sweetgreen">Sweetgreen</a> in a week and a half. I'm honestly somewhat surprised how little on this list is influenced by the job change and everything else that came with it.</p> <h2>1. Get Back into Open Source</h2> <p>During 2016 and 2017 I made some meaningful contributions to the world of open source software. The vast majority of it were my own projects, which seems to be my jam, so to speak.</p> <p>Things didn't quite go that way in 2018, and I'd like to change that for 2019.</p> <p><a href="" title="nkantar/Autohook on GitHub">Autohook</a> and <a href="" title="nkantar/Starminder on GitHub">Starminder</a> have gained a little bit of traction, and I've struggled to find the mental energy to address contributions to the former and my own goals for the latter. <a href="" title="nkantar/Parsenvy on GitHub">Parsenvy</a> could use some refactoring. <a href="" title="nkantar/Publinker on GitHub">Publinker</a> is barely a thing, but I already use it and have plans for it. <a href="" title="nkantar/Tidby on GitHub">Tidby</a> could use, well, anything other than ability to slap someone around a bit with a large trout (and yolo, as of today).</p> <p>In addition to the existing projects above, I have at least three domains already purchased and ready for the open source projects they're supposed to house.</p> <p>If you're thinking "well, that's a bit ambitious of you, Nik", then congrats, we're on the same page. However, that hasn't stopped me before, so why would it this time?</p> <p>The goal for 2019 is to make some notable progress on multiple open source projects. This includes working on the code itself, probably some marketing, and perhaps even adding some contributors/co-maintainers! Yes, I'm being intentionally vague because that's all a lot of work.</p> <h2>2. Write More!</h2> <p>Ah yes, one of my 2017 goals (2. Write Every Week) makes a (not-so-triumphant) return. I'm no longer delusional enough to think I'll find the time and energy to write something coherent every single week, but I do think I can do better than I have so far. Looking back at my posts, there aren't all that many that are worth sharing, or maybe even reading. It sure would be neat to change that.</p> <h2>3. Read Some Tech Books</h2> <p>At every job interview I've had in the past few years, the idea that I want to learn has come up one way or another. It's not something particularly unique to me—lots of programmers say the same thing. I've never been all that great at tackling that with a focused aproach, though, and that's what I want to improve this year.</p> <p>I already have a few books lined up—namely <a href="" title="Cracking the Coding Interview">Cracking the Coding Interview</a> and <a href="" title="Fluent Python">Fluent Python</a>—so all I need to do is get started. In a way I already have, as I'm currently reading <a href="" title="The Responsible Communication Style Guide">The Responsible Communication Style Guide</a> and want to finish it first.</p> <h2>4. Learn a Useful Amount of Frontend</h2> <p>Over the last few years I very intentionally dropped my full-stack identity and replaced it with a heavy backend focus. While I neither regret that decision nor have any problems with what it's brought me, I've noticed a trend of staying away from side projects which require frontend work. I've come to the conclusion that this is entirely because I'm not versed in modern frontend technologies and techniques, which is a very changeable thing.</p> <p>Some of this will come through work—my role at Sweetgreen will at least begin as very much full-stack. Some of this will come through the previously mentioned open source projects, several of which require a frontend. All of this will come from simply doing it.</p> <h2>5. Give More Talks</h2> <p>In 2018 I—somewhat unexpectedly—gave a <a href="" title="Talks">talk</a> at <a href="" title="Write the Docs Los Angeles on Meetup">Write the Docs Los Angeles</a>. It was an awesome experience, and I'm about to give the same talk at <a href="" title="SoCal Python">SoCal Python</a> in a few weeks. I'll be submitting it to at least one conference this year.</p> <p>I've also got some ideas for other talks I'd like to give. One even involves hardware. I know—I too am <em>terrified.</em></p> Goals for 2018 in Review How did my goals for 2018 go? 2019-02-07T00:00:00Z <p>Welcome to the third edition in my world famous (not really) goal review series! This time we're taking a trip down the memory lane all the way back to when I set some <a href="/blog/goals-for-2018" title="Goals for 2018">goals for this past year</a>.</p> <p>Previously I've done <a href="/blog/goals-for-2017" title="Goals for 2017">2017</a> (<a href="/blog/goals-for-2017-in-review" title="Goals for 2017 in Review">2017 review</a>) and <a href="/blog/goals-for-2016" title="Goals for 2016">2016</a> (<a href="/blog/goals-for-2016-in-review" title="Goals for 2016 in Review">2016 review</a>) as well.</p> <p>As always, the scorecard:</p> <ol> <li>Make <em>PyBeach</em> happen: &#x02717;</li> </ol> <p><em>Score: 0/1</em></p> <h2>1. Make <em>PyBeach</em> Happen</h2> <p>Well, it's pretty simple: I didn't make <em>PyBeach</em> happen.</p> <p>When I decided to embark on this conference organizing adventure, I knew it would be a ton of work. And I knew it would be more work than I thought. What I misjudged was the margin by which it would be more work than I thought.</p> <p>The idea of a conference somehow came up at a <a href="" title="SoCal Python">SoCal Python</a> event, and it turned out there were a number of people interested in helping out. It also came up in the community chat, with a similar conclusion. I thus decided it would probably make sense for it to be a group project, perhaps involving folks outside of SoCal Python as well.</p> <p>In the <a href="/blog/announcing-pybeach" title="Announcing PyBeach">announcement post</a>, I cited <a href="" title="North Bay Python 2017">North Bay Python 2017</a> as my inspiration. At <a href="" title="PyCon 2018">PyCon 2018</a> the organizers gave a <a href="" title="&#39;How we designed an inclusivity-first conference on a shoestring budget and short timeline&#39; by Christopher Neugebauer, Josh Simmons, and Sam Kitajima-Kimbrel">very relevant talk</a>, going over a fair bit of what they did to put on the inaugural event. Regardless of whether you have any conference/event organizing aspirations, the talk is worth watching. For me it was rather relevant, and more than a little eye opening. This stuff is <em>quite a bit of work.</em></p> <p>And so, in the name of maintaining sanity, <em>PyBeach</em> has been tabled for the time being. Perhaps 2020 will be the year?</p> <p>In the meantime, I'm going to continue the tradition of giving myself half a point, since I didn't just forget all about this, but instead did do some work on it and evolved the idea.</p> <p>Hey, it's <em>my</em> blog, I can do what I want.</p> Hire me! (v.2018.12) I'm looking for my next destination. Could your company be it? 2018-12-19T00:00:00Z <p><em><strong>Update: I'm no longer looking. :)</strong></em> Everything below is for refence/posterity.</p> <hr> <p><img src="/static/media/2018/12/hire-me.png" alt="I&#39;m ready to sell my soul, err, I mean work for you! No, seriously, I&#39;m looking for work."></p> <p>Disclaimer: I've <em>always</em> wanted to write one of these, so it's possible I'll get a bit carried away. <code>¯\_(ツ)_/¯</code></p> <h2>Me</h2> <p>I wrote my first lines of code in the early 90s, when I was about 7. Don't let this fool you, though—what followed was a cool decade and a half of not doing anything noteworthy with computers, until my first real computer-related job in 2006.</p> <p>At that time I was in early college, rediscovering programming, and I started writing PHP and maintaining Linux servers part-time. Shortly thereafter I went off to get a design degree before going back to programming in 2011.</p> <p>I then did more PHP than I ever really wanted to, until discovering Python sometime in 2014 or so. I dove into it pretty heavily and immediately fell in love. Ever since, I've thought of myself as a Python programmer first and foremost. Most of that time I've spent wrangling Django and Flask one way or another, usually backed by PostgreSQL and deployed either on Heroku or plain ol' Linux boxes (sometimes managed by Ansible).</p> <p>For the past 8 months or so I've been working with an entirely different stack. It's been a bit more of a <em>stack du jour</em>, based primarily on TypeScript, with accompaniment consisting of DynamoDB, Kinesis, and AWS Lambda, and the whole symphony managed by Apex and Terraform.</p> <p>While the learning experience has been fascinating and valuable, I frankly miss working with Python. Ideally, I'd like to work on projects which are predominantly or at least largely written in it. Not a whole lot of serious software is single-language these days, but this preference is still important to me.</p> <p>If you're looking for my résumé, you can find it <a href="/resume" title="Résumé">here</a>.</p> <p>I'm hoping to land at the new place starting January 28th, 2019.</p> <h2>You</h2> <p>You're probably a small company, or a fairly independent team in a large one. You use something resembling a sane methodology for producing quality software, and it's shown itself to work well in this instance (or you're open to change). You don't like pointless meetings and are happy to reconsider any that are thought of as such by team members.</p> <p>You use Python pretty heavily, if not exclusively, and plan on continuing to do so in the foreseeable future. Its role in the organization isn't tied exclusively to data science/engineering, ops, and light scripting. You probably use it for something web related, be it good ol' page loading web apps or APIs powering external clients.</p> <p>If I'm lucky, you're heavily invested into open source in some manner. Maybe your main product is open, or you share some ancillary tools with the world. Dare I dream about your developers being allowed (or even encouraged) to contribute back to the software they use for the work?</p> <p>You support your staff in attending conferences, and perhaps even sponsor some as a way to give back to the community. Ditto for relevant meetups and other local events.</p> <p>You believe in work-life balance, or however you refer to the idea that happy, well rested employees live better lives and do better work.</p> <p>You're not an adtech company and your products and services aren't primarily harmful to anyone.</p> <p>You have an office in Los Angeles or no office at all.</p> <h2>Us</h2> <p>If the above sections have you feeling like it might be a match, you can email me at <a href="" title="Email"></a>. Do us both a favor and mention this post in the email, so I know you're not <em>entirely</em> random. ;)</p> <p>Note to recruiters: I'm not opposed to working with independent recruiters, but I tend to be <em>very</em> selective. If you choose to get in touch, please make sure what you send me <em>makes sense</em> based on the above. If you respect my time, I will respect yours, and quite likely remember you in the future for doing so.</p> PyCon 2019 Reminder I'm going to PyCon 2019 and hope to see you there. 2018-12-17T00:00:00Z <p><a href="" title="PyCon 2019">PyCon 2019</a> tickets are on sale!</p> <p>They actually have been for a little while, but also still are. In fact, as of this writing there are still early bird tickets available, so you should most definitely register <em>right now.</em> The previous four PyCons have sold out, and there's no reason to suspect otherwise for 2019.</p> <p>While I have your attention, you should actually totally submit a talk proposal. I know I will, at least for my <code># TODO</code> talk, and possibly another one or two.</p> <p>If you plan on being there, please get in touch! I'm pretty good at the whole <a href="" title="nkantar on Twitter">Twitter</a> thing around conferences, and <a href="" title="">email</a> is always reliable. Phone also works, but I'm not posting that here for obvious reasons.</p> <p>Some relevant dates:</p> <ul> <li>1/3: call for proposals closes</li> <li>4/19: cancellation deadline</li> <li>5/1–9: conference itself<ul> <li>5/1–2: tutorials</li> <li>5/3–5: talks and events</li> <li>5/6–9: sprints</li> </ul> </li> </ul> <p>See you there!</p> North Bay Python 2018: Talks I attended my favorite regional Python conference for the second time, saw some amazing talks, and wanted to tell you about them. 2018-11-19T00:00:00Z <p>I <em>love</em> <a href="" title="North Bay Python">North Bay Python</a>.</p> <p>After attending the inaugural event last year, I couldn't wait to go back for more. The program committee did a stellar job the first time, and they only raised the bar for the sequel. The fact that my list of favorite talks contains 13 out of the 22 total is quite telling.</p> <ul> <li><strong><a href="">Keynote</a></strong> by <em>Mariatta Wijaya</em></li> <li><strong><a href="">Auditing Your Site for Accessibility: Now What?</a></strong> by <em>Kat Passen</em></li> <li><strong><a href="">All in the timing: How side channel attacks work</a></strong> by <em>Philip "Phildini" James, Asheesh Laroia</em></li> <li><strong><a href="">Welcome to Jurassic Park: Where Chaos and Engineering Ethics Collide</a></strong> by <em>Hayley Denbraver</em></li> <li><strong><a href="">Recursion for Beginners: A Beginner's Guide to Recursion</a></strong> by <em>Al Sweigart</em></li> <li><strong><a href="">What PHP learned from Python</a></strong> by <em>Adam Harvey</em></li> <li><strong><a href="">Keynote</a></strong> by <em>Robert M. "r0ml" Lefkowitz</em></li> <li><strong><a href="">Disambiguation, In-Jokes, and Name Collisions: What You Need to Know When Naming a Python Project</a></strong> by <em>Thursday Bram</em></li> <li><strong><a href="">Guide to Software Engineering for Visually Impaired</a></strong> by <em>Abrar Sheikh</em></li> <li><strong><a href="">Memory Management in Python - The Basics</a></strong> by <em>Nina Zakharenko</em></li> <li><strong><a href="">Hi! My name is...</a></strong> by <em>James Bennett</em></li> <li><strong><a href="">Let The Computer Write The Tests</a></strong> by <em>Dan Crosta</em></li> <li><strong><a href="">Python on Windows is Okay, Actually </a></strong> by <em>Steve Dower</em></li> </ul> <p>Hope to see you there next year!</p> <p><img src="/static/media/2018/11/nbpy2018-badge.jpg" alt="North Bay Python 2018 badge"></p> PyBay 2018: Talks I went to PyBay 2018 and enjoyed some talks. Here they are. 2018-11-18T00:00:00Z <p>In August I finally attended <a href="" title="PyBay">PyBay</a>, after threatening to do so every year it's happened. It was an interesting adventure including a false hotel fire alarm and life threatening drivers, but in the end all was well.</p> <p>At the conference I got to see some old coworkers and meet awesome new people, but what we're here for are the talks I saw.</p> <p>The below list is in chronological order, and is all talks I saw in person and want to recommend.</p> <ul> <li><a href=""><strong>Keynote: Ethics in the era of AI and ML</strong></a> by <em>Rachel Thomas</em></li> <li><a href=""><strong>Keynote: Preventing, finding, and fixing bugs on a time budget</strong></a> by <em>Raymond Hettinger</em></li> <li><a href=""><strong>Clearer Code at Scale: Static Types at Zulip and Dropbox</strong></a> by <em>Greg Price</em></li> <li><a href=""><strong>Zebras and Lasers: A crash course on barcodes with Python</strong></a> by <em>Jonas Nubert</em></li> <li><a href=""><strong>2FA, WTF?</strong></a> by <em>Kelley Robinson</em></li> <li><a href=""><strong>An Import Loop and a Fiery Reentry</strong></a> by <em>Brandon Rhodes</em></li> </ul> <p><img src="/static/media/2018/11/pybay2018-badge.jpg" alt="PyBay 2018 badge"></p> PyBay 2018: See You There! I'm going to PyBay 2018 and hope to see you there. 2018-08-16T00:00:00Z <p>It occurs to me I haven't really publicized that I'm headed to <a href="">PyBay 2018</a> this weekend, so here we are.</p> <p>I plan on being there for the Friday night opening shenanigans, all day Saturday, and most of Sunday, with a likely slightly early departure to LA that afternoon.</p> <p>If you're going to be there as well, do get in touch! I actively use <a href="" title="nkantar on Twitter">Twitter</a> around conferences, but <a href="" title="">email</a> also works. If you have my phone number, that should work as well.</p> <p>There's a small chance I'll give a lightning talk. I'm on standby, so I might get an opportunity if an opening materializes. I'll probably brag about that pretty heavily if it happens, so you can come and watch if you're into that sort of thing.</p> <p>See you there!</p> PyCon 2018: The Afterfeels I went to PyCon (again) and it was amazing (again). 2018-05-28T00:00:00Z <p>I went to PyCon again this year, for the second time, and had a predictably great experience.</p> <p>It's hard to do it service after the fact, given the extent to which it's a social event as opposed to a technical one. That said, trying is still a worthy endeavor, so let's!</p> <p><img src="/static/media/2018/05/pycon2018-badge.jpg" alt="PyCon 2018 badge"></p> <p>(Why I put "You look great" on my badge I don't <em>really</em> know, but my best guess is that I registered with the help of some whiskey. <code>¯\_(ツ)_/¯</code>)</p> <h2>People</h2> <p>I met a lot of new folks this year, more than the last time for sure. Naming them here would be weird, but I plan on reaching out to them over the next few days to follow up.</p> <p>Said meetings occurred mostly during meals, open spaces, and post-conference social events. PyCon attendees are generally such a lovely bunch that joining a random group for every food outing tends to be a really solid strategy.</p> <h2>Open Spaces</h2> <p>This year I didn't attend nearly as many ast last year. I went to the secret/config management one hosted by <a href="">Mahmoud</a>, and was briefly at <a href="">David</a>'s Pallets/Flask session before having to step out. I was reminded about <a href="">Pocket Protector</a> and learned a few things about managing secrets (like don't store them in environment variables as your environment may find itself dumped into your logs) at the former, and got an overview of the state of the Pallets Projects portfolio at the latter. Neat.</p> <h2>Talks</h2> <p>All the talks are posted on YouTube, on the <a href="">official channel</a>.</p> <p>A few of my favorites (in alphabetical order per author):</p> <ul> <li>Alex Gaynor — <a href="">Learning From Failure: Post Mortems</a></li> <li>Allison Kaptur — <a href="">Love your bugs</a></li> <li>Amber Brown ("HawkOwl") — <a href="">How We Do Identity Wrong</a></li> <li>Christopher Neugebauer, Josh Simmons, Sam Kitajima-Kimbrel — <a href="">How we designed an inclusivity-first conference on a shoestring budget and short timeline</a></li> <li>Esther Nam — <a href="">One weird trick to becoming a better software developer</a></li> <li>Hynek Schlawack — <a href="">How to Write Deployment-friendly Applications</a></li> <li>Irina Truong — <a href="">Adapting from Spark to Dask: what to expect</a></li> <li>Larry Hastings — <a href="">Solve Your Problem With Sloppy Python</a></li> <li>Ned Batchelder — <a href="">Big-O: How Code Slows as Data Grows</a></li> <li>Sam Kitajima-Kimbrel — <a href="">Bowerbirds of Technology: Architecture and Teams at Less-than-Google Scale</a></li> </ul> <p>But really, you should just go and watch everything.*</p> <h3>* Aside: What to <em>Actually</em> Watch</h3> <p>The reality is that there are way too many talks for you to watch them all, unless you happen to have <em>lots</em> of downtime. And if you do, there's always <a href="">PyCon 2017</a>, and <a href="">PyCon 2016</a>, and <a href="">PyCon 2015</a>, and <a href="">PyCon 2014</a>, and…you get the point. In all likelihood, you have to be picky, and I understand.</p> <p>My strategy is to try watching just about everything that isn't <em>entirely unrelated</em> to the things I do. I use Python to build web applications, to manage some of that stuff, and for general programming, so I effectively try and watch everything that isn't data science or machine learning. Yes, this means I miss a lot of really great stuff, but I get plenty out of most of what I do watch.</p> <p>That's because I end up watching talks about the web, but also on more general topics, such as static types, software engineering best practices, and the Python community itself. These are all at least somewhat interesting to me, tend to be valuable, and there is enough variety to expose me to new ideas.</p> <h2>Cleveland</h2> <p>I'll admit I didn't experience too much of the city, but what I did I quite enjoyed.</p> <p>PyCon was held at the Huntington Convention Center, right in Downtown Cleveland. This put us a few blocks from the Rock &amp; Roll Hall of Fame, tons of food, and Lake Eerie. I didn't get the see the Hall of Fame this time, but all the food I had was excellent, and the lake was a beautiful sight from my hotel room. Downtown architecture is also really interesting to someone not used to seeing much other than Los Angeles.</p> <h2>Next Time</h2> <p>I'll definitely be going next year, and am already excited for it. I actually thought about booking a hotel room before leaving…</p> <p>I hope to stay in the same hotel—the Hilton Cleveland Downtown—as it's a rather nice hotel on its own merits, <em>and</em> is connected to the convention center by a direct tunnel, allowing me to leave my jacket in the room and stop by there quickly before heading out in the evening if need be. It also means I'm 15 minutes away from my laptop at all times, which I didn't use at the conference <em>at all</em>, and would thus prefer to leave in the room unless I expect to need it for an open space or some unstructured hacking.</p> <p>My lightning talk didn't make it in this time, but I'm definitely going to try to speak again, and by then I'm hoping to develop the full version, so I can try for both.</p> <p>I'll participate in more open spaces, as they're generally pretty rewarding. Not doing so this year is a bit of a regret.</p> <p>I plan on hanging around for at least some of the sprints. It didn't work out this year for a variety of reasons, but I think I can make it happen if I prioritize it higher.</p> <p>And finally, I'll make sure I have time to see the Rock &amp; Roll Hall of Fame and nearby museums.</p> <p><em>See you next year!</em></p> <p><img src="/static/media/2018/05/pycon2019-slide.jpg" alt="PyCon 2019 slide"></p>