<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom" ><generator uri="https://jekyllrb.com/" version="3.10.0">Jekyll</generator><link href="/feed.xml" rel="self" type="application/atom+xml" /><link href="/" rel="alternate" type="text/html" /><updated>2026-02-22T15:55:44+00:00</updated><id>/feed.xml</id><title type="html">Arbёr Avdullahu’s website</title><subtitle>In my website you can find a variety of topics ranging from blockchain and go to aws and linux.</subtitle><entry><title type="html">LLM: Why did the LLM choose mod 8 over mod 4</title><link href="/math/2026/02/22/llm-mod-math.html" rel="alternate" type="text/html" title="LLM: Why did the LLM choose mod 8 over mod 4" /><published>2026-02-22T09:00:00+00:00</published><updated>2026-02-22T09:00:00+00:00</updated><id>/math/2026/02/22/llm-mod-math</id><content type="html" xml:base="/math/2026/02/22/llm-mod-math.html"><![CDATA[<p>I was trying this problem from a journal, which doesn’t have online solution. It was interesting that LLM solved the problem using mod 8 instead of mod 4, even though mod 4 is more intuive and works just the same, also doubled down that mod 4 doesn’t work. Here is the link to the chat: https://chatgpt.com/share/e/699b24b6-1eb4-8004-a685-31624decbd9f</p>]]></content><author><name></name></author><category term="math" /><summary type="html"><![CDATA[I was trying this problem from a journal, which doesn’t have online solution. It was interesting that LLM solved the problem using mod 8 instead of mod 4, even though mod 4 is more intuive and works just the same, also doubled down that mod 4 doesn’t work. Here is the link to the chat: https://chatgpt.com/share/e/699b24b6-1eb4-8004-a685-31624decbd9f]]></summary></entry><entry><title type="html">Books I’m reading in 2025</title><link href="/books/2025/09/03/books-2025.html" rel="alternate" type="text/html" title="Books I’m reading in 2025" /><published>2025-09-03T10:14:06+00:00</published><updated>2025-09-03T10:14:06+00:00</updated><id>/books/2025/09/03/books-2025</id><content type="html" xml:base="/books/2025/09/03/books-2025.html"><![CDATA[<ol>
  <li>The Invisible Man by H. G. Wells</li>
  <li>A Hero of Our Time by Mikhail Lermontov</li>
  <li>Gorgias by Plato</li>
  <li>A Philosophy of Software Design by John Ousterhout</li>
  <li>Six Stories by Stefan Zweig</li>
  <li>Short stories by Guy de Maupassant</li>
</ol>]]></content><author><name></name></author><category term="books" /><summary type="html"><![CDATA[The Invisible Man by H. G. Wells A Hero of Our Time by Mikhail Lermontov Gorgias by Plato A Philosophy of Software Design by John Ousterhout Six Stories by Stefan Zweig Short stories by Guy de Maupassant]]></summary></entry><entry><title type="html">The End of CRUD Apps as We Know Them</title><link href="/ai/2025/04/07/crud-end.html" rel="alternate" type="text/html" title="The End of CRUD Apps as We Know Them" /><published>2025-04-07T13:07:36+00:00</published><updated>2025-04-07T13:07:36+00:00</updated><id>/ai/2025/04/07/crud-end</id><content type="html" xml:base="/ai/2025/04/07/crud-end.html"><![CDATA[<p>I still remember being in 10th grade (around 2014), trying to build a landing page for a furniture store owned by someone I knew. Writing a simple HTML page with a bit of CSS and JavaScript was manageable—but creating something that looked professional? That was much harder.</p>

<p>Then I discovered website builders like Wix. They let you pick from ready-made templates and just swap out titles, photos, and descriptions. Publishing was a breeze. At the time, web design agencies still had plenty of business, but tools like Wix marked a shift: for many small business owners, it became easier to build their own site or hire a freelance designer, rather than working with a full dev team that might not even deliver something to their taste.</p>

<p>Thanks for reading! Subscribe for free to receive new posts and support my work.</p>

<p>Fast forward to today, and the trend has only accelerated. If you’re a local business—say, a small furniture store—all you really need online is your address, opening hours, maybe some sample photos. You can do that with a website builder, a no-code tool, or even just an Instagram page. For many, Instagram is the business’s digital storefront. And honestly, that’s a pretty solid approach.</p>

<p>But what about more complex functionality? Imagine a shop that wants to manage its inventory: different types of furniture, prices, specs, invoices, and analytics. Traditionally, this would require a backend with a database and a web server to handle CRUD operations (Create, Read, Update, Delete). You might hire a developer to build it from scratch or use a CMS like WordPress or PocketBase—tools that come preloaded with much of what you need.</p>

<p>But here’s the thing: even that might become obsolete.</p>

<p>With the rise of AI-driven tools and models, we’re entering a world where you might not need to write a single line of backend code or even set up a CMS. Instead, imagine telling an AI: “I want to keep a list of all the tables in my store, along with prices and quantities,” and having it generate a full application, including the database, the logic, and the interface, in seconds.</p>

<p>AI models can already understand user intent well enough to generate dynamic queries. So instead of building APIs with narrowly defined endpoints (which still require lots of work to get right), you can expose the database—securely—and let users ask exactly what they want. Privacy and access control can be enforced at the AI layer. As these primitives mature, they’ll make managing a business vastly simpler.</p>

<p>In this AI-first future, the barrier to building internal tools or customer-facing apps will collapse. The cost of development will drop dramatically, and the role of engineers will shift from building CRUD apps to designing smarter systems that orchestrate and safeguard AI.</p>

<p>We’re not just automating code—we’re automating decisions about code.</p>

<p>Thanks for reading! Subscribe for free to receive new posts and support my work.</p>]]></content><author><name></name></author><category term="ai" /><summary type="html"><![CDATA[I still remember being in 10th grade (around 2014), trying to build a landing page for a furniture store owned by someone I knew. Writing a simple HTML page with a bit of CSS and JavaScript was manageable—but creating something that looked professional? That was much harder.]]></summary></entry><entry><title type="html">Books I’m reading in 2024</title><link href="/books/2024/01/10/books-2024.html" rel="alternate" type="text/html" title="Books I’m reading in 2024" /><published>2024-01-10T10:24:16+00:00</published><updated>2024-01-10T10:24:16+00:00</updated><id>/books/2024/01/10/books-2024</id><content type="html" xml:base="/books/2024/01/10/books-2024.html"><![CDATA[<ol>
  <li>Daisy Miller and The Turn of the Screw by Henry James</li>
</ol>]]></content><author><name></name></author><category term="books" /><summary type="html"><![CDATA[Daisy Miller and The Turn of the Screw by Henry James]]></summary></entry><entry><title type="html">Books I’m reading in 2021</title><link href="/books/2021/03/10/books-2021.html" rel="alternate" type="text/html" title="Books I’m reading in 2021" /><published>2021-03-10T08:27:16+00:00</published><updated>2021-03-10T08:27:16+00:00</updated><id>/books/2021/03/10/books-2021</id><content type="html" xml:base="/books/2021/03/10/books-2021.html"><![CDATA[<ol>
  <li>Resurrection by Leo Tolstoy</li>
  <li>The Death of Ivan Ilyich and Other Stories by Leo Tolstoy</li>
  <li>Flow: The Psychology of Optimal Experience by Mihaly Csikszentmihalyi</li>
  <li>Fullstack React: The Complete Guide to ReactJS and Friends by Anthony Accomazzo, Nate Murray, Ari Lerner</li>
  <li>The death of civil servant by Anton Chekhov</li>
  <li>Of Mice And Men by John Steinbeck</li>
  <li>The Appeal by John Grisham</li>
  <li>Mumu by Ivan Turgenev</li>
  <li>Novels for a year by Luigi Pirandello</li>
  <li>Stoner by John Williams</li>
  <li>Siddhartha by Hermann Hesse</li>
  <li>The story of a nobody by Anton Chekhov</li>
  <li>The Last Day of a Condemned Man by Victor Hugo</li>
</ol>]]></content><author><name></name></author><category term="books" /><summary type="html"><![CDATA[Resurrection by Leo Tolstoy The Death of Ivan Ilyich and Other Stories by Leo Tolstoy Flow: The Psychology of Optimal Experience by Mihaly Csikszentmihalyi Fullstack React: The Complete Guide to ReactJS and Friends by Anthony Accomazzo, Nate Murray, Ari Lerner The death of civil servant by Anton Chekhov Of Mice And Men by John Steinbeck The Appeal by John Grisham Mumu by Ivan Turgenev Novels for a year by Luigi Pirandello Stoner by John Williams Siddhartha by Hermann Hesse The story of a nobody by Anton Chekhov The Last Day of a Condemned Man by Victor Hugo]]></summary></entry><entry><title type="html">Handling Signals in Go</title><link href="/go/2020/06/02/signals-go.html" rel="alternate" type="text/html" title="Handling Signals in Go" /><published>2020-06-02T21:15:16+00:00</published><updated>2020-06-02T21:15:16+00:00</updated><id>/go/2020/06/02/signals-go</id><content type="html" xml:base="/go/2020/06/02/signals-go.html"><![CDATA[<p>Being able to manage the signals in Go may improve the quality of programs by reducing unexpected behaviors. For example, when users hit ^C on the CLI app, the opened services such as HTTP server and database are not gracefully shutdown. This, in turn, leads to inaccurately handled server requests and memory leakage. The purpose of this article is to present a method that programmers can follow to manage signals.</p>

<p>Usually, communication between the application and kernel is done through system calls. However, Go employs channels that have different functions, one of which includes communicating signals to the application. Therefore, we will use channels to manage signals in Go.</p>

<p>Everything we need is in the built-in signal package. First off, we must redirect the signals to us via channels:</p>
<div class="language-go highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="n">signalChannel</span> <span class="o">:=</span> <span class="nb">make</span><span class="p">(</span><span class="k">chan</span> <span class="n">os</span><span class="o">.</span><span class="n">Signal</span><span class="p">,</span> <span class="m">1</span><span class="p">)</span>
<span class="n">signal</span><span class="o">.</span><span class="n">Notify</span><span class="p">(</span><span class="n">signalChannel</span><span class="p">,</span> <span class="n">os</span><span class="o">.</span><span class="n">Interrupt</span><span class="p">,</span> <span class="n">syscall</span><span class="o">.</span><span class="n">SIGINT</span><span class="p">,</span> <span class="n">syscall</span><span class="o">.</span><span class="n">SIGTERM</span><span class="p">)</span>
</code></pre></div></div>
<p>The first line presented above creates a channel of os.Signal’s. Next, by calling the function Notify from package signal we redirect the os.Interrupt, SIGINT and SIGTERM to our channel. In order for the application to listen to the signal, simply wait for the channel to receive one:</p>
<div class="language-go highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="n">sgn</span> <span class="o">:=</span> <span class="o">&lt;-</span><span class="n">signalChannel</span>
<span class="n">log</span><span class="o">.</span><span class="n">Printf</span><span class="p">(</span><span class="s">"Handling %s ...</span><span class="se">\n</span><span class="s">"</span><span class="p">,</span> <span class="n">sgn</span><span class="p">)</span>
<span class="c">// Handle your service</span>
</code></pre></div></div>
<p>The full example:</p>
<div class="language-go highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="k">package</span> <span class="n">main</span>

<span class="k">import</span> <span class="p">(</span>
    <span class="s">"log"</span>
    <span class="s">"os"</span>
    <span class="s">"os/signal"</span>
    <span class="s">"syscall"</span>
<span class="p">)</span>

<span class="k">func</span> <span class="n">main</span><span class="p">()</span> <span class="p">{</span>
    <span class="n">signalChannel</span> <span class="o">:=</span> <span class="nb">make</span><span class="p">(</span><span class="k">chan</span> <span class="n">os</span><span class="o">.</span><span class="n">Signal</span><span class="p">,</span> <span class="m">1</span><span class="p">)</span>
    <span class="n">signal</span><span class="o">.</span><span class="n">Notify</span><span class="p">(</span><span class="n">signalChannel</span><span class="p">,</span> <span class="n">os</span><span class="o">.</span><span class="n">Interrupt</span><span class="p">,</span> <span class="n">syscall</span><span class="o">.</span><span class="n">SIGINT</span><span class="p">,</span> <span class="n">syscall</span><span class="o">.</span><span class="n">SIGTERM</span><span class="p">)</span>
 
    <span class="n">sgn</span> <span class="o">:=</span> <span class="o">&lt;-</span><span class="n">signalChannel</span>
    <span class="n">log</span><span class="o">.</span><span class="n">Printf</span><span class="p">(</span><span class="s">"Handling %s ...</span><span class="se">\n</span><span class="s">"</span><span class="p">,</span> <span class="n">sgn</span><span class="p">)</span>
    <span class="c">// Handle your service</span>
<span class="p">}</span>
</code></pre></div></div>
<p>Run the program and then hit CTRL+C to terminate it and see the result.</p>

<p>If for your reasoning you want to hand over again the handling to the system you can simply call the Stop function and pass the channel as an argument.</p>]]></content><author><name></name></author><category term="go" /><summary type="html"><![CDATA[Being able to manage the signals in Go may improve the quality of programs by reducing unexpected behaviors. For example, when users hit ^C on the CLI app, the opened services such as HTTP server and database are not gracefully shutdown. This, in turn, leads to inaccurately handled server requests and memory leakage. The purpose of this article is to present a method that programmers can follow to manage signals.]]></summary></entry><entry><title type="html">Cosets and Hall’s marriage theorem</title><link href="/math/2020/03/02/cosets-hall.html" rel="alternate" type="text/html" title="Cosets and Hall’s marriage theorem" /><published>2020-03-02T22:29:54+00:00</published><updated>2020-03-02T22:29:54+00:00</updated><id>/math/2020/03/02/cosets-hall</id><content type="html" xml:base="/math/2020/03/02/cosets-hall.html"><![CDATA[<p>Recently I had homework in Algebra class which I was fond of. I’m sure that there is a pure Algebraic solution to this problem, but I am going to present the solution using a famous theorem in graph theory, <a href="https://en.wikipedia.org/wiki/Hall%27s_marriage_theorem#Graph_theoretic_formulation">Hall’s marriage theorem</a>.
Without prolonging it, lets get to the definitons(if you familiar skip to the problem):</p>

<p><strong>Group</strong>: In mathematics, a group is a set equipped with a binary operation that combines any two elements to form a third element in such a way that four conditions called group axioms are satisfied, namely closure, associativity, identity and invertibility.</p>

<p><strong>Subgroup:</strong> a subset H of G is called a subgroup of G if H also forms a group under the same operation.</p>

<p><strong>(Left)Coset(Right):</strong> given an element g of a group G and a subgroup H of G, gH = { gh : h an element of H } is the left coset of H in G with respect to g, and Hg = { hg : h an element of H } is the right coset of H in G with respect to g.</p>

<p><strong>Transversal:</strong> given a subgroup H of a group G, a right (respectively left) transversal is a set containing exactly one element from each right (respectively left) coset of H.</p>

<p><strong>Problem:</strong> Let G be a finite group and let H&lt;G(H is a subgroup of G). Show that there is a subset T of G which is simultaneously a left transversal for H and a right transversal for H.</p>

<p><strong>Solution</strong> Let L be the set of left cosets of H and R set of right cosets of H, both of size |H|. Now define the bipartite graph with vertex set L+R with two vertices being adjacent if and only if sets have some element in common.</p>

<p>Suppose there is subset S of L such that |N(S)| &lt; |S| (we are supposing that Hall’s assumption does not hold). Because all element of N(S) and S are different (intersection of cosets are either the whole set or empty) then |union N(S)| = |H| |N(S)| and |union S| = |H| |S| this implies that |union N(S)| &lt; |union S| but this is not true because each element of union S is covered by some coset in N(S) so |S| &lt;= |N(S)| for each S subset of L.</p>

<p>Now from Hall’s Marriage Theorem, there is a perfect matching. So we form the set T in this way:
Add exactly one element from the intersection of cosets in each edge of the matching. And the result follows.</p>]]></content><author><name></name></author><category term="math" /><summary type="html"><![CDATA[Recently I had homework in Algebra class which I was fond of. I’m sure that there is a pure Algebraic solution to this problem, but I am going to present the solution using a famous theorem in graph theory, Hall’s marriage theorem. Without prolonging it, lets get to the definitons(if you familiar skip to the problem):]]></summary></entry><entry><title type="html">BDD and Cucumber</title><link href="/bdd,/cucumber,/agile/2019/12/14/bdd-cucumber.html" rel="alternate" type="text/html" title="BDD and Cucumber" /><published>2019-12-14T21:52:01+00:00</published><updated>2019-12-14T21:52:01+00:00</updated><id>/bdd,/cucumber,/agile/2019/12/14/bdd-cucumber</id><content type="html" xml:base="/bdd,/cucumber,/agile/2019/12/14/bdd-cucumber.html"><![CDATA[<p>I firstly encounter Behaviour-Driven Development (BDD) at my first job, I was assigned to add features and write the corresponding tests. At the time I didn’t even know about the Test-Driven Development (TDD) and couldn’t get the idea why are we using it. The application was a RESTful API written in Go, jumped to <a href="https://github.com/DATA-DOG/godog">Godog repository</a>, installed it and with the help of my coworkers started using it. Now, at my current job, we have to develop an application and we decided to follow the BDD, so before doing anything it I said its better if we try to learn more about it. I thought that I knew a lot about BDD, but it turns out there is much more to learn. So in this post, I will show some takeaways, tips, etc.</p>
<h4 id="what-is-bdd">What is BDD?</h4>
<p>Behaviour-Driven Development (BDD) is Agile software development, in which the participants are developers, testers, and clients(stakeholders). The main goals of BDD are to establish an easy way to communicate the idea to others and avoiding miscommunication between clients and the app developers, to do so everyone writes different stories on how should the app react in different scenarios and this would define what needs to be done for the client to find the application acceptable.</p>

<h4 id="cucumber">Cucumber</h4>
<p>Cucumber is a software tool that supports BDD. It helps facilitate the discovery and use of a ubiquitous language within the team, by giving the two sides of the linguistic divide a place where they can meet. Working together to write tests not only creates a path for what should be implemented next but also describes the behavior of the application which can seem like living documentation.</p>

<h4 id="lets-build-a-calculator">Let’s build a calculator</h4>
<p>Our client wants to build a calculator, and the first thing that comes to mind is the addition. The language in which we write BDD scenarios is called Gherkin. This is not a post about how to write Gherkin and in a way, this shouldn’t, everyone should be able to read and write tests easily, it is good especially for the developer side because they are speaking client language. Consider the following:</p>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>Scenario: Add two numbers
Given the input "2+2"
When the calculator is run 
Then the output should be "4"
</code></pre></div></div>
<p>It is clear what the calculator app is supposed to do. That is what the work of clients, testers, and developers should produce.
With the help of cucumber, the testers should write the test to check if each step(line in the scenario), and after that, the developer should write the minimal code that passes this test. The developer here can do as little as just for any input, output 4 and the test is going to pass. That’s why everyone should think of edge cases of how should the app behave in different cases.</p>

<h4 id="when-cucumbers-go-bad">When Cucumbers go bad</h4>
<p>Cucumber should be all about better workflow, cleaner code, good communication, etc. But it can be when Cucumber can go bad. Some of the most common problems are flickering scenarios, slow features, bored stakeholders. Flickering scenarios can be caught when your test fail randomly. I remember when using Cucumber in the beginning and re-running godog command would pass after failing, it was so hard to debug it. Usually, those flickering scenario happens race conditions, environment, etc. Slow features happen when testing some scenario takes minutes and it’s just frustrating to test, I had once some testing which took 10 minutes and it was a good reason for me to skip the test, which is definitely when cucumbers go bad. Bored Stakeholders is when the stakeholders(clients) don’t collaborate anymore in the reading or writing features, but then there is no much point in using it.</p>

<h4 id="tips">Tips</h4>
<ul>
  <li>Scenarios should be independent from each other.</li>
  <li>When dealing with asynchronous systems listen for events broadcast by the system or repeatedly poll the system. But don’t just sleep.</li>
  <li>If you use a database, then you have to make sure each scenario starts with a clean slate.</li>
  <li>When testing a REST web service with Cucumber, it’s generally preferable to run Cucumber in the same process as your application.</li>
  <li>In legacy application, use characterization tests to help you understand what the system is already doing and to give you some security before you make a change.</li>
</ul>]]></content><author><name></name></author><category term="bdd," /><category term="cucumber," /><category term="agile" /><summary type="html"><![CDATA[I firstly encounter Behaviour-Driven Development (BDD) at my first job, I was assigned to add features and write the corresponding tests. At the time I didn’t even know about the Test-Driven Development (TDD) and couldn’t get the idea why are we using it. The application was a RESTful API written in Go, jumped to Godog repository, installed it and with the help of my coworkers started using it. Now, at my current job, we have to develop an application and we decided to follow the BDD, so before doing anything it I said its better if we try to learn more about it. I thought that I knew a lot about BDD, but it turns out there is much more to learn. So in this post, I will show some takeaways, tips, etc. What is BDD? Behaviour-Driven Development (BDD) is Agile software development, in which the participants are developers, testers, and clients(stakeholders). The main goals of BDD are to establish an easy way to communicate the idea to others and avoiding miscommunication between clients and the app developers, to do so everyone writes different stories on how should the app react in different scenarios and this would define what needs to be done for the client to find the application acceptable.]]></summary></entry><entry><title type="html">AWS nuke</title><link href="/aws/2019/11/24/aws-nuke.html" rel="alternate" type="text/html" title="AWS nuke" /><published>2019-11-24T11:27:16+00:00</published><updated>2019-11-24T11:27:16+00:00</updated><id>/aws/2019/11/24/aws-nuke</id><content type="html" xml:base="/aws/2019/11/24/aws-nuke.html"><![CDATA[<p>The other day I got an email from AWS, saying automatic renewal of <em>some domain</em> succeeded. But I was using that domain for testing purpose and totally forgot to delete it. Well logged in my account and saw all the resources I’m using(shared account), you can do this by using <a href="https://console.aws.amazon.com/resource-groups/tag-editor/find-resources">Tag Editor</a>, there were more than 400+ resources and the bill was going 100$+ monthly, the account needed a refresh in other word become zero(I did not want to close and open new account). Started immediately to delete them, tried to delete DHCP instance but it was use by other resources so I had to delete them first. Changing between regions it was pain in the ass, after deleting two or three resources I said I’m not doing this. Tried and googled if there was someway in AWS to delete those (they have some feature for everything), but obviously there was not. Fortunately, I run to this awesome Github repository named <a href="https://github.com/rebuy-de/aws-nuke">aws-nuke</a>. It is written in Go, so installation was easy for me, configured the necessaries, run the tool and it every resource other than those default were gone! If you will use this tool, I advice to be very careful as you may remove resources that you do not want to remove! Now I can start fresh…</p>]]></content><author><name></name></author><category term="aws" /><summary type="html"><![CDATA[The other day I got an email from AWS, saying automatic renewal of some domain succeeded. But I was using that domain for testing purpose and totally forgot to delete it. Well logged in my account and saw all the resources I’m using(shared account), you can do this by using Tag Editor, there were more than 400+ resources and the bill was going 100$+ monthly, the account needed a refresh in other word become zero(I did not want to close and open new account). Started immediately to delete them, tried to delete DHCP instance but it was use by other resources so I had to delete them first. Changing between regions it was pain in the ass, after deleting two or three resources I said I’m not doing this. Tried and googled if there was someway in AWS to delete those (they have some feature for everything), but obviously there was not. Fortunately, I run to this awesome Github repository named aws-nuke. It is written in Go, so installation was easy for me, configured the necessaries, run the tool and it every resource other than those default were gone! If you will use this tool, I advice to be very careful as you may remove resources that you do not want to remove! Now I can start fresh…]]></summary></entry><entry><title type="html">Linux: permission denied</title><link href="/linux/2019/11/10/linux-permision.html" rel="alternate" type="text/html" title="Linux: permission denied" /><published>2019-11-10T18:27:16+00:00</published><updated>2019-11-10T18:27:16+00:00</updated><id>/linux/2019/11/10/linux-permision</id><content type="html" xml:base="/linux/2019/11/10/linux-permision.html"><![CDATA[<p>If you run the command less /etc/shadow you’ll get /etc/shadow: Permission denied so you have to run it with sudo command, but if you assign a alias like this alias please=’sudo $(history -p !!)’ and just run please after you get permission denied that it should work :)</p>]]></content><author><name></name></author><category term="linux" /><summary type="html"><![CDATA[If you run the command less /etc/shadow you’ll get /etc/shadow: Permission denied so you have to run it with sudo command, but if you assign a alias like this alias please=’sudo $(history -p !!)’ and just run please after you get permission denied that it should work :)]]></summary></entry></feed>