The Curious Engineer

All blogs / C# / .NET

Founder's blog

jitbit.com/alexblog

Blog - Jitbit Software

C# / .NETSoftware / engineering practiceWeb developmentPerformance / optimization

Posts
87 from 10 Aug 2007 to 24 Aug 2026
Posting
monthly (6 in the last year)
Kind
company blog
Feed
https://www.jitbit.com/alexblog/rss/

2026 6

  1. Coding was never the bottleneck
  2. Explaining AI agents is like explaining 3D printers
  3. Cancelling Cursor
  4. AI is a feature, not a product
  5. Removing files from Mercurial history Another post for developers reading this blog. If you think these posts do not belong here, please leave a comment, and I'll consider moving my development articles to a separate blog. Sometimes you need to remove files from Mercurial completely, even from the h
  6. I asked Claude Code to remove Jquery. It failed miserably.

2025 6

  1. Please stop using Any() for C# Lists and Arrays When it comes to performance in C#, even small inefficiencies can add up in large codebases. One common example is the use of the LINQ method .Any() on arrays and lists instead of directly checking .Length or .Count. While .Any() improves readability i
  2. Don't Just Ban IPs - Send the Damn Abuse Report
  3. Will AI destroy B2B SaaS?
  4. Zen Browser review and benchmark vs Chrome, Brave, Firefox and Safari
  5. No, Wall Street, DeepSeek is not "far superior"
  6. Fastest way to generate URLs in an ASP.NET MVC app Almost every "optimize ASP.NET for best speed" tutorial out there suggests optimizing the URL-generation process in some way. You know, getting rid of those Url.Action("Action", "Controller") calls that are expression-tree based, replacing them with

2024 3

  1. I really wanted to like Tailwind CSS Nobody: Absolutely no one: Me: Here's what I think about Tailwind CSS!
  2. I'm finally dumping Visual Studio
  3. Clearing Nginx Proxy Cache for Wildcard URLs: A DIY Guide Sometimes you find yourself in a situation where you need to clear the Nginx proxy cache for a specific set of URLs, particularly those following a wildcard pattern like www.website.com/folder/*. Surprisingly, Nginx, in its standard offering,

2023 4

  1. The state of modern Front End Let's talk about front-end. There'll be a lot of swearing, I'm sorry. About once every six months another blogger bursts into HackerNews/Twitter trends, saying - hey, enough of that JavaScript bloat, let's all use modern HTML controls!
  2. ChatGPT won't "kill Google" because Google is already dead I have just conducted an experiment where I forced myself to use Bing's new chat-based search for almost a week, and spoiler alert: I loved it. But I'll get into that later.
  3. ASP.NET Image Resizing - out of memory problem Another post for ASP.NET developers reading this blog. If you think these posts do not belong here, please leave a comment, and I'll consider moving my development articles to a separate blog.Any ASP.NET developer who tries to create "on-the-fly" image-
  4. WYSIWYG BBCode editor (free) If you follow us at the Jitbit's Twitter account, you might already know that a couple of days ago I was searching for a WYSIWYG BBCode editor. I never found any. So we decided to build our own. Free and open-sourced.

2022 2

  1. How to Hide Tethering from Your Mobile Operator TLDR: Use a secure VPN to prevent DPI On your laptop, change packet TTL to 65 (iOS default 64 plus one).
  2. bottlenecks

2021 8

  1. Target="_blank" - the most underestimated vulnerability ever People using target='_blank' links usually have no idea about this curious fact:
  2. Speeding up a huge multi-tenant SaaS database Here's a little story of how we sped up our SaaS backend with a one-liner magic silver bullet
  3. System.Drawing vs SkiaSharp benchmark This is a ridiculously short post for .NET devs looking to compare System.Drawing with SkiaSharp (the fastest open-source alternative).
  4. Clear/Flush all OutputCache in ASP.NET If you're using OutputCache directive like this: [OutputCache(Duration = 600, VaryByParam = "*", Location = OutputCacheLocation.Server)] Or storing custom data in HttpRuntime.Cache like this HttpRuntime.Cache.Add(...) You probably caught yourself wondering
  5. What selling to Enterprises REALLY looks like BIGTECH: Hello, we would like to buy an on-premise version of your software. ME: Oh! Cool, here is the payment link
  6. Generating product ideas - mixing vertical and horizontal Generating product ideas via meshing or "multiplying" two existing products into one - is a popular creativity exercise. They even teach this at Stanford, at the product innovation course. But as with all techniques - it's tricky.
  7. Debugging websites on Smart TVs So when MS announced IE11 is about to die - I thought my suffering was over. Boy was I wrong.
  8. We're off Google Analytics - here are the alternatives we tried I've been looking for a Google Analytics replacement since forever. For three reasons mostly:

2020 12

  1. A Quick Note on Being Self-funded I'm probably biased but I've always been a strong opponent of the VC-backed model and the "Silicon Valley" way of doing things - when a big "exit" is the ultimate goal everyone aims at.
  2. Building and minifying JS, CSS, LESS, SASS in Visual Studio with no extensions Developing an ASP.NET app (Core or Framework/MVC) still requires working with external web tools sometimes - for example, when you want to use advanced web-dev stuff like SASS/LESS, PostCSS, or modern frameworks like Tail
  3. Investigating CPU spikes for ASP.NET on Windows Ever found yourself looking at the w3wp.exe process eating 80% CPU and wondering "what the heck is ASP.NET (Core) doing"?
  4. How long do you think this code will run? We have just spent the last 24 hours fixing a nasty bug in production.
  5. things we do wrong
  6. Back to PC after 14 years on a MacBook I've been a happy MacBook user for almost 14 years. Tried all of them - from a tiny 11" MacBook Air to the enormous 17" Pro - and in 2014 I finally ended up with the 15-inch retina model. The best laptop I ever owned. Even if you need to occasionally run Window
  7. Coding is procrastination for founders When you have a small startup, you don't have enough hands for everything. Neither you nor the team. Not only that - your brain also tries to avoid tedious tasks, preferring to engage in fun and interesting ones instead. The benefit of being overwhelmed is ther
  8. How To Bend The Universe I know a guy who's grandfather has bent the universe once
  9. How to switch to remote in 1 day Most remote work guides I see during these days of COVID-19, are all about optimizing for remote work in a remote company where everyone will keep working remotely forever. I haven't yet seen any realistic, simple, unsexy and "down to earth" guides on how to urgently
  10. Why Managers Make more Money than Engineers Programmers often wonder, why executives make more money than developers. How come "John the manager" gets paid more than me, who's doing all the work?!
  11. C# Ternary Operator with no "Else" Here's a little C# hack I'd like to share, might be really useful to other devs too since it's a very common pain in all languages, not just .NET.
  12. WebClient Async (!) with Timeout The .NET Framework's built-in WebClient class does not have a built-in timeout feature.

2019 13

  1. Tricking idlers into becoming CS-badasses Ages ago, when I was still studying computer science back in Russia, me and all the other "future engineers" in my class were wasting hours and hours playing "Quake I" deathmatch over the network in the computer lab (instead of actually doing the lab work).
  2. Huge metric that Google Analytics will never show Google Analytics is a fine product. It's nice, free, easy-to-install and ready-to-use right out of the box, while at the same time offering advanced configuration options and data-mining opportunities to those who want it.
  3. Invalidating ASP.NET Forms Authentication tickets server-side Sometimes you need to "log out other user sessions". To prevent cookie replay attacks or - a very common use case - log out other sessions when a user changes their password. ASP.NET does not have a built-in way of doing this, but there's
  4. CloudFlare, SEO and building my own caching proxy with Nginx TL;DR I spent the last month testing how CloudFlare affects my organic traffic by turning it off and on again™ and measuring the ranking changes. Looks like CF hurts SEO. So we've built our own caching proxy with blackjack and hookers AWS
  5. If Arabs read right-to-left, do they see "700" as "007"? This post has nothing to do with tech nor startups. Today, while adding proper "right-to-left" support to our app UI (for Hebrew and Arabic languages) I got a little carried away and found myself discovering a lot about Aramaic languages and a
  6. Returning a Zip File from ASP.NET MVC Actions - in Pure .NET If you search for "generate zip in ASP.NET/C#" you get tons of blog posts and StackOverflow answers suggesting DotNetZip, SharpZipLib and other 3rd party archiving libraries. And up until now that was the only solution - all because .NET h
  7. CSS: always use transparent colors for your shadows I see a lot of websites and apps using "box-shadow" like this box-shadow: 0px 0px 20px 5px #ddd. Which literally means "lets have a #ddd-colored shadow, with zero offset, 5 pixels wide and 20 pixels blurred". Which is perfectly fine, for the most p
  8. ASP.NET MVC: Allowing Html for Particular Action Parameters Sometimes you need to allow users to post HTML to the server. And, by default, this is the error you're going to get: A potentially dangerous Request.Form value was detected from the client
  9. Facebook is terrifying Remember that last time you posted a picture on Facebook and it automatically offered to tag other people on the photo? Nothing unusual. You've tagged these people before, right? You've trained the machine learning face-recognition algorithm. And now Facebook can spot where th
  10. Tricks to speed up your AWS EC2 Windows server I/O Say you have a pretty general Windows server, that runs Microsoft IIS (webserver), MS SQL (database engine) and probably some basic stuff, like SMTP, SSH etc. etc. Here are some I/O performance hacks I came up with when trying to optimize our Amazon
  11. The history of a radio-button A radio-button, AKA "an option button" is a UI element known to every web/mobile/desktop developer: it allows choosing only one out of a set of options.
  12. Thoughts on Tech Stacks for Bootstrapped Startups So you're starting a bootstrapped web-based business and you're deciding on the tech stack. After running a software startup with zero funding for 13 years, here's what I have to say about this.
  13. The REAL reasons to be concerned about AI Everyone's being paranoid about AI these days. And the less people are familiar with the subject, the more concerned they are. Even some of my tech friends, even - believe it or not - software engineers, the ones have a very vague idea of how AI/ML works, ar

2018 1

  1. CPU usage stats after patching for Meltdown The following chart shows the impact on CPU usage after applying the Meltdown patch.

2017 2

  1. Speed up your cloud-based SQL Server by 200% for free For those of you who run SQL Server on cloud VMs (AWS or Azure), here's an awesome performance hack I have recently discovered. It's called "buffer pool extensions" and it's been introduced in SQL Server 2014 and later ("standard" edition or high
  2. Your SaaS app is an attack target I'm really pissed. I just spent a week fighting some spam bots that were registering fake trial accounts in my app. Tens of thousands or trial signups.

2016 2

  1. Emotions aside, what’s wrong with the new MacBookPro I like Apple. But I guess this is going to be the first time in 10 years I'm not buying a new MacBook Pro. Not because of the USB-C annoyance everyone's complaining about (after all, you have to lean into the future, quoting Jeff Bezos, and to be
  2. SaaS startups - Beware of Spammers! TL;DR if your SaaS app has some sort of email-sending functionality in it - beware of spammers who will register trial accounts massively and use it to send spam.

2015 1

  1. How I Improved My SEO Rankings In Just 30 Minutes TL;DR: You can use a CDN service (free, no technical knowledge required) to minimize your TTFB - "Time to First Byte" - which turns out to be an important SEO metric.

2014 1

  1. Moving our site to HTTPS and the early SEO-effects of it About a week ago we have moved our site to HTTPS. I always wanted to, and now that Google has made it a ranking signal - we finally ran out of excuses. Here's what we did:

2013 1

  1. JavaScript: injecting extra info to copy-pasted text You've seen this many times - when you copy and paste text from a website - a reference link to the source appears at the bottom, sometimes along with a copyright notice. Something like "read more at www.site.com". Some SEOs say this can be good s

2012 4

  1. Non-obvious time-management hacks Have fun!This is my favorite time management principle. Even though it's hardly about saving time per se, but still... Don't be afraid to have fun! It's OK to have fun. Don't feel guilty for having it. Having fun is not losing time. So go ahead, grab your snowboard
  2. Visual Studio & ReSharper performance tips Another post for ASP.NET/C# developers reading this blog. If you think these posts do not belong here, please leave a comment, and I'll consider moving my development articles to a separate blog.Everyone knows Visual Studio 2010 can be slow. Even on my lapt
  3. Once there was a search engine This is a sad story of an Internet giant. Started by two guys in a garage it eventually grew to control over 80% of the Internet search market and practically owned the whole Internet.It was innovative and agile. The stock market loved it - at times the company stock d
  4. Why Developers Hate Antiviruses I hate antivirus software. I really do. Like almost every desktop software developer.And the reasons are:

2011 15

  1. Trying Rails & Mac, confessions of a .NET developer I run Windows on my MacBook.Windows - because I'm a .NET developer and our startup is mainly Microsoft-based. And, to be honest, I like Windows 7
  2. Boosting Creativity Tip #1 "Ideas don't come from watching television" Seth Godin.Stop watching. Start reading books.
  3. Go Get A Cofounder [Mistakes I Made #5] This is the 5th post in the "Mistakes I made" series, where I share the "donts" of my startup experience.I'll start from afar. My website has a number of pricing tables and I thought the tables look just fine. Until one morning I realized that they're a comple
  4. "90% of your users are idiots" I just overheard this conversation between two developers at a co-working site:"I plan creating a prototype for my new XXXX application, whatcha think it should be - a web-app, or a desktop app?"
  5. What If Drivers Were Hired Like Programmers
  6. Rootkit on a brand new Toshiba Laptop Sorry for the offtopic, this post has nothing to do with startups, web-development or entrepreneurship, but I felt I should still write thisI've just discovered a built-in rootkit in my wife's brand new Toshiba laptop. A non-removable malicious software applicat
  7. Why I hate IE6. And why I miss IE6 I'm getting kinda tired of cross-browser development. Yes, I know... The more the better, competition rocks, rendering standards are great, FireFox is cool, Chrome is awesome, and the evil MSIE monopoly is sacrilege.
  8. Chinese hard drive
  9. ASP.NET Session: Caching Expiring Values Another post for ASP.NET/C# developers reading this blog. If you think these posts do not belong here, please leave a comment, and I'll consider moving my development articles to a separate blog.Pretty often I need to cache something in the Session object, an
  10. Thank God Japan is well prepared This could sound outrageous. This could sound awful and even offensive. Please forgive me for saying this. But.
  11. KeyFreeze - free tool that locks keyboard and mouse I have kids so I know what it's like, when they're having a Skype-talk with their grandparents - they keep accidentally pressing buttons, moving the mouse etc etc.
  12. Macro Recorder is dead. Long live Macro Recorder! It's been a while since I announced anything "official" on this blog, but this announcement is worth mentioning here.
  13. Eat Your Own Dog Food [Mistakes I made #4] This is the forth post in the "Mistakes I made" series, where I share the "donts" of my startup experience.
  14. Email Disclaimers and the Environment Today I got this short email message that contained 5-6 words and a huge disclaimer below it:
  15. Quitting Your Fulltime Job [Mistakes I made #3] This is the third post in the "Mistakes I made" series, where I share the "donts" of my startup experience.The biggest mistake I ever made in my life as an entrepreneur was - not quitting my fulltime job in time. Even after Jitbit Software was making a

2010 2

  1. ASP.NET Repeater Alternative Item Markup Optimization Another post for ASP.NET/SQL developers reading this blog. If you think these posts do not belong here, please leave a comment, and I'll consider moving my development articles to a separate blog.
  2. How Gaming Affects Your Productivity and Why Is It Awesome Anyway A friend of mine, who's also a geek and "digital entrepreneur", has described himself as a "PC-gaming junkie" and asked me to write a post on the "how gaming affects productivity in a negative way" topic.

2009 1

  1. Simulating "jobs" in MS SQL Express Another post for ASP.NET developers reading this blog. If you think these posts do not belong here, please leave a comment, and I'll consider moving my development articles to a separate blog.As you might know MS SQL Server Express Edition does not include the SQL

2008 1

  1. Email Marketing vs. Spam - what's the difference? What's the difference between spam and email marketing?

2007 2

  1. SEO friendly URLs with ASP.NET Search engines like human-readable URLs with keywords in it, and hesitate to respect messy URLs with a lot of query-string parameters. So, to make our ASP.NET database-driven website SEO-friendly we have to get rid of our complex URLs.
  2. Macro Recorder: new timing architecture Here is another post in the series of "the making of" posts where I speak a bit about what we're doing on the next versions of our products.