<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0" xmlns:media="http://search.yahoo.com/mrss/"><channel><title><![CDATA[Jakub Rumpel]]></title><description><![CDATA[Software development and other hobbies]]></description><link>https://rumpel.dev/</link><image><url>https://rumpel.dev/favicon.png</url><title>Jakub Rumpel</title><link>https://rumpel.dev/</link></image><generator>Ghost 4.47</generator><lastBuildDate>Wed, 22 Apr 2026 12:45:54 GMT</lastBuildDate><atom:link href="https://rumpel.dev/rss/" rel="self" type="application/rss+xml"/><ttl>60</ttl><item><title><![CDATA[The journey]]></title><description><![CDATA[<p>Lately, I often find myself wondering about the &quot;journey&quot;. &quot;Journey Before Destination&quot;, as Brandon Sanderson wrote. I have to get it out of my head for it to take any form, I guess.</p><p>First of all, who am I on this journey? A software developer. A</p>]]></description><link>https://rumpel.dev/i-suppose/</link><guid isPermaLink="false">662ed679f5650d0538e23f6a</guid><dc:creator><![CDATA[Jakub Rumpel]]></dc:creator><pubDate>Sun, 28 Apr 2024 23:25:02 GMT</pubDate><media:content url="https://images.unsplash.com/photo-1469362102473-8622cfb973cd?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wxMTc3M3wwfDF8c2VhcmNofDQxfHxtb3VudGFpbnN8ZW58MHx8fHwxNzE0MzQ2NzYzfDA&amp;ixlib=rb-4.0.3&amp;q=80&amp;w=2000" medium="image"/><content:encoded><![CDATA[<img src="https://images.unsplash.com/photo-1469362102473-8622cfb973cd?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wxMTc3M3wwfDF8c2VhcmNofDQxfHxtb3VudGFpbnN8ZW58MHx8fHwxNzE0MzQ2NzYzfDA&amp;ixlib=rb-4.0.3&amp;q=80&amp;w=2000" alt="The journey"><p>Lately, I often find myself wondering about the &quot;journey&quot;. &quot;Journey Before Destination&quot;, as Brandon Sanderson wrote. I have to get it out of my head for it to take any form, I guess.</p><p>First of all, who am I on this journey? A software developer. A man who automates. Creator, modifier. That&apos;s why I view myself, at least - as someone whose sole purpose on this world is to adjust parts of it to make life easier for other people. Sometimes it means writing software for banks, sometimes holding the elevator door for someone who wants to get inside. I always said that the whole reason I got for writing software is to make life easier for other people, and it&apos;s still true. I&apos;m just lost on anything between me and this purpose.</p><p>You see, lately I don&apos;t find myself caring about the code I&apos;m paid to write. I have some fun on my side projects, but that&apos;s it. I feel distanced from it, and getting into the flow is increasingly difficult. And it&apos;s not just code either, it&apos;s everything. Cooking, cleaning, changing the towels on the rack of sheets on the bed - It&apos;s all something that needs actual effort, instead of being just &quot;something I do&quot;. I know, it sounds depressive, but bear with me for a minute. </p><p>It all comes to a thought that maybe I&apos;m in too much haste, much like all of this world. For some reason, be it either from Instagram or some Netflix shows, I find myself feeling like I should already be further down the road. Like I should already have more &quot;goals&quot; achieved, whatever they might be. Like I should be &quot;more&quot;, get more, find more. Like some of the destinations should already be behind me. I&apos;ve told my therapist that it&apos;s more about the journey and how I feel along the way, and she asked if I ever actually stop to think about where I am on this way and how I feel in this place. I couldn&apos;t find an answer.</p><p>What does stopping even mean, really? Is it this moment I feel the wind on my face when I step out of my apartment to go to the grocery shop? Is it this minute that I spend on my balcony, coffee in hand, looking at the gray city before returning to three screens and a mountain of tasks and tickets waiting for my attention? Maybe attention is the only thing that this is about, pointing it at something that doesn&apos;t actually wait for it. The world just... is, stays where and what it is. Modified, changed, altered by humans on our every step, still maintains it&apos;s identity as our home and place we can look at, full of air we can breathe and beauty we can observe.</p><p>I suppose that that&apos;s all there is to my mistake of how I spend my life. I convinced myself that I never cared what people want or think of me, and I still find myself chained to their attention and needs at work, university and major parts of life. I don&apos;t find myself looking at trees and flowers, even though there is nothing stopping me from going out and doing just that. There is just too much pressure to keep doing things, which gets transferred into procrastination anyway, because I can&apos;t handle it.</p><p>I&apos;m just too fast and too tired for myself and this world, and yet I still ignore the simple solution of just slowing down and focusing more on my &quot;now&quot;, then plans and wishes of others. </p><p>I suppose there is no real &quot;point&quot; or &quot;end&quot; to this text. I needed to get form something outside of myself, and if it helped you form something for yourself, it&apos;s great. I hope we both now go outside and breath whatever air we can, instead of canning ourselves inside and sighing full of frustration and anger.</p>]]></content:encoded></item><item><title><![CDATA[Adding specific certificate to HttpClient in .NET 6]]></title><description><![CDATA[<p>For the last few days, I was dealing with an issue that wouldn&apos;t let me rest. My job requires me to use smartcard to authorize access to some of the internal services. That&apos;s not a problem when I use a browser like Chrome or Firefox, but</p>]]></description><link>https://rumpel.dev/adding-specific-certificate-to-httpclient-in-net-6/</link><guid isPermaLink="false">630f219cf5650d0538e23ed7</guid><dc:creator><![CDATA[Jakub Rumpel]]></dc:creator><pubDate>Wed, 31 Aug 2022 09:16:20 GMT</pubDate><content:encoded><![CDATA[<p>For the last few days, I was dealing with an issue that wouldn&apos;t let me rest. My job requires me to use smartcard to authorize access to some of the internal services. That&apos;s not a problem when I use a browser like Chrome or Firefox, but becomes an issue when I want to use these services through their API to automate something really boring.</p><p>Of course, the smartcard itself only serves the purpose of authorizing usage of the certificate that&apos;s already installed off of it in my personal certificate store on Windows, but I still have to somehow add it to my request. </p><p>Required steps, then:</p><ol><li>Access the certificate store</li><li>Find my certificate</li><li>Add it to the HttpClient</li><li>Successfully perform a request</li></ol><p>Seems simple enough, so let&apos;s get to it. First, I have to access my personal certificate store:</p><pre><code class="language-csharp">var store = new X509Store(StoreLocation.CurrentUser);
store.Open(OpenFlags.ReadOnly);
</code></pre><p>These two lines first create an object to access a personal store of a current user, and then open it in ReadOnly mode. We don&apos;t need the right to change anything, so ReadOnly will suffice.</p><p>Now, let&apos;s find our certificate. In my example, the easiest way is to use the IssuerName, because there is only one with this specific name. In yours, you might want to find another property that suits you better:</p><pre><code class="language-csharp">var certificate = store.Certificates.First(cert =&gt; cert.IssuerName.Name == &quot;ISSUER_NAME&quot;);
</code></pre><p>This line finds the first certificate with IssuerName that fits our requirements. Now that we have it, let&apos;s add it to the client. </p><p>In order to do that, we first have to create an HttpClientHandler(), which will then be used to create an HttpClient() object. </p><pre><code class="language-csharp">var clientHandler = new HttpClientHandler();
clientHandler.ClientCertificates.Add(certificate);
var client = new HttpClient(clientHandler);
</code></pre><p>As you can see, between creating a Handler and using it to create a Client, we added the certificate to it. Now we don&apos;t have to worry about it anymore, because the Client will use it by default.</p><p>The rest of the work is to perform a request in a standard manner:</p><pre><code class="language-csharp">client.BaseAddress = new Uri(&quot;https://service.service&quot;);
var result = await client.GetAsync(&quot;/endpoint&quot;);</code></pre><p>This request will use our added certificate to authorize itself with a service, and everything should work just fine. Problem is solved, and now I can automate my really boring tasks - and so can you ;)</p>]]></content:encoded></item><item><title><![CDATA[Code stupid things]]></title><description><![CDATA[<p>Today I&#x2019;ve watched a new <a href="https://www.youtube.com/watch?v=ldaescGA1dY&amp;t=835s">video from CodeBullet</a>: Channel that I found when I had a huge phase of watching everything AI - be it teaching a neural network to play a Mario game or drive a simple car... anything like that, and CodeBullet provided me with exactly</p>]]></description><link>https://rumpel.dev/code-stupid-things/</link><guid isPermaLink="false">62a093e6f5650d0538e23ec0</guid><dc:creator><![CDATA[Jakub Rumpel]]></dc:creator><pubDate>Wed, 08 Jun 2022 12:21:23 GMT</pubDate><media:content url="https://images.unsplash.com/photo-1531538606174-0f90ff5dce83?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=MnwxMTc3M3wwfDF8c2VhcmNofDR8fGZ1biUyMGNvZGV8ZW58MHx8fHwxNjU0NjkwODE1&amp;ixlib=rb-1.2.1&amp;q=80&amp;w=2000" medium="image"/><content:encoded><![CDATA[<img src="https://images.unsplash.com/photo-1531538606174-0f90ff5dce83?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=MnwxMTc3M3wwfDF8c2VhcmNofDR8fGZ1biUyMGNvZGV8ZW58MHx8fHwxNjU0NjkwODE1&amp;ixlib=rb-1.2.1&amp;q=80&amp;w=2000" alt="Code stupid things"><p>Today I&#x2019;ve watched a new <a href="https://www.youtube.com/watch?v=ldaescGA1dY&amp;t=835s">video from CodeBullet</a>: Channel that I found when I had a huge phase of watching everything AI - be it teaching a neural network to play a Mario game or drive a simple car... anything like that, and CodeBullet provided me with exactly such a material: simple or not so simple task with an interesting enough narration.</p><p>The video was about creating a simple program to cheat in &#x201C;Clicker Heroes&#x201D; game. While I don&#x2019;t know this game, and didn&#x2019;t want to download it, it reminded me a bit of an old in-browser clicker game called <a href="https://orteil.dashnet.org/cookieclicker/">&#x201C;Cookie Clicker&#x201D;</a>. There was a time when I spent too much time there, so I was happy to notice it&#x2019;s still up and online as of writing this post.</p><h2 id="what-is-this-about-really">What is this about, really?</h2><p>After finding the game again, I realized that I&#x2019;m curious about my ability to code something like this: simple clicker to cheat the game, as a fun project. 3 AM be damned, I took a laptop and started coding. Finding whether I was in a game, clicking a cookie, checking for upgrades and buying them... all of that in a language I didn&#x2019;t touch in a long while: Python.</p><p>Two and a half hours later, and the code - as simple and unpolished as it is - is done and working. Cookies are clicked, upgrades are being bought, and I can watch and smile, as I see my code working without problems.</p><h2 id="and-then-i-remembered">And then I remembered.</h2><p>Coding used to be really fun for me. Such small projects, just to achieve a simple objective, overcome a simple challenge. For the last two and a half years of my professional career, I stopped coding just for fun. Projects like this weren&#x2019;t really in my head, while I had to focus on building my independent life which I&#x2019;ve then just begun and code I was working on at any company I was currently working at.</p><p>My point is, I forgot that I&#x2019;ve got into coding to have fun; To overcome those little challenges, to see my work come to any kind of fruition. Of course, there were other sources of motivation, the biggest of which was my desire to make people&#x2019;s lives easier using what I have learned, but this? This is where it all started. Simple pleasure from fulfilling a simple task using code.</p><h2 id="remember-to-code-small-stupid-things">Remember to code small, stupid things.</h2><p>It&#x2019;s just never boring. There is always something you can do to just... do a thing. Some stupid challenge, like making your computer react to you in some way. Or any kind of automation, like turning off your console at the specified time in case you left it in rest mode. Or anything else that will probably take you less than two hours, but will flood your brain with dopamine. My point is, remember that coding, like any other work, can be used both professionally and just for fun, for the simple pleasure of Doing The Thing. If you can make your life easier while you do that, it&#x2019;s just gravy.</p><p>Just remember to have fun.</p><p>PS. For those curious, you can find the code I wrote <a href="https://github.com/Hanewali/CookieCheater">here</a>. Word of warning: It&#x2019;s not pretty or polished, I&#x2019;m not a daily Python developer. It was just the easiest language to quickly achieve this objective, and I like writing simple scripts of this kind in Python.</p>]]></content:encoded></item><item><title><![CDATA[Git can cause problems with vim-plug!]]></title><description><![CDATA[<p>Or rather, bad configuration can do it.</p><p>See, I&#x2019;ve just spent about an hour trying to figure this out, and for the life of me I couldn&#x2019;t understand, what was happening.</p><p>I&#x2019;ve recently fallen in love with the idea of adding new features to</p>]]></description><link>https://rumpel.dev/git-can-cause-problems-with-vim-plug/</link><guid isPermaLink="false">6287a955f5650d0538e23e6c</guid><dc:creator><![CDATA[Jakub Rumpel]]></dc:creator><pubDate>Fri, 20 May 2022 14:45:10 GMT</pubDate><media:content url="https://images.unsplash.com/photo-1629654291663-b91ad427698f?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=MnwxMTc3M3wwfDF8c2VhcmNofDJ8fGJhc2h8ZW58MHx8fHwxNjUzMDU3OTM1&amp;ixlib=rb-1.2.1&amp;q=80&amp;w=2000" medium="image"/><content:encoded><![CDATA[<img src="https://images.unsplash.com/photo-1629654291663-b91ad427698f?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=MnwxMTc3M3wwfDF8c2VhcmNofDJ8fGJhc2h8ZW58MHx8fHwxNjUzMDU3OTM1&amp;ixlib=rb-1.2.1&amp;q=80&amp;w=2000" alt="Git can cause problems with vim-plug!"><p>Or rather, bad configuration can do it.</p><p>See, I&#x2019;ve just spent about an hour trying to figure this out, and for the life of me I couldn&#x2019;t understand, what was happening.</p><p>I&#x2019;ve recently fallen in love with the idea of adding new features to Vim using plugins. As I have four different machines running Linux in one way or another, I have decided to install the same two plugins (Ale and NerdTree) on all of them. Sounds simple enough, doesn&#x2019;t it? And it was really simple!</p><p>On three out of four machines it worked perfectly. One command to install plug-vim on machine, copy the right section into my .vimrc&#x2026; simple enough, it worked. Right until I tried to install it on my fourth, final and most important machine: Ubuntu in WSL2 on my personal laptop.</p><p>For reasons unknown to me at the time, every time I&#x2019;ve tried to install plugins, I just got these errors:</p><pre><code class="language-bash">Error detected while processing /home/hane/.vim/plugged/nerdtree/plugin/NERD_tree.vim:
line   15:
E492: Not an editor command: ^M
line   16:
E15: Invalid expression: exists(&apos;loaded_nerd_tree&apos;)^M
line  235:
E171: Missing :endif
Error detected while processing /home/hane/.vim/plugged/ale/plugin/ale.vim:
line    4:
E492: Not an editor command: ^M
line    6:
E492: Not an editor command: ^M
line    7:
E15: Invalid expression: exists(&apos;g:loaded_ale_dont_use_this_in_other_plugins_please&apos;)^M
line  353:
E171: Missing :endif
Press ENTER or type command to continue
</code></pre><p>They showed up every time I opened Vim, too, so nothing too pleasant.</p><h2 id="the-culprit-was-good-ol%E2%80%99-git">The culprit was good ol&#x2019; Git.</h2><p>It took me more than an hour to find the right way to google this, and kudos to this specific <a href="https://github.com/vim/vim/issues/6156#issuecomment-1001134641">comment</a> for helping me!</p><p>The fix was simple: Change git configuration and set property core.autocrlf to false.</p><p>One command:</p><pre><code class="language-bash">git config --global core.autocrlf false
</code></pre><p>And after reinstalling plugins once again, all my problems were gone!</p><h2 id="so-what-happened">So what happened?</h2><p>Vim-plug uses git to download plugins. When <strong>core.autocrlf</strong> was set to <strong>true</strong>, it automatically set line endings for every file to CRLF, while Vim, when processing .vim files on Linux, was expecting LF endings. That caused the problem above:</p><pre><code class="language-bash">E492: Not an editor command: ^M
</code></pre><h2 id="but-what-is-an-m-and-what-does-it-have-to-do-with-line-endings">But what is an ^M, and what does it have to do with Line Endings?</h2><p>^M is a CR in CRLF, which stands for Carriage Return. It&#x2019;s a control character used to move a cursor to the beginning of the next line when reaching the end of a current line. As you can probably guess, it was not expected in this case, because only ^@ (Line Feed, LF in CRLF) was expected by Vim and the end of the line.</p><p>So Vim got one more character than expected and wasn&#x2019;t ready to process it, effectively being unable to run installed plugins.</p><p>Of course, I could&#x2019;ve spent much less time on fixing that, if I knew what ^M was beforehand, but hey - We&#x2019;re all learning, right?</p><p>If you encountered this issue too, and this article helped you, please let me know!</p>]]></content:encoded></item><item><title><![CDATA[3 tips to make your SQL Server experience easier]]></title><description><![CDATA[A few tips coming from experience writing SQL]]></description><link>https://rumpel.dev/3-tips-to-make-your-sql-server-experience-easier/</link><guid isPermaLink="false">6282a02ff5650d0538e23e2b</guid><category><![CDATA[sqlserver]]></category><category><![CDATA[sql]]></category><category><![CDATA[databases]]></category><dc:creator><![CDATA[Jakub Rumpel]]></dc:creator><pubDate>Mon, 16 May 2022 19:07:38 GMT</pubDate><media:content url="https://images.unsplash.com/photo-1587620962725-abab7fe55159?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=MnwxMTc3M3wwfDF8c2VhcmNofDR8fGNvZGV8ZW58MHx8fHwxNjUyNzI4MTc3&amp;ixlib=rb-1.2.1&amp;q=80&amp;w=2000" medium="image"/><content:encoded><![CDATA[<img src="https://images.unsplash.com/photo-1587620962725-abab7fe55159?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=MnwxMTc3M3wwfDF8c2VhcmNofDR8fGNvZGV8ZW58MHx8fHwxNjUyNzI4MTc3&amp;ixlib=rb-1.2.1&amp;q=80&amp;w=2000" alt="3 tips to make your SQL Server experience easier"><p>For most of the last two years, My job has been mostly about writing another and another SQL query, be it to check what&apos;s happening with some data, debug a weird bug or develop a stored procedure as a part of a feature I&apos;m working on. During that time, I&apos;ve written dozens of different procedures consisting of multiple queries, even to the point of committing small heresy in the form of two thousand lines monster full of XML deserialization and business validations.</p><p>Bad times.</p><p>But every such experience had left me with some new knowledge to use in future projects, things I could use to further optimize my SQL code or make some debugging easier, so I decided to share them in form of this blog post</p><h2 id="easily-commented-out-conditions">Easily commented out conditions</h2><p>This one is very small and simple, but very useful when I need to write a query with multiple conditions. Let&apos;s take a look at the following example:</p><pre><code class="language-sql">
SELECT
	Id, 
	Name
FROM
	SomeTable
WHERE
	Field1 = &quot;X&quot;
	AND Field2 = &quot;Y&quot;
</code></pre><p>Now, here we already made our life easier by putting an AND keyword on new line, right before the second condition. It&apos;s a good practice when you&apos;re actively working on a query, because if you need to see what kind of result you&apos;ll achieve without the second condition, you can simply comment it out:</p><pre><code class="language-sql">WHERE
	Field1 = &quot;X&quot;
	--AND Field2 = &quot;Y&quot;
</code></pre><p>See? Nice and easy, and in most SQL IDEs, like SSMS or DataGrip, you can comment out a single line with a simple shortcut.</p><p>But what if you want to see what would happen with the second condition, but without the first? If you leave AND keyword on its place, you&apos;ll just create an error, because there will be no condition preceding it:</p><pre><code class="language-sql">--*SQL server won&apos;t let you do this, as there is no working condition before AND!*
WHERE
	--Field1 = &quot;X&quot; 
	AND Field2 = &quot;Y&quot;
</code></pre><p>Of course, you could move AND to the end of the first condition, but then it would trouble you if you need to comment out the second condition again. Or you could comment out AND like this: /<em>AND</em>/ and it would work, too. It&apos;s all fine and dandy, but what if there is another option?</p><pre><code class="language-sql">WHERE 1=1
	AND Field1 = &quot;X&quot;
	AND Field2 = &quot;Y&quot;
</code></pre><p>Looks weird, but it could actually save you a lot of time. That way if you don&apos;t need any condition, you can simply comment it out, without breaking your whole query, which depending on size might be very difficult to find where did the error happened. &#xA0;Adding this simple 1=1 will not affect your qery performance in any significant way, but instead will make it much easier to work on the query &quot;right now&quot;.</p><p>Of course, it&apos;s not something I would leave in a production code, but for the sake of debugging, it can save you some precious seconds or even minutes, and most importantly, it will let you stay &quot;in the flow&quot;, without being bothered by unexpected and irritating errors.</p><h2 id="instant-insert-into-tempdb-table-from-select">Instant insert into TempDB table from SELECT</h2><p>Now, this is something I&apos;ve picked up just recently, but it instantly made my life much easier. Consider following code:</p><pre><code class="language-sql">CREATE TABLE #Sample (Id INT, Name NVARCHAR(100), Description NVARCHAR(500))

INSERT INTO #Sample (Id, Name, Description)
SELECT
	Id, 
	Name,
	Description
FROM
	SampleTable
WHERE
	Condition = true
</code></pre><p>This example is very simple:</p><ol><li>We create a temporal table (which is marked by # character at the beginning of the name)</li><li>We write its columns and their types</li><li>We repeat both table name and columns in INSERT statement</li><li>We fill it with data from SELECT statement</li></ol><p>It still made us write quite a lot of words, and any mistake in data type or in choosing columns in INSERT statement can lead to irritating errors, which could stop you for a long enough time that you&apos;ll lose your focus.</p><p>Instead, you could try this:</p><pre><code class="language-sql">SELECT
	Id,
	Name,
	Description
INTO #Sample
FROM
	SampleTable
WHERE
	Condition = true
</code></pre><p>Yes: I just replaced both CREATE TABLE and INSERT INTO statements with single INTO between SELECT and FROM statements. What does it do? It creates a table with the same column names and types as the ones we just retrieved from the database using our SELECT statement, without writing a lot of unnecessary code, and making it more difficult to make a mistake in the list of columns or risking that one of the columns will have a wrong type.</p><p>Of course, there is a but: If you have to run this command multiple times, it won&apos;t just insert new data into our #Sample table, but instead it will throw an error saying that such a table already exists. We will deal with this in just a second:</p><h2 id="ensuring-that-an-unnecessary-temporal-table-doesnt-already-exist">Ensuring that an unnecessary temporal table doesn&apos;t already exist</h2><p>When we use temporal tables, sometimes we also have to delete them, especially when we are actively developing our query. Of course, it&apos;s less important when we use #table in stored procedure, as it will get dropped when the procedure is finished, and it&apos;s scoped to this procedure, just as our #table will be scoped to our DB session - but if it exists when it shouldn&apos;t, it&apos;s still a problem.</p><p>An obvious choice would be to simply DROP #table at the end of our query, but there is a risk: If for any reason #table doesn&apos;t exist when DROP is called, it will throw an error. Similarly, if for any reason the DROP statement won&apos;t be called (for example, because there was an error before it) next time we run our query we will also run into a problem.</p><p>So what&apos;s the solution?</p><pre><code class="language-sql">IF OBJECT_ID(&apos;tempdb..#app&apos;) IS NOT NULL DROP TABLE #app
</code></pre><p>This single line of code will do two things:</p><ol><li>Check if table #app already exists in tempdb</li><li>If it exists, it will drop it.</li></ol><p>Put this line at the beginning of your SQL script, change the name to whatever you like, and you&apos;re good to go. If a table doesn&apos;t exist yet, nothing will happen, but if it exists before it should, it will be dropped.</p><p>These lines do an excellent next to SELECT INTO statement, as it protects you against unnecessary errors while letting you use this statement easily.</p><p>For now, this will be all. If I remember (or find out) any other tips that can make my life a little easier, this post will have a part 2.</p><h2 id="summary">Summary</h2><ul><li>You can make debugging SQL queries much simpler by adding &quot;fake&quot; 1=1 condition, and putting every &quot;real&quot; condition after AND or OR keywords.</li><li>Creating and filling tempdb tables can be very simple in SQL Server</li><li>There are a lot of possible errors while operating on tempdb tables, but you can avoid them if you remember that they are there</li></ul><p>But what about You? Do You have any interesting tips or tricks you use in SQL Server that helps you get through the day? If you do, please share them in comments, I&apos;d love to learn something new to use in my day-to-day SQL work.</p>]]></content:encoded></item></channel></rss>