<?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: Michael Brooks</title>
    <description>The latest articles on DEV Community by Michael Brooks (@michaelbrooks).</description>
    <link>https://dev.to/michaelbrooks</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%2F66019%2Ffae5520c-f1ae-4866-aade-acf94929b23e.jpeg</url>
      <title>DEV Community: Michael Brooks</title>
      <link>https://dev.to/michaelbrooks</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/michaelbrooks"/>
    <language>en</language>
    <item>
      <title>Building Chattr for Android: A Social Platform for the Twitch Community</title>
      <dc:creator>Michael Brooks</dc:creator>
      <pubDate>Fri, 29 May 2026 08:19:41 +0000</pubDate>
      <link>https://dev.to/michaelbrooks/building-chattr-for-android-a-social-platform-for-the-twitch-community-4mgg</link>
      <guid>https://dev.to/michaelbrooks/building-chattr-for-android-a-social-platform-for-the-twitch-community-4mgg</guid>
      <description>&lt;p&gt;I have been building Chattr, a social platform designed specifically for Twitch streamers and their communities. Think of it as a Twitter-like feed built on top of the Twitch identity layer -- where posts can include clips, polls, stream announcements, and custom reactions using Twitch emotes. After months of development, the Android version is now in &lt;strong&gt;closed beta&lt;/strong&gt;, and I am looking for testers to help put it through its paces.&lt;/p&gt;

&lt;p&gt;This post covers the stack I chose, some of the interesting problems I ran into along the way, and lessons learned shipping a cross-platform native app with real money moving through it.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Stack
&lt;/h2&gt;

&lt;p&gt;Chattr is built with &lt;strong&gt;React Native 0.85 + React 19&lt;/strong&gt; and written entirely in TypeScript. The main libraries driving the experience:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;NativeWind v4&lt;/strong&gt; for Tailwind-style styling in React Native&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;React Navigation&lt;/strong&gt; (native-stack + bottom-tabs) for navigation&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Stripe React Native&lt;/strong&gt; for tips and creator payouts&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Firebase Cloud Messaging&lt;/strong&gt; for push notifications&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;react-native-app-auth&lt;/strong&gt; with PKCE for Twitch OAuth&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;react-native-keychain&lt;/strong&gt; for secure token storage&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The backend is a Laravel API at &lt;code&gt;chattr.online/api/v1&lt;/code&gt; that uses Sanctum for token-based authentication, with Twitch's API and Stripe Connect layered on top.&lt;/p&gt;




&lt;h2&gt;
  
  
  Connecting to Twitch Identity
&lt;/h2&gt;

&lt;p&gt;The first real challenge was Twitch OAuth. The flow itself is standard OAuth 2.0 with PKCE, but Twitch returns scopes as a JSON array rather than a space-separated string. &lt;code&gt;react-native-app-auth&lt;/code&gt; expects the latter, so deserialising the token response would blow up.&lt;/p&gt;

&lt;p&gt;The fix was to normalise the response on the server before it ever reached the client. The app exchanges the code server-side, receives the corrected token shape, and stores credentials in the device keychain. Credentials never touch &lt;code&gt;AsyncStorage&lt;/code&gt; -- they are encrypted at the OS level via keychain, which matters when you are handling payment-related sessions.&lt;/p&gt;

&lt;p&gt;From there, the app pulls the user's Twitch broadcaster type, follower counts, subscriber status, and stream metadata to populate their Chattr profile. This lets the social graph feel native to Twitch -- you already know who is an Affiliate, who is a Partner, and who is live right now.&lt;/p&gt;




&lt;h2&gt;
  
  
  Post Types and the Feed
&lt;/h2&gt;

&lt;p&gt;The feed supports several post types:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Text posts&lt;/strong&gt; (up to 2000 characters)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Twitch clips&lt;/strong&gt; (embedded via WebView)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Polls&lt;/strong&gt; (2 to 5 options)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Scheduled stream announcements&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Live notifications&lt;/strong&gt; (when a streamer goes live)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Quote reposts&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Reactions use three Twitch emotes: KreyGasm, BleedPurple, and BigSad. It keeps the social layer feeling native to the platform rather than grafting on a generic like/heart system.&lt;/p&gt;

&lt;h3&gt;
  
  
  Controlling Video in the Feed
&lt;/h3&gt;

&lt;p&gt;Embedded clips in a scrolling feed are a battery and CPU trap if you are not careful. Every WebView kept playing even when scrolled off screen.&lt;/p&gt;

&lt;p&gt;The fix was using &lt;code&gt;viewAreaCoveragePercentThreshold&lt;/code&gt; on the &lt;code&gt;FlatList&lt;/code&gt; to track viewport visibility. When a clip drops below 50% visible, its WebView pauses. When the user pulls to refresh, a &lt;code&gt;refreshKey&lt;/code&gt; state integer is incremented, which remounts the affected WebViews and stops any mid-playback clips from continuing in the background. It is a small thing but it makes a real difference in perceived battery usage.&lt;/p&gt;




&lt;h2&gt;
  
  
  Push Notifications: Three States, One Flow
&lt;/h2&gt;

&lt;p&gt;Push notifications in React Native have a well-known gotcha: you need to handle three distinct app states -- foreground, background, and quit (cold launch) -- and they all behave differently.&lt;/p&gt;

&lt;p&gt;For Chattr, there are over ten notification types to route: reactions, mentions, reposts, comments, live alerts, scheduled stream reminders, tips received, tip refunds, and collaborator tags.&lt;/p&gt;

&lt;p&gt;The solution was:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Foreground&lt;/strong&gt;: update the badge count in the notification bell without navigating&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Background (&lt;code&gt;onNotificationOpenedApp&lt;/code&gt;)&lt;/strong&gt;: navigate to the relevant post or screen when the user taps&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Cold launch (&lt;code&gt;getInitialNotification&lt;/code&gt;)&lt;/strong&gt;: check on app mount and perform the same deep-link navigation&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Firebase token rotation also needs careful handling. The app subscribes to &lt;code&gt;onTokenRefresh&lt;/code&gt; and also refreshes tokens on &lt;code&gt;AppState&lt;/code&gt; restore after a device factory reset clears the keychain. Missing either case means silent notification failures that are hard to debug in production.&lt;/p&gt;




&lt;h2&gt;
  
  
  Tipping with Stripe
&lt;/h2&gt;

&lt;p&gt;Chattr lets viewers tip creators between $1 and $500 per post. The flow uses Stripe Payment Intents created server-side. The client gets back a client secret, presents the Stripe sheet, and on confirmation the tip is recorded.&lt;/p&gt;

&lt;p&gt;Creators who want payouts go through Stripe Connect onboarding. This is a WebView-based flow that hands off to Stripe's hosted onboarding and then redirects back to the app. The settings screen monitors &lt;code&gt;AppState&lt;/code&gt; changes so that when the user returns from the background after completing onboarding, the payout status updates immediately without needing a manual refresh.&lt;/p&gt;

&lt;p&gt;Email verification is gated before a user can enable tips -- partly a Stripe compliance requirement, partly a way to reduce throwaway accounts.&lt;/p&gt;




&lt;h2&gt;
  
  
  A Few Other Notes
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Comments are flat, intentionally.&lt;/strong&gt; Replies go one level deep. Supporting arbitrary nesting in a mobile feed creates layout and performance complexity that is not worth it for the use case. One level of replies handles 95% of real conversations.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Cancellation tokens everywhere.&lt;/strong&gt; Any async fetch in a component returns a cleanup function. When React unmounts the component mid-fetch (navigation, etc.), the update is cancelled. This avoids the classic "can't perform a state update on unmounted component" warning and the subtle bugs that come from stale state being applied after navigation.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;AppState for payout sync.&lt;/strong&gt; It took a few iterations to get right, but monitoring &lt;code&gt;AppState&lt;/code&gt; changes in the settings screen is the cleanest way to reflect external state changes (like completing Stripe onboarding) without polling an endpoint on a timer.&lt;/p&gt;




&lt;h2&gt;
  
  
  What's Next
&lt;/h2&gt;

&lt;p&gt;The app is currently in &lt;strong&gt;closed beta on Android&lt;/strong&gt;. If you are a developer, streamer, or Twitch community member who wants to kick the tyres, I would love to have you test it.&lt;/p&gt;

&lt;p&gt;You can reach me at:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Email&lt;/strong&gt;: &lt;a href="mailto:me@michaelbrooks.co.uk"&gt;me@michaelbrooks.co.uk&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;iOS is also in development. The codebase is already cross-platform, so most of the feature work carries over -- it is mostly the platform-specific signing, entitlements, and App Store review pipeline that remains.&lt;/p&gt;

&lt;p&gt;If you are building anything in the React Native + Twitch space, or have thoughts on the architecture decisions above, I would genuinely like to hear from you. Drop a comment below or reach out directly.&lt;/p&gt;




&lt;p&gt;View the website at &lt;a href="https://chattr.online" rel="noopener noreferrer"&gt;https://chattr.online&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Chattr is built by a solo developer. Feedback from the community makes a real difference.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>reactnative</category>
      <category>typescript</category>
      <category>android</category>
      <category>webdev</category>
    </item>
    <item>
      <title>How I Built Chattr — A Twitch Social Network</title>
      <dc:creator>Michael Brooks</dc:creator>
      <pubDate>Thu, 14 May 2026 07:02:13 +0000</pubDate>
      <link>https://dev.to/michaelbrooks/how-i-built-chattr-a-twitch-social-network-2kdg</link>
      <guid>https://dev.to/michaelbrooks/how-i-built-chattr-a-twitch-social-network-2kdg</guid>
      <description>&lt;p&gt;I'm a big Twitch viewer and part-time streamer, and I've always felt like something was missing. Twitch is amazing for live streams, but once the stream ends, the community disperses across Discord, Reddit, BlueSky, Threads and Twitter. There is no single platform where Twitch streamers and their communities can stay engaged between streams.&lt;/p&gt;

&lt;p&gt;So I built Chattr, a social network for Twitch users to share posts, react with Twitch emotes, get live alerts, and stay connected with streamers and viewers.&lt;/p&gt;

&lt;p&gt;Here's how I built it.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Stack
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Backend: Laravel 13 + PHP 8.5
&lt;/h3&gt;

&lt;p&gt;Laravel is fast, flexible, and supplies a robust ecosystem. PHP 8.5 with Laravel 13 introduces constructor property promotion, typed properties, and attribute-based features such as #[Fillable].&lt;/p&gt;

&lt;p&gt;A few Laravel packages doing heavy lifting:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Laravel Socialite&lt;/strong&gt; enables Twitch OAuth in just 20 lines of code. Users will sign in with their Twitch account; no new password or username is required. On sign-in, Twitch automatically syncs followers, so your community is ready. Also, if you are a partner with a Twitch-verified badge, your badge will carry over.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Laravel Reverb&lt;/strong&gt; provides real-time features. Twitch fires a webhook when a streamer goes live, which then broadcasts an event, instantly updating every follower's feed. The same applies to posts, reactions, and comments.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Laravel Scout&lt;/strong&gt; - full-text search for users and posts, backed by a database driver for simplicity at this stage.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Laravel Sanctum&lt;/strong&gt; - API token authentication for the mobile apps.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Laravel Nightwatch&lt;/strong&gt; - production monitoring and error tracking without the third-party overhead.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Laravel Wayfinder&lt;/strong&gt; - auto-generates TypeScript functions for every Laravel route and controller action. The frontend avoids hardcoded URLs; each route call becomes a typed function import. Major win for refactoring safety.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Frontend: React 19, Inertia.js v3 and Tailwind CSS v4
&lt;/h3&gt;

&lt;p&gt;Inertia bridges Laravel and React, allowing me to build a client-side React single-page application without separate APIs. I return typed page components from controller actions, share global state, and navigate entirely with Laravel routes. No API versioning or serialisation layer was required.&lt;/p&gt;

&lt;p&gt;React 19 and its compiler, via babel-plugin-react-compiler, automate memoisation and reduce useMemo and useCallback boilerplate.&lt;/p&gt;

&lt;p&gt;Tailwind CSS v4 eliminates the config file in favour of a CSS-native approach. I define design tokens in a single CSS file, and Tailwind automatically recognises them. Greatly reducing config effort for a project I'm building solo.&lt;/p&gt;

&lt;h3&gt;
  
  
  Real-time with WebSockets
&lt;/h3&gt;

&lt;p&gt;Live stream detection is the feature I'm most proud of. Here's the flow:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;When a user connects their Twitch account, they subscribe to Twitch EventSub webhooks for their channel.&lt;/li&gt;
&lt;li&gt;When a Twitch stream goes live, the website creates a live post, broadcasts the event via &lt;strong&gt;Reverb&lt;/strong&gt;, and sends push notifications to followers.&lt;/li&gt;
&lt;li&gt;On the frontend, &lt;strong&gt;Laravel Echo&lt;/strong&gt; updates the feed in real time: the live post appears, the avatar gets a red ring, and a notification is sent.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;All live updates are delivered via a single WebSocket connection managed by Reverb. No third-party services or extra messaging costs.&lt;/p&gt;

&lt;h3&gt;
  
  
  Video: Mux
&lt;/h3&gt;

&lt;p&gt;Mux handles user-uploaded videos. Files are uploaded directly from the browser, processed asynchronously, and a webhook is fired when processing is complete. The website stores the playback ID, streams directly from Mux's CDN, and gets transcoding, dynamic bitrate, and signed URLs without managing codecs.&lt;/p&gt;

&lt;h3&gt;
  
  
  Payments: Stripe Connect
&lt;/h3&gt;

&lt;p&gt;Streamers can get tips through &lt;strong&gt;Stripe Connect&lt;/strong&gt; Express in the app. Stripe handles onboarding, KYC (Know Your Customer), payouts, and compliance. Tips: Use the Payment Intent flow, and platform fees are handled at the charge level. The app doesn't store any bank/credit card information, as all payments are handled via Stripe. For now, those tipped get 70%, while I get the remaining 30% plus any fees Stripe charges.&lt;/p&gt;

&lt;p&gt;I've done this because the hosting needs to earn money, and I felt this was the least intrusive way to potentially make money back. In the future, I would like to offer special sponsorships that cover hosting costs, and then I will change the split so creators can earn 100% of their tips.&lt;/p&gt;

&lt;h2&gt;
  
  
  Infrastructure: AWS
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Hosting with Amazon ECS
&lt;/h3&gt;

&lt;p&gt;The app runs in &lt;strong&gt;Amazon ECS with Fargate.&lt;/strong&gt; Serverless containers, no EC2 to manage. I use Docker to containerise Laravel, deploying separate ECS services for the web server (FrankenPHP/Caddy), the queue worker, and Reverb WebSocket.&lt;/p&gt;

&lt;p&gt;FrankenPHP is a modern PHP server built on Caddy. It offers faster cold starts, supports HTTP/2, HTTP/3, Early Hints, and natively handles WebSocket upgrades.&lt;/p&gt;

&lt;p&gt;ECS Fargate lets me scale the web tier independently from the queue workers, which is important for a social platform where queue throughput surges when many users go live simultaneously (weekend evenings are intense).&lt;/p&gt;

&lt;h3&gt;
  
  
  File Storage: Amazon S3
&lt;/h3&gt;

&lt;p&gt;All user media-images, audio, alert sounds-are stored in &lt;strong&gt;S3&lt;/strong&gt;. Uploads go directly from browser to S3 with pre-signed URLs, so Laravel never handles the raw bytes. This keeps requests fast and offloads file processing.&lt;/p&gt;

&lt;p&gt;The S3 bucket is private. All media is served through pre-signed URLs with short expiry, so subscriber-only content stays locked even if someone tries to share the URL directly. This is something I'm particularly proud of, because it's hard to keep videos private a lot of the time.&lt;/p&gt;

&lt;h3&gt;
  
  
  CDN: Amazon CloudFront
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;CloudFront&lt;/strong&gt; caches all app and S3 static assets globally. Users worldwide experience fast loading, regardless of their region.&lt;/p&gt;

&lt;p&gt;CloudFront terminates SSL and routes traffic to ECS. Dynamic HTML uses conservative cache policies; hashed static assets are cached for a year.&lt;/p&gt;

&lt;h2&gt;
  
  
  Features Worth Highlighting
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Twitch Emote Reactions
&lt;/h3&gt;

&lt;p&gt;Rather than thumbs-up and hearts, users react to posts with actual Twitch emotes. I fetch the global Twitch emote set on first load and store it in memory. Each reaction records the emote slug and displays as an image from Twitch's CDN. This feature deeply cultivates community - it's the language Twitch communities already use.&lt;/p&gt;

&lt;h3&gt;
  
  
  Subscriber-Only Posts
&lt;/h3&gt;

&lt;p&gt;Streamers can lock any post for Twitch subscribers. Subscriber status is verified live on every load; if it lapses, access is revoked automatically.&lt;/p&gt;

&lt;h3&gt;
  
  
  Public Streamer Directory
&lt;/h3&gt;

&lt;p&gt;I added a public streamer directory at &lt;a href="https://chattr.online/streamers" rel="noopener noreferrer"&gt;chattr.online/streamers&lt;/a&gt;. Users can opt in to have their profiles and posts indexed by Google. This helps SEO-"{game} streamers" searches surface Chattr profiles.&lt;/p&gt;

&lt;h3&gt;
  
  
  Voice Posts with AI Transcription
&lt;/h3&gt;

&lt;p&gt;Users can record audio posts. AWS will then transcribe it automatically with OpenAI Whisper and attach a searchable transcript to the post. Users can either read or listen to the post. This was inspired by Threads, which used to have Voice Notes but later removed them. Threads users have been calling for the return of Voice Notes, so I thought it would be a good addition.&lt;/p&gt;

&lt;h2&gt;
  
  
  What I would Do Differently
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;I wish I had started public-facing pages earlier.&lt;/strong&gt; Building the social feed first put everything behind a login wall. Search engines couldn't crawl the content. Adding the streamer directory and public profiles boosted discovery immediately.&lt;/p&gt;

&lt;h2&gt;
  
  
  Try It
&lt;/h2&gt;

&lt;p&gt;Chattr is live at &lt;a href="https://chattr.online" rel="noopener noreferrer"&gt;chattr.online&lt;/a&gt;. Sign in with Twitch for instant access to the community. No setup, manual follows, or empty feed. People you already follow on Twitch appear in your feed if they're on Chattr.&lt;/p&gt;

&lt;p&gt;If you're a streamer, it takes about 30 seconds to opt in to the public directory and start getting indexed. Game communities are automatically created the first time someone joins - so if you play a game and your fans do too, there's already a community page for it.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Built with Laravel, React, Inertia.js, Tailwind, AWS ECS, CloudFront, S3, Mux, Stripe, and a lot of Twitch streams in the background.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Questions or feedback? Find me on Chattr at&lt;/em&gt; &lt;a href="https://chattr.online/streamers/MichaelBrooksUK" rel="noopener noreferrer"&gt;&lt;em&gt;chattr.online/streamers/MichaelBrooksUK&lt;/em&gt;&lt;/a&gt; or on &lt;a href="https://threads.com/MichaelBrooksUK" rel="noopener noreferrer"&gt;&lt;em&gt;Threads&lt;/em&gt;&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>laravel</category>
      <category>react</category>
      <category>webdev</category>
      <category>aws</category>
    </item>
    <item>
      <title>I built a Twitch social network called Chattr</title>
      <dc:creator>Michael Brooks</dc:creator>
      <pubDate>Fri, 17 Apr 2026 10:08:53 +0000</pubDate>
      <link>https://dev.to/michaelbrooks/i-built-a-twitch-social-network-called-chattr-5hfo</link>
      <guid>https://dev.to/michaelbrooks/i-built-a-twitch-social-network-called-chattr-5hfo</guid>
      <description>&lt;p&gt;I've had this idea for a while. People have wanted a place to be social with their Twitch community, and since Elon purchased Twitter, the community has split. A lot of people left Twitter and moved to Threads or Bluesky. Many streamers have stayed on Twitter because companies are still posting potential opportunities.&lt;/p&gt;

&lt;p&gt;I left Twitter, but I see opportunities show up that I wish I could apply to. I created a new account, just for those moments, but it's not my original account and is probably looked over a lot.&lt;/p&gt;

&lt;h2&gt;
  
  
  This is where my social network comes in
&lt;/h2&gt;

&lt;p&gt;If my social network site can become the social hub for Twitch, then fewer people would miss out on these opportunities. Also, most social networks will hide external links to Twitch. &lt;a href="https://chattr.online" rel="noopener noreferrer"&gt;Chattr&lt;/a&gt; doesn't do that; in fact, we encourage it.&lt;/p&gt;

&lt;p&gt;When you go live, a post instantly goes up to let your &lt;a href="https://chattr.online" rel="noopener noreferrer"&gt;Chattr&lt;/a&gt; community know you're live. You can send clips, and people can comment on and react to them. There is rich media available on YouTube, TikTok, and Twitch, so people can watch directly from the &lt;a href="https://chattr.online" rel="noopener noreferrer"&gt;Chattr&lt;/a&gt; website.&lt;/p&gt;

&lt;p&gt;Take a look at the above website, which shows that I'm live! There is a link to view the stream, and it goes straight to the streamer's livestream.&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%2Fk0tirof69s21t99xlk7e.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%2Fk0tirof69s21t99xlk7e.png" alt=" " width="800" height="630"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Above is a screenshot of me posting a Twitch clip, and you can see the embedded media.&lt;/p&gt;

&lt;h2&gt;
  
  
  Your Twitch followers automatically follow you on the website
&lt;/h2&gt;

&lt;p&gt;Say you sign up to &lt;a href="https://chattr.online" rel="noopener noreferrer"&gt;Chattr&lt;/a&gt;, and a follower or two also sign up. They will automatically follow you on the website and instantly see any updates you post. If a follower joins after you sign up, again, they will also follow you on the website.&lt;/p&gt;

&lt;p&gt;Personally, I think this is one of the best features, as it's much easier for everyone to bring their existing communities into the website. Once more people sign up, they should feel instantly at home.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Discover algorithm
&lt;/h2&gt;

&lt;p&gt;There is also a discover page that uses an algorithm to discover new Twitch users. This page is very early in it's development, and I will be looking more into it in the future for things to improve.&lt;/p&gt;

&lt;h2&gt;
  
  
  There is more to come!
&lt;/h2&gt;

&lt;p&gt;I have many more features and improvements noodling around my head, which I'm excited to develop. Things like being able to block or report users, and hide and report posts are something high on the list. I'd also like to get sponsorships from websites linked to Twitch, to help people improve and grow their streams.&lt;/p&gt;

&lt;p&gt;Replying to comments would also be a very nice feature that I haven't added yet.&lt;/p&gt;

&lt;p&gt;I'd like to have a more real-time and hustle-and-bustle feel. If you do happen to sign up, please test everything you can and also give me feedback on what works, what doesn't and what can be improved.&lt;/p&gt;

</description>
      <category>php</category>
      <category>laravel</category>
      <category>webdev</category>
      <category>twitch</category>
    </item>
    <item>
      <title>Creator Interview with Ravi Kikan</title>
      <dc:creator>Michael Brooks</dc:creator>
      <pubDate>Thu, 23 Jul 2020 09:44:04 +0000</pubDate>
      <link>https://dev.to/michaelbrooks/creator-interview-with-ravi-kikan-266k</link>
      <guid>https://dev.to/michaelbrooks/creator-interview-with-ravi-kikan-266k</guid>
      <description>&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--G9Qc7LhX--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/f6as9bpq102abizexxjc.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--G9Qc7LhX--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/f6as9bpq102abizexxjc.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I've been following Ravi on Twitter for a while, he's a great supportive person, and constantly helps those around him. He has created groups to help support entrepreneurs and start-ups and is a constant conversation-started. Please enjoy this interview.&lt;/p&gt;

&lt;h1&gt;
  
  
  Hi Ravi, thank you so much for answering some questions. How are you?
&lt;/h1&gt;

&lt;p&gt;Fantastic and thanks for asking. I am doing as good as New Zealand as we talk :)&lt;/p&gt;

&lt;h1&gt;
  
  
  You have quite a big following on Twitter. For those that aren't aware of what you do, could you please tell them a little bit of your background?
&lt;/h1&gt;

&lt;p&gt;I ❤️ startups and work with awesome startups &amp;amp; entrepreneurs in setting up their businesses, scaling up and building growth. I am currently leading the marketing and growth for ZingHR which is an HR Tech venture with over a million users globally.&lt;/p&gt;

&lt;p&gt;My experience in Startups and Enterprise sectors like Media &amp;amp; PR, Fintech, Education, Digital, Retail, Mobile, Healthcare, AI, IoT, Tech, e-Commerce, Real Estate has helped me to launch &amp;amp; grow ventures. I love working with entrepreneurs, enterprises, community builders and investors who are focussed at growth.&lt;/p&gt;

&lt;p&gt;I am the author of one of the best-loved books for startups and entrepreneurs. How To Validate Your Startup Business Idea. Anyone planning or thinking about starting up a new venture or business should ideally read this book:&lt;/p&gt;

&lt;p&gt;Amazon India: &lt;a href="https://amzn.to/2A7KwDn"&gt;https://amzn.to/2A7KwDn&lt;/a&gt;&lt;br&gt;
Amazon Global: &lt;a href="https://amzn.to/2q629O3"&gt;https://amzn.to/2q629O3&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I have published my second book Bounce Back Now (which was trending as the number 1 new release on Amazon) for all the aspiring entrepreneurs, startups, students, professionals, small business owners, who are thinking about launching their business or have already launched their business despite tough times. It is also my endeavour to support individuals who might be in a closed state of mind, pessimistic, depressed or might have failed in their previous efforts&lt;/p&gt;

&lt;p&gt;Amazon India &lt;a href="https://www.amazon.in/dp/B08C5ML12G"&gt;https://www.amazon.in/dp/B08C5ML12G&lt;/a&gt;&lt;br&gt;
Amazon Global &lt;a href="https://www.amazon.com/dp/B08C5ML12G"&gt;https://www.amazon.com/dp/B08C5ML12G&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I am also the group owner &amp;amp; moderator for many large global online communities on LinkedIn &amp;amp; Facebook. One of them is &amp;gt; Startup Specialists &lt;a href="https://www.linkedin.com/groups/56766"&gt;https://www.linkedin.com/groups/56766&lt;/a&gt; is one of the largest groups for startups amid the 2 mill+ groups on LinkedIn which has around 380,000+ global members.&lt;/p&gt;

&lt;h1&gt;
  
  
  I see you're always trying to inspire and encourage lateral thinking. What made you decide to go down this route?
&lt;/h1&gt;

&lt;p&gt;My own failures and failures that I see around me.&lt;/p&gt;

&lt;p&gt;Now imagine a group of great tech guys with a great product which has a market fit and paying customers but bomb down their venture because they can't market the product. They just go unnoticed.&lt;/p&gt;

&lt;p&gt;There has to be a bunch of people who have to speak their heart out, no matter what. They also need to handhold or advise people in the right direction. You might not always have a recipe for success but you can always save people from not sinking in failure.&lt;/p&gt;

&lt;h1&gt;
  
  
  You've released two books on Amazon and they've gained a lot of support. What made you start writing?
&lt;/h1&gt;

&lt;p&gt;I think the willingness to learn and relearn and help people especially aspiring entrepreneurs and growth bound startups to scale up around the world. This is also a step towards looking and learning from the real ground level where people operate &amp;amp; work and build their products or businesses.&lt;/p&gt;

&lt;p&gt;I think my own failures have also taught me to see failures as a matter of just falling down. They are not permanent roadblocks, they need to be just tossed away.&lt;/p&gt;

&lt;h1&gt;
  
  
  How do you gain and organise your thoughts to create them?
&lt;/h1&gt;

&lt;p&gt;I think I write wherever I can, whenever I can….&lt;/p&gt;

&lt;p&gt;The best way is to share and collaborate on experiences. People generally have a fear of being judged and do not share what they will be judged on.&lt;/p&gt;

&lt;h1&gt;
  
  
  If you could give some words of advice, what would that be?
&lt;/h1&gt;

&lt;p&gt;Keep in mind that your learning and unlearning should never stop and always remember and never forget that “Falling down is NOT Failure, Failure is Never Final”&lt;/p&gt;

&lt;h1&gt;
  
  
  Finally, where can my audience find you?
&lt;/h1&gt;

&lt;p&gt;They can find me on social media and connect with me. I would love to hear stories of how people have bounced back now and grown in life beyond their challenges.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Twitter: &lt;a href="https://twitter.com/ravikikan"&gt;https://twitter.com/ravikikan&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;LinkedIn: &lt;a href="https://www.linkedin.com/in/ravikikan/"&gt;https://www.linkedin.com/in/ravikikan/&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>creator</category>
      <category>interview</category>
      <category>spotlight</category>
    </item>
    <item>
      <title>Creator Interview With David Thorpe - Creator of The Average Dev</title>
      <dc:creator>Michael Brooks</dc:creator>
      <pubDate>Fri, 10 Jul 2020 14:09:37 +0000</pubDate>
      <link>https://dev.to/michaelbrooks/creator-interview-with-david-thorpe-d8l</link>
      <guid>https://dev.to/michaelbrooks/creator-interview-with-david-thorpe-d8l</guid>
      <description>&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--MSS36e80--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/a82bup6l7n2wlzuqo0jg.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--MSS36e80--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/a82bup6l7n2wlzuqo0jg.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;David has been a good friend and I've always enjoyed the content he's published. He's a man of many talents and now has a focus on taking control over digital anxiety. He has also started a podcast called "The Average Dev" with very insightful information, I recommend you give it a listen to after reading this great interview.&lt;/p&gt;

&lt;h2&gt;
  
  
  Hello Dave, for those that don't know, please introduce yourself. Who are you, and what do you do?
&lt;/h2&gt;

&lt;p&gt;Hey Michael,&lt;/p&gt;

&lt;p&gt;I’m a software engineer, and I’ve been in the game for over 10 years now. I primarily work with startups and other companies wanting to build internal products. Recently I’ve moved to more leadership roles, and I want to communicate great career advice and confidence in other developers.&lt;/p&gt;

&lt;h2&gt;
  
  
  You recently decided to teach others digital wellness. What made you decide this change in direction?
&lt;/h2&gt;

&lt;p&gt;I used to find myself overusing my iPhone. I’d browse and browse, refresh all the feeds and it was horrible. It made my head feel spaced out all the time. I had to make a change and get away from screens when I wasn’t working since I was also spending 8+ hours a day on them coding. I’m militant about how I use technology now. It’s the most important thing to me with regards to tech that I control how I use it and not the other way around.&lt;/p&gt;

&lt;p&gt;This has allowed me the focus to work on the things that matter to me, and that is communicating my story and learnt lessons from 8 years of self-employment to other people who are looking to start out. This has been hugely rewarding.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--yq0I3d5V--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/ylw62jh2mdfe4rfchuxc.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--yq0I3d5V--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/ylw62jh2mdfe4rfchuxc.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  You also have a podcast called "The Average Dev". What are your thoughts behind the name, and what made you decide to create it?
&lt;/h2&gt;

&lt;p&gt;The name clicked for me because we, as developers, are always exposed to people in our industry doing incredible things. Releasing the next CSS framework, launching a video course, making millions from it etc. It’s the Instagram of the dev world. It’s really easy to believe that this is what we’re all expected to do, but I fundamentally reject that idea since it is unhealthy and isn’t actually a realistic goal for everyone.&lt;/p&gt;

&lt;p&gt;The Average Dev name just communicates that. I am just an average dev, but I’m one who wants to talk about my experiences.&lt;/p&gt;

&lt;h2&gt;
  
  
  Where can my audience find you?
&lt;/h2&gt;

&lt;p&gt;I tweet about tips I’ve found and updates to my content output at &lt;a href="https://twitter.com/davzie"&gt;@davzie&lt;/a&gt;, and you can sign up for email alerts or view my content at &lt;a href="https://davidthorpe.dev/"&gt;davidthorpe.dev&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Thanks for having me, Michael!!&lt;/p&gt;

</description>
      <category>creator</category>
      <category>interview</category>
      <category>spotlight</category>
    </item>
    <item>
      <title>My initial thoughts on Apple's IOS14</title>
      <dc:creator>Michael Brooks</dc:creator>
      <pubDate>Wed, 01 Jul 2020 14:01:52 +0000</pubDate>
      <link>https://dev.to/michaelbrooks/my-initial-thoughts-on-apple-s-ios14-1jki</link>
      <guid>https://dev.to/michaelbrooks/my-initial-thoughts-on-apple-s-ios14-1jki</guid>
      <description>&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--AgpkWmaN--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/vc3waa09ayu2aiftpb02.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--AgpkWmaN--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/vc3waa09ayu2aiftpb02.jpg" alt="Holding out the iPhone"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Initial Thoughts
&lt;/h2&gt;

&lt;p&gt;Last week I installed the IOS14 beta, and overall, I'm impressed with the experience. Android fans will scoff at the idea that Apple has implemented widgets, screaming, "WE'VE HAD THIS SINCE THE BEGINNING OF ANDROID PHONES!". Or they'll laugh at the idea that iPhones finally have an app draw (called App Library) and has picture in picture mode (PiP).&lt;/p&gt;

&lt;p&gt;The thing is, we all know that Apple takes their time, and when they deliver these improvements, they usually offer it better than most Android implementations.&lt;/p&gt;

&lt;h2&gt;
  
  
  App Library
&lt;/h2&gt;

&lt;p&gt;The App Library is a smart AI-driven app drawer that cleverly bundles apps together and will bring the apps you use most near the top. You don't have to think about customising it yourself, and I've found myself removing most apps from the main screen in favour of the App library. Also, if you can't find the app you're looking for, then the search at the top of the screen is super helpful and lightning-fast. Overall, my impressions of the App library has been very positive. Once in a while, I stare at my screen and wonder where the app I'm looking for is. However, this happens a lot less than when I used Android.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--ch6DszF7--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://app.forestry.io/sites/8ph-bduga2rdlw/body-media/./images/20200623_095155000_ios.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--ch6DszF7--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://app.forestry.io/sites/8ph-bduga2rdlw/body-media/./images/20200623_095155000_ios.png" alt="./images/20200623"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Picture in Picture
&lt;/h2&gt;

&lt;p&gt;It's nice being able to watch videos while using other apps. I also like the fact you can swipe the video to the side, and the video will still play while showing an arrow to bring the video back.&lt;/p&gt;

&lt;p&gt;To be honest, they're the only two apps I've tested for PiP. I'm pretty sure the experience will be very similar to Apple video and other video apps. It's a fantastic feature which they have implemented well, and I don't think much can be improved. The only negative is more towards Google and forcing us to subscribe to premium for silly basic features.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--v95Lp0Dg--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://app.forestry.io/sites/8ph-bduga2rdlw/body-media/./images/20200623_152937000_ios.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--v95Lp0Dg--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://app.forestry.io/sites/8ph-bduga2rdlw/body-media/./images/20200623_152937000_ios.png" alt="./images/20200623"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Widgets
&lt;/h2&gt;

&lt;p&gt;Widgets have always been great on Android phones and I used to love having a weather and search widget. When moving over to the iPhone, I was a little sad that it wasn't a feature. Now the feature is here, and I'm happy with their implementation. Especially with the Stack widget that allows you to group widgets together and scroll between them. Apple will also intelligently move across the widgets during your day depending on what it thinks you need at that moment.&lt;/p&gt;

&lt;p&gt;The stack widget is so clever that I think it's the only widget you or I will ever need. It's currently the only one I have on my screen and I love flicking through my stack.&lt;/p&gt;

&lt;h2&gt;
  
  
  Siri
&lt;/h2&gt;

&lt;p&gt;Siri no longer takes up your whole screen, and instead, it's a little icon near the bottom of your screen. Results also appear at the time in a little card that looks a lot cleaner than previous versions. I haven't used Siri enough to gather whether it's more or less clever, but the way it works is definitely cleaner and more simple.&lt;/p&gt;

&lt;h2&gt;
  
  
  Receiving Phone Calls
&lt;/h2&gt;

&lt;p&gt;Receiving phone calls has also had an upgrade. Rather than taking up the screen, it will come in from the top when you're using your phone, and you can swipe up to dismiss. It's clean and simple to use.&lt;/p&gt;

&lt;h2&gt;
  
  
  Bonus: Accessibility
&lt;/h2&gt;

&lt;p&gt;Accessibility may not seem interesting, but there's one feature that I love. If you go to "Settings &amp;gt; Accessibility &amp;gt; Touch", you can turn on "Back Tap" which allows you to open apps by tapping the back of your phone. There are two options, one for "Double Tap" and another for "Triple Tap". Currently, I have my double tap set to open Siri and nothing on my triple tap. However, I would like to be able to open my camera with the triple tap which isn't currently possible.&lt;/p&gt;

&lt;h2&gt;
  
  
  Features I'm excited for
&lt;/h2&gt;

&lt;p&gt;There are many features that I haven't yet tried but really excited for. These include, but are not limited to; CarPlay unlock, App Clips, and IOS Smart Home controls. CarPlay unlock could be very handy and would mean I don't have to carry my car keys with me any more. App clips is also another one I'm excited to try out since I can use club cards and not have to install standalone apps in order to do so.&lt;/p&gt;

&lt;h2&gt;
  
  
  Should you install IOS14 beta?
&lt;/h2&gt;

&lt;p&gt;The OS itself is very stable. So far, I've had very little issues with the OS itself. However, if you rely on your banking apps, then I would stay away. Currently, all banking apps will either crash and exit or notify you that you're using a jailbroken device.&lt;/p&gt;

&lt;p&gt;If you have another phone where you can use your banking apps, then go ahead, otherwise, I would just wait for the official release.&lt;/p&gt;

&lt;h2&gt;
  
  
  Closing thoughts
&lt;/h2&gt;

&lt;p&gt;IOS14 has some very welcomed features which I hope they can continue to innovate on. Android users may laugh at the fact they've had these features since the dawn of time, but Apple manages to go a step further each time.&lt;/p&gt;

&lt;p&gt;Have you got the IOS14 beta? If so, what are your thoughts?&lt;/p&gt;

&lt;p&gt;If not, what are you looking forward to the most?&lt;/p&gt;

&lt;p&gt;If you're an Android user, what do you think about these features?&lt;/p&gt;

</description>
      <category>iphone</category>
      <category>ios14</category>
      <category>apple</category>
    </item>
    <item>
      <title>Docker: request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers)</title>
      <dc:creator>Michael Brooks</dc:creator>
      <pubDate>Fri, 05 Jul 2019 07:49:54 +0000</pubDate>
      <link>https://dev.to/michaelbrooks/docker-request-canceled-while-waiting-for-connection-client-timeout-exceeded-while-awaiting-headers-b1i</link>
      <guid>https://dev.to/michaelbrooks/docker-request-canceled-while-waiting-for-connection-client-timeout-exceeded-while-awaiting-headers-b1i</guid>
      <description>&lt;p&gt;This error has had a lot of people stumped by the looks of their &lt;a href="https://github.com/docker/kitematic/issues"&gt;issues on GitHub&lt;/a&gt;. I think the error stems from downloading Docker through their main landing page, I tried a lot to fix the issue and with no luck. This included switching the DNS over to 8.8.8.8 which has been suggested in the past and worked.&lt;/p&gt;

&lt;p&gt;My answer to the issue is don’t use the main landing page to install Docker, instead, you want to &lt;a href="https://docs.docker.com/install/#supported-platforms"&gt;download it from here&lt;/a&gt; and then everything should work as normal.&lt;/p&gt;

&lt;p&gt;If you have any questions or feel it hasn’t worked for you, then please let me know.&lt;/p&gt;

</description>
      <category>docker</category>
      <category>devops</category>
      <category>productivity</category>
    </item>
    <item>
      <title>Laravel enforcing strict passwords with Regex</title>
      <dc:creator>Michael Brooks</dc:creator>
      <pubDate>Wed, 03 Jul 2019 09:41:28 +0000</pubDate>
      <link>https://dev.to/michaelbrooks/laravel-enforcing-strict-passwords-with-regex-18h3</link>
      <guid>https://dev.to/michaelbrooks/laravel-enforcing-strict-passwords-with-regex-18h3</guid>
      <description>&lt;p&gt;Recently I had someone comment on one of my gists which I created a few years ago. It was a gist to help create strict password validation with Regex. I honestly completely forgot about it until that email.&lt;/p&gt;

&lt;p&gt;When taking a look, I thought to myself "Oh wow! Did I make this?". I then looked down at the comments which I never saw before and noticed it's helped out quite a lot of people.&lt;/p&gt;

&lt;p&gt;I thought it was only fair I should share it to others in case they need it to. So without further ado, here's the link for your viewing pleasure.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://gist.github.com/Michael-Brooks/fbbba105cd816ef5c016"&gt;https://gist.github.com/Michael-Brooks/fbbba105cd816ef5c016&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;There are some very helpful comments, so please feel free to read them and I hope it helps you out for your Laravel projects. And if you create something useful in your own code, don't forget to share it in a gist as it could help others.&lt;/p&gt;

&lt;p&gt;If you have your very own useful gists, please feel free to share too.&lt;/p&gt;

&lt;p&gt;UPDATE: It's been noted that this could be seen as a recommendation or "this is how I think passwords should be done". It isn't and these were requirements from a former client which had been formally agreed upon. I would recommend better password validation rules and using a password strength indicator. This can be seen on my &lt;a href="https://www.reddit.com/r/laravel/comments/c8m9f0/laravel_enforcing_strict_passwords_with_regex/"&gt;Reddit post here&lt;/a&gt;&lt;/p&gt;

</description>
      <category>laravel</category>
      <category>github</category>
      <category>gist</category>
      <category>regex</category>
    </item>
    <item>
      <title>IGTV Web Dev Coffee Talk with me</title>
      <dc:creator>Michael Brooks</dc:creator>
      <pubDate>Fri, 07 Jun 2019 12:44:51 +0000</pubDate>
      <link>https://dev.to/michaelbrooks/igtv-web-dev-coffee-talk-with-me-4gc9</link>
      <guid>https://dev.to/michaelbrooks/igtv-web-dev-coffee-talk-with-me-4gc9</guid>
      <description>&lt;p&gt;I've started an IGTV channel where every Friday I talk about web development. Currently, I'm talking about contracting, but in the future, I might expand to other topics such as different technologies, new projects and more.&lt;/p&gt;

&lt;p&gt;My main profile has a bunch of Crossfit and motivational stuff, but this might change as I figure out what I actually want out of my IG channel. Any suggestions would be appreciated, and if you have any questions or ways to improve, I'm all ears.&lt;/p&gt;

&lt;p&gt;If you want to skip over the Crossfit stuff and you only want to see tech stuff from my IGTV channel then follow me on here and I'll keep you posted. Otherwise, you can follow my IG profile and find out more about my life in general.&lt;/p&gt;

&lt;p&gt;Here's a link straight to my IGTV content &lt;a href="https://www.instagram.com/mike_d_brooks/channel/"&gt;https://www.instagram.com/mike_d_brooks/channel/&lt;/a&gt;&lt;/p&gt;

</description>
      <category>verticalvideo</category>
      <category>contracting</category>
      <category>webdev</category>
      <category>coffee</category>
    </item>
    <item>
      <title>(UK) How to become a contract web developer</title>
      <dc:creator>Michael Brooks</dc:creator>
      <pubDate>Tue, 04 Jun 2019 09:31:38 +0000</pubDate>
      <link>https://dev.to/michaelbrooks/uk-how-to-become-a-contract-web-developer-2h40</link>
      <guid>https://dev.to/michaelbrooks/uk-how-to-become-a-contract-web-developer-2h40</guid>
      <description>&lt;p&gt;So, you want to get into contract development, but you don't know where to start? Let me explain how to get started, and what you need in order to begin contracting. Strap in, because this is going to be a long one.&lt;/p&gt;

&lt;h2&gt;
  
  
  Setting up your business
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--SiktOmNH--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://michaelbrooks.co.uk/wp-content/uploads/2019/05/MBD_medium-1.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--SiktOmNH--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://michaelbrooks.co.uk/wp-content/uploads/2019/05/MBD_medium-1.png" alt=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--13aLM0-P--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://michaelbrooks.co.uk/wp-content/uploads/2019/05/robot_medium.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--13aLM0-P--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://michaelbrooks.co.uk/wp-content/uploads/2019/05/robot_medium.png" alt=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;First off, you will need to either set up your own limited company or find a service which offers an umbrella company. There are multiple ways to set up a limited company. You can create the company yourself, or use a service to do it for you. I was personally recommended a company myself called "&lt;a href="https://www.thecompanywarehouse.co.uk"&gt;The Company Warehouse&lt;/a&gt;". They also offer accountancy packages which may suit your needs.&lt;/p&gt;

&lt;p&gt;You could also use companies such as &lt;a href="https://www.yoursidekick.co.uk/limited-company/"&gt;Your Side Kick&lt;/a&gt;, &lt;a href="https://www.jsagroup.co.uk/"&gt;JSA Group&lt;/a&gt; etc. These companies will set up your business and deal with taxes, PAYE etc. If you decide to go alone, then you will need to register on the &lt;a href="https://www.gov.uk/set-up-limited-company"&gt;gov.uk&lt;/a&gt; website.&lt;/p&gt;

&lt;p&gt;After you've set up your limited company, and if you didn't use a service, then there are extras to consider. These are; PAYE, tax and VAT. All of this can be done on the gov.uk website, but you need to take care to ensure you fill the details correctly.&lt;/p&gt;

&lt;p&gt;Another thing to consider if you haven't used any of the services above is an accountant, they can deal with your yearly taxes and any VAT submissions (should you require it). They can set you up with accountancy software such as Quick Books, Free Agent, Xero etc. Once they set you up, they will help to get you started and can let you go on your own once you're confident enough to use the software.&lt;/p&gt;

&lt;h2&gt;
  
  
  Deciding who to bank with
&lt;/h2&gt;

&lt;p&gt;There are so many banking companies out there, even more with the boom of Fintech banks. Personally, I chose Starling which is a fantastic fintech company. They offer 0 monthly fees, they charge £3 fee per money withdrawal at Post Offices. However, you can also choose from the following... Monzo, Tide, Coconut and many more. There are also traditional bank accounts such as HSBC, Barclays, Santander etc.&lt;/p&gt;

&lt;p&gt;It is up to you to research each bank and find the one that best suits you. Once you have done this, you should hook it up with your account management software or notify your accountant.&lt;/p&gt;

&lt;h2&gt;
  
  
  Looking for contracting work
&lt;/h2&gt;

&lt;p&gt;You have the business side of things taken care of, now it's time to find work. How do you do this?&lt;/p&gt;

&lt;p&gt;There are tons of options available for you, if you have connections elsewhere, then you can ask them. You can go to Slack or Reddit communities where other devs are already working for companies looking for contractors. I actually found my role through an agency called Nigel Frank on LinkedIn. They are a worldwide agency so there's plenty of work to go round.&lt;/p&gt;

&lt;p&gt;Speaking of LinkedIn, that's a massive resource which I recommend. You can join communities and connect with like-minded people. People are always advertising for positions on LinkedIn too, so be sure to use the search to your full advantage. Twitter and Facebook may also help, but I haven't had any luck on there just yet.&lt;/p&gt;

&lt;p&gt;Another great step would be to set up your own website to advertise your work and the fact you're looking. You can create a contact form, add your phone number and share to friends and family who may also share to others.&lt;/p&gt;

&lt;p&gt;Hang out at conferences by using &lt;a href="https://www.meetup.com/"&gt;MeetUp.com&lt;/a&gt; to your advantage while learning new skills. I recommend you go when there are interesting topics, otherwise, you might not have any luck. You may also want to create some business cards which you can hand out to people you meet.&lt;/p&gt;

&lt;h2&gt;
  
  
  Optional: Work Equipment
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--NHoS8V3W--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://michaelbrooks.co.uk/wp-content/uploads/2019/05/IMG_20190528_074537-1024x768.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--NHoS8V3W--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://michaelbrooks.co.uk/wp-content/uploads/2019/05/IMG_20190528_074537-1024x768.jpg" alt=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This one depends on your circumstances. If you have got a working laptop and all the gear for working elsewhere, then you can skip this. Otherwise, you will need to find a laptop. You may also need some dongles, a mouse and keyboard, earphones or headphones, or monitor cables.&lt;/p&gt;

&lt;p&gt;I personally went with the HP Envy 13" with a USB-C dongle. The dongle has 2 USB-A, one USB-C, ethernet, one VGA and one HDMI ports. My mouse is a Razer (can't remember the model) and I use the keyboard that's on my laptop. My workplace offered me a monitor with HDMI cable, but you may want to take your own display cables just in case. I can also connect to their network via ethernet.&lt;/p&gt;

&lt;p&gt;It came with Windows 10 pre-installed, but I chose to install the latest Ubuntu software. In hindsight, I should have chosen the LTS version due to software support. I will stick to the next LTS version to avoid this situation in the future.&lt;/p&gt;

&lt;h2&gt;
  
  
  Final Thoughts
&lt;/h2&gt;

&lt;p&gt;As far as starting out with contracting, that's pretty much it. You may also need to learn to invoice your clients although my agency does that for me. However, I still have to fill in timesheets every week in order for them to keep track and I create invoices that never go to them.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://michaelbrooks.co.uk/this-month-has-been-weird-for-me/"&gt;Read my story on how I got started with contracting...&lt;/a&gt;&lt;/p&gt;

</description>
      <category>contracting</category>
      <category>businessowner</category>
      <category>startacompany</category>
    </item>
    <item>
      <title>My first ebook will be about creating your first ebook</title>
      <dc:creator>Michael Brooks</dc:creator>
      <pubDate>Thu, 28 Feb 2019 16:53:35 +0000</pubDate>
      <link>https://dev.to/michaelbrooks/my-first-ebook-will-be-about-creating-your-first-ebook-m3o</link>
      <guid>https://dev.to/michaelbrooks/my-first-ebook-will-be-about-creating-your-first-ebook-m3o</guid>
      <description>&lt;p&gt;You heard right, the first ebook I will be creating will about how to write your first ebook. I’ve been thinking about how I would love to create an ebook, but I didn’t know what to write about. Researching how to create an ebook leads to people explaining you should use Canva, Google Docs or something completely different, but they don’t explain how or why.&lt;/p&gt;

&lt;p&gt;Canva is an incredible design tool, but why would I use it for information? How would I add a table of contents to my Canva ebook? Google Docs is obviously an amazing document tool. However, the same questions can be asked here. You have to piece together each question to find the correct answers in order to get a definitive answer.&lt;/p&gt;

&lt;p&gt;I thought I would save everyone the hassle of this and use the knowledge I gain to help others in creating their ebook(s). The ebook will cover getting started, from planning to the creation and then selling and marketing. Each chapter will be a complete step by step guide. By the end, you will have created your very own ebook to market and sell.&lt;/p&gt;

&lt;p&gt;You can preorder the ebook below and use the discount code “EARLYBIRD” for £4 off. The discount code is only available to preorders.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://gumroad.com/l/kYoQ/EARLYBIRD"&gt;https://gumroad.com/l/kYoQ/EARLYBIRD&lt;/a&gt;&lt;/p&gt;

</description>
      <category>ebook</category>
      <category>sale</category>
      <category>preorder</category>
      <category>learn</category>
    </item>
    <item>
      <title>We don’t need a social networking website. We need building websites to be more accessible.</title>
      <dc:creator>Michael Brooks</dc:creator>
      <pubDate>Wed, 25 Apr 2018 15:49:20 +0000</pubDate>
      <link>https://dev.to/michaelbrooks/we-dont-need-a-social-networking-website-we-need-building-websites-to-be-more-accessible-179n</link>
      <guid>https://dev.to/michaelbrooks/we-dont-need-a-social-networking-website-we-need-building-websites-to-be-more-accessible-179n</guid>
      <description>&lt;p&gt;Some may know that I’ve been wanting to build an open source social networking website for a long time. The trouble with building a social networking site is there is so much to do. Especially if you want to build something that’s on par with the likes of Facebook.&lt;/p&gt;

&lt;p&gt;No one wants to help build it with you and it’s hard to build all of it yourself. I really wanted to get something out there, especially with the news on Facebook recently. I thought to myself “this is it, I need to build this now”. I then start building and just get overwhelmed with the amount of work that needs to be done.&lt;/p&gt;

&lt;p&gt;There are already open source social platforms out there already, but I thought I could build it better (I was so wrong about this). There are also decentralised social networking platforms that are great, but it isn’t accessible to everyone.&lt;/p&gt;

&lt;p&gt;This got me thinking, what we need to do is make building a website easier and cheaper. We need a platform that similar to that of myspace where you can build your profile how you like, but more limited so we don’t have a huge mess with flashy gifs.&lt;/p&gt;

&lt;p&gt;We then also need the ability to add a custom domain and connect that as easily as possible. People would then be able to have their own personalised website that is also their profile.&lt;/p&gt;

&lt;p&gt;They should have full control over what is shown and what isn’t and they should be able to download that code fully to allow them to move to another server if they so choose.&lt;/p&gt;

&lt;p&gt;These sites/profiles should be able to connect (or subscribe to) one another. I suspect in a very similar way to how WordPress and JetPack connect to one another.&lt;/p&gt;

&lt;p&gt;I guess you could reskin WordPress as a more profile based website and have a platform like wordpress.com that allows users who are a less experienced sign-up and build their profile. More advanced users will download and its places on their server and then start building their profile.&lt;/p&gt;

</description>
      <category>socialnetworking</category>
      <category>facebook</category>
    </item>
  </channel>
</rss>
