# #programming — Jan Wilmake's Blog

Posts tagged with **programming**

## Posts

- [2025 in review, and plans for the coming year of DevRel](https://blog.janwilmake.com/2026/parallel-role-2026.md): 1/4/2026 - Reflecting on my first year as DevRel at Parallel—2.5M X impressions, cookbooks, MCP integrations, and LLMTEXT—and outlining my 2026 strategy for building SaaS on the agentic internet.
- [Introducing LLMTEXT, an open source toolkit for the llms.txt standard](https://blog.janwilmake.com/2025/LLMTEXT-for-llmstxt.md): 10/30/2025 - Introduces LLMTEXT, an open-source toolkit for creating, validating, and using llms.txt files to make websites accessible to AI agents through standardized documentation and MCP servers.
- [Moving away from my 150k LOC Monorepo](https://blog.janwilmake.com/2024/connected-repos.md): 4/1/2024 - Details the transition from a 150k LOC monorepo to a decoupled, open-source architecture where each package is its own repository, simplifying distribution and collaboration.
- [hardware-screenless](https://blog.janwilmake.com/2024/hardware-screenless.md): 1/1/2024 - Argues against the need for new hardware for AI assistants, proposing that existing simple phones paired with good headphones can deliver bidirectional voice interfaces effectively.
- [Installing MacOS without an internet connection](https://blog.janwilmake.com/2024/internetless-software-development.md): 1/1/2024 - Investigates creating a completely internet-free development environment with large LLMs, exploring privacy, security, and focus benefits while documenting installation challenges and workarounds.
- [scalable-ideas](https://blog.janwilmake.com/2024/scalable-ideas.md): 1/1/2024 - Demonstrates how LLMs enable scalable knowledge work by breaking down complex tasks into API-driven subtasks, using building websites for GitHub repos as a practical example.
- [The post-smartphone era is coming.](https://blog.janwilmake.com/2024/the-post-smartphone-era.md): 1/1/2024 - Explores the shift from smartphone apps to natural language voice interfaces powered by AI agents, advocating for open source approaches to eliminate traditional business boundaries.
- [Why are systems always so hard to integrate with other systems?](https://blog.janwilmake.com/2024/why-are-systems-not-working-together.md): 1/1/2024 - Analyzes the barriers preventing seamless system integration and proposes solutions like API search engines and GPT normalization to overcome vendor lock-in and integration complexity.
- [Fly + Bun for browser automation. An unfinished attempt](https://blog.janwilmake.com/2023/bun-flame-fly.md): 12/1/2023 - Chronicles an attempt to create a scalable browser automation API using Bun and Fly.io, exploring the FLAME pattern and analyzing cost structures for AI-powered web scraping.
- [Creating a domain control panel](https://blog.janwilmake.com/2023/domain-control-panel.md): 9/8/2023 - Documents the creation of an automated domain management system using NameCheap and CloudFlare APIs to streamline the process of turning ideas into working websites.
- [Running everything from a single server isn't that easy](https://blog.janwilmake.com/2023/the-single-server-dream.md): 9/6/2023 - Reflects on the challenges and lessons learned from attempting to run frontend, backend, and multi-domain hosting from a single server, ultimately choosing a more pragmatic hybrid approach.
- [Multi Domain Locale Hack NextJS](https://blog.janwilmake.com/2023/multi-domain-locale-hack-nextjs.md): 9/1/2023 - A clever workaround for generating static pages for multiple domains in Next.js by repurposing the locale feature, including a high-performance multi-domain markdown setup.
- [Resize your layout with a draggable div in React](https://blog.janwilmake.com/2023/creating-a-resizer-in-pure-js.md): 8/11/2023 - A tutorial on creating a draggable horizontal resizer in React for dynamic layouts, inspired by VSCode's resizable panels, implemented as a reusable React hook.
- [Tailwind Darkmode Issues](https://blog.janwilmake.com/2023/tailwind-darkmode-issue.md): 8/11/2023 - A technical solution for fixing Tailwind CSS dark mode class precedence issues in TypeScript monorepos by using the bang (!) modifier to force proper styling.
- [Increasing innovateability](https://blog.janwilmake.com/2023/innovateability.md): 8/1/2023 - Proposes a new system called "purpose driven openness" that uses LLMs to calculate alignment between entities, enabling innovation while preventing misuse of shared technologies.
- [Classification tasks with ChatGPT](https://blog.janwilmake.com/2023/gpt-classification.md): 1/1/2023 - Presents a simple yet powerful method for using ChatGPT to perform fast parallel classification tasks, such as determining gender from names with 250ms response times.
- [Global Search/Replace with Regexes in VSCode](https://blog.janwilmake.com/2023/regex-cheatcodes.md): 1/1/2023 - A practical guide to using regular expressions for global search and replace operations in VSCode, including techniques for matching across newlines and common pitfalls.
- [E2E Testing ChatGPT AI plugins with using MRKL](https://blog.janwilmake.com/2023/testAiPlugins.md): 1/1/2023 - Demonstrates how to create end-to-end tests for ChatGPT AI plugins using the MRKL technology, with practical examples testing a ScrapingBee plugin.
- [Having a clean Mac setup with a super low memory and cpu footprint](https://blog.janwilmake.com/2022/having-a-clean-mac-setup.md): 2/25/2022 - A strategy for maintaining Mac performance by creating an automated setup script for quick resets, combined with using Quitter to auto-close inactive apps and Power Manager to enforce regular shutdowns for optimal memory and CPU usage.
- [Lessons learned building the second version of FriendTime](https://blog.janwilmake.com/2021/things-i-learned-making-the-second-version-of-friendtime.md): 7/13/2021 - Key product development lessons learned from building FriendTime v2, including the importance of simple validation before adding features, avoiding premature monetization, and the underestimated time cost of final touches.
- [Experiment #237: Save 35 hours a week by eliminating the need for the smartphone](https://blog.janwilmake.com/2020/experiment-237-save-30-hours-a-week-by-eliminating-the-need-for-the-smartphone.md): 11/8/2020 - An experiment to reduce smartphone usage from 5 hours per day by eliminating the need for a phone at home, setting up all phone functions on a Mac instead to break the habit of dreamscrolling and increase productivity.
- [The Dev Lifecycle](https://blog.janwilmake.com/2020/dev-lifecycle.md): 9/28/2020 - A reflection on the cyclical pattern of working regular jobs to save money, then quitting to work on side projects until broke, and exploring three potential paths to break free from this cycle.
- [Why I made FriendTime](https://blog.janwilmake.com/2019/why-i-made-dunbar.md): 10/27/2019 - The journey from creating an addictive mafia game to building FriendTime, an app designed to bring people together in real life and maintain meaningful relationships.
- [How to scrape public information from LinkedIn, Facebook and Twitter using Javascript](https://blog.janwilmake.com/2019/how-to-scrape-public-information-linkedin-facebook-twitter.md): 10/25/2019 - A technical guide to web scraping using Puppeteer and JavaScript to extract public information from social media platforms while navigating anti-scraping protections.
- [Install An Express+MySQL App on a remote server](https://blog.janwilmake.com/2019/install-an-express-app-on-a-remote-server.md): 10/20/2019 - A step-by-step guide to deploying an Express and MySQL app on a remote server using Linode or DigitalOcean, including Nginx, Node, MySQL setup, and CloudFlare integration.
- [Application Loader gone in XCode 11? This is how you upload your app now](https://blog.janwilmake.com/2019/application-loader-replacement-xcode-11.md): 10/17/2019 - How to upload your iOS app after Apple removed Application Loader in Xcode 11 by using the Transporter app instead.
- [How to use CloudFlare with Ghost with automatic SSL](https://blog.janwilmake.com/2019/ghost-cloudflare-ssl.md): 5/15/2019 - Setting up Ghost CMS with CloudFlare's automatic SSL using flexible encryption mode and proper nginx configuration to avoid redirect loops.
- [The advantages of open sourcing](https://blog.janwilmake.com/2019/open-source-advantages.md): 5/15/2019 - The strategic advantages of open sourcing code including feature separation, attracting developers, community contributions, potential revenue through licensing, and viral growth opportunities.
- [The solution to the PO Fallacy - How to code more, and plan less](https://blog.janwilmake.com/2019/how-to-code-more-and-plan-less.md): 5/1/2019 - Overcoming the PO Fallacy by moving todos into the codebase instead of GitHub to reduce context-switching and increase time spent coding versus planning.
- [About Single Tasking and Screen/Window Setup on your Mac and Phones](https://blog.janwilmake.com/2019/about-single-tasking-and-window-setup.md): 4/8/2019 - Why single tasking with one screen in full-screen mode may be more productive than multi-screen setups for programmers seeking better focus and fewer distractions.
- [My Coding Principles](https://blog.janwilmake.com/2019/my-coding-principles.md): 3/24/2019 - A collection of personal coding principles including avoiding premature optimization, keeping things simple, composition over inheritance, and maintaining low learnability.
- [How much does it cost to build an app?](https://blog.janwilmake.com/2019/how-much-does-it-cost-to-build-an-app.md): 3/20/2019 - Principles for keeping app development costs low by focusing on your USP, using React Native, maintaining a simple development environment, and avoiding premature scaling.
- [What is the best way to test new features in your React Native App?](https://blog.janwilmake.com/2019/what-is-the-best-way-to-test-new-features-in-your-react-native-app.md): 3/19/2019 - Comparing seven methods for testing new features in React Native apps, from local testing to Expo channels, beta roles, and Firebase A/B testing.
- [I just made an app in 26 hours](https://blog.janwilmake.com/2019/i-just-made-an-app-in-26-hours.md): 3/10/2019 - How I built Dunbar, a relationship management app, in just 26 hours by leveraging high motivation, Expo, minimal boilerplate, and open source libraries.
- [Redux Light and Universal endpoints](https://blog.janwilmake.com/2019/redux-light.md): 3/8/2019 - Introducing Redux Light, a minimal boilerplate approach to Redux that prioritizes composition over inheritance and faster time to context while maintaining clarity.
- [Forcing your app users to update the app](https://blog.janwilmake.com/2019/forcing-your-app-users-to-update-the-app.md): 2/24/2019 - A guide on implementing version control in your mobile app to force users to update when needed, using backend endpoints and update screens with over-the-air or store updates.
- [How got get your app under control? Remove wildgrow, KISS, monolithize](https://blog.janwilmake.com/2019/how-got-get-your-app-under-control-remove-wildgrow-monolithize.md): 2/24/2019 - How to regain control of a clumsy startup codebase by simplifying development ecosystems, using JavaScript only, vertical scaling, and considering monoliths over microservices.
- [Human Directions: A startup idea](https://blog.janwilmake.com/2019/human-directions-a-startup-idea.md): 2/24/2019 - A startup idea for a maps app that provides navigation based on places you've already discovered, using human-friendly directions to help you learn the city instead of becoming dependent on GPS.
- [Migrating to Expo to become more lean and stable](https://blog.janwilmake.com/2019/migrating-to-expo.md): 2/24/2019 - A step-by-step guide to migrating an existing React Native project to Expo or ExpoKit for more stability, OTA updates, and streamlined development workflow.
- [Processing feedback of your users in your app: HockeyApp, Intercom, WhatsApp?](https://blog.janwilmake.com/2019/processing-feedback-of-your-users-in-your-app-hockeyapp-intercom-whatsapp.md): 2/24/2019 - Comparing different methods for collecting user feedback in mobile apps including Intercom, WhatsApp, HockeyApp, and custom native solutions.
- [Upgrading from Wix Navigation v1 to Wix Navigation v2, or React Navigation v3?](https://blog.janwilmake.com/2019/upgrading-from-wix-navigation-v1-to-wix-navigation-v2-or-react-navigation-v3.md): 2/13/2019 - A comprehensive comparison of Wix Navigation v1, v2, and React Navigation v3, analyzing their problems, solutions, and migration effort for React Native apps.
- [About scaling horizontally without sharding: How many RPS are possible without sharding? Is this between-step worth it?](https://blog.janwilmake.com/2019/how-many-rps-are-possible-without-sharding.md): 1/30/2019 - Analyzing the feasibility and bottlenecks of horizontal scaling without sharding using multiple nodes with a single MySQL database and load balancing.
- [Never let your API go down with a flexible client](https://blog.janwilmake.com/2019/never-go-down.md): 1/29/2019 - How to prevent API downtime by implementing a flexible client that monitors server CPU load and automatically reduces query frequency during high load periods.
- [Scaling my Node JS GraphQL Server Vertically to 5k RPS on a single machine](https://blog.janwilmake.com/2019/scaling-vertically.md): 1/29/2019 - Achieving 5k+ RPS on a single machine through vertical scaling with CPU-optimized cloud servers, avoiding the complexity of horizontal scaling for early-stage startups.
- [Are VR Autonomous Segways the future, or was it just a dream?](https://blog.janwilmake.com/2019/i-saw-the-future-in-detail.md): 1/24/2019 - A dream-inspired vision of future urban transportation featuring autonomous VR-enabled segways that could revolutionize commuting by reducing surface area and allowing multitasking.
- [Seven mistakes I think my software company made building their React Native App](https://blog.janwilmake.com/2019/seven-mistakes-react-native-app.md): 1/16/2019 - Seven critical mistakes to avoid when building React Native apps including premature complexity, messy codebases, lack of product-market fit validation, and poor user retention strategies.
- [Chat-BaaS: Chat Backend as a Service](https://blog.janwilmake.com/2019/chat-baas.md): 1/11/2019 - A startup idea for Chat Backend as a Service that provides universal chat functionality with open source front-end components and automated scaling for React Native and Node JS apps.
- [Scaling Horizontally to one million RPS](https://blog.janwilmake.com/2019/scaling.md): 1/11/2019 - A comprehensive geo-scaling plan for horizontally scaling to millions of RPS using automated server splitting, merging, and load balancing based on community sharding.
- [The new hackers will impersonate the ones you love](https://blog.janwilmake.com/2019/the-new-hackers.md): 1/11/2019 - How advancing AI tools for face and voice replication will enable sophisticated impersonation attacks, making verified platforms essential for online security.
- [Today I open-sourced nearly 10% of my codebase](https://blog.janwilmake.com/2019/today-i-open-sourced-nearly-20-of-my-codebase.md): 1/11/2019 - Open sourcing React Native libraries including Super Image, Super Actionsheet, and Data Forms to share reusable components with the developer community.
- [Big reason to use React navigation over Wix navigation](https://blog.janwilmake.com/2019/big-reason-to-use-react-navigation-over-wix-navigation.md): 1/10/2019 - Why React Navigation's component-based approach is fundamentally better than Wix Navigation's registerComponent method for managing wrapper components and screen mounting.
- [Why code ownership is a must for agile development](https://blog.janwilmake.com/2019/code-ownership.md): 1/5/2019 - Exploring why code ownership is essential for agile development and how feature ownership can diminish inefficiencies and bottlenecks in development teams.
- [Pivoting to a creation-centric metric of productivity](https://blog.janwilmake.com/2018/pivot-creation-centric-metric-productivity.md): 5/22/2018 - A shift in measuring productivity from passive learning and time spent to active creation and hands-on coding, introducing the Groundhog Day 100 Days of Code challenge.
- [Wet code and inline styles](https://blog.janwilmake.com/2018/wet-code-and-inline-styles.md): 4/2/2018 - A controversial take on coding practices advocating for inline styles and WET code over DRY principles to prioritize development speed and reduce abstraction overhead.
- [Publishing your expo app to both app stores](https://blog.janwilmake.com/2018/expo-standalone-publishing.md): 3/31/2018 - A detailed step-by-step guide for publishing Expo apps to the Google Play Store and Apple App Store, covering configuration, builds, credentials, screenshots, and updates.
- [My 7 key ways to keep my Code Quality Ultra High](https://blog.janwilmake.com/2018/high-code-quality.md): 3/13/2018 - Seven key principles for maintaining high code quality, balancing concerns like DRY principles, naming conventions, external dependencies, and reducing time-to-context.
- [React Native App Structure: Fat-, pure-, wrapper- or screen-components?](https://blog.janwilmake.com/2018/react-native-app-structure-fat-pure-wrapper-screen-components.md): 3/13/2018 - An exploration of component organization strategies in React Native, introducing a folder structure based on component types including fat, pure, screen, wrapper, and universal components.
- [The rise of the Solo Dev Startup — 7 Reasons why writing useful apps on your own becomes moore easy](https://blog.janwilmake.com/2018/solo-dev-startup.md): 3/9/2018 - An analysis of seven technological and cultural trends making solo app development increasingly viable, from React Native and Apollo GraphQL to open-source libraries and Moore's law.
- [Meet iProud: The productivity app for entrepreneurs!](https://blog.janwilmake.com/2018/iproud.md): 3/7/2018 - Introducing iProud, a productivity to-do app for entrepreneurs built in 2 weeks after 6 months of learning, designed to help users make lists, complete tasks, and connect with others.
- [The most complex app I ever made, made it to both app stores!](https://blog.janwilmake.com/2018/the-most-complex-app-i-ever-made-made-it-to-both-app-stores.md): 3/7/2018 - A brief celebration of successfully launching MasterCrimeZ to both iOS App Store and Google Play Store after 4 months of development.
- [Creating a performant GraphQL Server - node is harder than I thought!](https://blog.janwilmake.com/2018/creating-a-performant-graphql-server-node-is-harder-than-i-thought.md): 3/6/2018 - An exploration of performance optimization strategies for GraphQL servers built with Node.js, covering benchmarking, database pooling, Dataloader, and production deployment techniques.
- [How to connect your app to a server?](https://blog.janwilmake.com/2018/how-to-connect-your-app-to-a-server.md): 3/6/2018 - Technical considerations for connecting React Native apps to servers, covering SSL requirements, CloudFlare configuration, error handling, and connection testing strategies.
- [Must have Tooling & Programs](https://blog.janwilmake.com/2018/must-have-tooling-programs-for-the-entrepreneurial-full-stack-developer.md): 3/6/2018 - A quick overview of essential development tools and productivity apps for building React Native applications, including VSCode, ESLint, Prettier, RescueTime, and WakaTime.
- [[Notes of a programmer]: Apollo store updates](https://blog.janwilmake.com/2018/notes-of-a-programmer-apollo-store-updates.md): 3/6/2018 - Technical notes on the four methods of updating Apollo's client-side cache, comparing automatic updates, refetchQueries, manual store manipulation, and optimistic responses.
- [Setting up a GraphQL Backend without GraphCool](https://blog.janwilmake.com/2018/setting-up-a-graphql-backend-without-graphcool.md): 3/6/2018 - A comprehensive guide to setting up your own GraphQL backend with Node.js, Express, Sequelize, and MySQL, including deployment to a remote server with Nginx and SSL configuration.
- [Shortcuts Cheatsheet](https://blog.janwilmake.com/2018/shortcuts-cheatsheet.md): 3/6/2018 - A comprehensive cheatsheet of keyboard shortcuts and terminal commands for VSCode, MacOS, React Native Simulator, Chrome DevTools, and common Git workflows.
- [Should you go web or native?](https://blog.janwilmake.com/2018/should-you-go-web-or-native.md): 3/6/2018 - A decision framework for choosing between web and native app development, evaluating capabilities, platform preferences, user acquisition, retention strategies, and cost considerations including PWAs versus React Native.
- [The Expo Edge - why you should choose Expo over bare React Native](https://blog.janwilmake.com/2018/the-expo-edge.md): 3/6/2018 - A comprehensive comparison of Expo versus bare React Native and ExpoKit, outlining advantages like build automation and OTA updates, and disadvantages including app size constraints.
- [The MVP Challenge - From 0 to MVP in 100 days: Using Expo](https://blog.janwilmake.com/2018/the-mvp-challenge.md): 3/6/2018 - A comprehensive guide to building an MVP in 100 days using React Native and Expo, covering coding style decisions, architecture choices, work ethic, and a detailed workflow from setup to launch.
- [Workflow query creation (React Apollo)](https://blog.janwilmake.com/2018/workflow-query-creation-react-apollo.md): 3/6/2018 - A step-by-step workflow for creating GraphQL queries in a full-stack React Apollo application, from schema definition to client-side implementation.
- [The Multiple Personality Coder](https://blog.janwilmake.com/2018/as-a-full-stack-developer-its-good-to-have-multiple-personality-disorder-2.md): 2/27/2018 - A humorous exploration of different mental modes developers shift between while coding, from debugging to perfecting UI, illustrated through fictional programmer personalities.
- [Handling time on your server, using different ORM's in node: Sequelize and mysql2. Beware!](https://blog.janwilmake.com/2018/handling-time-on-your-server-using-different-orms-in-node-sequelize-and-mysql2-beware.md): 2/4/2018 - A technical deep-dive into timezone handling issues when using Sequelize vs mysql2 in Node.js, exploring how different ORMs process timestamps differently and cause validation problems.
- [How I’m going to make 2018 my most impactful year yet — A clear vision, fear-setting, and a crystal clear plan.](https://blog.janwilmake.com/2018/2018-year-of-creation.md): 1/19/2018 - A personal manifesto outlining ambitious 2018 goals, using fear-setting and extreme accountability measures to build two apps while pursuing a vision of working productively in paradise.
- [Real artists Ship - A look back at 2017.](https://blog.janwilmake.com/2017/real-artists-ship.md): 11/9/2017 - A reflective look back at 2017 as a year of learning React Native and JavaScript, documenting the journey from ideas and failed projects to finally achieving productive flow and being ready to ship real products.
- [Why openness from day one is so damn important for solo entrepreneurs in software](https://blog.janwilmake.com/2017/why-openness-from-day-one-is-so-damn-important-for-solo-entrepreneurs.md): 10/9/2017 - Four reasons why solo software entrepreneurs should share their startup journey openly from day one, including getting valuable feedback, mutual learning, social accountability, and maintaining happiness during long development cycles.
- [EAT CODE KITE REPEAT at the NOMAD INCUBATOR in KITESURF HEAVEN: TARIFA ESPAÑA](https://blog.janwilmake.com/2017/eat-code-kite-repeat-nomad-incubator-kitesurf-heaven-tarifa.md): 9/19/2017 - Setting up the Nomad Incubator in Tarifa, Spain - a community for software developers and entrepreneurs who share a passion for kitesurfing and coding.
- [Possessions for happiness?](https://blog.janwilmake.com/2017/the-laptop-of-a-nomad.md): 9/2/2017 - The relationship between possessions and freedom as a digital nomad - owning only what's necessary for work and happiness while traveling with 11 kilos.
- [About working offline](https://blog.janwilmake.com/2017/working-offline.md): 8/20/2017 - An experiment in setting up a complete offline development environment for React Native to enable productive programming during multi-day mountain treks in Bulgaria, demonstrating that remote work doesn't require internet.
- [Cycling through your life part II - DevOps vs. Marketing in software companies](https://blog.janwilmake.com/2017/devops-marketing.md): 7/17/2017 - Why DevOps and product quality matter more than marketing - truly good products don't need advertisements, they market themselves.
- [What coding teached me about business (and vice versa)](https://blog.janwilmake.com/2017/what-coding-teaches-me-about-business.md): 7/4/2017 - Six key principles learned from coding that apply to business: structure, logic, efficiency, automation, independence, and transparency.
- [My view on React Native and why I think it's the future](https://blog.janwilmake.com/2017/react-native-is-the-future.md): 7/3/2017 - A comprehensive guide to React Native covering setup, tooling, libraries, and why it's the future of cross-platform development for web, Android, and iOS.
- [The best apps to study and work on the move](https://blog.janwilmake.com/2017/some-apps-i-like.md): 6/30/2017 - Essential apps and tools for nomadic entrepreneurs, from banking and transportation to communication, productivity, and learning platforms.
- [Time management](https://blog.janwilmake.com/2017/time-management.md): 6/19/2017 - A framework for managing screen time and prioritizing tasks as an entrepreneur by blocking distracting websites during specific periods, applying the Pareto Principle to focus 80% of time on the most important work.
- [Blazing Fast & Beautiful isn't it? Discover Digital Ocean and Ghost](https://blog.janwilmake.com/2017/digital-ocean-and-ghost-fast-cms.md): 6/15/2017 - A guide explaining the transition from WordPress to Ghost CMS and DigitalOcean hosting for faster website performance, highlighting the advantages of Node.js and modern JavaScript frameworks over traditional PHP-based systems.
- [WordPress versus Ghost - Read this if you're serious about writing](https://blog.janwilmake.com/2017/wordpress-versus-ghost.md): 6/15/2017 - A comprehensive comparison between WordPress and Ghost CMS from a blogger's perspective, arguing that Ghost's modern Node.js architecture makes it superior for serious writers and journalists despite requiring more technical knowledge.
- [I feel like a Tesla without wheels](https://blog.janwilmake.com/2017/and-then-i-turned-to-javascript.md): 6/14/2017 - The journey from WordPress frustrations to learning JavaScript, React Native, and Node.js to bring software ideas to life.
- [16 Ways To Learn A New Language While Having Fun](https://blog.janwilmake.com/2017/learn-language-having-fun.md): 4/28/2017 - Sixteen practical methods to learn a new language through complete immersion using music, movies, apps, and social connections, making language acquisition fun and efficient without traditional classroom methods.
