<?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: Victor GRENU</title>
    <description>The latest articles on DEV Community by Victor GRENU (@z0ph).</description>
    <link>https://dev.to/z0ph</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%2F407127%2F580dbe59-4d9a-4eea-a8a9-c5485c3734cb.png</url>
      <title>DEV Community: Victor GRENU</title>
      <link>https://dev.to/z0ph</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/z0ph"/>
    <language>en</language>
    <item>
      <title>AWS Security Survival Kit</title>
      <dc:creator>Victor GRENU</dc:creator>
      <pubDate>Thu, 17 Aug 2023 08:41:10 +0000</pubDate>
      <link>https://dev.to/aws-builders/aws-security-survival-kit-535h</link>
      <guid>https://dev.to/aws-builders/aws-security-survival-kit-535h</guid>
      <description>&lt;h2&gt;
  
  
  🚑 AWS Security Survival Kit
&lt;/h2&gt;

&lt;h3&gt;
  
  
  🧠 Rationale
&lt;/h3&gt;

&lt;p&gt;This AWS Security Survival Kit (ASSK) sets up a basic proactive monitoring and alerting environment on common suspicious activities in your AWS Account.&lt;/p&gt;

&lt;p&gt;We know that &lt;a href="https://aws.amazon.com/cloudtrail/"&gt;CloudTrail&lt;/a&gt; is the bare minimum service to activate on a newly created AWS Account to track all activities on your AWS account. It helps, but this will not alert you to suspicious activities by itself. You still have to check periodically if something has gone wrong in multiple services and the console.&lt;/p&gt;

&lt;p&gt;With these CloudFormation templates, you will bring proactive security monitoring and alerting to your AWS account. It's complementary to the GuardDuty service as there are no built-in alerts on GuardDuty.&lt;/p&gt;

&lt;h3&gt;
  
  
  💾 Suspicious Activities
&lt;/h3&gt;

&lt;p&gt;Using this kit, you will deploy EventBridge (CloudWatch Event) Rules and CloudWatch Metric Filters and Alarms on select suspicious activities. It comes with a CloudWatch Dashboard to give you more insights about what is ringing 🔔&lt;/p&gt;

&lt;p&gt;The following suspicious activities are currently supported:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Root User activities&lt;/li&gt;
&lt;li&gt;CloudTrail changes (&lt;code&gt;StopLogging&lt;/code&gt;, &lt;code&gt;DeleteTrail&lt;/code&gt;, &lt;code&gt;UpdateTrail&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;AWS Personal Health Dashboard Events&lt;/li&gt;
&lt;li&gt;IAM Users Changes (&lt;code&gt;Create&lt;/code&gt;, &lt;code&gt;Delete&lt;/code&gt;, &lt;code&gt;Update&lt;/code&gt;, &lt;code&gt;CreateAccessKey&lt;/code&gt;, etc..)&lt;/li&gt;
&lt;li&gt;MFA Monitoring (&lt;code&gt;CreateVirtualMFADevice&lt;/code&gt; &lt;code&gt;DeactivateMFADevice&lt;/code&gt; &lt;code&gt;DeleteVirtualMFADevice&lt;/code&gt;, etc..)&lt;/li&gt;
&lt;li&gt;Unauthorized Operations (&lt;code&gt;Access Denied&lt;/code&gt;, &lt;code&gt;UnauthorizedOperation&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;Failed AWS Console login authentication (&lt;code&gt;ConsoleLoginFailures&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;EBS Snapshots Exfiltration (&lt;code&gt;ModifySnapshotAttribute&lt;/code&gt;, &lt;code&gt;SharedSnapshotCopyInitiated&lt;/code&gt; &lt;code&gt;SharedSnapshotVolumeCreated&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;AMI Exfiltration (&lt;code&gt;ModifyImageAttribute&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;Who Am I Calls (&lt;code&gt;GetCallerIdentity&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;IMDSv1 RunInstances (&lt;code&gt;RunInstances&lt;/code&gt; &amp;amp;&amp;amp; &lt;code&gt;optional&lt;/code&gt; http tokens)&lt;/li&gt;
&lt;/ol&gt;

&lt;h4&gt;
  
  
  🤖 ChatOps
&lt;/h4&gt;

&lt;p&gt;Setup &lt;a href="https://aws.amazon.com/chatbot/"&gt;AWS Chatbot&lt;/a&gt; for best experience to get notified directly on Slack and MS Teams.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--BtdvieT---/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/gc3s2ltnwv1hvvs5ycr3.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--BtdvieT---/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/gc3s2ltnwv1hvvs5ycr3.png" alt="Slack Notification" width="551" height="223"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  📈 Dashboard
&lt;/h4&gt;

&lt;p&gt;ASSK comes with a CloudWatch Dashboard, please don't hesitate to adjust to your needs.&lt;/p&gt;

&lt;h2&gt;
  
  
  🎖️ Credits
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;AWS Security Boutique: &lt;a href="https://zoph.io"&gt;zoph.io&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;💌 &lt;a href="https://awssecuritydigest.com"&gt;AWS Security Digest Newsletter&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Twitter: &lt;a href="https://twitter.com/zoph"&gt;zoph&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

</description>
    </item>
    <item>
      <title>AWS Security Digest</title>
      <dc:creator>Victor GRENU</dc:creator>
      <pubDate>Wed, 27 Oct 2021 09:07:33 +0000</pubDate>
      <link>https://dev.to/aws-builders/aws-security-digest-27ln</link>
      <guid>https://dev.to/aws-builders/aws-security-digest-27ln</guid>
      <description>&lt;p&gt;Folks,&lt;/p&gt;

&lt;p&gt;📬 Issue #42 of my low-volume (once a week) newsletter “AWS Security Digest” is out.&lt;/p&gt;

&lt;p&gt;What you will find:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Highlight of the week 🔦&lt;/li&gt;
&lt;li&gt;Change since last week on AWS Managed IAM Policies 🕵🏻‍♂️&lt;/li&gt;
&lt;li&gt;Curated Cloud Security Newsletters 💌&lt;/li&gt;
&lt;li&gt;AWS API changes 👀&lt;/li&gt;
&lt;li&gt;IAM Permissions changes 🔒&lt;/li&gt;
&lt;li&gt;Most upvoted posts on r/AWS 🆙&lt;/li&gt;
&lt;li&gt;Top shared links on Twitter (by cloudsec folks) 🔗&lt;/li&gt;
&lt;li&gt;Most engaged Tweets from the community 🐦&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Adopt a slow-tech 🐌 approach by reading only essential, digest summary of what is going on in the AWS Security landscape.&lt;/p&gt;

&lt;p&gt;With already 300+ subscribers with famous folks from @netflix and @amazon, you can’t go wrong :)&lt;/p&gt;

&lt;p&gt;&lt;a href="https://app.mailbrew.com/zoph/aws-security-digest-HrkhwqNrwBBk"&gt;https://app.mailbrew.com/zoph/aws-security-digest-HrkhwqNrwBBk&lt;/a&gt;&lt;/p&gt;

</description>
      <category>aws</category>
      <category>security</category>
      <category>digest</category>
      <category>newsletter</category>
    </item>
    <item>
      <title>AWS Re:Invent Con - One-Pagers</title>
      <dc:creator>Victor GRENU</dc:creator>
      <pubDate>Sat, 21 Nov 2020 08:10:14 +0000</pubDate>
      <link>https://dev.to/z0ph/aws-re-invent-con-one-pagers-2gii</link>
      <guid>https://dev.to/z0ph/aws-re-invent-con-one-pagers-2gii</guid>
      <description>&lt;p&gt;Like every year, I will publish my "One-Pager" recap of all pre / re:Invent launches and announcements.&lt;/p&gt;

&lt;p&gt;This year will be more collaborative as the Markdown files are on GitHub. Any volunteers to help me to catch them all?&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/zoph-io/awscon-onepager/blob/master/reinvent/reinvent-2020.md"&gt;https://github.com/zoph-io/awscon-onepager/blob/master/reinvent/reinvent-2020.md&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>aws</category>
      <category>reinvent</category>
      <category>onepager</category>
      <category>cloud</category>
    </item>
    <item>
      <title>Build a Serverless Twitter Dashboard using DynamoDB, APIGW, and Highcharts</title>
      <dc:creator>Victor GRENU</dc:creator>
      <pubDate>Sun, 25 Oct 2020 18:57:21 +0000</pubDate>
      <link>https://dev.to/z0ph/build-a-serverless-twitter-dashboard-using-dynamodb-apigw-and-highcharts-331b</link>
      <guid>https://dev.to/z0ph/build-a-serverless-twitter-dashboard-using-dynamodb-apigw-and-highcharts-331b</guid>
      <description>&lt;h3&gt;
  
  
  TL;DR
&lt;/h3&gt;

&lt;blockquote&gt;
&lt;p&gt;HighCharts -&amp;gt; APIGW -&amp;gt; DynamoDB + Lambda function 🎉 &lt;a href="https://cockpit.zoph.io"&gt;cockpit.zoph.io&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  Introduction
&lt;/h2&gt;

&lt;p&gt;Lately, I was working on a new version, &lt;strong&gt;API Based&lt;/strong&gt;, for my Twitter Cockpit. In the previous version, Highcharts was loading data from some flat &lt;code&gt;csv&lt;/code&gt; files.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://cockpit.zoph.io"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--uoaDK77_--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://zoph.me/posts/resources/images/posts/twitter-cockpit-v2/homepage.png" alt="Cockpit"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The goal of this cockpit is to retrieve and store unlimited history of specific Twitter Accounts based on a Twitter List. It means that you can control it from Twitter which accounts you want to graph the follower/following history. When you are using &lt;a href="https://analytics.twitter.com"&gt;Twitter Analytics&lt;/a&gt;, the history only compares followers (not following) to the previous &lt;strong&gt;28 days period&lt;/strong&gt;, and the graph is in fact a non-clickable thumbnail image, a very poor experience for free users.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--1Ih1Ppe5--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://zoph.me/posts/resources/images/posts/twitter-cockpit-v2/analytics-thumb.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--1Ih1Ppe5--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://zoph.me/posts/resources/images/posts/twitter-cockpit-v2/analytics-thumb.png" alt="Twitter Analytics Thumbnail"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;It was for me an opportunity to work on a DynamoDB data modeling, and craft an API Gateway from scratch. 🧑‍🏭&lt;/p&gt;

&lt;h3&gt;
  
  
  Technical Stack
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;CloudFront + S3 Origin + ACM Certificate&lt;/li&gt;
&lt;li&gt;API Gateway&lt;/li&gt;
&lt;li&gt;DynamoDB Tables&lt;/li&gt;
&lt;li&gt;IAM Roles&lt;/li&gt;
&lt;li&gt;Github Actions as CI/CD Pipeline&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  Architecture Schema
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--JCtCaaDj--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://zoph.me/posts/resources/images/posts/twitter-cockpit-v2/schema.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--JCtCaaDj--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://zoph.me/posts/resources/images/posts/twitter-cockpit-v2/schema.png" alt="Architecture Schema"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  DynamoDB Tables
&lt;/h2&gt;

&lt;p&gt;You will need to prepare carefully your data model here, and understand clearly how DynamoDB is working under the hood.&lt;/p&gt;

&lt;p&gt;For my use-case, I've decided to use two DynamoDB tables, one for users statistics, and another one for user-list, used later for the &lt;code&gt;&amp;lt;select&amp;gt;&lt;/code&gt; on the webapp.&lt;/p&gt;

&lt;h3&gt;
  
  
  Stats table
&lt;/h3&gt;

&lt;p&gt;The data model for this table is pretty simple, I'm using the following attributes:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;code&gt;scan_date&lt;/code&gt; as the hash key&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;screen_name&lt;/code&gt; as the range (sort) key&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;As my &lt;code&gt;scan_date&lt;/code&gt; is not unique, I was needed to select a range key as well.&lt;/p&gt;

&lt;p&gt;Beware of the &lt;a href="https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/ReservedWords.html"&gt;reserved words&lt;/a&gt; on DynamoDB.&lt;/p&gt;

&lt;p&gt;Now, I need to query the table by the user, because my graph is on a per user basis. To do so, I've used a Global Secondary Index (GSI):&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;screen_name&lt;/code&gt; as the hash key&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;scan_date&lt;/code&gt; as the sort key, as my data needs to be ordered by date for HighCharts&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The advantage of the index, is that you only need to specify one attribute when you are querying this index, in my case, it was &lt;code&gt;screen_name&lt;/code&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  Users table
&lt;/h3&gt;

&lt;p&gt;The goal of this table is to store for later expose the list of current lambda crawled users (from the Twitter list)&lt;/p&gt;

&lt;p&gt;The data model for this table is pretty straightforward: &lt;code&gt;screen_name&lt;/code&gt; only, as this attribute will be unique. That's all.&lt;/p&gt;

&lt;p&gt;At this stage, for users table, I'm using a &lt;code&gt;Scan&lt;/code&gt; on DynamoDB to retrieve the full list of users.&lt;/p&gt;

&lt;h2&gt;
  
  
  API Gateway
&lt;/h2&gt;

&lt;p&gt;To get data from DynamoDB, we will need to create a &lt;code&gt;GET&lt;/code&gt; API method, and apply some transformation using Apache's Velocity Templating Language (&lt;a href="https://velocity.apache.org/"&gt;VTL&lt;/a&gt;). Warning the AWS Service Method to interact with DynamoDB is a &lt;code&gt;POST&lt;/code&gt; Method.&lt;/p&gt;

&lt;h3&gt;
  
  
  Integrated Request - Mapping Template
&lt;/h3&gt;

&lt;p&gt;In this mapping, we are passing the input param to the &lt;code&gt;KeyConditionExpression&lt;/code&gt;, and we query the index (GSI).&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"TableName"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"twitter-cockpit-sandbox"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"IndexName"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"screen_name-index"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"KeyConditionExpression"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"screen_name = :v1"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"ExpressionAttributeValues"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="nl"&gt;":v1"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
            &lt;/span&gt;&lt;span class="nl"&gt;"S"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"$input.params('user')"&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Integrated Response
&lt;/h3&gt;

&lt;p&gt;For each Item I need to format the response from the API Gateway in DynamoDB Format, using Integrated Response, to format as you want the expected result to fit with the requirements of Highcharts.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;#set($inputRoot = $input.path('$'))
{
    "cockpit": [
        #foreach($elem in $inputRoot.Items) {
            "scan_date": "$elem.scan_date.S",
            "screen_name": "$elem.screen_name.S",
            "followers": "$elem.followers.N",
            "following": "$elem.following.N"
        }#if($foreach.hasNext),#end
    #end
    ]
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  FrontEnd
&lt;/h2&gt;

&lt;p&gt;This part was the hardest part for me, as I'm more the backend / infrastructure guys...&lt;/p&gt;

&lt;p&gt;I'm only using some HTML and Javascript (jQuery) + CSS.&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;The integration between API Gateway and DynamoDB is pretty cool and easy to manipulate, you don't need to use a proxy Lambda function for every use-cases. This architecture is scalable, managed, and cost-efficient.&lt;/p&gt;

&lt;p&gt;The source code for this workload is not yet open-sourced, as some elements are not yet fully-automated, please tell me if you are interested to get early access.&lt;/p&gt;

&lt;p&gt;That's all folks! Don't hesitate to Ask Me Anything (AMA) on comments or on &lt;a href="https://twitter.com/zoph"&gt;Twitter&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;zoph.&lt;/p&gt;

</description>
      <category>aws</category>
      <category>dynamodb</category>
      <category>api</category>
      <category>twitter</category>
    </item>
    <item>
      <title>Update on being Independent [6 months later]</title>
      <dc:creator>Victor GRENU</dc:creator>
      <pubDate>Thu, 11 Jun 2020 20:16:40 +0000</pubDate>
      <link>https://dev.to/z0ph/update-on-being-independent-6-months-later-192d</link>
      <guid>https://dev.to/z0ph/update-on-being-independent-6-months-later-192d</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;This post is the second part of a series about my journey as an Independent AWS Cloud Architect.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  Status
&lt;/h2&gt;

&lt;p&gt;As I've already told you in the &lt;a href="https://zoph.me/posts/2020-01-02-on-being-independent/"&gt;first part&lt;/a&gt;, I've started my own business in early January 2020.&lt;/p&gt;

&lt;p&gt;After the first 6 months of being an Independent AWS Architect in France, I'm very happy with this move, no regret, and I won't see any upcoming U-turn move to come back as a full-time employee.&lt;/p&gt;

&lt;p&gt;Today, I have the chance to work on large scale projects with a broad impact. They have mostly a "sense" (to me) as I'm working for a company that is driving renewable energy adoption world-wide. My mission is a long-term engagement (1 year + 1 year in option) with a room for extra small engagements for other customers.&lt;/p&gt;

&lt;h3&gt;
  
  
  COVID-19 💉
&lt;/h3&gt;

&lt;p&gt;During this difficult situation of COVID-19 pandemic, I was assigned to home like almost everyone on earth, with my wife (also in work from home), and my three daughters 👸👸👸.&lt;/p&gt;

&lt;p&gt;At the beginning, it was difficult to set up a new organization with the girl's homework, meals, occupations, and the rise of numerous meetings that could be an email ;).&lt;/p&gt;

&lt;p&gt;But after few weeks, we found the proper schedule thanks to my &lt;del&gt;wife&lt;/del&gt; Wonderwoman.&lt;/p&gt;

&lt;p&gt;I have the chance to work for a large company during this period who let work continue my engagement naturally from home without any impact. I'm still prudent as this engagement could be cut rapidly due to the current crisis and budgets cut 🤞.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Good 👍
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Freedom:

&lt;ul&gt;
&lt;li&gt;No more: manager (only customers), bi-annual reviews, endless HR discussion, asking authorization for whatever you need to get your job done.&lt;/li&gt;
&lt;li&gt;To choose your laptop setup, mobile phone, chair, desk, tooling, &lt;del&gt;high-tech&lt;/del&gt; nerd stuff (tax-free) for your business.&lt;/li&gt;
&lt;li&gt;To be able to buy any training or books without asking anyone to ramp-up on some trending new tech.&lt;/li&gt;
&lt;li&gt;To choose my engagements, and say no to missions that are not relevant for your business.&lt;/li&gt;
&lt;li&gt;To select your business model: paid consulting, sell products, offer training, write books, seat consultants, etc...&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;My compensation is higher (by at least 20%) than in a full-time employee position in consulting firms.&lt;/li&gt;
&lt;li&gt;Stop internal promotion run, competition between co-workers, or political aspects.&lt;/li&gt;
&lt;li&gt;Feeling to be outside of my comfort zone, which allows me to give even more to my customers.&lt;/li&gt;
&lt;li&gt;Lots of days-off. (5 to 9 weeks), this is a great work-life balance.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  The Bad 👎
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;You'll have to justify every cent spent for your business, and it's normal but could be time-consuming and you will need to be very precise and rigorous, keep all receipts and invoices for later controls by the (French) administration.

&lt;ul&gt;
&lt;li&gt;With proper automation and good tooling, I'm spending &lt;em&gt;2 hours a week&lt;/em&gt; on administration stuff with a peek at the end of the month: Invoicing &amp;amp; Time tracking period.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;As said before, during this difficult period of the pandemic of COVID-19, the first population of IT professionals at risk are freelancers, as we are the adjustment variable for customers, we need to be very careful.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  The Ugly 🐵
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Time tracking is boring, I need to do this exercise on:

&lt;ol&gt;
&lt;li&gt;Project Level: Time tracking for Projects I'm working on (by hour): &amp;gt; 3 currently for a single customer.&lt;/li&gt;
&lt;li&gt;Customer Level:

&lt;ol&gt;
&lt;li&gt;Global time tracking for my customer.&lt;/li&gt;
&lt;li&gt;Time Tracking for the intermediate company, used for billing large companies to simplify internal procurement procedures.&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;li&gt;Track kilometers spent on the road.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  About the loneliness
&lt;/h2&gt;

&lt;p&gt;I don't feel so much lonely, In fact, not more than before. I've created a small &lt;a href="https://zophio.slack.com"&gt;Slack Workspace&lt;/a&gt; with some friends working on DevOps/AWS stuff, some are freelance as well. I've also joined several well-know platforms with also, a Slack to exchange and get feedback from other independents folks. I also participate in meetups or and talks to DevOps friends regularly &lt;a href="https://twitter.com/zoph"&gt;on Twitter&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Let me know if you have any questions regarding my journey as Independent/Freelancer.&lt;/p&gt;

&lt;p&gt;Interested to talk about automation and AWS security best practices? Hire me on &lt;a href="https://zoph.io"&gt;zoph.io&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;That's all folks!&lt;/p&gt;

&lt;p&gt;zoph.&lt;/p&gt;

</description>
      <category>independent</category>
      <category>aws</category>
      <category>freelance</category>
      <category>architecture</category>
    </item>
  </channel>
</rss>
