Skip to content

Commit f06bbda

Browse files
committed
Deploy staging preview from post/updates (c3ea52b)
1 parent cb7daeb commit f06bbda

52 files changed

Lines changed: 31754 additions & 0 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.
Lines changed: 394 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,394 @@
1+
<!DOCTYPE html>
2+
<html class="direction--ltr"lang="en"><head>
3+
<meta charset="utf-8">
4+
<meta http-equiv="X-UA-Compatible" content="IE=edge">
5+
<meta name="viewport" content="width=device-width, initial-scale=1"><!-- Begin Jekyll SEO tag v2.8.0 -->
6+
<title>Setting Up the Perfect Remote Development Environment | devnomadic</title>
7+
<meta name="generator" content="Jekyll v4.4.1" />
8+
<meta property="og:title" content="Setting Up the Perfect Remote Development Environment" />
9+
<meta name="author" content="devnomadic" />
10+
<meta property="og:locale" content="en_US" />
11+
<meta name="description" content="Essential tools and configurations for productive remote coding" />
12+
<meta property="og:description" content="Essential tools and configurations for productive remote coding" />
13+
<link rel="canonical" href="https://devnomadic.github.io/2025/06/08/remote-development-environment.html" />
14+
<meta property="og:url" content="https://devnomadic.github.io/2025/06/08/remote-development-environment.html" />
15+
<meta property="og:site_name" content="devnomadic" />
16+
<meta property="og:type" content="article" />
17+
<meta property="article:published_time" content="2025-06-08T00:00:00+00:00" />
18+
<meta name="twitter:card" content="summary" />
19+
<meta property="twitter:title" content="Setting Up the Perfect Remote Development Environment" />
20+
<script type="application/ld+json">
21+
{"@context":"https://schema.org","@type":"BlogPosting","author":{"@type":"Person","name":"devnomadic"},"dateModified":"2025-06-08T00:00:00+00:00","datePublished":"2025-06-08T00:00:00+00:00","description":"Essential tools and configurations for productive remote coding","headline":"Setting Up the Perfect Remote Development Environment","mainEntityOfPage":{"@type":"WebPage","@id":"https://devnomadic.github.io/2025/06/08/remote-development-environment.html"},"url":"https://devnomadic.github.io/2025/06/08/remote-development-environment.html"}</script>
22+
<!-- End Jekyll SEO tag -->
23+
<link rel="stylesheet" href="/assets/css/style.css">
24+
<link rel="icon" type="image/png" href="/assets/favicon.png" />
25+
<link rel="stylesheet" href="/assets/css/magnific-popup.css"><link type="application/atom+xml" rel="alternate" href="https://devnomadic.github.io/feed.xml" title="devnomadic" /><script src="https://code.jquery.com/jquery-3.2.0.min.js"></script>
26+
<script src="/assets/js/jquery.magnific-popup.js"></script>
27+
</head>
28+
<body><div class="site-header">
29+
<div class="wrapper">
30+
<a class="site-title" rel="author" href="/">devnomadic<b class="command_prompt"></b><b class="blinking_cursor">_</b></a>
31+
<span class="social_links">
32+
33+
34+
<a class="color-purple-hover" href="https://github.com/devnomadic"><i class="fab fa-github"></i></a>
35+
36+
37+
38+
<a class="color-blue-hover" href="https://www.linkedin.com/in/drewkennedy"><i class="fab fa-linkedin"></i></a>
39+
40+
41+
42+
<a class="color-green-hover" href="mailto:drew@devnomadic.com"><i class="fa fa-envelope"></i></a>
43+
44+
45+
</span>
46+
</div>
47+
</div>
48+
<main class="page-content" aria-label="Content">
49+
<div class="wrapper">
50+
51+
<div class="author-box">
52+
53+
54+
<img src="
55+
/assets/avatar.gif
56+
" class="author-avatar" alt="Avatar" />
57+
<div class="description">Software engineer and digital nomad currently exploring the world. I write about remote work, travel, and building software from anywhere.</div>
58+
59+
</div>
60+
61+
62+
<div class="post">
63+
<h1 class="post-title">Setting Up the Perfect Remote Development Environment</h1>
64+
65+
<div class="post-tags">
66+
67+
<a class="tag" href="/tags#remote-work">remote-work</a>
68+
69+
<a class="tag" href="/tags#development">development</a>
70+
71+
<a class="tag" href="/tags#tools">tools</a>
72+
73+
<a class="tag" href="/tags#productivity">productivity</a>
74+
75+
<a class="tag" href="/tags#vscode">vscode</a>
76+
77+
<a class="tag" href="/tags#docker">docker</a>
78+
79+
</div>
80+
81+
<div class="post-date">
82+
Published on 08 Jun 2025
83+
84+
</div>
85+
86+
<noscript>
87+
<div class="post-description">Essential tools and configurations for productive remote coding</div>
88+
</noscript>
89+
<div id="animated-post-description" class="post-description" style="display: none;"></div>
90+
91+
<h1 id="creating-your-remote-development-paradise">Creating Your Remote Development Paradise</h1>
92+
93+
<p>Working remotely as a developer requires a carefully crafted environment that enables productivity from anywhere in the world. Here’s my guide to setting up the perfect remote development setup.</p>
94+
95+
<h2 id="essential-hardware">Essential Hardware</h2>
96+
97+
<h3 id="the-laptop">The Laptop</h3>
98+
<p>Your laptop is your lifeline. I recommend:</p>
99+
<ul>
100+
<li><strong>MacBook Pro M3</strong> - Excellent battery life and performance</li>
101+
<li><strong>16GB+ RAM</strong> - Essential for running multiple development environments</li>
102+
<li><strong>External monitor</strong> - Productivity booster when you have desk space</li>
103+
</ul>
104+
105+
<h3 id="accessories">Accessories</h3>
106+
<ul>
107+
<li><strong>Portable monitor</strong> - For dual-screen setups in coworking spaces</li>
108+
<li><strong>Mechanical keyboard</strong> - Compact 60% or TKL for travel</li>
109+
<li><strong>Wireless mouse</strong> - Better ergonomics than trackpad for long sessions</li>
110+
</ul>
111+
112+
<h2 id="software-stack">Software Stack</h2>
113+
114+
<h3 id="development-environment">Development Environment</h3>
115+
<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="c"># Essential tools for any nomad developer</span>
116+
brew <span class="nb">install </span>git
117+
brew <span class="nb">install </span>docker
118+
brew <span class="nb">install </span>node
119+
brew <span class="nb">install </span>python
120+
</code></pre></div></div>
121+
122+
<h3 id="code-editor-setup">Code Editor Setup</h3>
123+
<p>I use <strong>VS Code</strong> with these essential extensions:</p>
124+
<ul>
125+
<li>Remote Development pack</li>
126+
<li>GitLens</li>
127+
<li>Docker</li>
128+
<li>Live Share (for pair programming across timezones)</li>
129+
</ul>
130+
131+
<h3 id="cloud-development">Cloud Development</h3>
132+
<p>Consider using:</p>
133+
<ul>
134+
<li><strong>GitHub Codespaces</strong> - Development in the browser</li>
135+
<li><strong>GitPod</strong> - Cloud-based development environments</li>
136+
<li><strong>DigitalOcean Droplets</strong> - Custom remote development servers</li>
137+
</ul>
138+
139+
<h2 id="connectivity-solutions">Connectivity Solutions</h2>
140+
141+
<h3 id="internet-backup-plans">Internet Backup Plans</h3>
142+
<p>Never rely on single internet source:</p>
143+
<ol>
144+
<li><strong>Primary</strong>: Local WiFi (hotel, coworking, cafe)</li>
145+
<li><strong>Backup</strong>: Mobile hotspot with unlimited data</li>
146+
<li><strong>Emergency</strong>: USB tethering from phone</li>
147+
</ol>
148+
149+
<h3 id="vpn-setup">VPN Setup</h3>
150+
<p>Essential for:</p>
151+
<ul>
152+
<li>Accessing company resources</li>
153+
<li>Security on public WiFi</li>
154+
<li>Getting around geo-restrictions</li>
155+
</ul>
156+
157+
<h2 id="workspace-optimization">Workspace Optimization</h2>
158+
159+
<h3 id="ergonomics-on-the-go">Ergonomics on the Go</h3>
160+
<ul>
161+
<li><strong>Laptop stand</strong> - Prevents neck strain</li>
162+
<li><strong>External keyboard</strong> - Maintains good posture</li>
163+
<li><strong>Good lighting</strong> - Reduces eye strain</li>
164+
</ul>
165+
166+
<h3 id="noise-management">Noise Management</h3>
167+
<ul>
168+
<li><strong>Noise-canceling headphones</strong> - Essential for calls and focus</li>
169+
<li><strong>White noise apps</strong> - Helps in noisy environments</li>
170+
<li><strong>Quiet hours</strong> - Plan deep work during local quiet times</li>
171+
</ul>
172+
173+
<h2 id="productivity-tips">Productivity Tips</h2>
174+
175+
<h3 id="time-zone-management">Time Zone Management</h3>
176+
<ul>
177+
<li>Use <strong>World Clock</strong> apps to track client/team locations</li>
178+
<li>Schedule overlap hours for collaboration</li>
179+
<li>Async communication becomes crucial</li>
180+
</ul>
181+
182+
<h3 id="backup-everything">Backup Everything</h3>
183+
<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="c"># Automated backup strategy</span>
184+
rsync <span class="nt">-av</span> <span class="nt">--delete</span> ~/Projects/ backup-drive/Projects/
185+
git push <span class="nt">--all</span> origin <span class="c"># All branches to remote</span>
186+
</code></pre></div></div>
187+
188+
<h2 id="common-challenges--solutions">Common Challenges &amp; Solutions</h2>
189+
190+
<h3 id="slow-internet">Slow Internet</h3>
191+
<ul>
192+
<li>Use git shallow clones: <code class="language-plaintext highlighter-rouge">git clone --depth 1</code></li>
193+
<li>Compress assets and minimize large files</li>
194+
<li>Use CDNs for static resources</li>
195+
</ul>
196+
197+
<h3 id="power-management">Power Management</h3>
198+
<ul>
199+
<li>Invest in high-capacity power banks</li>
200+
<li>Learn your laptop’s power-saving modes</li>
201+
<li>Always carry universal adapters</li>
202+
</ul>
203+
204+
<h3 id="collaboration-across-time-zones">Collaboration Across Time Zones</h3>
205+
<ul>
206+
<li>Over-communicate in async tools (Slack, Notion)</li>
207+
<li>Record video explanations for complex topics</li>
208+
<li>Use collaborative coding tools (Live Share, CodeSandbox)</li>
209+
</ul>
210+
211+
<h2 id="location-specific-tips">Location-Specific Tips</h2>
212+
213+
<h3 id="coworking-spaces">Coworking Spaces</h3>
214+
<ul>
215+
<li>Research before arriving (internet speed, desk setup)</li>
216+
<li>Book day passes to test before monthly commitments</li>
217+
<li>Network with other remote workers</li>
218+
</ul>
219+
220+
<h3 id="cafes--public-spaces">Cafes &amp; Public Spaces</h3>
221+
<ul>
222+
<li>Respect local customs and spending expectations</li>
223+
<li>Have backup locations mapped out</li>
224+
<li>Use privacy screens for sensitive work</li>
225+
</ul>
226+
227+
<h3 id="accommodation">Accommodation</h3>
228+
<ul>
229+
<li>Filter for “good for work” on booking sites</li>
230+
<li>Check desk/workspace photos before booking</li>
231+
<li>Read reviews specifically mentioning WiFi quality</li>
232+
</ul>
233+
234+
<h2 id="conclusion">Conclusion</h2>
235+
236+
<p>The perfect remote development environment is personal and evolves with your needs. Start with the basics and gradually optimize based on your work patterns and travel destinations.</p>
237+
238+
<p>The key is having redundancy in everything - internet, power, workspace options. This ensures you can always deliver quality work regardless of where you are in the world.</p>
239+
240+
<hr />
241+
242+
</div>
243+
244+
245+
246+
247+
248+
<div class="related">
249+
<h2>related posts</h2>
250+
<ul class="related-posts">
251+
252+
<li>
253+
<h3>
254+
<a href="/2025/06/10/albatross.html">
255+
Albatross
256+
</a>
257+
</h3>
258+
</li>
259+
260+
<li>
261+
<h3>
262+
<a href="/2025/06/09/welcome-to-devnomadic.html">
263+
Welcome to devnomadic
264+
</a>
265+
</h3>
266+
</li>
267+
268+
</ul>
269+
</div>
270+
271+
272+
273+
274+
<h2>all tags</h2>
275+
<div class="tag-cloud">
276+
277+
<a href="/tags#blazorwebassembly" class="tag">BlazorWebAssembly</a>
278+
279+
<a href="/tags#cloudflareworkers" class="tag">CloudflareWorkers</a>
280+
281+
<a href="/tags#cybersecurity" class="tag">CyberSecurity</a>
282+
283+
<a href="/tags#devsecops" class="tag">DevSecOps</a>
284+
285+
<a href="/tags#webdevelopment" class="tag">WebDevelopment</a>
286+
287+
<a href="/tags#blogging" class="tag">blogging</a>
288+
289+
<a href="/tags#development" class="tag">development</a>
290+
291+
<a href="/tags#devnomad" class="tag">devnomad</a>
292+
293+
<a href="/tags#digital-nomad" class="tag">digital-nomad</a>
294+
295+
<a href="/tags#docker" class="tag">docker</a>
296+
297+
<a href="/tags#introduction" class="tag">introduction</a>
298+
299+
<a href="/tags#lifestyle" class="tag">lifestyle</a>
300+
301+
<a href="/tags#productivity" class="tag">productivity</a>
302+
303+
<a href="/tags#remote-work" class="tag">remote-work</a>
304+
305+
<a href="/tags#software-engineering" class="tag">software-engineering</a>
306+
307+
<a href="/tags#tools" class="tag">tools</a>
308+
309+
<a href="/tags#travel" class="tag">travel</a>
310+
311+
<a href="/tags#vscode" class="tag">vscode</a>
312+
313+
</div>
314+
315+
316+
317+
</div>
318+
</main><footer class="site-footer">
319+
<div class="wrapper">
320+
<div class="credits"><a href="https://github.com/bitbrain/jekyll-dash">dash</a> theme for Jekyll by <a href="https://github.com/bitbrain">bitbrain</a> made with <i class="fas fa-heart"></i><div class="toggleWrapper">
321+
<input type="checkbox" class="dn" id="theme-toggle" onclick="modeSwitcher()" checked />
322+
<label for="theme-toggle" class="toggle">
323+
<span class="toggle__handler">
324+
<span class="crater crater--1"></span>
325+
<span class="crater crater--2"></span>
326+
<span class="crater crater--3"></span>
327+
</span>
328+
<span class="star star--1"></span>
329+
<span class="star star--2"></span>
330+
<span class="star star--3"></span>
331+
<span class="star star--4"></span>
332+
<span class="star star--5"></span>
333+
<span class="star star--6"></span>
334+
</label>
335+
</div>
336+
<script type="text/javascript">
337+
const theme = localStorage.getItem('theme');
338+
339+
if (theme === "light") {
340+
document.documentElement.setAttribute('data-theme', 'light');
341+
} else {
342+
document.documentElement.setAttribute('data-theme', 'dark');
343+
}
344+
const userPrefers = getComputedStyle(document.documentElement).getPropertyValue('content');
345+
346+
function activateDarkTheme() {
347+
document.getElementById('theme-toggle').checked = true;
348+
document.documentElement.setAttribute('data-theme', 'dark');
349+
document.documentElement.classList.add('theme--dark');
350+
document.documentElement.classList.remove('theme--light');
351+
document.getElementById("theme-toggle").className = 'light';
352+
window.localStorage.setItem('theme', 'dark');
353+
}
354+
355+
function activateLightTheme() {
356+
document.getElementById('theme-toggle').checked = false;
357+
document.documentElement.setAttribute('data-theme', 'light');
358+
document.documentElement.classList.add('theme--light');
359+
document.documentElement.classList.remove('theme--dark');
360+
document.getElementById("theme-toggle").className = 'dark';
361+
window.localStorage.setItem('theme', 'light');
362+
}
363+
364+
if (theme === "dark") {
365+
activateDarkTheme();
366+
} else if (theme === "light") {
367+
activateLightTheme();
368+
} else if (userPrefers === "light") {
369+
activateDarkTheme();
370+
} else {
371+
activateDarkTheme();
372+
}
373+
374+
function modeSwitcher() {
375+
let currentMode = document.documentElement.getAttribute('data-theme');
376+
if (currentMode === "dark") {
377+
activateLightTheme();
378+
} else {
379+
activateDarkTheme();
380+
}
381+
}
382+
</script></div>
383+
</div>
384+
</footer>
385+
386+
387+
<script>
388+
window.FontAwesomeConfig = {
389+
searchPseudoElements: true
390+
}
391+
</script>
392+
</body>
393+
394+
</html>

0 commit comments

Comments
 (0)