{"@attributes":{"version":"2.0"},"channel":{"title":"DEV Community: Dustin King","description":"The latest articles on DEV Community by Dustin King (@cathodion).","link":"https:\/\/dev.to\/cathodion","image":{"url":"https:\/\/media2.dev.to\/dynamic\/image\/width=90,height=90,fit=cover,gravity=auto,format=auto\/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F2496%2FPF0ubMH5.jpg","title":"DEV Community: Dustin King","link":"https:\/\/dev.to\/cathodion"},"language":"en","item":[{"title":"How do you answer questions about your salary expectation\/requirements in a job application or interview?","pubDate":"Thu, 01 Aug 2019 00:11:04 +0000","link":"https:\/\/dev.to\/cathodion\/how-do-you-answer-questions-about-your-salary-expectation-requirements-in-a-job-application-or-interview-5hhd","guid":"https:\/\/dev.to\/cathodion\/how-do-you-answer-questions-about-your-salary-expectation-requirements-in-a-job-application-or-interview-5hhd","description":{"0":"\n\n"},"category":["salary","discuss"]},{"title":"What's a useful programming language feature or concept that a lot of languages don't have?","pubDate":"Thu, 29 Nov 2018 03:37:57 +0000","link":"https:\/\/dev.to\/cathodion\/whats-a-useful-programming-language-feature-or-concept-that-a-lot-of-languages-dont-have-2ep1","guid":"https:\/\/dev.to\/cathodion\/whats-a-useful-programming-language-feature-or-concept-that-a-lot-of-languages-dont-have-2ep1","description":"<p>One thing that comes to mind is Ruby's macro-style methods:<br>\n<\/p>\n\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight ruby\"><code><span class=\"k\">class<\/span> <span class=\"nc\">BankAccount<\/span> <span class=\"o\">&lt;<\/span> <span class=\"no\">Account<\/span>\n  <span class=\"nb\">attr_accessor<\/span> <span class=\"ss\">:balance<\/span>\n  <span class=\"n\">belongs_to<\/span> <span class=\"ss\">:customer<\/span>\n<span class=\"k\">end<\/span>\n<\/code><\/pre>\n\n<\/div>\n\n\n\n<p>What's something your favorite language has that others don't?  Or something from a language you tried out that one time and immediately missed it in other languages?<\/p>\n\n","category":"discuss"},{"title":"Why don't I see all posts from people I follow in my notification feed?","pubDate":"Sun, 28 Oct 2018 06:22:20 +0000","link":"https:\/\/dev.to\/cathodion\/why-dont-i-see-all-posts-from-people-i-follow-in-my-notification-feed-8ck","guid":"https:\/\/dev.to\/cathodion\/why-dont-i-see-all-posts-from-people-i-follow-in-my-notification-feed-8ck","description":"<p>When I check dev.to I usually go straight to <a href=\"https:\/\/dev.to\/notifications\">https:\/\/dev.to\/notifications<\/a> . However, I've noticed that some posts from people I follow don't show up there.<\/p>\n\n<p>In particular I know <a class=\"comment-mentioned-user\" href=\"https:\/\/dev.to\/ben\">@ben<\/a>\n writes a lot of posts but I hardly ever see them. <\/p>\n\n<p>From <a class=\"comment-mentioned-user\" href=\"https:\/\/dev.to\/jess\">@jess<\/a>\n, I see the latest <a href=\"https:\/\/dev.to\/devteam\/the-7-most-popular-dev-posts-from-the-past-week-1kh8\">The 7 Most Popular DEV Posts from the Past Week <\/a>, but not <a href=\"https:\/\/dev.to\/devteam\/help-test-the-dev-beta-app-4kme\">Help test the DEV beta app!<\/a><\/p>\n\n<p>Is \/notifications not where the new posts are supposed to show up?<\/p>\n\n","category":"meta"},{"title":"How many hours do you work?","pubDate":"Sat, 13 Oct 2018 19:31:52 +0000","link":"https:\/\/dev.to\/cathodion\/how-many-hours-do-you-work-18ic","guid":"https:\/\/dev.to\/cathodion\/how-many-hours-do-you-work-18ic","description":"<p>How many hours do you normally work per day?  How many days do you work per week?<\/p>\n\n","category":["discuss","hours"]},{"title":"An Explanation of Recursion Like You're Five","pubDate":"Mon, 08 Oct 2018 03:09:53 +0000","link":"https:\/\/dev.to\/cathodion\/an-explanation-of-recursion-like-youre-five-2b0m","guid":"https:\/\/dev.to\/cathodion\/an-explanation-of-recursion-like-youre-five-2b0m","description":"<p><em>Or: ReyCursion is a Snap<\/em><\/p>\n\n<p><em>This post was adapted from my comment on <a href=\"https:\/\/dev.to\/sloan\/explain-recursion-like-im-five-5c6\">Explain Recursion Like I'm Five<\/a><\/em><\/p>\n\n<p>Let's say you want to add up a bunch of numbers.  You have the numbers on a stack of index cards, one number on each card.  Somebody asked you to add them up and tell them the result.  That sounds like a <em>lot<\/em> of work.  I mean, come on, adding a couple numbers is fine, but there are probably like 50 numbers in this deck of cards.  So you hatch a plan...  <\/p>\n\n<p>You keep the top card, and you hand the rest to your classmate and ask <em>them<\/em> to add up rest of the cards.  You don't tell them that this was supposed to be your job.<\/p>\n\n<p>Your classmate says fine, but then realizes there must be like 49 cards in this deck, which sounds like a <em>lot<\/em>, I mean come on?  So they hatch a plan.  They keep one card for themselves and ask somebody else to add up the rest of the cards...<\/p>\n\n<p>And so on down the line (fortunately your school is pretty overcrowded and you have a lot of classmates) until somebody is handed just one card and asked to add \"them\" up.  <\/p>\n\n<p>\"What do you mean add 'them' up, it's just one card.\"  <\/p>\n\n<p>\"But what do they add up to?\"<\/p>\n\n<p>Okay whatever, so the last person just says the number on the card.  <\/p>\n\n<p>The second-to-last person takes that number and adds it to the card they kept, and tells it to the person who asked them.<\/p>\n\n<p>The third-to-last person takes the number that the second-to-last person tells them and adds it to the number on the card they kept, and so on back up the line....<\/p>\n\n<p>You get the number that the second person tells you and add it to the one card you kept.  Easy peasy lemon squeezy!  Then you tell the person who asked you.<\/p>\n\n<p>In code, this would look something like:<br>\n<\/p>\n\n<div class=\"highlight\"><pre class=\"highlight python\"><code><span class=\"k\">def<\/span> <span class=\"nf\">sumof<\/span><span class=\"p\">(<\/span><span class=\"n\">deck<\/span><span class=\"p\">):<\/span>\n    <span class=\"k\">if<\/span> <span class=\"nb\">len<\/span><span class=\"p\">(<\/span><span class=\"n\">deck<\/span><span class=\"p\">)<\/span> <span class=\"o\">==<\/span> <span class=\"mi\">1<\/span><span class=\"p\">:<\/span>\n        <span class=\"k\">return<\/span> <span class=\"n\">deck<\/span><span class=\"p\">[<\/span><span class=\"mi\">0<\/span><span class=\"p\">]<\/span>\n    <span class=\"k\">else<\/span><span class=\"p\">:<\/span>\n        <span class=\"n\">mycard<\/span> <span class=\"o\">=<\/span> <span class=\"n\">deck<\/span><span class=\"p\">.<\/span><span class=\"n\">pop<\/span><span class=\"p\">()<\/span>\n        <span class=\"k\">return<\/span> <span class=\"n\">mycard<\/span> <span class=\"o\">+<\/span> <span class=\"n\">sumof<\/span><span class=\"p\">(<\/span><span class=\"n\">deck<\/span><span class=\"p\">)<\/span>\n<\/code><\/pre><\/div>\n\n\n\n<p>One problem is that this destroys the deck.  We could have each person give the card back when they say the result (<code>deck.push(mycard)<\/code>), but in code it's cleaner to just pass a slice of the rest of the deck:<br>\n<\/p>\n\n<div class=\"highlight\"><pre class=\"highlight python\"><code><span class=\"k\">def<\/span> <span class=\"nf\">sumof<\/span><span class=\"p\">(<\/span><span class=\"n\">deck<\/span><span class=\"p\">):<\/span>\n    <span class=\"k\">if<\/span> <span class=\"ow\">not<\/span> <span class=\"n\">deck<\/span><span class=\"p\">:<\/span>\n        <span class=\"k\">return<\/span> <span class=\"mi\">0<\/span>\n    <span class=\"k\">else<\/span><span class=\"p\">:<\/span>\n        <span class=\"k\">return<\/span> <span class=\"n\">deck<\/span><span class=\"p\">[<\/span><span class=\"mi\">0<\/span><span class=\"p\">]<\/span> <span class=\"o\">+<\/span> <span class=\"n\">sumof<\/span><span class=\"p\">(<\/span><span class=\"n\">deck<\/span><span class=\"p\">[<\/span><span class=\"mi\">1<\/span><span class=\"p\">:])<\/span>\n<\/code><\/pre><\/div>\n\n\n\n","category":["recursion","explainlikeimfive"]},{"title":"Erase Distinctions Between Desktop and Mobile, Web and Native","pubDate":"Wed, 05 Sep 2018 23:56:18 +0000","link":"https:\/\/dev.to\/cathodion\/erase-distinctions-between-desktop-and-mobile-web-and-native-1e0b","guid":"https:\/\/dev.to\/cathodion\/erase-distinctions-between-desktop-and-mobile-web-and-native-1e0b","description":"<p>I'll try here to articulate something I feel about how software should be.  This includes both software for end users, and software for developing software (such as programming languages).  This is something that, whenever I run up against something in today's software that runs counter to this principle, I sigh and shake my head.  Here it is:<\/p>\n\n<h1>\n  \n  \n  For the user, there should be no distinction between platforms.\n<\/h1>\n\n<p>An application should give the same capabilities, the same information (modulated by platform-specific idioms and resources) regardless of whether the user is using the Web or a mobile app.  The distinction between the two is artificial.  The fact that developers currently have to use different languages and tools to develop for the different platforms is either an oversight or an intentional barrier.<\/p>\n\n<p>I should be able to save a website as an icon to my phone's home screen, and use it as an actual mobile app, not just a convenient bookmark to a tab in Safari.  Conversely, I should be able to use something that's ordinarily a mobile app, within a browser as if it were a web application (perhaps with URLs to various screens or objects within it).<\/p>\n\n<p>I consider <a href=\"https:\/\/en.wikipedia.org\/wiki\/Responsive_web_design\">responsive design<\/a>, wherein a web page changes its layout to fit the screen real estate available, to be a step in the right direction.  Ideally, it's just as easy to reach all the relevant links and areas whether the user is using a desktop or mobile web browser.<\/p>\n\n<p>Some software is written for developers, and so...<\/p>\n\n<h1>\n  \n  \n  For the DEVELOPER, there should be no distinction between platforms\n<\/h1>\n\n<p>If I want to develop native apps in Python, I should be able to do that.  If I want to write front-end code in Python, I should be able to do that (which is why I got excited about <a href=\"https:\/\/dev.to\/cathodion\/trying-out-transcrypt-3edn\">Transcrypt<\/a> for a bit).  I want the same for you and your favorite language (if that is, for some reason, not Python \ud83d\ude2c).<\/p>\n\n<p>Carrying this even further, I feel like I should be able to use a language with a framework written for another language.  Python on Rails, for example.  <\/p>\n\n<h1>\n  \n  \n  \"A world without borders or boundaries...\"\n<\/h1>\n\n<p>I'm sure there are lots of reasons why this is all a bad idea, or not feasible.  Or maybe you know of good ways of crossing these artificial boundaries, or have an idea of how to erase them forever.  Let me know what you think in the comments.<\/p>\n\n<p><iframe width=\"710\" height=\"399\" src=\"https:\/\/www.youtube.com\/embed\/aTL4qIIxg8A\">\n<\/iframe>\n<\/p>\n\n<p><em>Cover image: Milliau Viaduct, France.  Source: <a href=\"https:\/\/www.digitaltrends.com\/cool-tech\/biggest-bridges-in-the-world\/\">Digital Trends<\/a>, or at least a <a href=\"https:\/\/goo.gl\/images\/MGwJEo\">Google Image Search page<\/a> that links there.<\/em><\/p>\n\n","category":["philosophy","dreams","responsive"]},{"title":"A field without fundamentals?","pubDate":"Wed, 29 Aug 2018 17:30:20 +0000","link":"https:\/\/dev.to\/cathodion\/a-field-without-fundamentals-10l6","guid":"https:\/\/dev.to\/cathodion\/a-field-without-fundamentals-10l6","description":"<p>I saw a post a little while ago asking: what are the fundamentals every developer should learn.  I couldn't think of a good reply at the time (and now I can't find the post).  I could think of a lot of things that it would help most people to know, and thought of saying something about how the human and business side of it is often more influential than the software side.  I thought of listing some computer science concepts.  <\/p>\n\n<p>But are these really <em>fundamental<\/em> to the development of software?  People without formal CS education can succeed just fine in software development.  People sometimes develop software for personal use, without a business case in mind.  And computers might one day develop software for their own use, without humans being involved.<\/p>\n\n<p>There are some things that are nearly <em>universal<\/em>. For example (as one commenter to the post I mentioned suggested), virtually every piece of software you interact with, and every language you use, is either written in C, written in something that was written in C, or interpreted by something that was written in C, etc.  C seems to have hit a sweet spot in terms of low-level control and portability.  However, it's possible to develop software in assembler or machine code, and one could imagine an alternative ecosystem that built on top of that in a way that didn't include a C-like language.<\/p>\n\n<p>Most languages have control flow, but one could also consider creating complex Excel spreadsheets to be a form of programming.  One could imagine an alternative ecosystem based on Excel-like objects, with no concept of \"the statement currently being executed\".<\/p>\n\n<p>More specialized kinds of software development might have fundamentals.  If you're a web developer, the nature of the web is probably fundamental to what you do: HTTP, pages, CSS, the DOM.  On the other hand, someone could come up with <a href=\"https:\/\/www.youtube.com\/watch?v=w4_1SagLY94\">an abstraction<\/a> that makes those things irrelevant for the average developer.  <\/p>\n\n<p>Is abstraction fundamental?  Most of the things I've listed so far are examples of building abstractions upon a lower level architecture.  However, it's possible to write programs without creating new abstractions.<\/p>\n\n<p>What about principles of software engineering?  Design, testing, and getting clear on requirements certainly help you write better software.  Breaking things down into small, shippable pieces, \u00e0 la Agile certainly help keep a project on track.  But sometimes people develop software without knowing any of those things, and sometimes it goes fine.<\/p>\n\n<p>I'm definitely not saying you should throw out everything you know. There are absolutely concepts that are important to either the <em>history<\/em> or the <em>current state<\/em> of software development.  I'm just not sure that it truly has fundamentals in the same way that, say, physics does.  What do you think?<\/p>\n\n<p>I hope you've enjoyed this dose of nihilism.  Here's a Weird Al song.<\/p>\n\n<p><iframe width=\"710\" height=\"399\" src=\"https:\/\/www.youtube.com\/embed\/W8tRDv9fZ_c\">\n<\/iframe>\n<\/p>\n\n"},{"title":"please ignore this test post","pubDate":"Tue, 28 Aug 2018 15:30:03 +0000","link":"https:\/\/dev.to\/cathodion\/please-ignore-this-test-post-3338","guid":"https:\/\/dev.to\/cathodion\/please-ignore-this-test-post-3338","description":"<p>this is a test post<\/p>\n\n<p>this is another line added after the post was published.<\/p>\n\n<p>edit 2<\/p>\n\n"},{"title":"Are old unit tests useful?","pubDate":"Mon, 27 Aug 2018 17:40:17 +0000","link":"https:\/\/dev.to\/cathodion\/are-old-unit-tests-useful-1nd4","guid":"https:\/\/dev.to\/cathodion\/are-old-unit-tests-useful-1nd4","description":"<p>A little bit ago, I had some thoughts about old unit tests, which I posted on Twitter.  Rather than restate them, here are the tweets:<\/p>\n\n\n<blockquote class=\"ltag__twitter-tweet\">\n\n  <div class=\"ltag__twitter-tweet__main\">\n    <div class=\"ltag__twitter-tweet__header\">\n      <img class=\"ltag__twitter-tweet__profile-image\" src=\"https:\/\/res.cloudinary.com\/practicaldev\/image\/fetch\/s--ZBl-zTMq--\/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880\/https:\/\/pbs.twimg.com\/profile_images\/786772578320998400\/PF0ubMH5_normal.jpg\" alt=\"dustin king \ud83d\udc7d\ud83d\uddfd profile image\">\n      <div class=\"ltag__twitter-tweet__full-name\">\n        dustin king \ud83d\udc7d\ud83d\uddfd\n      <\/div>\n      <div class=\"ltag__twitter-tweet__username\">\n        <a class=\"mentioned-user\" href=\"https:\/\/dev.to\/cathodion\">@cathodion<\/a>\n\n      <\/div>\n      <div class=\"ltag__twitter-tweet__twitter-logo\">\n        <img src=\"https:\/\/res.cloudinary.com\/practicaldev\/image\/fetch\/s--ir1kO05j--\/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880\/https:\/\/dev.to\/assets\/twitter-f95605061196010f91e64806688390eb1a4dbc9e913682e043eb8b1e06ca484f.svg\" alt=\"twitter logo\">\n      <\/div>\n    <\/div>\n    <div class=\"ltag__twitter-tweet__body\">\n      If <br>(1) you you can only trust tests you wrote yourself, and <br>(2) any code older than 6 months may as well have been written by someone else, <br><br>..are existing tests actually useful, or do they just double the amount of legacy code per unit of functionality?\n    <\/div>\n    <div class=\"ltag__twitter-tweet__date\">\n      16:48 PM - 27 Aug 2018\n    <\/div>\n\n\n    <div class=\"ltag__twitter-tweet__actions\">\n      <a href=\"https:\/\/twitter.com\/intent\/tweet?in_reply_to=1034120380007555078\" class=\"ltag__twitter-tweet__actions__button\">\n        <img src=\"https:\/\/res.cloudinary.com\/practicaldev\/image\/fetch\/s--fFnoeFxk--\/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880\/https:\/\/dev.to\/assets\/twitter-reply-action-238fe0a37991706a6880ed13941c3efd6b371e4aefe288fe8e0db85250708bc4.svg\" alt=\"Twitter reply action\">\n      <\/a>\n      <a href=\"https:\/\/twitter.com\/intent\/retweet?tweet_id=1034120380007555078\" class=\"ltag__twitter-tweet__actions__button\">\n        <img src=\"https:\/\/res.cloudinary.com\/practicaldev\/image\/fetch\/s--k6dcrOn8--\/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880\/https:\/\/dev.to\/assets\/twitter-retweet-action-632c83532a4e7de573c5c08dbb090ee18b348b13e2793175fea914827bc42046.svg\" alt=\"Twitter retweet action\">\n      <\/a>\n      <a href=\"https:\/\/twitter.com\/intent\/like?tweet_id=1034120380007555078\" class=\"ltag__twitter-tweet__actions__button\">\n        <img src=\"https:\/\/res.cloudinary.com\/practicaldev\/image\/fetch\/s--SRQc9lOp--\/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880\/https:\/\/dev.to\/assets\/twitter-like-action-1ea89f4b87c7d37465b0eb78d51fcb7fe6c03a089805d7ea014ba71365be5171.svg\" alt=\"Twitter like action\">\n      <\/a>\n    <\/div>\n  <\/div>\n<\/blockquote>\n\n\n\n<blockquote class=\"ltag__twitter-tweet\">\n\n  <div class=\"ltag__twitter-tweet__main\">\n    <div class=\"ltag__twitter-tweet__header\">\n      <img class=\"ltag__twitter-tweet__profile-image\" src=\"https:\/\/res.cloudinary.com\/practicaldev\/image\/fetch\/s--ZBl-zTMq--\/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880\/https:\/\/pbs.twimg.com\/profile_images\/786772578320998400\/PF0ubMH5_normal.jpg\" alt=\"dustin king \ud83d\udc7d\ud83d\uddfd profile image\">\n      <div class=\"ltag__twitter-tweet__full-name\">\n        dustin king \ud83d\udc7d\ud83d\uddfd\n      <\/div>\n      <div class=\"ltag__twitter-tweet__username\">\n        <a class=\"mentioned-user\" href=\"https:\/\/dev.to\/cathodion\">@cathodion<\/a>\n\n      <\/div>\n      <div class=\"ltag__twitter-tweet__twitter-logo\">\n        <img src=\"https:\/\/res.cloudinary.com\/practicaldev\/image\/fetch\/s--ir1kO05j--\/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880\/https:\/\/dev.to\/assets\/twitter-f95605061196010f91e64806688390eb1a4dbc9e913682e043eb8b1e06ca484f.svg\" alt=\"twitter logo\">\n      <\/div>\n    <\/div>\n    <div class=\"ltag__twitter-tweet__body\">\n      I do find writing unit tests useful in writing new code or stabilizing old code. But often tests are verbose, repetitive, and less readable than the application code.\n    <\/div>\n    <div class=\"ltag__twitter-tweet__date\">\n      16:48 PM - 27 Aug 2018\n    <\/div>\n\n\n    <div class=\"ltag__twitter-tweet__actions\">\n      <a href=\"https:\/\/twitter.com\/intent\/tweet?in_reply_to=1034120389318856704\" class=\"ltag__twitter-tweet__actions__button\">\n        <img src=\"https:\/\/res.cloudinary.com\/practicaldev\/image\/fetch\/s--fFnoeFxk--\/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880\/https:\/\/dev.to\/assets\/twitter-reply-action-238fe0a37991706a6880ed13941c3efd6b371e4aefe288fe8e0db85250708bc4.svg\" alt=\"Twitter reply action\">\n      <\/a>\n      <a href=\"https:\/\/twitter.com\/intent\/retweet?tweet_id=1034120389318856704\" class=\"ltag__twitter-tweet__actions__button\">\n        <img src=\"https:\/\/res.cloudinary.com\/practicaldev\/image\/fetch\/s--k6dcrOn8--\/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880\/https:\/\/dev.to\/assets\/twitter-retweet-action-632c83532a4e7de573c5c08dbb090ee18b348b13e2793175fea914827bc42046.svg\" alt=\"Twitter retweet action\">\n      <\/a>\n      <a href=\"https:\/\/twitter.com\/intent\/like?tweet_id=1034120389318856704\" class=\"ltag__twitter-tweet__actions__button\">\n        <img src=\"https:\/\/res.cloudinary.com\/practicaldev\/image\/fetch\/s--SRQc9lOp--\/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880\/https:\/\/dev.to\/assets\/twitter-like-action-1ea89f4b87c7d37465b0eb78d51fcb7fe6c03a089805d7ea014ba71365be5171.svg\" alt=\"Twitter like action\">\n      <\/a>\n    <\/div>\n  <\/div>\n<\/blockquote>\n\n\n\n<blockquote class=\"ltag__twitter-tweet\">\n\n  <div class=\"ltag__twitter-tweet__main\">\n    <div class=\"ltag__twitter-tweet__header\">\n      <img class=\"ltag__twitter-tweet__profile-image\" src=\"https:\/\/res.cloudinary.com\/practicaldev\/image\/fetch\/s--ZBl-zTMq--\/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880\/https:\/\/pbs.twimg.com\/profile_images\/786772578320998400\/PF0ubMH5_normal.jpg\" alt=\"dustin king \ud83d\udc7d\ud83d\uddfd profile image\">\n      <div class=\"ltag__twitter-tweet__full-name\">\n        dustin king \ud83d\udc7d\ud83d\uddfd\n      <\/div>\n      <div class=\"ltag__twitter-tweet__username\">\n        <a class=\"mentioned-user\" href=\"https:\/\/dev.to\/cathodion\">@cathodion<\/a>\n\n      <\/div>\n      <div class=\"ltag__twitter-tweet__twitter-logo\">\n        <img src=\"https:\/\/res.cloudinary.com\/practicaldev\/image\/fetch\/s--ir1kO05j--\/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880\/https:\/\/dev.to\/assets\/twitter-f95605061196010f91e64806688390eb1a4dbc9e913682e043eb8b1e06ca484f.svg\" alt=\"twitter logo\">\n      <\/div>\n    <\/div>\n    <div class=\"ltag__twitter-tweet__body\">\n      So maybe either <br>(a) all unit tests should be thrown out after a month or so, or<br>(b) as much care should be put into the usability and maintainability of the tests as the application itself\n    <\/div>\n    <div class=\"ltag__twitter-tweet__date\">\n      16:57 PM - 27 Aug 2018\n    <\/div>\n\n\n    <div class=\"ltag__twitter-tweet__actions\">\n      <a href=\"https:\/\/twitter.com\/intent\/tweet?in_reply_to=1034122657078362112\" class=\"ltag__twitter-tweet__actions__button\">\n        <img src=\"https:\/\/res.cloudinary.com\/practicaldev\/image\/fetch\/s--fFnoeFxk--\/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880\/https:\/\/dev.to\/assets\/twitter-reply-action-238fe0a37991706a6880ed13941c3efd6b371e4aefe288fe8e0db85250708bc4.svg\" alt=\"Twitter reply action\">\n      <\/a>\n      <a href=\"https:\/\/twitter.com\/intent\/retweet?tweet_id=1034122657078362112\" class=\"ltag__twitter-tweet__actions__button\">\n        <img src=\"https:\/\/res.cloudinary.com\/practicaldev\/image\/fetch\/s--k6dcrOn8--\/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880\/https:\/\/dev.to\/assets\/twitter-retweet-action-632c83532a4e7de573c5c08dbb090ee18b348b13e2793175fea914827bc42046.svg\" alt=\"Twitter retweet action\">\n      <\/a>\n      <a href=\"https:\/\/twitter.com\/intent\/like?tweet_id=1034122657078362112\" class=\"ltag__twitter-tweet__actions__button\">\n        <img src=\"https:\/\/res.cloudinary.com\/practicaldev\/image\/fetch\/s--SRQc9lOp--\/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880\/https:\/\/dev.to\/assets\/twitter-like-action-1ea89f4b87c7d37465b0eb78d51fcb7fe6c03a089805d7ea014ba71365be5171.svg\" alt=\"Twitter like action\">\n      <\/a>\n    <\/div>\n  <\/div>\n<\/blockquote>\n\n\n\n<blockquote class=\"ltag__twitter-tweet\">\n\n  <div class=\"ltag__twitter-tweet__main\">\n    <div class=\"ltag__twitter-tweet__header\">\n      <img class=\"ltag__twitter-tweet__profile-image\" src=\"https:\/\/res.cloudinary.com\/practicaldev\/image\/fetch\/s--ZBl-zTMq--\/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880\/https:\/\/pbs.twimg.com\/profile_images\/786772578320998400\/PF0ubMH5_normal.jpg\" alt=\"dustin king \ud83d\udc7d\ud83d\uddfd profile image\">\n      <div class=\"ltag__twitter-tweet__full-name\">\n        dustin king \ud83d\udc7d\ud83d\uddfd\n      <\/div>\n      <div class=\"ltag__twitter-tweet__username\">\n        <a class=\"mentioned-user\" href=\"https:\/\/dev.to\/cathodion\">@cathodion<\/a>\n\n      <\/div>\n      <div class=\"ltag__twitter-tweet__twitter-logo\">\n        <img src=\"https:\/\/res.cloudinary.com\/practicaldev\/image\/fetch\/s--ir1kO05j--\/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880\/https:\/\/dev.to\/assets\/twitter-f95605061196010f91e64806688390eb1a4dbc9e913682e043eb8b1e06ca484f.svg\" alt=\"twitter logo\">\n      <\/div>\n    <\/div>\n    <div class=\"ltag__twitter-tweet__body\">\n      or <br>(c) the author of this thread has trust issues which probably explain a lot\n    <\/div>\n    <div class=\"ltag__twitter-tweet__date\">\n      16:57 PM - 27 Aug 2018\n    <\/div>\n\n\n    <div class=\"ltag__twitter-tweet__actions\">\n      <a href=\"https:\/\/twitter.com\/intent\/tweet?in_reply_to=1034122658097582080\" class=\"ltag__twitter-tweet__actions__button\">\n        <img src=\"https:\/\/res.cloudinary.com\/practicaldev\/image\/fetch\/s--fFnoeFxk--\/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880\/https:\/\/dev.to\/assets\/twitter-reply-action-238fe0a37991706a6880ed13941c3efd6b371e4aefe288fe8e0db85250708bc4.svg\" alt=\"Twitter reply action\">\n      <\/a>\n      <a href=\"https:\/\/twitter.com\/intent\/retweet?tweet_id=1034122658097582080\" class=\"ltag__twitter-tweet__actions__button\">\n        <img src=\"https:\/\/res.cloudinary.com\/practicaldev\/image\/fetch\/s--k6dcrOn8--\/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880\/https:\/\/dev.to\/assets\/twitter-retweet-action-632c83532a4e7de573c5c08dbb090ee18b348b13e2793175fea914827bc42046.svg\" alt=\"Twitter retweet action\">\n      <\/a>\n      <a href=\"https:\/\/twitter.com\/intent\/like?tweet_id=1034122658097582080\" class=\"ltag__twitter-tweet__actions__button\">\n        <img src=\"https:\/\/res.cloudinary.com\/practicaldev\/image\/fetch\/s--SRQc9lOp--\/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880\/https:\/\/dev.to\/assets\/twitter-like-action-1ea89f4b87c7d37465b0eb78d51fcb7fe6c03a089805d7ea014ba71365be5171.svg\" alt=\"Twitter like action\">\n      <\/a>\n    <\/div>\n  <\/div>\n<\/blockquote>\n\n\n<p>Disclaimer: I'm not telling you to throw out all your old unit tests! <\/p>\n\n<p>However, it has been my subjective experience that pre-existing test suites have caused me as much trouble as they've saved.  On the other hand, maybe they prevented even worse problems I wasn't aware of.  That's the problem with legacy code, though: you never know what it's okay to change.<\/p>\n\n<p>Unit tests are often touted as a form of executable documentation.  This is only true if they're written for the reader (or at least cleaned up\/refactored for them after the fact).<\/p>\n\n<p>What has your experience with pre-existing test suites been like?  Have you encountered a really well-written test suite that lived up to the promise of \"executable documentation\"?  Is there a better way to approach testing and existing tests?<\/p>\n\n","category":["testing","legacy","maintainability","discuss"]},{"title":"I used to work with vessel tracking data. Ask Me Anything!","pubDate":"Fri, 24 Aug 2018 20:18:57 +0000","link":"https:\/\/dev.to\/cathodion\/i-used-to-work-with-vessel-tracking-data-ask-me-anything-2cp6","guid":"https:\/\/dev.to\/cathodion\/i-used-to-work-with-vessel-tracking-data-ask-me-anything-2cp6","description":"<p>Ships, buoys, Search-and-Rescue (SAR) aircraft, and shore-side base stations send out automated messages to let each other know where they are.  Knowing where things are is useful when you want to avoid running into them :)  They do this over VHF frequencies using a <a href=\"https:\/\/en.wikipedia.org\/wiki\/Automatic_identification_system\">protocol called AIS<\/a>.  It was based on a similar protocol used by airplaines, <a href=\"https:\/\/en.wikipedia.org\/wiki\/Automatic_dependent_surveillance_%E2%80%93_broadcast\">called ADS-B<\/a>.<\/p>\n\n<p>For about 7.5 years as a government contractor, I worked on shore-side systems for streaming and hosting this data.  This also involved web apps for querying and analyzing the data, monitoring the health of the system itself, and providing certain users the ability to broadcast text messages to vessels.<\/p>\n\n<p>Ask me anything!<\/p>\n\n<p><em>Cover image: Painting of the 5-passenger Ever Charming in the Elbe River near Hamburg, by Heinz G Klug.  <a href=\"https:\/\/thecruisepeople.wordpress.com\/2012\/09\/17\/once-only-cargo-passenger-voyage-from-north-europe-to-los-angeles-via-suez-in-nsb-freighter-cruises-ever-charming\/\">Source<\/a>.<\/em><\/p>\n\n","category":["ama","maritime","ais","government"]},{"title":"Have you had to make your Python code run fast?","pubDate":"Thu, 23 Aug 2018 18:56:29 +0000","link":"https:\/\/dev.to\/cathodion\/have-you-had-to-make-your-python-code-run-fast-36bp","guid":"https:\/\/dev.to\/cathodion\/have-you-had-to-make-your-python-code-run-fast-36bp","description":"<p>Though performance is often cited as a reason people are skeptical of Python (see <a class=\"mentioned-user\" href=\"https:\/\/dev.to\/grokcode\">@grokcode<\/a>\n's <a href=\"https:\/\/dev.to\/grokcode\/99-problems-but-python-aint-one-1gj4\">recent post and the replies to it<\/a> ), I haven't run into many performance issues in Python myself.  On the other hand, most of the programming I've done in Python hasn't been the kind where milliseconds matter (or if they did matter, it was already optimized by libraries like NumPy and Matplotlib).   <\/p>\n\n<p>The one performance issue I had to deal with wasn't with Python itself, but with having to await the results of many database queries, and therefore needing to have multiple ones running at a time.  I spent some time trying to get multiprocessing to work, before realizing that threading was sufficient (as the Python code itself wasn't CPU-bound).  <\/p>\n\n<p>Have you run up against performance issues in Python, or had to use it in a resource-constrained environment?  What kind of problems did you have?  What did you do to meet your performance needs?<\/p>\n\n<p>Edit to add: If you've never run up against performance issues in Python after using it a lot, especially if there was some situation where you you thought performance was going to be a problem, I'd like to hear about too. <\/p>\n\n","category":["python","performance","discuss"]},{"title":"Competition with Coworkers","pubDate":"Wed, 15 Aug 2018 17:55:43 +0000","link":"https:\/\/dev.to\/cathodion\/competition-with-coworkers-5e79","guid":"https:\/\/dev.to\/cathodion\/competition-with-coworkers-5e79","description":"<p>Last night's <a href=\"https:\/\/twitter.com\/search?f=tweets&amp;q=%23DevDiscuss%20since%3A2018-08-14%20until%3A2018-08-16&amp;src=typd\">#DevDiscuss<\/a> Twitter discussion on healthy company culture reminded me of one thing that has been unhealthy at some places I've worked:  the feeling that you're competing with your coworkers.<\/p>\n\n<p>Some things that have added to this feeling in the past:<\/p>\n\n<ul>\n<li>Numerical levels added to job titles (e.g. Senior Software Engineer, Level III).<\/li>\n<li>Being a lead developer and individual contributor on the same project<\/li>\n<li>Being judged on number of tickets closed (as opposed to depth, difficulty, or importance of the tickets).<\/li>\n<li>Having to interview people for positions higher than one's numerical level<\/li>\n<li>Having people you see as more junior promoted to the same level<\/li>\n<\/ul>\n\n<p>On the one hand, it's important to recognize experience and accomplishment.  On the other, it's probably hard to do in a way that everybody will feel is fair.<\/p>\n\n<p>How often do you feel you're competing with your coworkers?  What contributes to this feeling?  What can you do, or what can an employer do, to make things more cooperative and supportive?<\/p>\n\n","category":"discuss"}]}}