<?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: arhuman</title>
    <description>The latest articles on DEV Community by arhuman (@arhuman).</description>
    <link>https://dev.to/arhuman</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%2F176648%2Fc3b6223f-393d-463a-90d8-6eefcf29a12b.jpeg</url>
      <title>DEV Community: arhuman</title>
      <link>https://dev.to/arhuman</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/arhuman"/>
    <language>en</language>
    <item>
      <title>Your Servers Deserve Better: Meet Minexus, a Smart Admin Agent System in Go</title>
      <dc:creator>arhuman</dc:creator>
      <pubDate>Tue, 01 Jul 2025 00:48:30 +0000</pubDate>
      <link>https://dev.to/arhuman/your-server-deserves-better-meet-minexus-a-smart-admin-agent-system-in-go-41gn</link>
      <guid>https://dev.to/arhuman/your-server-deserves-better-meet-minexus-a-smart-admin-agent-system-in-go-41gn</guid>
      <description>&lt;h2&gt;
  
  
  Meet Minexus — A Modular, Distributed Admin System in Go
&lt;/h2&gt;

&lt;p&gt;I was tired of managing my servers with brittle scripts, ad hoc SSH sessions, and clunky monitoring tools. So I built &lt;a href="https://github.com/arhuman/minexus" rel="noopener noreferrer"&gt;Minexus&lt;/a&gt;, a modular platform to monitor and control servers via secure agents, with Go and gRPC under the hood.&lt;/p&gt;

&lt;p&gt;If you’ve ever wanted:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;To send a command to 50 machines and get results back fast&lt;/li&gt;
&lt;li&gt;To build your own admin plugins with Go&lt;/li&gt;
&lt;li&gt;To manage your servers like a well-oiled, distributed system&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Then this might be up your alley.&lt;/p&gt;

&lt;h2&gt;
  
  
  Architecture at a Glance
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://github.com/arhuman/minexus" rel="noopener noreferrer"&gt;Minexus&lt;/a&gt; is made of 3 main components:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Nexus&lt;/strong&gt; — the central server, connected to a PostgreSQL DB&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Minions&lt;/strong&gt; — lightweight agents running on your hosts, communicating with the Nexus via gRPC + mTLS&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Console&lt;/strong&gt; — an admin UI and command interface, also talking to the Nexus&lt;/p&gt;

&lt;p&gt;Minions register periodically. Commands go through the Nexus, and results are logged/stored. Want a new command? Just write a command.&lt;/p&gt;

&lt;p&gt;It’s simple, extensible, and built for sysadmins/devops/devs who want control without vendor lock-in.&lt;/p&gt;

&lt;p&gt;Use Cases:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Remote command execution (with return capture)&lt;/li&gt;
&lt;li&gt;Service restarts across hosts&lt;/li&gt;
&lt;li&gt;Health checks / monitoring plugins&lt;/li&gt;
&lt;li&gt;Security scans (CVE lookup, etc.)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Anything you can plug into a Go module...&lt;/p&gt;

&lt;p&gt;Want to send restart-service nginx to all your production servers and get clean results in seconds? Minexus can do that.&lt;/p&gt;

&lt;h2&gt;
  
  
  Current status
&lt;/h2&gt;

&lt;p&gt;It's early days, but it’s usable and growing. Contributors welcome — the command system (soon a plugin system) makes it a playground for Go devs.&lt;/p&gt;

&lt;p&gt;You're not a coder, it's not a problem: I’d love 🙏 &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Feedback on the architecture&lt;/li&gt;
&lt;li&gt;Suggestions for useful commands/plugins&lt;/li&gt;
&lt;li&gt;Help testing on non-Linux environments&lt;/li&gt;
&lt;li&gt;Ideas to make this your go-to internal admin framework&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Let’s Build This Together
&lt;/h2&gt;

&lt;p&gt;I believe sysadmin/devops tooling should be:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Easy to use&lt;/li&gt;
&lt;li&gt;Hackable&lt;/li&gt;
&lt;li&gt;Fun to extend&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If you agree, give Minexus a spin, drop a comment, or open an issue.&lt;/p&gt;

&lt;p&gt;GitHub: &lt;a href="https://github.com/arhuman/minexus" rel="noopener noreferrer"&gt;https://github.com/arhuman/minexus&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Cheers,&lt;/p&gt;

</description>
      <category>go</category>
      <category>tooling</category>
      <category>security</category>
      <category>sysadmin</category>
    </item>
    <item>
      <title>Why I like generics in golang</title>
      <dc:creator>arhuman</dc:creator>
      <pubDate>Fri, 31 Jul 2020 22:20:33 +0000</pubDate>
      <link>https://dev.to/arhuman/why-i-like-generics-in-golang-19m3</link>
      <guid>https://dev.to/arhuman/why-i-like-generics-in-golang-19m3</guid>
      <description>&lt;p&gt;(article originally written &lt;a href="https://blog.assad.fr/post/go_generics/" rel="noopener noreferrer"&gt;on my blog &lt;strong&gt;in French&lt;/strong&gt;&lt;/a&gt;)&lt;/p&gt;

&lt;p&gt;I was reading again the excellent article from Ian Taylon and Robert Grisemeer (&lt;a href="https://blog.golang.org/generics-next-step" rel="noopener noreferrer"&gt;The next step for generics&lt;/a&gt;) and I couldn't help thinking that I love the way we're heading. In fact, I love so much those new generics that I've decided to write an article to claim it.&lt;/p&gt;

&lt;p&gt;With the latest drafts published, you should all have a precise idea about what the generics will look like in the next version of Go. So rather than writing another technical review about the changes, I'll rather state why I like those generics because it's the exact same reasons why I like the language.&lt;/p&gt;

&lt;h2&gt;
  
  
  I like generics because they're simple
&lt;/h2&gt;

&lt;p&gt;As type parameters are special parameters, they're now handle as parameters (after the function name) but in an optional distinct list starting with the '&lt;em&gt;type&lt;/em&gt;' keyword and located before the usual parameters list.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight go"&gt;&lt;code&gt;&lt;span class="k"&gt;func&lt;/span&gt; &lt;span class="n"&gt;Process&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;type&lt;/span&gt; &lt;span class="n"&gt;T&lt;/span&gt;&lt;span class="p"&gt;)(&lt;/span&gt;&lt;span class="n"&gt;s&lt;/span&gt; &lt;span class="p"&gt;[]&lt;/span&gt;&lt;span class="n"&gt;T&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="c"&gt;// do something with the slice of T&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The call is similar to a standard call, specifying the type just before the parameters list.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight go"&gt;&lt;code&gt;&lt;span class="n"&gt;Process&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kt"&gt;int&lt;/span&gt;&lt;span class="p"&gt;)([]&lt;/span&gt;&lt;span class="kt"&gt;int&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="m"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="m"&gt;2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="m"&gt;3&lt;/span&gt;&lt;span class="p"&gt;})&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;In some cases (when all the types are used for the input parameter types and not in the body) the compiler is even able to deduce the type from the parameter types.&lt;/p&gt;

&lt;p&gt;Constraints are now defined through interface type (no more contracts). For example, if we want the type T to implement String() we just have to add the Stringer interface constraint.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight go"&gt;&lt;code&gt;&lt;span class="c"&gt;// Stringer is a type constraint that requires a String method.&lt;/span&gt;
&lt;span class="c"&gt;// The String method should return a string representation of the value.&lt;/span&gt;
&lt;span class="k"&gt;type&lt;/span&gt; &lt;span class="n"&gt;Stringer&lt;/span&gt; &lt;span class="k"&gt;interface&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="n"&gt;String&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="kt"&gt;string&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="k"&gt;func&lt;/span&gt; &lt;span class="n"&gt;Process&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;type&lt;/span&gt; &lt;span class="n"&gt;T&lt;/span&gt; &lt;span class="n"&gt;Stringer&lt;/span&gt;&lt;span class="p"&gt;)(&lt;/span&gt;&lt;span class="n"&gt;s&lt;/span&gt; &lt;span class="p"&gt;[]&lt;/span&gt;&lt;span class="n"&gt;T&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="c"&gt;// do something with the slice of T, and call String() on slice elements&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;And if we want to put a constraint on an operator, we can now use base types in an interface type by prefixing the list of base types with '&lt;em&gt;type&lt;/em&gt;'.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight go"&gt;&lt;code&gt;&lt;span class="c"&gt;// Ordered is a type constraint that matches any ordered type.&lt;/span&gt;
&lt;span class="c"&gt;// An ordered type is one that supports the &amp;lt;, &amp;lt;=, &amp;gt;, and &amp;gt;= operators.&lt;/span&gt;
&lt;span class="k"&gt;type&lt;/span&gt; &lt;span class="n"&gt;Ordered&lt;/span&gt; &lt;span class="k"&gt;interface&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="k"&gt;type&lt;/span&gt; &lt;span class="kt"&gt;int&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="kt"&gt;int8&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="kt"&gt;int16&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="kt"&gt;int32&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="kt"&gt;int64&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="kt"&gt;uint&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="kt"&gt;uint8&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="kt"&gt;uint16&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="kt"&gt;uint32&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="kt"&gt;uint64&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="kt"&gt;uintptr&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="kt"&gt;float32&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="kt"&gt;float64&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="kt"&gt;string&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;And to make your life even simple, a new type constraint '&lt;em&gt;comparable&lt;/em&gt;' is now available to handle  '==' and '!=' operators&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight go"&gt;&lt;code&gt;&lt;span class="c"&gt;// Index returns the index of x in s, or -1 if not found.&lt;/span&gt;
&lt;span class="k"&gt;func&lt;/span&gt; &lt;span class="n"&gt;Process&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;type&lt;/span&gt; &lt;span class="n"&gt;T&lt;/span&gt; &lt;span class="n"&gt;comparable&lt;/span&gt;&lt;span class="p"&gt;)(&lt;/span&gt;&lt;span class="n"&gt;s&lt;/span&gt; &lt;span class="p"&gt;[]&lt;/span&gt;&lt;span class="n"&gt;T&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;  &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="c"&gt;// Now you can compare elements of slice even if they're struct or array&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Simple, isn't it?&lt;/p&gt;

&lt;h2&gt;
  
  
  I like generics because I like Gophers' community spirit
&lt;/h2&gt;

&lt;p&gt;But beyond the feature added to the language, what I like with those new generics, is that the way they were added adhere to the &lt;strong&gt;community spirit&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;you have to remember that generics were the 3rd point (with dependencies/package and errors handling) considered as the most important to improve according to &lt;a href="https://blog.golang.org/survey2016-results" rel="noopener noreferrer"&gt;2016 Go users survey&lt;/a&gt; and 2017 one.&lt;/p&gt;

&lt;p&gt;The fact that language evolution has been initiated based on the community feedback (rather than on choices made by a "benevolent dictator for life") is already great.&lt;/p&gt;

&lt;p&gt;The pace at which the features were introduced is also an interesting metric:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Modules handling (introduced in version 1.11 in 2018)&lt;/li&gt;
&lt;li&gt;Errors handling (introduced in version 1.13 in 2019)&lt;/li&gt;
&lt;li&gt;Generic introduction (executed in version 1.15 due for end of 2020)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;As we see, the release pace is quite fast but not rushed.&lt;/p&gt;

&lt;h2&gt;
  
  
  I like generics because I like Go's philosophy
&lt;/h2&gt;

&lt;p&gt;Lastly, I like generics because they comply with the Go's philosophy.&lt;br&gt;
(since the &lt;a href="https://blog.golang.org/survey2016-results" rel="noopener noreferrer"&gt;Go Brand Book&lt;/a&gt; published in 2018, I'd rather use the word &lt;em&gt;values&lt;/em&gt;)&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Simple: As seen above those generic is simple (bye bye contracts) with few language modifications.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Efficient: With every draft, performance has been a constraint and the last one manage to allow you to choose between faster compilation and slower execution &lt;em&gt;and&lt;/em&gt; the contrary.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Thoughtful: Because instead of implementing generics based on another language, the community took its time to design one complying to the spirit of the language, to write drafts, to discuss them, to improve what can be improved and do it again to reach an implementation which complies to the language objectives and spirit without sacrificing to performance.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  I like generics because it's practical
&lt;/h2&gt;

&lt;p&gt;Go being a pragmatic language, you can already test this generic implementation on &lt;a href="https://go2goplay.golang.org/" rel="noopener noreferrer"&gt;go2go  playground&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;But as I tend to be optimistic and enthusiastic, maybe I got carried away, so let me ask you: And you, What do you think about this generics implementation?&lt;/p&gt;

</description>
      <category>go</category>
      <category>generics</category>
      <category>community</category>
    </item>
    <item>
      <title>How could you pretend to be Agile if you don't even know Scrum rituals?</title>
      <dc:creator>arhuman</dc:creator>
      <pubDate>Tue, 03 Sep 2019 13:06:47 +0000</pubDate>
      <link>https://dev.to/arhuman/how-could-you-pretend-to-be-agile-if-you-don-t-even-know-scrum-rituals-5bfe</link>
      <guid>https://dev.to/arhuman/how-could-you-pretend-to-be-agile-if-you-don-t-even-know-scrum-rituals-5bfe</guid>
      <description>&lt;p&gt;&lt;small&gt;(Article originally posted on &lt;a href="https://blog.assad.fr/en/post/agile_without_scrum/" rel="noopener noreferrer"&gt;my blog&lt;/a&gt;)&lt;/small&gt;&lt;/p&gt;

&lt;p&gt;That's more or less what I've been asked in a recent (failed) interview.&lt;br&gt;
That was more subtle of course, but after being corrected on Scrum terminology,&lt;br&gt;
failing to recognize the prevalence of the retrospective over the other rituals probably sealed the outcome of the interview.&lt;/p&gt;

&lt;p&gt;I clearly didn't convinced my interviewer. My last Scrum experience was ten years ago. And would probably be considered as "Faux Agile" in actual terminology. So he was probably allowed to assert that I wouldn't be a good Scrum Master. But does that mean that I was not Agile?&lt;/p&gt;

&lt;p&gt;As a pragmatic person, I neither stubbornly rejected his assertion nor did I slavishly waived my belief.&lt;br&gt;
I did some work: I've read books and articles and I've asserted my processes and values.&lt;/p&gt;

&lt;p&gt;Yes, values...&lt;br&gt;
Because to me it allways boils down to values.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Agile Manifesto
&lt;/h2&gt;

&lt;p&gt;To understant why, let's get back in time, in 2001 to be precise.&lt;br&gt;
Because it's in 2001 that the Agile movement was born.&lt;br&gt;
Seventeen Software developers, published what is now known as the "Agile Manifesto".&lt;br&gt;
This 68 words long text is considered to be the basis of the Agile movement.&lt;br&gt;
But most important to me, they also proclaim 4 values that define what we now call Agility:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Individuals and Interactions&lt;/strong&gt; over processes and tools&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Working Software&lt;/strong&gt; over comprehensive documentation&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Customer Collaboration&lt;/strong&gt; over contract negotiation&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Responding to Change&lt;/strong&gt; over following a plan&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;At the same time they also presented 12 principles to enforce and develop those values but that's out of the scope of this article.&lt;/p&gt;

&lt;p&gt;Regarding those values I could definitely consider myself as Agile.&lt;br&gt;
I praise those values, and incidently I also follows several principles. And if you adhere to the Open Source culture you also probably do: The KISS principle, the “release early release often motto” are common illustrations of some of those principles.&lt;/p&gt;

&lt;h2&gt;
  
  
  eXtreme Programming
&lt;/h2&gt;

&lt;p&gt;Going further, I discovered that prior to the Agile Manifesto, other (now considered) Agile methodologies existed, eXtreme Programming is one of those.&lt;/p&gt;

&lt;p&gt;It also have values&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Simplicity&lt;/strong&gt; &lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Communication&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Feedback&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Respect&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Courage&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;It happened that XP is also the first methodology I encountered as an Open Source software developer.&lt;br&gt;
So without surprise, I also integrated those values long ago.&lt;/p&gt;

&lt;p&gt;XP also defined several rules, similar to the Agile Manifesto principles.&lt;br&gt;
Again, many rules will seems familiar to any Open Source software developer:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Integrate Often&lt;/li&gt;
&lt;li&gt;All code must have unit tests.&lt;/li&gt;
&lt;li&gt;All code must pass all unit tests before it  can be released.&lt;/li&gt;
&lt;li&gt;All production code is pair programmed.&lt;/li&gt;
&lt;li&gt;Simplicity&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;And from this rules derived practices: Continuous integration, Test Driven Development, Pair programming...&lt;/p&gt;

&lt;p&gt;Let's recap I check all the values, most of the rules, and several practices (especially as a &lt;a href="http://cpanwiki.grango.org/" rel="noopener noreferrer"&gt;CPANtester&lt;/a&gt;). So am I good, or is there something special about SCRUM that I miss?&lt;/p&gt;

&lt;h2&gt;
  
  
  Scrum
&lt;/h2&gt;

&lt;p&gt;Let's see Scrum Values&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Focus&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Courage&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Openness&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Commitment&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Respect&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;You probably noticed that it has 2 values in common with XP, the 3 remaining 'Focus', 'Openness' and 'Commitment' are related to the Scrum team.&lt;/p&gt;

&lt;p&gt;Maybe we have an hint here.&lt;br&gt;
As a XP developer, I feel I can claim an Agile ability. But in a Scrum Team ?&lt;/p&gt;

&lt;p&gt;Sure some of the Scrum rituals are also XP practice (daily standing meeting) but as a single developer, it was not the practices I used.&lt;/p&gt;

&lt;p&gt;Some people consider that Agility only make sense as a team member.&lt;br&gt;
I can't just dismiss this belief but allow me to find it debatable: XP values does not require any team, and even the Agile Manifesto mention&lt;br&gt;
individuals and interactions but without any precision this could well be related to a developer and its customer.&lt;/p&gt;

&lt;p&gt;IMHO, Agility is all about improvement: team improvement, process improvement, technical improvement and self improvement.&lt;/p&gt;

&lt;h2&gt;
  
  
  Kanban
&lt;/h2&gt;

&lt;p&gt;For completness (Scrum, Kanban, XP being the 3 most used methodologies) here are the Kanban values:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Understanding&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Agreement&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Respect&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Leadership&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Flow&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Customer focus&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Transparency&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Balance&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Collaboration&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;As a perceptive reader you might have spotted the 'Respect' value which is common to the others methodology. &lt;br&gt;
To be honnest, I've never had the feeling that Kanban values were central to the methodology.&lt;br&gt;
In what I've read, the core practices are often highlighted, and most of the time the values wheren’t even listed. &lt;br&gt;
But may be I'm biased, I'm not sure people know XP values more than TDD or pair programming.&lt;/p&gt;

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

&lt;p&gt;Back to the original question, I'm confident saying that I'm Agile even if I'm not an experienced Scrum Master or even practicionner.&lt;br&gt;
First, because Scrum isn't the only Agile methodology out there and besides XP there are also Kanban, RAD, Lean SD, Wild Agile and many others.&lt;br&gt;
Then and above all, because I follow/praise/put in practice values which are at the heart of many Agile methodologies (including Scrum). &lt;/p&gt;

&lt;p&gt;Going further I think that the simple fact of restricting Agility to a process knowledge is an anti-Agile pattern to me (Remember "Individuals and Interactions over processes and tools"?)&lt;/p&gt;

&lt;p&gt;That doesnt mean Rituals/practices are useless, they are a good way to check that you actually enforce the values you pretend to follow.&lt;br&gt;
But they are only meaningfull if you remember and adhere to the associated values:&lt;br&gt;
Attending a daily standing melee, with people you don't respect, staying silent on the encountered issues to hide that you screwed your task because you're just lazy is by no mean 'Agile'.&lt;/p&gt;

&lt;p&gt;On my side, I'm aware that rituals/practices are the best way to enforce/check those values and I will go on improving my knowledge of all rituals/practices and of the associated principle. After all constant improvement is one of the 12 principles of the Agile Manifesto...&lt;/p&gt;

&lt;h3&gt;
  
  
  Credits
&lt;/h3&gt;

&lt;p&gt;I'd like to thanks my peers from Happy Dev for their reviews/advices/insights.&lt;br&gt;
And I'd like to express my gratitude to the interviewer mentioned in the article: he forced me to re-think my Agile stance, convinced me to improve my Scrum knowledge and reminded me that self-improvement is a daily duty.&lt;/p&gt;

&lt;h3&gt;
  
  
  References
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="http://www.extremeprogramming.org" rel="noopener noreferrer"&gt;eXtreme Programming&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://kanbantool.com/kanban-library/why-kanban/introducing-kanban-through-its-values" rel="noopener noreferrer"&gt;Kanban Values&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.scrumalliance.org/learn-about-scrum/scrum-values" rel="noopener noreferrer"&gt;Scrum Values&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://ovid.github.io/wildagile.html" rel="noopener noreferrer"&gt;WildAgile&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>scrum</category>
      <category>values</category>
      <category>agile</category>
    </item>
  </channel>
</rss>
