<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="/css/rss.xsl"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
	<channel>
		<title>iDiallo.com</title>
		<atom:link href="https://idiallo.com/feed.rss" rel="self" type="application/rss+xml" />
		<image>
			<url>https://cdn.idiallo.com/images/id.png</url>
			<title>Web/Software development throughout the years - iDiallo.com</title>
			<link>https://idiallo.com</link>
		</image>
		<description>
			<![CDATA[
		Throughout the years, I have decide to put all my the knowledge I have accumulated in my Blog. Hopefully it will serve others as well as it serves me.
		]]>
		</description>
		<link>https://idiallo.com</link>
		
			<item>
				<title><![CDATA[How to Come Up With Great Ideas ]]></title>
				<link>https://idiallo.com/blog/how-to-come-up-with-great-ideas?src=feed</link>
				<author>Ibrahim Diallo @dialloibu</author>
				<description>
					<![CDATA[
			<p>There's a story about an art teacher who divides a class into two groups. The first group is given one task. Design a single, perfect pot. The second group has a different instruction entirely. Make as many pots as you can before time is up.</p>
			<p>The first group measures, plans, and deliberates. They sketch ratios, debate proportions, and handle the clay with care. They have one shot, so they treat it like one.</p>

<p>The second group just makes pots. Terrible ones. pots that collapse on themselves, crack at the base, and lean sideways. They don't stop to mourn any of them, they just start the next.</p>

<p>When time expires, the results are revealed. The first group has a pot... technically. But it wobbles. Before the session is over, it breaks. The second group's first pot is a disaster. But their second is better. Their third, better still. By the time they've burned through a dozen attempts, they've internalized something the first group never had the chance to learn. What doesn't work. Their final pot is flawless</p>

<p>The second group won not because they were more talented, but because they were given the opportunity to experiment and gain experience.</p>

<hr />

<p>When it comes to writing, it's tempting to believe you need the entire story mapped out before you begin. That you need to fully understand the premise, complete the research, and know the ending before the first sentence. That's never been true for me. When I start writing, I often don't know what it's going to be until the words appear on the page. The research doesn't precede the writing. It follows it.</p>

<p>I remember watching the Pixar documentary about Finding Nemo. They produced hundreds of story sketches and character drawings that never made it into the film. The director admitted that a lot of those ideas were pretty terrible. But without those sketches, they wouldn't have arrived at the final story. They learned from the volume of attempts. And we got to watch the final high quality result.</p>

<p>I've been following what I call the <a href="https://idiallo.com/blog/how-to-learn-anything">100-times rule</a>. For any new skill, or anything new really, I give myself permission to do it 100 times before judging the results. The goal is simple. I want to narrow the gap between idea and execution.</p>

<p>When I was learning to program, I'd open a blank JavaScript file and just start writing. Half the time, I'd finish a session with something unrelated to what I started. A half-baked startup idea buried in the comments, or a function that suggested an entirely new project. The work generated the ideas, not the other way around.</p>

<p>When I decided to write regularly, I had about a dozen ideas ready to go. I dreaded the moment I'd exhaust them. But by the time I published the twelfth post, I had several dozen more. They didn't come from some secret source of inspiration. They came from momentum. Writing regularly has trained my mind to notice things worth writing down. Conversations, observations, small frustrations, fleeting questions. The ideas were always there. I just hadn't built the habit of catching them.</p>

<p>This is the part most people get backwards. They wait for a great idea before they begin. But great ideas are rarely the starting point. They're the result of effort. You don't think your way to good work. You train yourself to good thinking by using repetition.</p>

<p>When I have an idea now, I don't wait for the right moment. I write it down immediately in my phone, in a note, sometimes directly on my blog before I fully understand it. Publishing something unpolished is uncomfortable. But an unpolished idea that's out in the world can be refined, responded to, and built upon. A perfect idea that lives only in your head cannot. In fact, I've forgotten so many great ideas!</p>

<p>Since the beginning of last year, I've written at least 230 articles. When I run low on new ideas, I have hundreds of old posts I can return to, deepen, and remake into something more considered. The volume created the options.</p>

<p>If there is any secret to coming up with great ideas it's this: <strong>Start before you're ready.</strong></p>

<p>The first group in that classroom failed not because they were less capable, but because they optimized for perfection at the expense of experience. Every moment they spent planning was a moment they weren't learning what the clay actually does in your hands.</p>

<p>If you're waiting for the perfect idea, the right time, or enough certainty before you begin then you are the first group. You have one pot and you're protecting it.</p>

<p>Make more pots.</p>
			]]>
				</description>
				<pubDate>Wed, 22 Apr 2026 12:00:00 GMT</pubDate>
				<guid>https://idiallo.com/blog/how-to-come-up-with-great-ideas?src=feed</guid>
			</item>
		
			<item>
				<title><![CDATA[Advice from a millionaire ]]></title>
				<link>https://idiallo.com/blog/advice-from-a-millionaire?src=feed</link>
				<author>Ibrahim Diallo @dialloibu</author>
				<description>
					<![CDATA[
			<p>&#35;storytime</p>

<p>"Is this seat taken?" A man dressed in a black suit and a coffee in hand asked. He was already halfway into the chair when he said it. I was at the adjacent table when I heard it. He wasn't asking me. He was asking the woman who looked up, one hand holding a paper cup, the other trying to keep a small boy from sliding off his seat. A second child sat beside her, quietly peeling the label off a juice bottle.</p>
			<p>"Michael, no!" she yelled at the kid.</p>

<p>But that didn't deter him, he was sitting beside her, sipping on his latte. I noticed him because he didn't belong to the table. He had given himself permission to be part of this story. At first I could only hear fragments of the conversation carried between the hiss of the espresso machine and the scrape of the chairs.</p>

<p>"…people always ask me…"</p>

<p>"…not about luck…"</p>

<p>"…mindset is everything…"</p>

<p>He spoke with the rhythm of someone used to being listened to. Not pausing for responses, just enough space to suggest one might exist. The woman nodded, when it seemed appropriate. Not because she agreed, I think, but because her attention kept breaking apart. The younger child had dropped something. The older one was tugging at her shirt asking a question that went unanswered.</p>

<p>He leaned forward, elbows on the table, lowering his voice as if sharing something confidential. I leaned in.</p>

<p>"You have to recognize opportunity," he said.</p>

<p>I caught that part clearly.</p>

<p>"Most people don't. They're not trained to see it."</p>

<p>The woman murmured something, agreement, maybe. Or just acknowledgement. She clearly wanted to listen, to hear him. But her eyes drifted to the door when it opened. Then to the counter when a name was called that wasn't hers.</p>

<p>He didn't seem to notice.</p>

<p>"People often ask me how I made my first million dollars, like what the turning point was?" he continued. "And I tell them, it's never just one moment. It's discipline. Consistency. Character."</p>

<p>One of the kids tugged at her sleeve. She bent down, whispered something, brushed hair out of the child's face. The man waited, but not really. More like he paused until the interruption stopped existing.</p>

<p>"Early in my career," he said, picking up exactly where he left off, "I joined a small company. Nobody had heard of it."</p>

<p>He smiled, like this was the part that mattered most.</p>

<p>"But I saw something."</p>

<p>The phrase hung there. I had the sense he liked the way it sounded.</p>

<p>"They always ask me, 'How did you know?'" he said, shaking his head lightly. "And the truth is, I had prepared for this every single day of my life. So when the moment comes, you just know."</p>

<p>The older child had started tapping the table with a plastic lid. A soft, repetitive sound. The woman placed her hand over it gently, stopping the rhythm without looking away from the man. He kept going.</p>

<p>"We were a small team. Took risks. Worked hard. No guarantees." He gestured vaguely, as if summing up effort itself. "That's what people don't understand."</p>

<p>The woman nodded again, looking at the counter if her name was ever going to be called.</p>

<p>"They gave us stock," he added. "Didn't mean much back then." He said it casually, like it wasn't the point. Like it was just part of the scenery. "And then we got acquired."</p>

<p>He leaned back slightly, watching her reaction. I don't think she gave him one.</p>

<p>"A bigger company came in," he said. "That's what happens when you build something valuable."</p>

<p>Behind the counter, milk steamed loudly. Someone laughed. A chair fell over and was quickly set back upright.</p>

<p>"At that point," he continued, "those shares… well."</p>

<p>He made a small lifting motion with his hand. The woman followed the movement with her eyes, just for a second.</p>

<p>"That's the strategy," he said. "Recognize opportunity. Take risks. Build character."</p>

<p>He delivered it like a conclusion. Something that could be written down.</p>

<p>The younger child had climbed halfway out of the chair now. She pulled them back gently, whispering again. This time more urgently.</p>

<p>He checked his watch.</p>

<p>Then, as if remembering he was not alone in the conversation, he asked, "So what do you do?"</p>

<p>The question landed awkwardly, like it had been taken from a different script. She hesitated. This whole time she had been made to listen. Now her answer was needed.</p>

<p>"I'm… figuring things out right now," she said. It was the kind of answer that usually ends a line of questioning. He nodded, but it didn't slow him down.</p>

<p>"That's good," he said. "You have to stay open. That's how opportunities find you."</p>

<p>One of the kids started crying. Not loudly, but enough. She stood halfway, then sat back down, unsure which problem to solve first. He smiled, patient in a way that suggested he believed he was being generous with his time.</p>

<p>"Anyway," he said, standing up and adjusting his jacket, "that's how I did it."</p>

<p>He placed a business card on the table. It slid slightly, stopping near the peeled labels.</p>

<p>"Come find me when you're ready to talk about becoming a millionaire."</p>

<p>She nodded, because there was nothing else to do. He left without looking back. But he looked in my direction and noticed me. He stopped. Walked over, and shook my hand with both of his.</p>

<p>"I've read everything you've written," he said.</p>

<p>I nodded.</p>

<p>He stood there a moment longer, as if hoping I might say something he could write down. I didn't. He left.</p>

<p>I went to the counter and asked for hot water in a cup. The barista made it available without question. From my coat pocket I produced a small paper envelope, mint and garlic, blended to a ratio I had refined over many years. I placed it in the cup and let it steep. I never leave the house without it. It is the first thing I take in the morning and the last thing I take at night. There is a clarity it produces that I have not found elsewhere.</p>

<p>I walked to the woman's table. She looked up. I sat down, and moved her drink to one side.</p>

<p>"This will serve you better," I said, and placed the cup in front of her. She looked at it. One of the children leaned over to smell it and made a face. I didn't acknowledge this.</p>

<p>"The mind," I said, "cannot find opportunity in a state of agitation. I learned this early."</p>

<p>She wrapped both hands around the cup, the way people do when they don't know what else to do with them. I placed my card on the table. It was a solid thing, matte black with beveled edges. It covered the millionaire's card entirely.</p>

<p>"Come find me," I said, "when you're ready."</p>

<p>I didn't say for what. I didn't need to. She could tell I was a billionaire.</p>

<hr />

<p>A barista in a coffee shop told me this story. Not verbatim, but it was funny. Two "rich" guys trying to give advice to a woman and her two kids who live in a van. They feel like they had done her a great service. One offered useless advice, the other offered hot smelly water. Neither of the men helped her. I thought it would make a perfect LinkedIn story.</p>
			]]>
				</description>
				<pubDate>Mon, 20 Apr 2026 12:00:00 GMT</pubDate>
				<guid>https://idiallo.com/blog/advice-from-a-millionaire?src=feed</guid>
			</item>
		
			<item>
				<title><![CDATA[We Are All Playing Politics at Work ]]></title>
				<link>https://idiallo.com/blog/we-are-playing-politics?src=feed</link>
				<author>Ibrahim Diallo @dialloibu</author>
				<description>
					<![CDATA[
			<p>Politics is any discussion where the truth doesn't steer the course of action.</p>

<p>Most of us like to think we are above it. We believe that in our daily jobs, we are rational actors exchanging facts. We assume that if we simply present the truth, the right decisions will naturally follow. But this is a naive fantasy. We are not machines that go to work to process data. We are political animals trying to navigate an imperfect world.</p>
			<p>I often meet purists who want to separate politics from work. They argue work should be a place where actions turn into resources that create value. They fail to see that even making that statement is a political stance.</p>

<p>For me, everything clicked during the pandemic. COVID dissolved the barrier between work and home, forcing us to manage perception over reality. We weren't just working from home, we were curating our backgrounds, hiding our messy lives, and performing professionalism in our pajamas. That performance of managing the image because the raw truth is inconvenient, is the very essence of politics.</p>

<p>We are all playing politics whether we like it or not. Work is messy. People complain, deadlines are missed, and coworkers bring personal agendas into the office. You might just want to do your job and go home, but to get there, you have to navigate the humans. And humans rarely deal in raw truth. They deal in emotions, ambitions, and incentives. If you refuse to play the game, you aren't rewarded for your honesty. Instead, you are just ceding control to those who understand the rules better than you.</p>

<h2>Objective truth must be interpreted</h2>

<p>If there is a place in our lives where truth should be the only thing that reigns, it should be in Science. Science is the pursuit of objective reality. But in practice, even science becomes political the moment humans get involved.</p>

<p>In the recent discussion about the Artemis II moon mission, I was watching news concerning the landing. One of the headlines stated that "experts believe" the re-entry capsule wasn't safe. But why do we need experts to have beliefs when we have science? Shouldn't the math just tell us?</p>

<p>The reality is that most of us cannot handle the raw scientific truth. If a physicist tried to prove the validity of String Theory to me, I wouldn't understand it. I don't have the framework to verify the truth. Instead, I have to trust the consensus of "our" experts because safety is not a binary fact. It is a threshold of acceptable risk that experts are in a better position to understand. Data requires interpretation, and interpretation is political.</p>

<p>When "experts believe," they are offering confidence, not necessarily raw data. It is a political stance designed to manage public perception and risk. If this happens in the hard sciences, imagine how messy it gets in the corporate world, where there are no laws of physics, only opinions and quarterly goals.</p>

<h3>Voting has consequences</h3>

<p>When we hear politics at work, government is what comes to mind. We think it's about which candidate we voted for. But voting is probably the least political thing we do. It is a binary choice with no immediate negotiation required. Once you cast your ballot, your role is done. You wait for the next election.</p>

<div class="image">
  <img src="https://cdn.idiallo.com/images/assets/645/crowd.jpg" alt="voting crowd" />
</div>

<p>In the workplace it is different. Politics is a perpetual dance. You cannot cast a vote and walk away. Your vote is a decision, a critique, or a hire. Then the consequence is you have to live in the same room with it for eight hours everyday.</p>

<p>Because we misunderstand politics, we often mistake naivety for integrity. I learned this the hard way early in my career.</p>

<p>In a past job, I witnessed my manager and lead developer committing what I will politely call <a href="https://idiallo.com/blog/become-an-executive-one-promotion-at-a-time">a clear policy violation</a>. The team came to me with evidence, and I did what I thought was the right thing. I gathered the facts, built an airtight case, and presented it to the VP. I played the Truth Game.</p>

<p>The result? I was scrutinized and pushed out. The manager and lead developer? They were both promoted.</p>

<p>I was confused and bitter. I had the truth on my side. I even had evidence. But I failed to see that the VP's priority wasn't Truth. For him what mattered was stability and hierarchy. My manager and lead were playing the Political Game. They had influence and power. I was playing a game of logic in a room designed for leverage. While I was busy being right, they were busy being effective.</p>

<p>It turned out that maintaining the illusion of a stable hierarchy was more valuable to the acquisition than the operational truth. The company sold for $1.1 Billion regardless of their incompetence. My truth was irrelevant to the outcome.</p>

<p>A more political savvy me would have socialized the issue with the VP first, found an ally in HR, maybe even reframe the issue. Instead of presenting it as a moral failing, I would have framed it as a "risk to the acquisition."</p>

<h3>The Art of the Impossible Deadline</h3>

<p>Once you accept that the workplace is political, you stop fighting reality and start navigating it.</p>

<p>In my current role, deadlines often come down before the project is even defined. Leadership hands down a target date as if it were written in stone—perhaps delivered by God himself, according to my manager. The facts, however, are clear: I know my team size, I know the scope, and I know the deadline is mathematically impossible.</p>

<p>If I were still playing the Truth Game, I would say "No." That would get me labeled as negative or incompetent. If I were a coward, I would say "Yes," and burn my team out.</p>

<p>Instead, I play politics. When asked if I can make the date, my answer is <strong>Confidence</strong>. (roll your eyes here)</p>

<blockquote>
  <p>We are fully committed to the goal. Based on our current velocity, we're focusing our resources on the core features first to ensure we hit that date with a stable build.</p>
</blockquote>

<p>(eye roll ends here)</p>

<p>I don't answer "yes" or "no." I provide a malleable statement that offers reassurance without committing to the impossible. I protect my team and offer leadership the confidence they crave, the same way "experts" offer confidence on a moon launch. It is a political maneuver designed to keep the project moving and relationships intact.</p>

<p>When you are in a room with two <a href="https://idiallo.com/blog/how-to-lead-in-a-room-full-of-experts">groups of experts shouting their facts at each other</a>, they may turn to you to see which political party you will join. I've been in a meeting where the database team was arguing for using store procedures, while the dev team wanted to use an ORM. Each team wants to retain control of their queries, and you sit in the middle and they expect you to lean one way or the other.</p>

<p>What is the Truth Game here? Well, you can't go wrong by following tradition. </p>

<blockquote>
  <p>"What is our standard? Did we use ORMs in the past? Then why change? Let's get back to work."</p>
</blockquote>

<p>That's the truth. You won points with the Dev team. You were efficient and logical. But you made an enemy of the Database team. Now, watch all your future requests get ignored. You were right, but you failed.</p>

<p>What's the Political Game? You already know you have to choose the ORM to meet the deadline. But you start by praising the stored procedures.</p>

<blockquote>
  <p>"I think we can greatly benefit from switching to sprocs. In fact, this will allow queries to be optimized in the background without having to involve the dev team's resources at all. In the long term, this should be our strategy. But given our short timeframe, I don't think we can make those upgrades without impacting our deadline. Let's make sure to include these in our plan of action so we don't forget it."</p>
</blockquote>

<p>The Dev team is happy because you sided with them. The Database team is happy, because you recognized their expertise.</p>

<hr />

<p>Politics is not a dirty word. It naturally grows as people organize around an idea, or a workplace. It is the operating system of human organization.</p>

<p>It is the gap between how things <em>should</em> work (truth) and how they <em>do</em> work (influence). It's not a shortcut to manipulation. You can have political integrity by using your influence to protect your team and achieve the mission, rather than just being right while the ship sinks.</p>

<p>You can choose to ignore this reality and cling to your facts, but don't be surprised when you find yourself scrutinized while the political players get promoted. We are all politicians. The only question is whether you are campaigning for your own success or letting everyone else write the rules for you.</p>
			]]>
				</description>
				<pubDate>Sat, 18 Apr 2026 03:00:00 GMT</pubDate>
				<guid>https://idiallo.com/blog/we-are-playing-politics?src=feed</guid>
			</item>
		
			<item>
				<title><![CDATA[Back button hijacking is going away ]]></title>
				<link>https://idiallo.com/blog/back-button-hijacking-is-going-away-seo?src=feed</link>
				<author>Ibrahim Diallo @dialloibu</author>
				<description>
					<![CDATA[
			<p>When websites are blatantly hostile, users close them to never come back. Have you ever downloaded an app, realized it was deceptive, and deleted it immediately? It's a common occurrence for me. But there is truly hostile software that we still end up using daily. We don't just delete those apps because the hostility is far more subtle. It's like the boiling frog, the heat turns up so slowly that the frog enjoys a nice warm bath before it's fully cooked.</p>
			<p>With clever hostile software, they introduce one frustrating feature at a time. Every time I find myself on LinkedIn, it's not out of pleasure. Maybe it's an email about an enticing job. Maybe it's an article someone shared with me. Either way, before I click the link, I have no intention of scrolling through the feed. Yet I end up on it anyway, not because I want to, but because I've been tricked.</p>

<p>You see, LinkedIn employs a trick called back button hijacking. You click a LinkedIn URL that a friend shared, read the article, and when you're done, you click the back button expecting to return to whatever app you were on before. But instead of going back, you're still on LinkedIn. Except now, you are on the homepage, where your feed loads with enticing posts that lure you into scrolling.</p>

<p>How did that happen? How did you end up on the homepage when you only clicked on a single link? That's back button hijacking.</p>

<div class="image">
  <img src="https://cdn.idiallo.com/images/assets/644/hijacker.jpg" alt="hijacker" />
</div>

<p>Here's how it works. When you click the original LinkedIn link, you land on a page and read the article. In the background, LinkedIn secretly gets to work. Using the <code>location.replace()</code> JavaScript method, it swaps the page's URL to the homepage. The <code>replace</code> method doesn't add an entry to the browser's history. Then LinkedIn manually pushes the original URL you landed on into the history stack. This all happens so fast that the user never notices any change in the URL or the page.</p>

<p>As far as the browser is concerned, you opened the LinkedIn homepage and then clicked on a post to read it. So when you click the back button, you're taken back to the homepage, the feed loads, and you're presented with <a href="https://idiallo.com/blog/the-one-shoe-ceo-linkedin-stories">the most engaging post</a> to keep you on the platform.</p>

<p>If you spent a few minutes reading the article, you probably won't even remember how you got to the site. So when you click back and see the feed, you won't question it. You'll assume nothing deceptive happened.</p>

<p>While LinkedIn only pushes you one level down in the history state, more aggressive websites can break the back button entirely. They push a new history state every time you try to go back, effectively trapping you on their site. In those cases, your only option is to close the tab.</p>

<p>I've also seen developers unintentionally break the back button, often when implementing a search feature. On a search box where each keystroke returns a result, an inexperienced developer might push a new history state on every keystroke, intending to let users navigate back to previous search terms. Unfortunately, this creates an excessive number of history entries. If you typed a long search query, you'd have to click the back button for every character (including spaces) just to get back to the previous page. The correct approach is to only push the history state when the user submits or leaves the search box (<code>onblur</code>).</p>

<p>As of yesterday, Google announced <a href="https://developers.google.com/search/blog/2026/04/back-button-hijacking">a new spam policy</a> to address this issue. Their reasoning:</p>

<blockquote>
  <p>People report feeling manipulated and eventually less willing to visit unfamiliar sites. As we've stated before, inserting deceptive or manipulative pages into a user's browser history has always been against our Google Search Essentials.</p>
</blockquote>

<p>Any website using these tactics will be demoted in search results:</p>

<blockquote>
  <p>Pages that are engaging in back button hijacking may be subject to manual spam actions or automated demotions, which can impact the site's performance in Google Search results. To give site owners time to make any needed changes, we're publishing this policy two months in advance of enforcement on June 15, 2026.</p>
</blockquote>

<p>I'm not sure how much search rankings affect LinkedIn specifically, but in the grand scheme of things, this is a welcome change. I hope this practice is abolished entirely.</p>
			]]>
				</description>
				<pubDate>Tue, 14 Apr 2026 12:00:00 GMT</pubDate>
				<guid>https://idiallo.com/blog/back-button-hijacking-is-going-away-seo?src=feed</guid>
			</item>
		
			<item>
				<title><![CDATA[You paid for it, you should be comfortable in it ]]></title>
				<link>https://idiallo.com/blog/you-paid-for-it-you-should-be-comfortable-in-it?src=feed</link>
				<author>Ibrahim Diallo @dialloibu</author>
				<description>
					<![CDATA[
			<p>A friend of mine bought a Tesla Roadster back in the early 2010s. At the time, spotting a Tesla on the road was a rare event. Maybe even occasion enough to stop and take a picture. I never got the chance to photograph one, let alone drive one, until I met this new friend recently. This was my chance to experience the car firsthand.</p>
			<p>We walked to the parking structure to see it. As soon as he opened the door, something looked... off. On the outside, it was a pristine, six-figure roadster. But the inside looked completely custom. Not "custom" in the sense of a professional shop install, but more like the driver himself grabbed a hammer and chisel and made it his own.</p>

<p>First, the driver's seat had been altered. It was much lower than usual and didn't match the passenger seat. My friend stands 6'7", and the Roadster is a tiny car. He physically couldn't fit, so he modified the seat rails to lower it. But that fix created a new problem: the door armrest now dug into his hip. So, he took a file to the interior panel, shaved it down, and 3D printed a smaller, ergonomic armrest. He even 3D printed a cup holder for the passenger side so his coffee was within reach.</p>

<p>To me, the idea of taking a Dremel or a file to a $100,000+ car was unimaginable. You must be crazy to do it.</p>

<p>He caught the look on my face and shrugged. "Hey, it's my car. I paid for it. I intend to be comfortable in it."</p>

<p>I never thought of it like this. That sentiment stuck with me. Recently when I read an article by Kent Walters about <a href="https://kentwalters.com/posts/corners/">filing the corners of his MacBook</a>, those same feelings resurfaced. My work MacBook has edges so sharp that I've often felt like I was slicing my wrist on the chassis. I treated this as a design flaw I had to endure. But not Kent. He treated it as an obstacle to be removed. He literally filed down the corners of his laptop to ensure the machine he uses every day was comfortable.</p>

<p>I may not have the guts to file my work issued MacBook, but I'm no stranger to customization... in software. I modify my tools constantly. I spend days tweaking my IDE, remapping keyboard shortcuts, and writing custom scripts until the software is unrecognizable to anyone else on my team. I don't think twice about rewriting a config file to make the tool fit my brain.</p>

<p>When I was a kid, I always had a screw driver around, fixing a device that wasn't really broken. On the home computer, I modified everything. I once deleted all <code>.ini</code> files to improve performance. It didn't work, but it led to a fruitful career.</p>

<p>But somehow, when it comes to expensive hardware now, I freeze. I treat the physical object as a museum piece to be preserved. I bought a docking station to banish the laptop to a shelf, using an external mouse and keyboard to avoid touching the sharp chassis. I built a complex workaround to accommodate the tool, rather than performing the simple, brutal act of modifying the tool to accommodate me.</p>

<p>We treat our physical tools as if they are on loan from the manufacturer.</p>

<p>You'll see a musician buying a vintage guitar but refuses to adjust the action, terrified of ruining the "collector's value." Meanwhile, the working guitarist has sanded down the neck and covered it in stickers because it feels better in their hand. The software engineer accepts the default keybindings to avoid "bad habits," while the power user creates a layout that doubles their speed.</p>

<p>If you own a tool, whether it's a car, a computer, or a line of code, you own the right to change it. The manufacturer designed it for the "average" user, but you are a specific human with specific needs.</p>

<p>Remember grandma's couch in the living room? It had that plastic cover on it. It was so uncomfortable, but no one dared to remove it. The plastic was to preserve the sofa. No one got to enjoy it, instead everyone accommodated the couch only to preserve its value. A value that no one ever benefits from. Don't let the perceived value of an object stop you from making it truly yours. A tool with battle scars is a tool that is loved.</p>
			]]>
				</description>
				<pubDate>Mon, 13 Apr 2026 12:00:00 GMT</pubDate>
				<guid>https://idiallo.com/blog/you-paid-for-it-you-should-be-comfortable-in-it?src=feed</guid>
			</item>
		
			<item>
				<title><![CDATA[Your AWS Certification Makes You an AWS Salesman ]]></title>
				<link>https://idiallo.com/byte-size/we-are-aws-salesmen?src=feed</link>
				<author>Ibrahim Diallo @dialloibu</author>
				<description>
					<![CDATA[
			<p>I must have been the last developer still confused by the AWS interface. I knew how to access DynamoDB, that was the only tool I needed for my daily work. But everything else was a mystery. How do I access web hosting? If I needed a small server to host a static website, what service would I use? Searching for "web hosting" inside the AWS console yielded nothing.</p>

<p>After digging through the web, I found the answer: an Elastic Cloud Compute instance, better known as EC2. I learned that I could use it under the "Free Tier." Amazon offers free tiers for many services, but figuring out the actual cost beyond that introductory period requires elaborate calculation tools. In fact, I’ve often seen independent developers build tools specifically to <a href="https://compute-cost.com/">help people decipher AWS pricing</a></p>

<p>If you want to use AWS effectively, it seems the only path is to get certified. Companies send employees to conferences and courses to learn the platform. I took some of those courses and they taught me how to navigate the interface and build very specific things. But that skill isn't transferrable. In the course, I wasn't exactly learning a new engineering skill. Instead, I was learning Amazon.</p>

<p>Amazon has created a complex suite of tools that has become the industry standard. Hidden within its moat of confusion, we are trained to believe it is the only option. Its complexity justifies the high cost, and the Free Tier lures in new users who settle into the idea that this is just "the way" to do web development.</p>

<p>When you are presented with a simple interface like DigitalOcean or Linode and a much cheaper price tag, you tend to think that something is missing. Surely, a cheaper, simpler service must lack half the features, right? The reality is, you don't need half the stuff AWS offers. Where other companies create tutorials to help you build, Amazon offers certificates. It is a powerful signal for enterprise legitimacy, but for most developers, it is overkill.</p>

<p>This isn't to say AWS is "bad," but it obscures the reality of running a web service. It is much easier than it seems. There are hundreds of alternatives for hosting. You can run your services reliably on a VPS without ever breaking the bank.</p>

<p>Most <a href="https://idiallo.com/blog/programming-tools-are-free">web programming is free</a>, or at the very least, affordable.</p>
			
			]]>
				</description>
				<pubDate>Sun, 12 Apr 2026 17:25:33 GMT</pubDate>
				<guid>https://idiallo.com/byte-size/we-are-aws-salesmen?src=feed</guid>
			</item>
		
			<item>
				<title><![CDATA[Your friends are hiding their best ideas from you ]]></title>
				<link>https://idiallo.com/blog/your-friends-are-hiding-their-ideas?src=feed</link>
				<author>Ibrahim Diallo @dialloibu</author>
				<description>
					<![CDATA[
			<p>Back in college, the final project in our JavaScript class was to build a website. We were a group of four, and we built the best website in class. It was for a restaurant called the Coral Reef. We found pictures online, created a menu, and settled on a solid theme. I was taking a digital art class in parallel, so I used my Photoshop skills to place our logo inside pictures of our fake restaurant. All of a sudden, something clicked. We were admiring our website on a CRT monitor when my classmate pulled me aside. She had an idea. A business idea.</p>
			<p>An idea so great that she couldn't share it with the rest of the team. She whispered, covering her mouth with one hand so a lip reader couldn't steal this fantastic idea: "what if we build websites for people?"</p>

<p><a href="https://youtu.be/wWSKb8TFgMg">Watch it on YouTube</a></p>

<p>This was the 2000s, of course it was a fantastic idea. The perfect time to spin up an online business after a market crash. But what she didn't know was that, while I was in class in the mornings, my afternoons were spent scouring Craigslist and building crappy websites for a hundred to two hundred dollars a piece. I wasn't going to share my measly spoils. If anything, this was the perfect time to build that kind of service. <em>That's a great idea</em>, I said.</p>

<p style="font-size: 1.6em;font-weight:bold;text-align:center;font-family: times;font-style: italic;">&ldquo;Somewhere behind a chatbot interface, an AI is telling one of your friends that their idea is brilliant.&rdquo;</p>

<p>There is something satisfying about having an idea validated. A sort of satisfaction we get from the acknowledgment. We are smart, and our ideas are good. Whenever someone learned that I was a developer, they felt this urge to share their "someday" idea. It's an app, a website, or some technology I couldn't even make sense of. I used to try to dissect these ideas, get to the nitty-gritty details, scrutinize them. But that always ended in hostility. "Yeah, you don't get it. You probably don't have enough experience" was a common response when I didn't give a resounding yes.</p>

<p>I don't get those questions anymore, at least not framed in the same way. I have worked for decades in the field, and I even have a few failed start-ups under my belt. I'm ready to hear your ideas. But that job has been taken, not by another eager developer with even more experience, or maybe a successful start-up on their résumé. No, not a person. AI took this job.</p>

<p>Somewhere behind a chatbot interface, an AI is telling one of your friends that their idea is brilliant. Another AI is telling them to write out the full details in a prompt and it will build the app in a single stroke. That friend probably shared a localhost:3000 link with you, or a Lovable app, <a href="https://idiallo.com/blog/my-non-programmer-friends-built-apps">last year</a>. That same friend was satisfied with the demo they saw then and has most likely moved on.</p>

<p>In the days when I stood as a judge, validating an idea was rarely what sparked a business. The satisfaction was in the telling. And today, a prompt is rarely a spark either. In fact, the prompt is not enough. My friends share a link to their ChatGPT conversation as proof that their idea is brilliant. </p>

<p>I can't deny it, the robot has already spoken. I'm not the authority on good or bad ideas. I've called ideas stupid that went on to make millions of dollars. (A ChatGPT wrapper for SMS, for instance.)</p>

<p>A decade ago, I was in Y Combinator's Startup School. In my batch, there were two co-founders: one was the developer, and the other was the idea guy. In every meeting, the idea guy would come up with a brand new idea that had nothing to do with their start-up. The instructor tried to steer him toward being the salesman, but he wouldn't budge. "My talent is in coming up with ideas," he said.</p>

<p>We love having great ideas. We're just not interested in starting a business, because that's what it actually takes. A friend will joke, "here's an idea" then proceeds to tell me their idea. "If you ever build it, send me my share." They are not expecting me to build it. They are happy to have shared a great idea.</p>

<p>As for my classmate, she never spoke of the business again. But over the years, she must have sent me at least a dozen clients. It was a great idea after all. </p>
			]]>
				</description>
				<pubDate>Sat, 11 Apr 2026 00:47:19 GMT</pubDate>
				<guid>https://idiallo.com/blog/your-friends-are-hiding-their-ideas?src=feed</guid>
			</item>
		
			<item>
				<title><![CDATA[What Are You Trying to Say? ]]></title>
				<link>https://idiallo.com/blog/what-are-you-trying-to-say?src=feed</link>
				<author>Ibrahim Diallo @dialloibu</author>
				<description>
					<![CDATA[
			<p>Sometimes, I find myself talking while my audience has a puzzled look on their face. It doesn't matter how much I prepared my speech, the message is just not getting through. But then they ask: What are you trying to say?</p>
			<p>Somehow, this shifts the conversation entirely. Instead of trying to sound smart and interesting, I start telling them exactly what I'm trying to say. The fluff disappears, the jargon fades, and I'm left with the raw information in its most primitive form. And somehow, they understand me better this way.</p>

<p><em>What are you trying to say?</em> Whether it's in person or in writing, that question triggers something in us that allows us to better express our intentions.</p>

<p>Here's an exercise. Look out the window. What color is the sky? Now, on a piece of paper or in a word processor, write that the sky is blue.</p>

<blockquote>
  <p>"The sky is blue."</p>
</blockquote>

<p>Somehow, it doesn't feel satisfying. Were there a few wisps of cloud in the sky? Did those clouds look like they were floating? Maybe erring? Were there mountains in the distance? Were they covered with a thin sheet of snow? Were you actually looking through a window, or sitting outdoors, maybe at a park with kids playing on a playground in the distance? What was happening under that blue sky? Was it actually blue, or a yawning purple suggesting dusk?</p>

<p>There's a whole lot we want to express, a whole lot we want to share of our full experience of the moment. But sometimes, just saying that the sky is blue does it.</p>

<p><em>What are you trying to say?</em> Maybe you aren't trying to say that the sky is blue. Maybe you're using it as a metaphor for a deeper feeling you're experiencing. Maybe the emotion is complex and you need to paint it with a broader brush to truly express your feelings. But maybe all you're trying to say is that you're sad. Or happy. Maybe that's all you need to say.</p>

<p>This is something I find fascinating about communication. Sometimes the process demands that you say things wrong, or in the long-winded and complicated way, in order to arrive at that simple, raw format. It's just like how writing helps us think. Your idea isn't clear until you have it written down, like a complicated equation that resolves to something simple. The only shortcut we can take is to ask ourselves that question and untangle our mind in private, before we present our simple resolution at the end.</p>

<p>Whenever you find yourself, just like me, going in circles, losing yourself in a spiral, stop for a moment. Ask yourself: <em>What am I trying to say?</em></p>
			]]>
				</description>
				<pubDate>Thu, 09 Apr 2026 12:00:00 GMT</pubDate>
				<guid>https://idiallo.com/blog/what-are-you-trying-to-say?src=feed</guid>
			</item>
		
			<item>
				<title><![CDATA[AI Did It in 12 Minutes. It Took Me 10 Hours to Fix It ]]></title>
				<link>https://idiallo.com/blog/it-took-me-10-hours-to-fix-ai-code?src=feed</link>
				<author>Ibrahim Diallo @dialloibu</author>
				<description>
					<![CDATA[
			<p>I've been working on personal projects since the 2000s. One thing I've always been adamant about is understanding the code I write. Even when Stack Overflow came along, I was that annoying guy who told people not to <a href="https://idiallo.com/blog/blindly-copy-paste">copy and paste code into their repos</a>. Instead, they should read it and adapt it to their specific case. On personal projects, I've applied this to a fault. Projects never get done because I'm reading and editing code to make it work exactly as I want.</p>
			<p>I am by no means trying to convince you that my code is high quality. Every day, I regret the design choices I made for this very blog. But at the very least, I like to understand the code that powers my projects. So you can imagine how I struggle with the reviewing part when AI writes a large chunk of our daily work. Large language models are just so verbose, and often produce large blocks of code that don't even get used. I don't want to attribute it to malice (wasting your tokens) when I know this is an emergent technology we are all still adapting to.</p>

<p>But it doesn't help that there is just so much code to review. What I tell myself when I review an AI-generated PR is: if I don't have a mental model of how the application works, how can I be of any use when it fails?</p>

<p>This past weekend, I decided to tackle a project I've been postponing since I created this blog over a decade ago. I needed a nice interface to upload assets, such as images, to go with each blog post. According to my git history, I started work on it 11 years ago but never finished. Yet I've still been uploading images regularly to go with blog posts. How? Using <code>scp</code> and <code>sftp</code>. Like a caveman.</p>

<p>Whenever I finish writing a blog post, I create images in Photoshop or Photopea, fire up FileZilla to connect to my file server, and drag and drop my assets. Then, of course, I have to log back into the blog's admin panel and provide the correct URLs for those assets. It's as primitive as it gets.</p>

<p>This was a perfect project to tackle with AI. The good news is that I was able to complete it in a single day. Then the bad news. Well, I read through close to 5,000 lines of code.</p>

<p>This is the first time I've used an LLM to write PHP code. I used the GLM-5 model from z.ai, which I've often played with for generating graphs from data. I'll have to try it on a few more PHP projects before I commit to this opinion, but <em>it consistently wrote spaghetti code</em>. Spaghetti code, to me, is anything where logic is embedded directly in a template. HTML, CSS, and database queries all crammed into the same file. That's really hard to maintain. I did realize, though, that my instructions were in direct contradiction with the agent's system prompt. It was explicit in the thinking process:</p>

<blockquote>
  <p>This is NOT a Next.js project - the user explicitly wants a PHP app. So I should NOT use the Next.js project that's already initialized. I should create a PHP application.</p>
  
  <p>Wait, but the instructions say "You are an interactive CLI tool that helps users with software engineering tasks" and "Now you are developing a comprehensive and feature-rich Next.js project from scratch." But the user is explicitly asking for a PHP app. I should follow the user's request.</p>
</blockquote>

<p>It did generate a bunch of Node.js code, which I was able to remove manually. Luckily, it kept the PHP project in its own folder.</p>

<pre><code class="code-lang-default">media-manager/
├── config.php          # App configuration (paths, security, upload rules)
├── init.php            # SQLite database initialization
├── auth.php            # Authentication class (bcrypt + sessions)
├── index.php           # Main UI (goes to public/)
├── api/
│   ├── auth.php        # Login/Logout endpoint
│   ├── check.php       # Auth status check
│   ├── list.php        # List assets for a blog post
│   ├── upload.php      # Multi-file upload with validation
│   └── delete.php      # Delete asset (disk + DB)
├── nginx.conf          # Nginx site configuration
├── install.sh          # Automated setup script
└── .gitignore
</code></pre>

<p>If you're wondering how 12 files contain ~5,000 lines of code, I wondered the same. But that's what spaghetti code does. I set it up locally, ran <code>install.sh</code> and <code>init.php</code>, and a few more files and folders were generated. When I finally ran the application, it didn't work. I spent a few hours working through permissions, updating the install script, and modifying the SQLite setup. I thought StackOverflow was dead, but I don't think I would have gotten SQLite working without it. One error, for example, was that SQLite kept throwing a warning that it was running in read-only mode. Apparently, you have to make the parent folder writable (not just the database file) to enable write mode.</p>

<p>It had been a long time since I'd manually <code>include</code>d files in PHP. I normally use namespaces and autoload. Since this project was generated from scratch, I had to hunt down various <code>include</code> statements that all had incorrect paths. Once I sorted those out, I had to deal with authentication. PHP sessions come with batteries included, you call <code>session_start()</code> and you can read and write session variables via the <code>$_SESSION</code> global. But I couldn't figure out why it kept failing.</p>

<p>When I created a standalone test file, sessions worked fine. But when loaded through the application, values weren't being saved. I spent a good while debugging before I found that <code>session_start()</code> was missing from the login success flow. When I logged in, the page redirected to the dashboard, but every subsequent action that required authentication immediately kicked me out.</p>

<p>Even after fixing all those issues and getting uploads working, something still bothered me: how do I maintain this code? How do I add new pages to manage uploaded assets? Do I add meatballs directly to the spaghetti? Or do I just trust the AI agent to know where to put new features?</p>

<p>Technically it could do that, but I'd have to rely entirely on the AI without ever understanding how things work. So I did the only sane thing: I rewrote a large part of the code and restructured the project. Maybe I should have started there, but I didn't know what I wanted until I saw it. Which is probably why I had been dragging this project along for 11 years.</p>

<pre><code class="code-lang-default">media-manager/
├── README.md
├── conf
│   └── nginx.conf
├── config.php
├── data
│   └── media.db
├── init.php
├── install.sh
├── public
│   ├── favicon.png
│   ├── index.php
│   ├── logo.png
│   ├── logo_alpha.png
│   └── logo_purple.png
├── src
│   ├── controllers
│   │   ├── assets.php
│   │   ├── auth.php
│   │   └── home.php
│   ├── lib
│   │   ├── auth.php
│   │   └── router.php
│   └── models
│       └── assets.php
└── template
    ├── layout.php
    ├── header.php
    ├── footer.php
    └── layout.php
</code></pre>

<p>Yes, now I have 22 files, almost double the original count. But the code is also much simpler at just 1,254 lines.</p>

<pre><code class="code-lang-default">-------------------------------------------------------------------------------
Language                     files          blank        comment           code
-------------------------------------------------------------------------------
PHP                             13            239            336           1131
Bourne Shell                     1             39             25            123
-------------------------------------------------------------------------------
SUM:                            14            278            361           1254
-------------------------------------------------------------------------------
</code></pre>

<p>There's far less cognitive load when it comes to fixing bugs. There's still a lot to improve, but it's a much leaner foundation.</p>

<hr />

<p>The question I keep coming back to is: would it have been easier to do this manually? Well, the timeline speaks for itself. I had been neglecting this project for years. Without AI, I probably never would have finished it. That said, it would have been easier to build on my existing framework. My blog's framework has been tested for years and has accumulated a lot of useful features: a template engine, a working router, an auth system, and more. All things I had to re-engineer from scratch here. If I'd taken the time to work within my own framework, it probably would have taken less time overall. </p>

<p>But AI gave me the illusion that the work could be done much faster. Z.ai generated the whole thing in just 12 minutes. It took an additional 10 hours to clean it up and get it working the way I wanted.</p>

<p>This reminds me of several non-technical friends who <a href="https://idiallo.com/blog/my-non-programmer-friends-built-apps">built/vibe-coded</a> apps last year. The initial results looked impressive. Most of them don't have a working app anymore, because they realized that the cleanup is just as important as the generation if you want something that actually holds together. I can only imagine what "vibe-debugging" looks like.</p>

<p>I'm glad I have a working app, but I'm not sure I can honestly call this vibe-coded. Most, if not all, of the files have been rewritten. When companies claim that <a href="https://idiallo.com/blog/is-30-percent-of-microsoft-code-ai-generated">a significant percentage of their code is AI-generated</a>, do their developers agree? For me, it's unthinkable to deploy code I haven't vetted and understood. But I'm not the benchmark. I'm sure other developers may have different experience with different tools, but the pattern of cleaning up generated code still remains.</p>

<p>In the meantime, I think I've earned the right to say this the next time I ship an AI-assisted app:</p>

<blockquote>
  <p>"I apologize for so many lines of code - I didn't have time to write a shorter app."</p>
</blockquote>
			]]>
				</description>
				<pubDate>Mon, 06 Apr 2026 13:00:00 GMT</pubDate>
				<guid>https://idiallo.com/blog/it-took-me-10-hours-to-fix-ai-code?src=feed</guid>
			</item>
		
			<item>
				<title><![CDATA[It's not that deep ]]></title>
				<link>https://idiallo.com/blog/its-not-that-deep?src=feed</link>
				<author>Ibrahim Diallo @dialloibu</author>
				<description>
					<![CDATA[
			<p>I have these Sunday evenings where I find myself sitting alone at the kitchen table, thinking about my life and <a href="https://idiallo.com/blog/become-an-executive-one-promotion-at-a-time">how I got here</a>. Usually, these sessions end with an inspiring idea that makes me want to get up and build something. I remember the old days where I couldn't even sleep because I had all these ideas bubbling in my head, and I could just get up and do it because I had no familial responsibility. </p>
			<p>I still have that flare in me, but I also don't always give in to those ideas. Instead, sometimes I chose to do something much simpler. I read. Sometimes it's a book, sometimes it's a blog post. But always, it's something that stimulates my mind more than any startup idea, or tech disruption. </p>

<p>There is a blog I follow, I'm not even sure how I stumbled upon it. I don't think it has a newsletter, and it's not in my RSS feed. But, it's in my mind. It's as if I can just feel it when the author posts something new. Right there on the kitchen table, I load it up, and I get a glimpse into someone else's life. I don't know much about this person, but reading her writing is soothing. It's not commercialized, the most I can say about it is, <a href="https://tadaima.bearblog.dev/">well it is human</a>.</p>

<p>When I read something that is written, anything that's written, I expect to hear <a href="https://idiallo.com/blog/what-i-crave-from-blogs">the voice of the person behind it</a>. Whether it is a struggle, a victory, or just a small remark. It only makes sense when there is a person behind it. Sometimes people write, and in order to sound professional, they remove their voice from it. It becomes like reading a corporate memphis blog. Devoid of any humanity. </p>

<p>It's weird how I have these names in my head. <a href="https://keenen.xyz/">Keenen Charles</a>. I check his blog on Sunday evening as well. In fact, here are a few I read recently in no particular order:</p>

<ul>
<li><a href="https://henko.net/blog/use-simple-words-to-let-your-ideas-shine/">Henrik</a></li>
<li><a href="https://whynothugo.nl/journal/2025/09/12/unaccountable-systems/">Hugo?</a></li>
<li><a href="https://sundry.jerryorr.com/2023/09/26/on-strong-opinions">Jerry</a> (I particularly liked this specific article)</li>
<li><a href="https://writings.hongminhee.org/2026/01/ethics-of-small-actions/">Hong</a></li>
<li><a href="https://tadaima.bearblog.dev/the-world-isnt-ending/">Don't know her name</a></li>
<li><a href="https://keenen.xyz/ai-is-not-a-friend/">Keenen</a></li>
</ul>

<p>This isn't to tell you that you need to read those articles or you will be left behind. It's not that deep. You can find things you like, and enjoy them at your own comfort. They don't have to be world changing, they don't have to turn you into a millionaire, they just have to make you smile or nod for a moment.</p>

<p>The world is constantly trying to remind us that we are at the edge of destruction. But you, the person sitting there, reading a random blog post from this random Guinean guy, yes you. Take it easy for the rest of the day.</p>
			]]>
				</description>
				<pubDate>Sun, 05 Apr 2026 08:00:00 GMT</pubDate>
				<guid>https://idiallo.com/blog/its-not-that-deep?src=feed</guid>
			</item>
		
	</channel>
</rss>