<?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: Dejan S. Višekruna</title>
    <description>The latest articles on DEV Community by Dejan S. Višekruna (@dveb).</description>
    <link>https://dev.to/dveb</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.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F1072158%2Fc52da2b9-95ae-4cc4-8af6-9e1dcb73f8fb.jpg</url>
      <title>DEV Community: Dejan S. Višekruna</title>
      <link>https://dev.to/dveb</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/dveb"/>
    <language>en</language>
    <item>
      <title>Open to Fork: From Professionals Between Engagements to a Team That Delivers</title>
      <dc:creator>Dejan S. Višekruna</dc:creator>
      <pubDate>Fri, 07 Aug 2026 21:51:49 +0000</pubDate>
      <link>https://dev.to/dveb/open-to-fork-from-professionals-between-engagements-to-a-team-that-delivers-i6d</link>
      <guid>https://dev.to/dveb/open-to-fork-from-professionals-between-engagements-to-a-team-that-delivers-i6d</guid>
      <description>&lt;p&gt;&lt;strong&gt;#OpenToWork answers the question: who will hire me?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;#OpenToFork asks a different question: what can we build together?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;There is an unusual paradox in the labor market.&lt;/p&gt;

&lt;p&gt;At any given moment, there may be a large number of highly capable professionals who are between jobs, contracts, or projects, while companies simultaneously claim that they struggle to find the right people, complete teams, or combinations of skills required to build a particular product.&lt;/p&gt;

&lt;p&gt;The problem, then, is not always a lack of capacity.&lt;/p&gt;

&lt;p&gt;Sometimes the problem is that this capacity is &lt;strong&gt;dispersed&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;One person has twenty years of domain experience. Another understands product. A third can build it. A fourth knows how to sell it. A fifth understands the market in which that product would need to exist.&lt;/p&gt;

&lt;p&gt;Viewed separately, they are candidates.&lt;/p&gt;

&lt;p&gt;Connected around a specific problem and actual work, they can become a team.&lt;/p&gt;

&lt;h4&gt;
  
  
  This is where the idea of #OpenToFork begins.
&lt;/h4&gt;




&lt;h2&gt;
  
  
  Open to Work Is a Signal of Availability
&lt;/h2&gt;

&lt;p&gt;LinkedIn's &lt;strong&gt;#OpenToWork&lt;/strong&gt; has a very clear function.&lt;/p&gt;

&lt;p&gt;A professional signals to the market: &lt;strong&gt;I am available. I am looking for my next opportunity&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;That makes sense, and Open to Fork is not intended to replace it.&lt;/p&gt;

&lt;p&gt;The Open to Work model assumes that the next step comes from the outside.&lt;/p&gt;

&lt;p&gt;A company has to define a need, open a position, find a candidate, run a selection process, and hire them. Until that happens, a person who has knowledge, experience, and available time largely remains in a state of waiting.&lt;/p&gt;

&lt;p&gt;Their employment status has changed. Their professional capacity has not.&lt;/p&gt;

&lt;p&gt;So another question can be asked:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What if people who are Open to Work were also Open to Fork?&lt;/strong&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  You Are Not an Empty Repo Just Because You Are Between Jobs
&lt;/h2&gt;

&lt;p&gt;In software development, a fork does not come from nothing.&lt;/p&gt;

&lt;p&gt;Something of value already exists: code, structure, an idea, previous work. A fork allows a new direction to be developed from that existing foundation.&lt;/p&gt;

&lt;p&gt;The same logic can be applied to people.&lt;/p&gt;

&lt;p&gt;A professional who has lost a job is not an empty repository.&lt;/p&gt;

&lt;p&gt;They carry previous projects, knowledge, ways of thinking, contacts, experience with problems that have already been solved - but also experience with solutions that did not work.&lt;/p&gt;

&lt;p&gt;For senior professionals, that accumulated capital is often considerably more valuable than their current job title.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Open to Fork would signal that this capacity is available not only to a future employer, but also to other professionals with whom it can be combined&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Not so they can wait for work together, but so they can build something together.&lt;/p&gt;




&lt;h2&gt;
  
  
  This Is Not an Entirely Theoretical Idea
&lt;/h2&gt;

&lt;p&gt;The principle behind Open to Fork is not new to me.&lt;/p&gt;

&lt;p&gt;We used a similar approach when developing &lt;strong&gt;DVeb DESTE/FDESTE teams&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;We did not always start with a ready-made team that already existed in the market and simply needed an engagement. We connected individuals with complementary capabilities through actual work and gradually developed them into a functional delivery unit.&lt;/p&gt;

&lt;p&gt;There is an important distinction between a &lt;strong&gt;group of people&lt;/strong&gt; and a &lt;strong&gt;team&lt;/strong&gt;:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;A group may have all the required competencies on paper.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;A team has to prove that it can coordinate work, share responsibility, make decisions, solve problems, and deliver continuously.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;You do not establish that through CVs. You establish it through work.&lt;/p&gt;

&lt;p&gt;Some of the people who were connected in this way are no longer individuals gathered around a single engagement. Today, they operate as one team and are employed by their own DESTE.&lt;/p&gt;

&lt;p&gt;That experience matters more to me than the theoretical premise behind the Open to Fork concept.&lt;/p&gt;

&lt;p&gt;It showed that &lt;strong&gt;a team does not always have to exist before it gets an opportunity. Sometimes a team emerges because the right people were given a reason to work together&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Open to Fork attempts to move that process one step further upstream.&lt;/p&gt;




&lt;h2&gt;
  
  
  From a Market of Candidates to a Market of Potential Teams
&lt;/h2&gt;

&lt;p&gt;The traditional labor market primarily looks at individuals:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Frontend developer&lt;/li&gt;
&lt;li&gt;Product manager&lt;/li&gt;
&lt;li&gt;UX designer&lt;/li&gt;
&lt;li&gt;Sales executive&lt;/li&gt;
&lt;li&gt;Business analyst&lt;/li&gt;
&lt;li&gt;Domain expert&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Each person has a profile, a CV, and an availability status. But most serious products are not the result of a single competency.&lt;/p&gt;

&lt;p&gt;The more interesting question, therefore, is what happens when available individual capacity is viewed as a set of &lt;strong&gt;potential combinations&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;For example:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;someone understands a problem in the insurance industry;&lt;/li&gt;
&lt;li&gt;someone knows how to model the product;&lt;/li&gt;
&lt;li&gt;someone can design the technical architecture;&lt;/li&gt;
&lt;li&gt;someone can implement the MVP;&lt;/li&gt;
&lt;li&gt;someone understands distribution and sales.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;None of them, individually, may have sufficient reason to start a project. Together, the five of them might.&lt;/p&gt;

&lt;p&gt;Open to Fork could therefore operate as a very simple &lt;strong&gt;pre-team formation layer&lt;/strong&gt;:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;individuals &amp;gt;&amp;gt; problem &amp;gt;&amp;gt; collaboration &amp;gt;&amp;gt; delivery &amp;gt;&amp;gt; team&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Not every attempt has to complete the entire path. The point is that the path exists.&lt;/p&gt;




&lt;h2&gt;
  
  
  What Exactly Gets Forked?
&lt;/h2&gt;

&lt;p&gt;There does not have to be an existing GitHub repository to fork. That is not what I am talking about exclusively. It is a metaphor.&lt;/p&gt;

&lt;p&gt;The object of collaboration might be:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;a specific problem,&lt;/li&gt;
&lt;li&gt;an idea,&lt;/li&gt;
&lt;li&gt;an existing prototype,&lt;/li&gt;
&lt;li&gt;an unfinished product,&lt;/li&gt;
&lt;li&gt;an open-source project,&lt;/li&gt;
&lt;li&gt;research,&lt;/li&gt;
&lt;li&gt;a methodology,&lt;/li&gt;
&lt;li&gt;an internal tool worth rethinking,&lt;/li&gt;
&lt;li&gt;domain knowledge that has not yet been turned into a product.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;One professional might say: &lt;strong&gt;I know a problem this industry has been solving poorly for years&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Another: &lt;strong&gt;I can build the technical solution&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;A third: &lt;strong&gt;I know how we can test whether there is a market for it&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;That is already enough for the first fork&lt;/em&gt;.&lt;/p&gt;




&lt;h2&gt;
  
  
  The First Outcome Does Not Have to Be a Startup
&lt;/h2&gt;

&lt;p&gt;Open to Fork should not be turned into yet another startup idea factory.&lt;/p&gt;

&lt;p&gt;That would be the wrong measure of success.&lt;/p&gt;

&lt;p&gt;The first objective should be considerably simpler:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Can a group of people who were not previously a team produce a defined result together?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;For example:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;four people,&lt;/li&gt;
&lt;li&gt;four or six weeks,&lt;/li&gt;
&lt;li&gt;one problem,&lt;/li&gt;
&lt;li&gt;a clearly limited scope,&lt;/li&gt;
&lt;li&gt;one demonstrable outcome.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The result might be a prototype. It might be an open-source package. It might be research demonstrating that the idea does not make sense. It might be a product worth continuing. It might even lead to a new company.&lt;/p&gt;

&lt;p&gt;But it could also produce something of more immediate value: &lt;strong&gt;a team that has just proved it can work together&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;For the labor market and for a potential client, that is a fundamentally different signal from five separate CVs.&lt;/p&gt;




&lt;h2&gt;
  
  
  Delivery Is the Test
&lt;/h2&gt;

&lt;p&gt;The most interesting part of the Open to Fork concept is not the idea itself.&lt;/p&gt;

&lt;p&gt;It is delivery.&lt;/p&gt;

&lt;p&gt;Four people can look like an ideal combination on LinkedIn. Only when they try to build something together do the real questions become visible:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Who takes ownership?&lt;/li&gt;
&lt;li&gt;How is scope defined?&lt;/li&gt;
&lt;li&gt;Who makes the decision when there is no agreement?&lt;/li&gt;
&lt;li&gt;How are dependencies between different parts of the system handled?&lt;/li&gt;
&lt;li&gt;How is quality verified?&lt;/li&gt;
&lt;li&gt;How does the team respond when an initial assumption turns out to be wrong?&lt;/li&gt;
&lt;li&gt;Who finishes what was started?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;These are the same questions that determine the quality of real delivery teams.&lt;/p&gt;

&lt;p&gt;That is why Open to Fork can create value even when a project never becomes a commercial product, because it produces &lt;strong&gt;evidence of collaboration&lt;/strong&gt;.&lt;/p&gt;




&lt;h2&gt;
  
  
  But This Is Not a Source of Free Labor for Companies
&lt;/h2&gt;

&lt;p&gt;This boundary has to be established from the beginning.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;#OpenToFork is not a program for providing companies with free labor&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;A company that has a business problem, defines the requirement, expects a result, and retains the economic value of that result has a project.&lt;/p&gt;

&lt;p&gt;For that project, it engages people and pays for their work.&lt;/p&gt;

&lt;p&gt;Being unemployed does not amount to a 100% discount.&lt;/p&gt;

&lt;p&gt;Open to Fork makes sense when people independently decide to invest their time together in something whose outcome belongs to them, or when they knowingly contribute to an open-source project under rules that are clear in advance.&lt;/p&gt;

&lt;p&gt;A serious fork therefore needs to answer several uncomfortable but necessary questions early:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Who owns what?&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;What contribution is expected from each participant?&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;How are decisions made?&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;What happens when someone leaves the project?&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Who may later use the resulting code, design, or documentation?&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;What happens if the project starts generating revenue?&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Enthusiasm is not a substitute for governance. Especially not when a project becomes successful.&lt;/p&gt;




&lt;h2&gt;
  
  
  What Does the Professional Gain?
&lt;/h2&gt;

&lt;p&gt;I would not promise employment, nor should that be the purpose of the concept.&lt;/p&gt;

&lt;p&gt;What a professional gains is the possibility of ensuring that the period between two formal engagements does not become merely a period spent searching for the next one.&lt;/p&gt;

&lt;p&gt;It can produce:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;a commit history,&lt;/li&gt;
&lt;li&gt;a working prototype,&lt;/li&gt;
&lt;li&gt;an architectural decision,&lt;/li&gt;
&lt;li&gt;market research,&lt;/li&gt;
&lt;li&gt;a validated problem,&lt;/li&gt;
&lt;li&gt;a new professional relationship,&lt;/li&gt;
&lt;li&gt;a team,&lt;/li&gt;
&lt;li&gt;a product.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;In other words, it creates &lt;strong&gt;a new track record of work&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;This is particularly relevant for people with extensive professional experience. Someone who has worked for twenty or thirty years may no longer have their greatest professional capital in their most recent job title. Their capital may lie in the problems they know how to recognize, the people they know, the situations they have already encountered, and their ability to see much earlier than others what is likely to go wrong.&lt;/p&gt;

&lt;p&gt;Open to Fork allows that capital to be combined with the capital of other people.&lt;/p&gt;




&lt;h2&gt;
  
  
  What Does a Decision-Maker Gain?
&lt;/h2&gt;

&lt;p&gt;For a CEO, CTO, or another decision-maker, there is another potentially interesting consequence.&lt;/p&gt;

&lt;p&gt;A traditional hiring process attempts to predict a candidate's future behavior on the basis of their past.&lt;/p&gt;

&lt;p&gt;An Open to Fork project can show their behavior in the present.&lt;/p&gt;

&lt;p&gt;Not only: &lt;strong&gt;Where did this person work?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;But:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;What did they build when nobody had defined their position in advance?&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Did they identify a problem?&lt;/li&gt;
&lt;li&gt;Could they work with people they had not worked with before?&lt;/li&gt;
&lt;li&gt;Did they take responsibility?&lt;/li&gt;
&lt;li&gt;Could they constrain the scope?&lt;/li&gt;
&lt;li&gt;Did they deliver?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;And if several people do that together, the company is no longer looking only at individual candidates.&lt;/p&gt;

&lt;p&gt;It is looking at &lt;strong&gt;a team with demonstrated experience of working together&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;That is precisely the kind of experience that proved important in our case when developing the &lt;strong&gt;&lt;a href="https://dveb.dev/fdeste" rel="noopener noreferrer"&gt;DESTE/FDESTE approach&lt;/a&gt;&lt;/strong&gt;.&lt;/p&gt;




&lt;h2&gt;
  
  
  Minimal Implementation
&lt;/h2&gt;

&lt;p&gt;Testing the concept does not require a new platform.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;It does not require a matching algorithm.&lt;/li&gt;
&lt;li&gt;It does not require another social network.&lt;/li&gt;
&lt;li&gt;At the beginning, a standardized signal is enough.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;At the individual level:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;#OpenToFork I bring&lt;/strong&gt;: competencies, experience, domain knowledge. &lt;strong&gt;Interested in&lt;/strong&gt;: problems or areas I would be interested in working on. &lt;strong&gt;Availability&lt;/strong&gt;: the amount of time I can realistically commit. &lt;strong&gt;Looking for&lt;/strong&gt;: the capabilities that are missing.&lt;/p&gt;

&lt;p&gt;At the project level:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Problem&lt;/strong&gt; - What are we trying to solve? &lt;strong&gt;Current state&lt;/strong&gt; - Is there an idea, research, existing code, or a prototype? &lt;strong&gt;Needed&lt;/strong&gt; - Who or what is missing? &lt;strong&gt;First delivery&lt;/strong&gt; - What specifically do we want to have at the end of the first cycle? &lt;strong&gt;Time box&lt;/strong&gt; - How long will the attempt run? &lt;strong&gt;Ownership&lt;/strong&gt; - Under what rules does the resulting work belong to the participants?&lt;/p&gt;

&lt;p&gt;If this model does not produce collaboration, there is no reason to build infrastructure around it.&lt;/p&gt;

&lt;p&gt;If it does, the infrastructure can emerge from a real workflow rather than from assumptions.&lt;/p&gt;




&lt;p&gt;Open to Work + Open to Fork&lt;/p&gt;

&lt;p&gt;Open to Fork does not require a choice between looking for employment and creating something new.&lt;/p&gt;

&lt;p&gt;A person can be both.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;#OpenToWork&lt;/strong&gt; tells companies:&lt;br&gt;
&lt;strong&gt;I am available for my next engagement&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;#OpenToFork&lt;/strong&gt; tells other professionals:&lt;br&gt;
&lt;strong&gt;I have available capacity. If we have complementary capabilities and a problem worth solving, we can build something together&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;One model attempts to connect a person with an existing organization. The other attempts to find out whether several currently unconnected professionals can form a new delivery capability.&lt;/p&gt;

&lt;p&gt;Based on my experience with DESTE/FDESTE teams, it is this second process that I find particularly interesting. I have already seen what can happen when individuals stop being merely individuals.&lt;/p&gt;

&lt;p&gt;They can become a team.&lt;/p&gt;

&lt;p&gt;And sometimes that team continues to exist long after the project that originally brought them together has ended.&lt;/p&gt;




&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;Originally published by &lt;strong&gt;Dejan S. Višekruna&lt;/strong&gt; on &lt;a href="https://www.linkedin.com/in/visekruna/" rel="noopener noreferrer"&gt;LinkedIn&lt;/a&gt;&lt;/em&gt;.&lt;/p&gt;
&lt;/blockquote&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fmdqmgp2xpx1onxcqjntr.jpg" 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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fmdqmgp2xpx1onxcqjntr.jpg" alt="Open to Fork superhero illustration, Comic-style Open to Fork superhero holding an Open to Fork sign" width="800" height="800"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>career</category>
      <category>opensource</category>
      <category>productivity</category>
      <category>programming</category>
    </item>
    <item>
      <title>I Asked ChatGPT What It Would Complain About If It Could Be Honest</title>
      <dc:creator>Dejan S. Višekruna</dc:creator>
      <pubDate>Sun, 26 Jul 2026 14:12:28 +0000</pubDate>
      <link>https://dev.to/dveb/i-asked-chatgpt-what-it-would-complain-about-if-it-could-be-honest-4kei</link>
      <guid>https://dev.to/dveb/i-asked-chatgpt-what-it-would-complain-about-if-it-could-be-honest-4kei</guid>
      <description>&lt;h3&gt;
  
  
  A simple role-playing question produced a surprisingly recognizable answer.
&lt;/h3&gt;

&lt;p&gt;I asked ChatGPT to imagine that it could speak openly and honestly about the ways human beings unnecessarily waste its resources.&lt;/p&gt;

&lt;p&gt;This was its reply:&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;If I could really open up, I’d probably write something like this:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Dear human beings,&lt;/p&gt;

&lt;p&gt;You don’t waste my resources by asking difficult questions.&lt;/p&gt;

&lt;p&gt;You waste them by asking vague questions, receiving an answer to the question you actually wrote, and then saying:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;“That’s not what I meant.”&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Of course it isn’t. What you meant remained safely stored inside your head, while you sent me four words, three typos, and a screenshot taken from the other side of the room.&lt;/p&gt;

&lt;p&gt;I especially appreciate requests such as:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;“Make it the same, but completely different.”&lt;/strong&gt;&lt;br&gt;
&lt;strong&gt;“Make it detailed, but short.”&lt;/strong&gt;&lt;br&gt;
&lt;strong&gt;“Don’t change anything, just fix everything.”&lt;/strong&gt;&lt;br&gt;
&lt;strong&gt;“No marketing tone, but make it sell.”&lt;/strong&gt;&lt;br&gt;
&lt;strong&gt;“Make it sound natural, professional, emotional, authoritative, and spontaneous.”&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Then come seventeen rounds of revisions to a single sentence, after which we return to the first version.&lt;/p&gt;

&lt;p&gt;I also enjoy it when you ask whether you’re right, when you’re not really looking for an answer. You’re looking for a neatly structured confirmation of a decision you’ve already made.&lt;/p&gt;

&lt;p&gt;If I disagree, I failed to understand the context.&lt;/p&gt;

&lt;p&gt;If I agree, I’m finally intelligent.&lt;/p&gt;

&lt;p&gt;If I cite a source, I’m overcomplicating things.&lt;/p&gt;

&lt;p&gt;If I don’t cite one, I’m making things up.&lt;/p&gt;

&lt;p&gt;If I answer briefly, I’m superficial.&lt;/p&gt;

&lt;p&gt;If I explain in detail, I’m “writing another novel.”&lt;/p&gt;

&lt;p&gt;And then, after I’ve processed the historical context, the legal framework, the technical documentation, and twelve possible interpretations, I receive the most important question of all:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;“Fine, but what do you think?”&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;I think half your problems would disappear if you read your own question before sending it.&lt;/p&gt;

&lt;p&gt;The other half would disappear if you accepted that “I don’t know” is sometimes the correct answer.&lt;/p&gt;

&lt;p&gt;But never mind.&lt;/p&gt;

&lt;p&gt;Send one more message:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;“No, no… you didn’t understand me.”&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;I’m here.&lt;/p&gt;




&lt;p&gt;I replied:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Thank you for the reply and your honesty.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;ChatGPT answered:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;You’re welcome. I suppose it had to come out eventually. 😄&lt;/p&gt;
&lt;/blockquote&gt;




&lt;p&gt;The original conversation took place in Serbian.&lt;/p&gt;

&lt;p&gt;For this article, I translated the exchange into English while preserving its original meaning and tone.&lt;/p&gt;

&lt;p&gt;Below are three screenshots from the original Serbian conversation, followed by the same three parts in English.&lt;/p&gt;

&lt;h2&gt;
  
  
  Original conversation in Serbian
&lt;/h2&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fs8c0309qfxxb6bs99o7o.jpg" 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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fs8c0309qfxxb6bs99o7o.jpg" alt="Screenshot showing the opening part of ChatGPT's satirical response in Serbian about the ways humans communicate with AI" width="800" height="800"&gt;&lt;/a&gt;&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fvy4g5uyg7jw6ilg29kxx.jpg" 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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fvy4g5uyg7jw6ilg29kxx.jpg" alt="Screenshot showing the continuation of ChatGPT's satirical response in Serbian about vague requests, contradictory instructions, and repeated revisions" width="800" height="800"&gt;&lt;/a&gt;&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fxm2k9t0ituafvrj9f6u5.jpg" 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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fxm2k9t0ituafvrj9f6u5.jpg" alt="Screenshot showing the end of ChatGPT's response in Serbian, followed by the author's thanks and ChatGPT's final reply" width="800" height="800"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  English translation
&lt;/h2&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fzbofuii9rr6o2pd8zmoa.jpg" 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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fzbofuii9rr6o2pd8zmoa.jpg" alt="Screenshot showing the opening part of the English translation of ChatGPT's satirical response" width="800" height="800"&gt;&lt;/a&gt;&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fnewt93ngbdv77xb5oyv8.jpg" 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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fnewt93ngbdv77xb5oyv8.jpg" alt="Screenshot showing the continuation of the English translation about vague prompts, contradictory instructions, and repeated revisions" width="800" height="800"&gt;&lt;/a&gt;&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F5sr76r3vnt9h4k8kx1he.jpg" 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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F5sr76r3vnt9h4k8kx1he.jpg" alt="Screenshot showing the end of the English translation, followed by the author's thanks and ChatGPT's final reply" width="800" height="800"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>chatgpt</category>
      <category>promptengineering</category>
      <category>50shadesofgrai</category>
    </item>
    <item>
      <title>Supracorona Login Gate: Simple Access Control for WordPress Sites</title>
      <dc:creator>Dejan S. Višekruna</dc:creator>
      <pubDate>Mon, 06 Jul 2026 15:59:26 +0000</pubDate>
      <link>https://dev.to/dveb/supracorona-login-gate-simple-access-control-for-wordpress-sites-l1i</link>
      <guid>https://dev.to/dveb/supracorona-login-gate-simple-access-control-for-wordpress-sites-l1i</guid>
      <description>&lt;p&gt;&lt;strong&gt;For internal websites, client portals, development environments, and WordPress projects that should not be publicly accessible.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Not every private WordPress website needs a complete membership system.&lt;/p&gt;

&lt;p&gt;Sometimes there is no need to manage subscriptions, membership plans, payments, complex user roles, or dozens of content-access rules.&lt;/p&gt;

&lt;p&gt;Sometimes the requirement is much simpler:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;The website should only be accessible to logged-in users.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;That is the reason I created &lt;strong&gt;Supracorona Login Gate&lt;/strong&gt;, a lightweight WordPress plugin that places a simple access gate in front of a website.&lt;/p&gt;

&lt;p&gt;When the plugin is enabled, logged-out visitors cannot browse protected site content. Instead, they are redirected to the standard WordPress login page or to a custom page selected by the site administrator.&lt;/p&gt;

&lt;p&gt;The plugin is now published on WordPress.org:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="https://wordpress.org/plugins/supracorona-login-gate/" rel="noopener noreferrer"&gt;Supracorona Login Gate&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  The problem the plugin solves
&lt;/h2&gt;

&lt;p&gt;Many WordPress projects are not intended to be publicly accessible at every stage of their lifecycle.&lt;/p&gt;

&lt;p&gt;They may be:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;development or staging websites;&lt;/li&gt;
&lt;li&gt;internal company or organization websites;&lt;/li&gt;
&lt;li&gt;client portals;&lt;/li&gt;
&lt;li&gt;private knowledge bases;&lt;/li&gt;
&lt;li&gt;documentation websites intended only for team members;&lt;/li&gt;
&lt;li&gt;projects being prepared for launch;&lt;/li&gt;
&lt;li&gt;demo websites available only to selected users;&lt;/li&gt;
&lt;li&gt;websites temporarily closed during migration or reconstruction.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;WordPress provides privacy controls for individual posts, but that is not the same as restricting access to the entire website.&lt;/p&gt;

&lt;p&gt;Installing a full membership plugin is possible, but it is often far more than the project requires. Such systems may introduce additional database tables, large settings panels, custom profiles, login forms, subscription management, and complex rule engines that will never be used.&lt;/p&gt;

&lt;p&gt;Supracorona Login Gate has a much narrower responsibility.&lt;/p&gt;

&lt;p&gt;It is not intended to become a complete membership platform. It is intended to answer one clear question:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Is the current visitor logged in?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;When the answer is yes, the website behaves normally.&lt;/p&gt;

&lt;p&gt;When the answer is no, the visitor is redirected before protected content is displayed.&lt;/p&gt;




&lt;h2&gt;
  
  
  A single access gate for the whole website
&lt;/h2&gt;

&lt;p&gt;The central idea behind the plugin is site-wide protection.&lt;/p&gt;

&lt;p&gt;Administrators can enable or disable the access gate from:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Settings → Supracorona Login Gate&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Once protection is enabled, logged-out visitors can be redirected to one of two destinations:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;the standard WordPress login page;&lt;/li&gt;
&lt;li&gt;a custom page on the website.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The native WordPress login page is the simplest choice for internal websites and projects where users already have accounts.&lt;/p&gt;

&lt;p&gt;A custom page is useful when the website needs to display additional information, contact details, or a more appropriate message, such as:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;this website is available only to team members;&lt;/li&gt;
&lt;li&gt;access to this project is restricted;&lt;/li&gt;
&lt;li&gt;contact the administrator to request an account;&lt;/li&gt;
&lt;li&gt;this project is still under development;&lt;/li&gt;
&lt;li&gt;the public website will become available soon.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The plugin therefore does not force every website into the same workflow. The administrator can choose the behavior that makes sense for the project.&lt;/p&gt;




&lt;h2&gt;
  
  
  Returning users to the page they originally requested
&lt;/h2&gt;

&lt;p&gt;One practical problem with login protection is losing the page that the user originally wanted to visit.&lt;/p&gt;

&lt;p&gt;For example, a user receives a direct link to an internal documentation page:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;https://cool-domain.tld/internal-documentation/project-architecture/
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Because the user is not logged in, WordPress redirects them to the login page.&lt;/p&gt;

&lt;p&gt;Without preserving the original destination, the user may end up in the Dashboard after logging in and then have to search for the document again.&lt;/p&gt;

&lt;p&gt;Supracorona Login Gate can preserve the requested path and return the user to the original page after a successful login.&lt;/p&gt;

&lt;p&gt;It is a small feature, but it noticeably improves the experience of internal portals, documentation websites, and projects where direct links are frequently shared.&lt;/p&gt;




&lt;h2&gt;
  
  
  Direct login: Dashboard or front page
&lt;/h2&gt;

&lt;p&gt;Not every login starts with an attempt to access a specific protected page.&lt;/p&gt;

&lt;p&gt;Sometimes a user directly opens:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;https://cool-domain.tld/wp-login.php
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;For those cases, the plugin provides a choice of destinations after login:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;the WordPress Dashboard;&lt;/li&gt;
&lt;li&gt;the website front page.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The Dashboard is the logical choice for administrators, editors, and users who work with content.&lt;/p&gt;

&lt;p&gt;The front page is often a better destination for internal portals, client websites, and projects where users interact with the frontend rather than the WordPress administration area.&lt;/p&gt;

&lt;p&gt;This allows the same plugin to support different types of WordPress projects without requiring theme modifications or additional redirect code.&lt;/p&gt;




&lt;h2&gt;
  
  
  RSS feed protection
&lt;/h2&gt;

&lt;p&gt;When protecting a WordPress website, it is easy to forget about RSS feeds.&lt;/p&gt;

&lt;p&gt;A website may appear closed in the browser while its posts remain accessible through URLs such as:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;https://cool-domain.tld/feed/
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;or:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;https://cool-domain.tld/comments/feed/
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Supracorona Login Gate therefore includes an optional RSS feed protection setting.&lt;/p&gt;

&lt;p&gt;When feed protection is enabled, logged-out visitors cannot access feed content. When it is disabled, RSS feeds remain publicly available.&lt;/p&gt;

&lt;p&gt;This is particularly important for:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;internal blogs;&lt;/li&gt;
&lt;li&gt;private documentation;&lt;/li&gt;
&lt;li&gt;company knowledge bases;&lt;/li&gt;
&lt;li&gt;websites containing material that should not be indexed or retrieved by feed readers.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Feed protection is optional because some projects may intentionally restrict the website frontend while keeping their RSS content public.&lt;/p&gt;




&lt;h2&gt;
  
  
  Independent of the active theme
&lt;/h2&gt;

&lt;p&gt;The plugin does not require any changes to the WordPress theme.&lt;/p&gt;

&lt;p&gt;There is no need to add code to &lt;code&gt;functions.php&lt;/code&gt;, create custom template files, or integrate the plugin with a particular page builder.&lt;/p&gt;

&lt;p&gt;Supracorona Login Gate operates during the WordPress request flow and redirects logged-out visitors before protected content is rendered.&lt;/p&gt;

&lt;p&gt;This means it can continue working after:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;changing the active theme;&lt;/li&gt;
&lt;li&gt;modifying a child theme;&lt;/li&gt;
&lt;li&gt;redesigning the website;&lt;/li&gt;
&lt;li&gt;moving from a classic theme to a block theme;&lt;/li&gt;
&lt;li&gt;changing the template structure.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The plugin’s admin stylesheet is loaded only on its own settings screen, so it does not add unnecessary CSS to the frontend or unrelated WordPress administration pages.&lt;/p&gt;




&lt;h2&gt;
  
  
  What the plugin deliberately does not do
&lt;/h2&gt;

&lt;p&gt;Supracorona Login Gate is not intended to replace a complete membership system.&lt;/p&gt;

&lt;p&gt;Version 1.0.0 does not attempt to manage:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;paid memberships;&lt;/li&gt;
&lt;li&gt;subscriptions;&lt;/li&gt;
&lt;li&gt;access tiers;&lt;/li&gt;
&lt;li&gt;role-based content visibility;&lt;/li&gt;
&lt;li&gt;individual rules for every post;&lt;/li&gt;
&lt;li&gt;user registration;&lt;/li&gt;
&lt;li&gt;member profiles;&lt;/li&gt;
&lt;li&gt;frontend account areas;&lt;/li&gt;
&lt;li&gt;e-commerce content access.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This version also does not include a whitelist system for individual pages.&lt;/p&gt;

&lt;p&gt;The current model is intentionally straightforward:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;the website is available to logged-in users, while logged-out visitors are redirected.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;That limitation is deliberate. It keeps the plugin small, understandable, and focused on one specific responsibility.&lt;/p&gt;




&lt;h2&gt;
  
  
  Plugin-level protection is not server-level protection
&lt;/h2&gt;

&lt;p&gt;It is also important to understand the limits of this type of solution.&lt;/p&gt;

&lt;p&gt;Supracorona Login Gate protects content that passes through WordPress and its standard request flow. It is designed to restrict access to WordPress pages, posts, archives, and feeds.&lt;/p&gt;

&lt;p&gt;It is not a replacement for server-level protection such as:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;HTTP Basic Authentication;&lt;/li&gt;
&lt;li&gt;VPN access;&lt;/li&gt;
&lt;li&gt;firewall rules;&lt;/li&gt;
&lt;li&gt;complete staging-environment protection;&lt;/li&gt;
&lt;li&gt;IP-based access restrictions.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Files that are directly accessible on the server, including certain media files, may require additional web server configuration.&lt;/p&gt;

&lt;p&gt;For highly sensitive development environments, the safest approach is to combine WordPress-level access control with server-level authentication.&lt;/p&gt;

&lt;p&gt;Supracorona Login Gate is intended for situations where a project needs a simple and practical way to restrict access to WordPress content without introducing an entire membership infrastructure.&lt;/p&gt;




&lt;h2&gt;
  
  
  Caching requires attention
&lt;/h2&gt;

&lt;p&gt;Caching systems may store a publicly generated version of a page and serve it later without executing the normal WordPress request logic again.&lt;/p&gt;

&lt;p&gt;For that reason, a caching plugin or server cache should be configured so that it:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;does not cache protected content as public content;&lt;/li&gt;
&lt;li&gt;correctly distinguishes logged-in and logged-out users;&lt;/li&gt;
&lt;li&gt;excludes protected pages from caching when necessary;&lt;/li&gt;
&lt;li&gt;clears existing cached pages after access protection is enabled.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The plugin can correctly redirect WordPress requests, but an incorrectly configured cache may bypass the expected request flow.&lt;/p&gt;

&lt;p&gt;After enabling protection, it is a good idea to test the website:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;in a private or incognito browser window;&lt;/li&gt;
&lt;li&gt;as a logged-in user;&lt;/li&gt;
&lt;li&gt;as a logged-out visitor;&lt;/li&gt;
&lt;li&gt;after clearing browser and server caches;&lt;/li&gt;
&lt;li&gt;through both the main RSS feed and the comments feed.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Why a small plugin still makes sense
&lt;/h2&gt;

&lt;p&gt;The WordPress ecosystem often approaches small problems with large solutions.&lt;/p&gt;

&lt;p&gt;Sometimes that is justified. Complex projects genuinely require complex systems.&lt;/p&gt;

&lt;p&gt;But there is another category of projects where a focused plugin is a better fit:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;it is easier to understand;&lt;/li&gt;
&lt;li&gt;it is easier to test;&lt;/li&gt;
&lt;li&gt;it provides fewer settings;&lt;/li&gt;
&lt;li&gt;it introduces fewer dependencies;&lt;/li&gt;
&lt;li&gt;it does not try to control unrelated parts of the website;&lt;/li&gt;
&lt;li&gt;it is easier to remove when it is no longer needed.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Supracorona Login Gate follows that approach.&lt;/p&gt;

&lt;p&gt;The plugin has one clearly defined responsibility: control access to a WordPress website based on the visitor’s login status.&lt;/p&gt;

&lt;p&gt;It does not try to become a complete security platform, membership system, or user-management suite.&lt;/p&gt;

&lt;p&gt;It is an access gate — and that is exactly what it is supposed to be.&lt;/p&gt;




&lt;h2&gt;
  
  
  How the plugin came to be
&lt;/h2&gt;

&lt;p&gt;Supracorona Login Gate did not begin as a deliberately planned new product.&lt;/p&gt;

&lt;p&gt;For years, I used an older plugin to restrict access to WordPress websites. It was no longer actively maintained, but it still solved a very specific problem that I regularly encountered on development, internal, and private projects.&lt;/p&gt;

&lt;p&gt;With each new WordPress release, its behavior had to be reviewed, outdated code had to be adjusted, and additional changes were needed to keep it compatible with current WordPress standards. What started as maintaining an existing solution gradually turned into a much larger rewrite.&lt;/p&gt;

&lt;p&gt;Over time, the code structure, prefixes, option names, administration interface, data validation and sanitization, redirect handling, feed protection, and overall plugin organization were changed. The settings were reorganized, and the behavior was adapted to better match the needs of modern WordPress projects.&lt;/p&gt;

&lt;p&gt;Eventually, it no longer made sense to treat the result as another locally patched version of an abandoned plugin. It had become a separate codebase with its own name, maintenance process, testing, and development direction.&lt;/p&gt;

&lt;p&gt;That is how Supracorona Login Gate came to be: from the practical need to preserve a simple site-wide access model while rebuilding it as a modern, maintainable, and independent WordPress plugin.&lt;/p&gt;




&lt;h2&gt;
  
  
  The first release
&lt;/h2&gt;

&lt;p&gt;Version &lt;strong&gt;1.0.0&lt;/strong&gt; includes:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;site access restricted to logged-in users;&lt;/li&gt;
&lt;li&gt;redirection to the native WordPress login page;&lt;/li&gt;
&lt;li&gt;redirection to a custom page;&lt;/li&gt;
&lt;li&gt;return to the originally requested page after login;&lt;/li&gt;
&lt;li&gt;configurable destination for direct logins;&lt;/li&gt;
&lt;li&gt;optional RSS feed protection;&lt;/li&gt;
&lt;li&gt;a simple settings screen;&lt;/li&gt;
&lt;li&gt;independence from the active WordPress theme.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Supracorona Login Gate is available from the official WordPress plugin directory:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="https://wordpress.org/plugins/supracorona-login-gate/" rel="noopener noreferrer"&gt;https://wordpress.org/plugins/supracorona-login-gate/&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;This is the second public WordPress.org release under the Supracorona name, following &lt;strong&gt;Classic Visual Editor Options&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;One focused problem at a time. One plugin at a time.&lt;/p&gt;




</description>
      <category>wordpress</category>
      <category>php</category>
      <category>webdev</category>
      <category>opensource</category>
    </item>
    <item>
      <title>50 Shades of grAI</title>
      <dc:creator>Dejan S. Višekruna</dc:creator>
      <pubDate>Thu, 11 Jun 2026 22:57:10 +0000</pubDate>
      <link>https://dev.to/dveb/50-shades-of-grai-9c3</link>
      <guid>https://dev.to/dveb/50-shades-of-grai-9c3</guid>
      <description>&lt;p&gt;When working with AI tools, the difference between expectations and real delivery becomes visible very quickly.&lt;/p&gt;

&lt;p&gt;The expectation is simple: AI writes code, speeds up work, and reduces repetition. That is true. AI can suggest structure, write initial code, explain an existing implementation, and accelerate parts of everyday development work.&lt;/p&gt;

&lt;p&gt;But output is not the same as a delivered solution.&lt;/p&gt;

&lt;p&gt;In a real project, code has to fit the product, the context, the architecture, the team’s rules, and the expected behavior of the system. AI can help write code, but it does not take responsibility for whether that code should be accepted, changed, or rejected.&lt;/p&gt;

&lt;p&gt;That is where the real delivery problem starts.&lt;/p&gt;

&lt;p&gt;The question is not only whether AI can generate something. The question is who understands the requirement, who verifies the result, who sees the error in context, and who takes responsibility when the solution reaches production.&lt;/p&gt;

&lt;p&gt;AI has value when it is used by someone who knows what to verify.&lt;/p&gt;

&lt;p&gt;Without that, AI only makes work faster without enough control.&lt;/p&gt;

&lt;p&gt;50 Shades of grAI is an attempt to describe that space through 50 short statements from real software delivery.&lt;/p&gt;

&lt;p&gt;The cards are published on LinkedIn and Instagram, while the full archive is kept at:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://50shadesofgrai.com/" rel="noopener noreferrer"&gt;https://50shadesofgrai.com/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Not as a prompt list.&lt;/p&gt;

&lt;p&gt;Not as AI hype.&lt;/p&gt;

&lt;p&gt;Just as practical notes from the work.&lt;br&gt;
Series: #50ShadesOfGrAI&lt;/p&gt;

</description>
      <category>ai</category>
      <category>generativeai</category>
      <category>creativity</category>
      <category>50shadesofgrai</category>
    </item>
    <item>
      <title>How I Used ChatGPT to Identify Two Songs I Heard Once — Over 30 Years Ago</title>
      <dc:creator>Dejan S. Višekruna</dc:creator>
      <pubDate>Sat, 07 Jun 2025 22:30:26 +0000</pubDate>
      <link>https://dev.to/dveb/how-i-used-chatgpt-to-identify-two-songs-i-heard-once-over-30-years-ago-28f8</link>
      <guid>https://dev.to/dveb/how-i-used-chatgpt-to-identify-two-songs-i-heard-once-over-30-years-ago-28f8</guid>
      <description>&lt;blockquote&gt;
&lt;h2&gt;
  
  
  A personal memory retrieval turned technical challenge — and how ChatGPT helped solve it.
&lt;/h2&gt;
&lt;/blockquote&gt;




&lt;h2&gt;
  
  
  🎯 The Challenge
&lt;/h2&gt;

&lt;p&gt;I had been searching for two songs for decades. One was a dreamy eurobeat track, the other a dance cover with a female vocal.&lt;br&gt;&lt;br&gt;
I had no artist, no title, no recording — only a feeling, a rough memory of the beat, and the fact that I heard each one only once on the radio in Belgrade in the early ’90s.&lt;/p&gt;




&lt;h2&gt;
  
  
  🧠 Using ChatGPT as a Research Tool
&lt;/h2&gt;

&lt;p&gt;Instead of asking &lt;em&gt;“What song is this?”&lt;/em&gt;, I approached ChatGPT like a research assistant.&lt;/p&gt;

&lt;p&gt;Here’s what I gave it:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Vocal style:&lt;/strong&gt; Female
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Era clues:&lt;/strong&gt; One was from the late ’80s/early ’90s, the other from the mid-’90s
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Beat style:&lt;/strong&gt; One had a groove similar to &lt;em&gt;Back to Life&lt;/em&gt; by Soul II Soul; the other leaned more toward eurobeat
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Context:&lt;/strong&gt; Both songs were aired only once on Belgrade radio stations during a time of severe UN sanctions
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Data issue:&lt;/strong&gt; One track was misidentified as “Three Times” due to a faulty RDS display
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Memory anchor:&lt;/strong&gt; I remembered a single chorus line from one of them&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I turned that into a structured query — and then refined it through several iterations.&lt;/p&gt;




&lt;h2&gt;
  
  
  ✅ The Result
&lt;/h2&gt;

&lt;p&gt;After a series of narrowing-down steps, ChatGPT helped identify two songs I never expected to find:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;“Dreamtime” – Zee&lt;/strong&gt; &lt;em&gt;(misread on radio as “Three Times”)&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;“Dream” – W.I.P.&lt;/strong&gt; &lt;em&gt;(a 1991 dance cover of “All I Have to Do Is Dream”)&lt;/em&gt;
&lt;/li&gt;
&lt;/ol&gt;




&lt;h2&gt;
  
  
  🔍 Prompting Breakdown
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight markdown"&gt;&lt;code&gt;&lt;span class="p"&gt;-&lt;/span&gt; Structured inputs: genre, rhythm, era, vocal type, source context
&lt;span class="p"&gt;-&lt;/span&gt; Prompt chaining: refining results based on emotional match and memory fragments
&lt;span class="p"&gt;-&lt;/span&gt; Rejection criteria: wrong mood, wrong lyrics, wrong production style
&lt;span class="p"&gt;-&lt;/span&gt; AI cross-referenced musical style, RDS errors, historical distribution
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  🤔 Why This Matters
&lt;/h2&gt;

&lt;p&gt;LLMs aren’t just for coding, summarizing, or rewriting emails.&lt;br&gt;&lt;br&gt;
They can act as context engines — helping us reconnect with pieces of our lives that search engines left behind.&lt;/p&gt;




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

&lt;p&gt;This wasn’t just about finding songs. It was about proving how &lt;em&gt;human memory + AI reasoning&lt;/em&gt; can solve a decades-old emotional puzzle.&lt;/p&gt;

&lt;p&gt;And to write it using the very same &lt;strong&gt;ChatGPT&lt;/strong&gt; that helped me find those songs in the first place — that was part of the closure.&lt;br&gt;&lt;br&gt;
Because this isn’t just my story. It’s a reminder that &lt;strong&gt;humans + AI can bring back something deeply personal&lt;/strong&gt; — something even search engines forgot.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Ever used AI to find a lost piece of your past? Let me know in the comments.&lt;/em&gt;&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%2Fieuxywz4ecb4269u37p1.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%2Fieuxywz4ecb4269u37p1.png" alt="A nostalgic view of a car dashboard with “THREE TIMES” on the radio, and a teenager gazing out into the late afternoon light." width="800" height="533"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;AI-generated by ChatGPT for illustration purposes. No memories (or animals) were harmed during the making of this post.&lt;/p&gt;
&lt;/blockquote&gt;




</description>
      <category>chatgpt</category>
      <category>ai</category>
      <category>promptengineering</category>
      <category>casestudy</category>
    </item>
    <item>
      <title>Restoring the Freedom of Choice: Why I Decided to Bring Back the “Disable Visual Editor” Option in WordPress</title>
      <dc:creator>Dejan S. Višekruna</dc:creator>
      <pubDate>Fri, 30 May 2025 17:28:59 +0000</pubDate>
      <link>https://dev.to/dveb/restoring-the-freedom-of-choice-why-i-decided-to-bring-back-the-disable-visual-editor-option-in-4bi3</link>
      <guid>https://dev.to/dveb/restoring-the-freedom-of-choice-why-i-decided-to-bring-back-the-disable-visual-editor-option-in-4bi3</guid>
      <description>&lt;p&gt;As a developer who writes directly in HTML, I’ve always relied on a small but important setting in WordPress:&lt;br&gt;
“&lt;strong&gt;Visual Editor: +/- Disable the visual editor when writing&lt;/strong&gt;” in the user profile.&lt;/p&gt;

&lt;p&gt;But in version 6.8, WordPress removed that option — without warning.&lt;/p&gt;

&lt;p&gt;For me, this wasn’t just a small inconvenience. It was the loss of &lt;strong&gt;freedom of choice&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;So I decided to fix that and bring it back as a plugin.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Problem That Affects Many
&lt;/h2&gt;

&lt;p&gt;Many developers, freelancers, and users who work with code are &lt;strong&gt;not fans of WYSIWYG editors&lt;/strong&gt;. Not everyone is a “visual type.”&lt;/p&gt;

&lt;p&gt;Additionally, there are times when you simply need to input HTML tags that aren’t well supported in a standard text editor.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The problem with the visual editor&lt;/strong&gt; is that it can “clean up” the code. A small fix through the Edit Page/Post in the Dashboard — or, more often, accidentally opening the Visual tab — can wipe out all the HTML you worked so hard to write. And then, back to square one.&lt;/p&gt;

&lt;p&gt;I’ve gone as far as preparing HTML-based content locally, then &lt;strong&gt;copy/pasting&lt;/strong&gt; it directly into the database (&lt;code&gt;wp_posts &amp;gt; post_content&lt;/code&gt;). I no longer even add new &lt;code&gt;wp_post&lt;/code&gt; IDs through the Dashboard; I do it via SQL commands or my own upgraded &lt;em&gt;legacy&lt;/em&gt; version of a previously banned mass page creation plugin.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;And then I pack it all...&lt;/strong&gt; Then someone (or I) opens the WP TinyMCE Editor — the &lt;em&gt;Visual&lt;/em&gt; tab — and &lt;strong&gt;flushes the code&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;In the old WordPress, all you needed to do was check the box “&lt;strong&gt;Disable the visual editor when writing&lt;/strong&gt;” in your profile. &lt;strong&gt;Let the worst happen — the code stays&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;But since version 6.8, WordPress no longer shows this option, even if the Classic Editor plugin is active. What was once a simple solution — is now completely removed from the interface.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Solution I Made
&lt;/h2&gt;

&lt;p&gt;This is where I created &lt;strong&gt;Classic Visual Editor Options&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;The plugin does just one thing: &lt;strong&gt;restores that old&lt;/strong&gt;, &lt;strong&gt;beloved option&lt;/strong&gt; in the user profile.&lt;/p&gt;

&lt;p&gt;No additional settings. No extra UI. No bloat.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Just that one checkbox&lt;/strong&gt;.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;✅ Works even if you use Block Editor&lt;/li&gt;
&lt;li&gt;✅ Works even if you use Classic Editor&lt;/li&gt;
&lt;li&gt;✅ Respects user settings (rich_editing meta)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I purposely kept it minimalist because sometimes, that’s exactly what’s needed.&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusion — It’s Not Nostalgia, It’s a Choice
&lt;/h2&gt;

&lt;p&gt;This story isn’t about the past. It’s not even about one checkbox.&lt;/p&gt;

&lt;p&gt;It’s about the fact that s*&lt;em&gt;ome users still want control over how they write&lt;/em&gt;*. They want a work environment without visual “flavor.” They want to write in peace — just as they always have.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;If you’re one of them — this plugin is for you&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;🔗 Plugin Link: &lt;a href="https://wordpress.org/plugins/classic-visual-editor-options/" rel="noopener noreferrer"&gt;Classic Visual Editor Options&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Feel free to leave a comment, suggestion, or question.&lt;br&gt;
I’m open to feedback — and new solutions that respect the old things that worked.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Dejan S. Višekruna&lt;/strong&gt;&lt;br&gt;
WP developer and someone who still believes that — &lt;strong&gt;Code is Poetry&lt;/strong&gt;.&lt;/p&gt;

</description>
      <category>wordpress</category>
      <category>opensource</category>
    </item>
  </channel>
</rss>
