Nik Kantar 2019-11-11T00:00:00Z Nik Kantar Keynotes to Watch I think everyone should watch these two keynotes, but especially those of us working in tech. 2019-11-11T00:00:00Z <p>I happen to think these two keynotes are something <em>everyone</em> should watch, and I don't make that claim lightly. Without exaggeration, I teared up during these at both PyCon and North Bay Python.</p> <p>Best enjoyed in order as delivered.</p> <h2>Shadeed "Sha" Wallace-Stepter — "From Prison to Python"</h2> <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><h2>Jessica McKellar — "Mass Decarceration"</h2> <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> Write More Write more. 2019-10-09T00:00:00Z <p><a href="/static/media/2019/10/write-more1.jpg"><img src="/static/media/2019/10/write-more1.jpg" alt="Write more"></a></p> <p><a href="/static/media/2019/10/write-more2.jpg"><img src="/static/media/2019/10/write-more2.jpg" alt="Write more"></a></p> <p><a href="/static/media/2019/10/write-more3.jpg"><img src="/static/media/2019/10/write-more3.jpg" alt="Write more"></a></p> Free (from) Project Ideas I'm letting some domains expire because I have neither the time nor desire to build what I wanted, so here you go. 2019-08-08T00:00:00Z <p>I've been <del>mildly</del> addicted to domain names for about a decade and a half at this point. For the better part of the last few years I've always had 15–20 registered, and next year that will drop to 10. Seeing as how I once already shared a <a href="/blog/free-project-startup-ideas" title="Free Project/Startup Ideas">list of free project/startup ideas</a>, I wanted to follow up in a sense.</p> <p>Some actual ideas:</p> <ul> <li><strong></strong> (expires 2/10/2020) — fantasy motorsport</li> <li><strong></strong> (expires 9/21/2019) — service for sharing feed subscriptions (newsfeeds, podcasts, etc.)</li> <li><strong></strong> (expires 6/3/2020) — webapp for submitting continuous DJ mixes from Spotify for surfacing in a global playlist</li> <li><strong></strong> (expired 8/1/2019) — combined multifeed for Vim related blogs, akin to a <a href="" title="Planet (software) - Wikipedia">Planet</a></li> </ul> <p>The remaining domains, which never had anything interesting attached to them even in theory:</p> <ul> <li><strong></strong> (expires 12/30/2019)</li> <li><strong></strong> (expires 8/23/2019)</li> <li><strong></strong> (expires 4/29/2020)</li> <li><strong></strong> (expires 6/7/2020)</li> <li><strong></strong> (expires 4/19/2020)</li> </ul> <p>Have at it!</p> I'm Speaking at PyOhio 2019! Look, I'm just bragging… 2019-06-12T00:00:00Z <p><em>My talk submission got accepted at PyOhio 2019, woohoo!</em></p> <p><img src="/static/media/2019/06/pyohio2019.jpg" alt="PyOhio 2019"></p> <p>OK, now that I've taken a deep breath, I should probably tell you it's the one I gave at <a href="" title="# TODO: add comments: 5 Tips for Winning at Code Comments | Write the Docs LA, October 2018">Write the Docs LA in October</a> and <a href="" title="# TODO: add comments: 5 Tips for Winning at Code Comments | SoCal Python, February 2019">SoCal Python in February</a>. I'll revise and expand it a bit to fill the time slot better, but it'll essentially be the same content.</p> <p>I'm obviously <em>v. excited</em> because of course I am. Also, I now have a <a href="" title="PyOhio 2019 Speaker: Nik Kantar">speaker bio</a> and <a href="" title="PyOhio 2019 Presentation: # TODO: Add Comments: 5 Tips for _Winning_ at Code Comments">talk page</a>.</p> <p>This edition will be recorded, which is great, since the slides themselves aren't as fun to peruse, and I occasionally want to share this with someone.</p> <p>If you plan on being at PyOhio, let me know!</p> 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>