<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Mikk Pristavka</title>
    <description>The latest articles on DEV Community by Mikk Pristavka (@mikkpr).</description>
    <link>https://dev.to/mikkpr</link>
    <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%2F3395%2Fb347ca95-27ff-4e52-ab23-839a2daa2f8b.jpg</url>
      <title>DEV Community: Mikk Pristavka</title>
      <link>https://dev.to/mikkpr</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/mikkpr"/>
    <language>en</language>
    <item>
      <title>What are good ways to learn software architecture and systems design?</title>
      <dc:creator>Mikk Pristavka</dc:creator>
      <pubDate>Fri, 13 Jul 2018 12:13:49 +0000</pubDate>
      <link>https://dev.to/mikkpr/what-are-good-ways-to-learn-software-architecture-and-systems-design-38b9</link>
      <guid>https://dev.to/mikkpr/what-are-good-ways-to-learn-software-architecture-and-systems-design-38b9</guid>
      <description>&lt;p&gt;I get anxious when working on back-end code. Data loss, security breaches and scalability/performance issues seem to be lurking around every corner if I don't pay attention. Sure, I can come up with a solution to most problems thrown my way, but with every design choice there's always the thought that maybe I didn't think it through and I forgot about a critical part of the system and it will have serious ramifications in the future.&lt;/p&gt;

&lt;p&gt;This feeling is not only at my day job where I work on a fairly complex Rails app, but also in my hobby of game design and development — sketching out ideas and hacking together a prototype is one thing, but building it so that the code is maintainable, scalable, secure and easily understood from the start feels like black magic.&lt;/p&gt;

&lt;p&gt;Of course, architecture and design patterns are not only a back-end thing. I've learned to write more or less maintainable code over the years and always seek ways to make it more flexible and concise, but the end result is just cosmetics anyway and the real magic happens elsewhere, so it doesn't feel as important.&lt;/p&gt;

&lt;p&gt;Aside from just reading and understanding the source code I'm working on and familiarizing myself with source code of other, open-source applications, what are other good ways to learn the "correct mindset" of building systems? I'm most interested in how to think about the system as a whole and how to divide it into parts that make the most sense, given the overall problem the system is trying to solve; How to think about data flow, single responsibility, patterns that can be applied etc. How and where should I even begin?&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fy5m40nfaedoqxy2wj2nk.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fy5m40nfaedoqxy2wj2nk.gif" alt="I have no idea what I'm doing" width="360" height="249"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>advice</category>
      <category>discuss</category>
      <category>architecture</category>
      <category>reading</category>
    </item>
    <item>
      <title>Workspace grid for MacOS without external tools</title>
      <dc:creator>Mikk Pristavka</dc:creator>
      <pubDate>Mon, 18 Sep 2017 11:51:16 +0000</pubDate>
      <link>https://dev.to/mikkpr/workspace-grid-for-macos-without-external-tools</link>
      <guid>https://dev.to/mikkpr/workspace-grid-for-macos-without-external-tools</guid>
      <description>&lt;p&gt;&lt;em&gt;Also posted to &lt;a href="https://medium.com/@mikkpr/desktop-grid-for-macos-b2b2bfc34432" rel="noopener noreferrer"&gt;Medium&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;I discovered a neat trick that greatly reduced the time I normally spent to switch between my open apps. Additionally, it helped me organize everything so that finding a specific app is just a keystroke away.&lt;/p&gt;

&lt;h2&gt;
  
  
  It was under my nose the whole time
&lt;/h2&gt;

&lt;p&gt;The “trick is extremely simpleâ€Š–â€Šall you need to do is create 9 different spaces and assign specific hotkeys to switch to each one.&lt;/p&gt;

&lt;p&gt;I personally use Cmd+Ctrl+the nine leftmost letters on the keyboard as a 3x3 grid (QWE, ASD, and ZXC with my layout). I have my Caps Lock doubled as a Ctrl key, so pressing “Caps Lock + Cmd + D to switch to the 6th space doesn’t feel as awkward as it seems. 9 spaces seemed enough to accommodate all my apps, but there can be up to 16 different spaces.&lt;/p&gt;

&lt;p&gt;Here’s an official article on how to create new spaces: &lt;a href="https://support.apple.com/kb/PH25574" rel="noopener noreferrer"&gt;https://support.apple.com/kb/PH25574&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fiq3u1wadgvbjl4oldf0q.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fiq3u1wadgvbjl4oldf0q.png" alt="You can’t assign these unless you already have created the 9 desktops in Mission Control" width="800" height="415"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;To bind hotkeys to switch to a specific space, go to “System Preferences &amp;gt; Keyboard”, choose the “Shortcuts tab and “Mission Control on the left sidebar.&lt;br&gt;
These key combinations will be available only after you actually create the extra spaces.&lt;/p&gt;

&lt;h2&gt;
  
  
  Every app has a home now
&lt;/h2&gt;

&lt;p&gt;To take the most out of this, I assigned my apps to specific spaces and organized the spaces thematically so that I could instantly switch to whichever app I need without thinking very much.&lt;/p&gt;

&lt;p&gt;My most important apps are in the top three spaces (Chrome and iTerm generally), the middle row is for communication (email, Slack, Skype etc.)and the bottom three spaces are for note taking apps, Finder and Spotify.&lt;/p&gt;

&lt;p&gt;To make the apps actually stick to their assigned spaces, I manually set their desktop preference using the Dock. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fypz7qgtxridvo1dujopp.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fypz7qgtxridvo1dujopp.png" alt="This makes iTerm always open on the 2nd space, easily accessible via Cmd+Ctrl+W" width="800" height="474"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;To keep the spaces in the preferred order, there’s another option to uncheck in Mission Control preferences: “automatically rearrange Spaces based on most recent use”.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fxfnz9yzur8fv0qzisvo7.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fxfnz9yzur8fv0qzisvo7.png" alt="You wouldn’t want your Spaces randomly rearranging themselves, so uncheck this" width="800" height="323"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I use &lt;a href="https://www.spectacleapp.com/" rel="noopener noreferrer"&gt;Spectacle&lt;/a&gt; to easily divide windows into halves or thirds in case I want to see multiple windows in the same space simultaneously. Not having to manually position them is another time saver.&lt;/p&gt;

&lt;p&gt;This is how far the system allows me to go, thoughâ€Š–â€Šif I ever feel the need for additional functionality to my grid of spaces, I will most likely consider using &lt;a href="https://totalspaces.binaryage.com/" rel="noopener noreferrer"&gt;Totalspaces&lt;/a&gt; instead.&lt;/p&gt;

&lt;p&gt;What other simple productivity tools and tricks are hidden in MacOS, I wonder?&lt;/p&gt;

&lt;p&gt;EDIT:&lt;/p&gt;

&lt;p&gt;The initial idea that drove me towards finding this solution: &lt;a href="http://code.krister.ee/my-coding-environment/" rel="noopener noreferrer"&gt;http://code.krister.ee/my-coding-environment/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Here are a few tips on how to reduce the animation speeds and overall motion:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://support.apple.com/kb/PH25204?locale=en_US" rel="noopener noreferrer"&gt;https://support.apple.com/kb/PH25204?locale=en_US&lt;/a&gt; &lt;/li&gt;
&lt;li&gt;&lt;a href="https://apple.stackexchange.com/a/253800" rel="noopener noreferrer"&gt;https://apple.stackexchange.com/a/253800&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>productivity</category>
      <category>macos</category>
      <category>osx</category>
    </item>
  </channel>
</rss>
