<?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:cc="http://cyber.law.harvard.edu/rss/creativeCommonsRssModule.html">
    <channel>
        <title><![CDATA[Stories by Tomek Sułkowski on Medium]]></title>
        <description><![CDATA[Stories by Tomek Sułkowski on Medium]]></description>
        <link>https://medium.com/@tomsu?source=rss-c17c5e2267f6------2</link>
        <image>
            <url>https://cdn-images-1.medium.com/fit/c/150/150/1*FWYiVGkpfF_Un016GX3tHw.png</url>
            <title>Stories by Tomek Sułkowski on Medium</title>
            <link>https://medium.com/@tomsu?source=rss-c17c5e2267f6------2</link>
        </image>
        <generator>Medium</generator>
        <lastBuildDate>Sat, 14 Nov 2026 17:54:38 GMT</lastBuildDate>
        <atom:link href="https://medium.com/@tomsu/feed" rel="self" type="application/rss+xml"/>
        <webMaster><![CDATA[yourfriends@medium.com]]></webMaster>
        <atom:link href="http://medium.superfeedr.com/" rel="hub"/>
        <item>
            <title><![CDATA[8 things I did right in 2018]]></title>
            <link>https://medium.com/@tomsu/8-things-i-did-right-in-2018-1e0e4dac5ef1?source=rss-c17c5e2267f6------2</link>
            <guid isPermaLink="false">https://medium.com/p/1e0e4dac5ef1</guid>
            <category><![CDATA[life-lessons]]></category>
            <category><![CDATA[self-improvement]]></category>
            <category><![CDATA[career-advice]]></category>
            <category><![CDATA[programming]]></category>
            <category><![CDATA[twitter]]></category>
            <dc:creator><![CDATA[Tomek Sułkowski]]></dc:creator>
            <pubDate>Mon, 31 Dec 2018 15:12:29 GMT</pubDate>
            <atom:updated>2018-12-31T15:23:28.810Z</atom:updated>
            <content:encoded><![CDATA[<figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*GJpjIDyD_GQjV-syfri3IA.png" /><figcaption>Photo by <a href="https://unsplash.com/photos/NczMOp6fiag?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText">Steven VanDesande Jr</a> on <a href="https://unsplash.com/?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText">Unsplash</a></figcaption></figure><h4>to push my engineering career forward and improve my overall wellbeing</h4><p>This year ends up being a turning point for me. For the past couple of years I’ve been working like crazy… but not always in the most smart or effective way, whereas recently I have managed to implement several things from what I’ve learn before in a better way.</p><p>So if this article comes across as a pat on the back… well, it may be so, a little bit. I believe it is worthwhile to be grateful to other people and, yes, to yourself too. Also it’s not like I don’t have any regrets. Basically any point on the following list may be reworded as: “<em>I regret that I haven’t done [ABC] earlier</em>”. There is also a point on that near the end.</p><blockquote>But most importantly I’m writing this in hope that at least one or two of these points will resonate with you and inspire you, or help you realize that you did couple of things in 2018 right too!</blockquote><h4>1. Left a well paying project (for a good reason)</h4><p>For quite a long time I have been working on a project that, I must admit, paid distinctly more than any job I had had before. It was frustrating though. And I don’t mean it in a <em>“we’ve had some ups and downs”</em> fashion. It may have <em>started</em> as that but after a while time it was 95% bad. I felt like I wasn’t making <em>any</em> progress, I was doubting myself and… resenting programming altogether.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/400/1*YmVuOdleLOpz_CNdm_HbFA.gif" /></figure><p>Thankfully, I had several outside signals that it’s not necessarily me. More likely it’s that me and the project are just a bad fit. It’s extremely important to have some kind of support, both in your personal, and <em>in professional life too</em>.</p><p>I decided to leave. <em>How</em> I did that was another new thing for me.</p><h4>2. I did it assertively</h4><p>In over a decade of my professional career I had several jobs. Most of them I landed in a pretty passive way:</p><p>I’d work in a quite good job. Then, after a while, a significantly better offer would appear, usually presented to me by a headhunter. I’d go for it but… always having this thought in my mind: <em>man, if this more or less random offer is this good, I could have started to look for interesting companies myself earlier and have much more choices by now</em>.</p><p>Well, this year I finally did it. Not only have I decided to be the one who <strong>initiates</strong> the process, but I also went one step further and <em>first </em>informed my<em> </em>employer that I’m leaving and only <em>then</em> started looking. (Of course not everyone can afford such decision, but I do speak from a perspective of a seasoned engineer working in a popular technology).</p><p>What it allowed me to do was, amongst others, to simply post this tweet:</p><h3>Tomek Sułkowski on Twitter</h3><p>Please help me find work: 🅰️ Angular 🧙‍♂️ Senior level 🏖️ Remote ⏱️ 20-40h/week About me: 🎓 IT Trainer (&amp;gt;2000 hrs) 🗣️ Conference speaker 📅 Community organiser 🚀 Willing to travel 🎨 Creative skills ✍️ Loves sharing knowledge Retweets appreciated ❤️ DMs open 📨</p><p>Twitter is an amazing community and, in my opinion, it’s a much better chance to find a cool, progressive projects here than on, say, LinkedIn.</p><p>In the end it did lead to some great conversations and contacts, and one of the results was that I am now a part of <a href="https://stackblitz.com/">StackBlitz</a> — the project I’ve been admiring for a really long time. I don’t believe it would’ve happen otherwise.</p><h4>3. Didn’t buy the best iPhone</h4><blockquote><strong>Disclaimer: </strong>Ok, I know, this is such a first world issue… Treat it as an example and distinctive illustration of a more general issue, I think it can be scaled down or up, depending on your circumstances.</blockquote><p>This year my old iPhone just started dying. I had it for over 3 years too, which, for a geek’s smartphone, is a fairly long time. I was considering what to get next and I had a means to buy “the latest and greatest” — which at the time was the $1000 iPhone X.</p><p>Thousand bucks gave me a pause though. I started considering <strong>the actual improvement</strong> that it would bring to the the quality of my life.</p><p>In the end I bought the cheapest new phone available (iPhone SE)…</p><p>… and a frickin’ <strong>quality digital piano</strong> — for the same total.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*6FIEOk9dBahcT1DCk2Ta0Q.png" /><figcaption>Each side is worth $1000. Which one makes better sense?</figcaption></figure><p>I use it to relax after a day in code and to have fun times playing with my son.<br>And my new phone works fine.</p><h4>4. Started <em>using</em> Twitter</h4><p>I’ve created my Twitter account in 2008 but until this year I haven’t posted anything, haven’t read it and, frankly, haven’t understood it much either. I was kinda getting a feeling that it’s just a messy soup of humans and bots shouting at each other. <em>Ok, in a part I was right ;-)</em> but I have also found that if you choose carefully who to follow it becomes a valuable resource of first-hand knowledge.</p><p>You get <em>the latest</em> from the libraries’ authors, in that nicely condensed form, so it’s a pretty light way of staying up to date.</p><p>You can also engage in direct conversations. From my experience you have much better chance of getting a response here than by any other digital means.</p><p>And finally, if you have something to share, it’s the easiest place to start. Doesn’t require much involvement or production values. Just write your message and hit “<em>Tweet</em>”. Additional value is that often someone will take your idea and improve upon it — so you’ll end up learning even more:</p><h3>بهنام محمدی on Twitter</h3><p>@sulco this code is great. but i think this code need AbortController for abort fetch request. e.g:</p><p>In my case, at the beginning of the year, with just a single digit of Twitter followers, I decided to work on opportunities to spread my programming knowledge to more people — so I started to tweet “dev tips” every couple of days. Today there are <a href="https://twitter.com/sulco">more than 2100</a> people who seem to like the content I’m putting out there. I am extremely grateful for that, since it helped me to reevaluate my role in the community, combat my <strong><em>strong</em></strong> imposter syndrome (ongoing battle btw. if anyone’s interested) and even find a job (<em>vide</em> point 2.).</p><p>And if you think you don’t have anything valuable to share, see the next point.</p><h4>5. Kept the ideas list</h4><p>Almost every self-help book and even more articles tell us about the importance of writing lists. In my experience this is most useful in 2 areas:</p><ul><li>groceries</li><li>content creation ideas</li></ul><p>This year I finally went over that threshold of having a big enough need and finding an easy enough tool to keep it.</p><p>Often, during the programming workshops I lead, or when discussing something with a colleague I realize that the thing we’ve just been talking about is a great idea for an article or a tweet. <strong>I write it down <em>immediately</em>.</strong> Yes, even during a workshop: one or two words is often enough for it to don’t slip your mind.</p><p>For that reason I needed something that is extremely simple and always available, no matter the device and internet connection. Would be nice if it could store images and formatted source code. A pleasantly looking UI also wouldn’t hurt. What fit all these requirements for me is <a href="https://bear.app/">Bear</a> (if you’re looking for recommendation).</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*qMgo6i8rGUcTaDeqWjZXig.png" /><figcaption>Some of my notes in the Bear app.</figcaption></figure><p>At this point in time I have a backlog of more than 60 ideas for dev-tip-tweets and quite a few for blog articles as well. A lot of them are… not that good, but some are pretty cool — and that’s subjective anyway. The important thing is that now, whenever I have a moment to put something online, I just open these lists and pick and idea that I feel like working with.</p><h4>6. Went ahead with a cold shower experiment</h4><p>Ok, this one is pretty random.</p><p>One sweltering August day my wife told me about some couple doing an experiment that involved taking cold showers for a whole month to see if that decreases sweating. Or something — I didn’t really follow that story. I decided to try that myself though.</p><p><em>[ No illustration for this section, sorry </em>🥶<em>]</em></p><p>To be honest, I never really got used to the icy cold, but… what has surprised me is that I couldn’t get myself to stop too. Finally after 2 months when I got a stomach flu (high fever and such) I had to take a break and didn’t go back.</p><p>But what I got from it was a new conviction that I can actually easily handle much more discomfort that I’d have given myself credit before, and it’s worth exploring in more areas of my life — the ones that could improve it. Maybe smarter diet? Some healthy habits?</p><h4>7. Took the family on the road and to a conference talk</h4><p>For the past 4 years I’ve been travelling<em> a lot </em>(~2 times a month) doing workshops and talking on conferences &amp; meetups. I was getting fed up with the realization that all that my kids, who are 4 and 6, see their dad doing is just me sitting in front of screen reading colorful letters. Also, I was just missing them.</p><p>So this year I took my family to couple of my work trips so we could explore new cities together and have an adventure. They also went to one of the conferences to see their “old man” giving a talk— which somehow was double nerve wracking for me 😅</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*8BWuXTWv6RZfE95uu5LwcQ.jpeg" /><figcaption>Me &amp; my 2 rocking kids (+ <a href="https://twitter.com/jsFreddie">jsFreddie</a> in the background) at the <a href="https://js-poland.pl/">js-poland.pl</a> stage</figcaption></figure><p>In any case it was definitely a great bonding experience.</p><h4>8. Started — and finished — an advent calendar project</h4><p>With everything going on in 2018 — the regular tweets, new jobs, trainings &amp; conferences, I stopped having time for the blog.</p><p>And don’t get me wrong: some things have to end to make place for others, and some things just don’t work out. But I feel that my blog isn’t one of those things. I knew there is a value there, I just lost the flow.</p><p>To get back on the horse I decided to put some condensed effort into it and gain a momentum that would allow me to ease up into a steady pace of writing in 2019.</p><p>Also, I had a pretty huge backlog of tips related to Chrome DevTools.</p><p>That’s how the idea of <a href="https://medium.com/@tomsu/devtools-tips-day-1-the-console-dollars-3aa0d93e923c">DevTools Advent Calendar</a> was born: for <strong>every day </strong>between December 1st and 24th I was publishing one new article related to this great set of tools.</p><p>I won’t lie: after few fist days it was already difficult to keep up. But in the end it made me improve my skills in preparing visuals well and quickly (several people asked me about it, so I’ll do a write-up of my setup soon).</p><p>It also made me learn the hard way that given a clear objective I still have 1–2 hours in my busy day to do… something. Something constructive. <br>I’ll definitely have a use for that newly gained confidence in 2019!</p><h4>Epilogue</h4><p>I hope you’ve found a couple of ideas, inspirations or maybe a reflection of your own experiences in this random set of .</p><p>As said before, I don’t regret <em>doing</em> anything specifically… <strong>but</strong> on the other hand, I do have several things that I wish I had started doing even well before 2018.</p><p>Therefore the next article that I intend to put here will deal with what are my ideas about 2019. Yes, that’s right, I have a resolution list and it so happens to come together around the time of new year. ¯\_(ツ)_/¯</p><p>As always, <strong>if you’ve liked this article</strong>, <strong>please:</strong></p><p><strong>→ smash that👏 button</strong> below️ so more people can see this<br><strong>→ </strong><a href="https://twitter.com/sulco"><strong>follow me </strong>on Twitter (@sulco)</a> so you won’t miss future posts:</p><p><a href="https://twitter.com/sulco">Tomek Sułkowski (@sulco) | Twitter</a></p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=1e0e4dac5ef1" width="1" height="1" alt="">]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[DevTools tips — day 24: the last day]]></title>
            <link>https://medium.com/@tomsu/devtools-tips-day-24-the-last-day-75f019d2a5e1?source=rss-c17c5e2267f6------2</link>
            <guid isPermaLink="false">https://medium.com/p/75f019d2a5e1</guid>
            <category><![CDATA[front-end-development]]></category>
            <category><![CDATA[frontend]]></category>
            <category><![CDATA[development]]></category>
            <category><![CDATA[javascript]]></category>
            <category><![CDATA[chrome]]></category>
            <dc:creator><![CDATA[Tomek Sułkowski]]></dc:creator>
            <pubDate>Mon, 24 Dec 2018 22:57:59 GMT</pubDate>
            <atom:updated>2018-12-24T22:57:59.554Z</atom:updated>
            <content:encoded><![CDATA[<h3>DevTools tips — day 24: the last day</h3><h4>part of the “Advent calendar for front-end developers” series</h4><p><em>Over the 24 days leading to the holidays I am publishing short articles with tips on how to use DevTools in more performant and fun way. </em><a href="https://medium.com/@tomsu/devtools-tips-day-23-coverage-and-changes-1b756d07ed1c"><em>Yesterday</em></a><em> we’ve talked about code coverage and changes panels and today…</em></p><p>It’s the last day of the DevTools advent calendar! It went so quick! Let’s do a couple more random tips, shall we?</p><h3>67. Use console.log in callback directly</h3><p>Often I find myself in a situation where I’m not entirely sure what gets passed into a callback function. In such case I add a console.log inside to check that.</p><p>It can be done in two ways though: either use console.log inside a callback function or<strong> use </strong><strong>console.log as the callback</strong>. It’s not only less typing but also it may be that the callback receives more than 1 argument which you could miss in the fist solution:</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*Egy-zi22IAXy7KbBgCGDGw.png" /></figure><h3>68. Find in elements, logs, sources &amp; network</h3><p>Each of the first 4 main DevTools panels supports [ctrl]+[f] shortcut which you can use to find pieces of information using relevant ways of querying:</p><ul><li>in the <em>Elements </em>panel — by a string, selector or XPath</li><li>and in the <em>Console</em>, <em>Network</em> and <em>Sources</em> panels — by strings, optionally case sensitive or treated as regular expressions</li></ul><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*iCesc4YM1bEcvVvJn6y1kQ.png" /></figure><h3>69. Use live expressions</h3><p>2 months ago DevTools introduced a pretty nifty addition to the <em>Console </em>panel, a tool called <em>Live expression</em>. Just press the eye symbol and you can define any JavaScript expression there. It will be constantly updated so the result of that expression will be always, well, live :-)</p><p>You can define several of those at the same time:</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*2mdMiw0GpPj1y0DVIOfmJw.gif" /></figure><h3>70. Stay up to date</h3><p>If I could summarise these <em>24 days of tips</em> in one sentence it would read something like:</p><blockquote>“DevTools is a powerful software that’s easy to underestimate. It has a lot of hidden features that we often don’t even suspect we need.”</blockquote><p>Ok, that’s two sentences. Anyways, it can be overwhelming to think how many tools are the part of this suite. And to keep track of new ones constantly being added!</p><h4><strong>70.1. Google Chrome Developers</strong></h4><p>I highly recommend subscribing to the <strong>Google Chrome Developers </strong>YouTube channel where new things are being demoed as they appear in Chrome. Not only that but you can go there to find discussions on best practices, evolution of JavaScript etc, etc. A lot of valuable content for any front end developer.</p><p><a href="https://www.youtube.com/channel/UCnUYZLuoy1rq1aVMwx4aTzw"></a></p><h4>70.2. Developers.google.com</h4><p>When I was working on this articles series I did keep a backlog of favourite features and techniques, but other than that I was also heavily browsing through the official <strong>Google Developers </strong>website which allows you to look informations about specific updates (“By Year”) or technologies (“By Tag”), like this one, about recently released Chrome 71:</p><p><a href="https://developers.google.com/web/updates/2018/12/nic71">New in Chrome 71 | Web | Google Developers</a></p><h4>70.3. This isn’t over</h4><p>And finally, even though the “Advent Calendar”<em> is</em> over, I haven’t run out of that backlog of tips! Not by far.</p><p>I definitely won’t be publishing it every day, but there’s no way that the tips would stop — I’m simply too excited about this multitude of possibilities we have to make our work easier and more fun :-)</p><p>I will keep publishing these here on Medium, on my Twitter account, and soon also on YouTube (yeah, gifs <em>are </em>kinda limiting<em> </em>😅)</p><p>So, if you’re into JavaScript / TypeScript / CSS / React / Angular / Chrome — let’s keep in touch! Follow me on here or/and on <a href="https://twitter.com/sulco">Twitter</a>. And finally…</p><p><strong><em>Merry Christmas &amp; Happy Holidays to you all!</em></strong></p><p><a href="https://twitter.com/sulco">Tomek Sułkowski (@sulco) | Twitter</a></p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=75f019d2a5e1" width="1" height="1" alt="">]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[DevTools tips — day 23: coverage and changes]]></title>
            <link>https://medium.com/@tomsu/devtools-tips-day-23-coverage-and-changes-1b756d07ed1c?source=rss-c17c5e2267f6------2</link>
            <guid isPermaLink="false">https://medium.com/p/1b756d07ed1c</guid>
            <category><![CDATA[development]]></category>
            <category><![CDATA[front-end-development]]></category>
            <category><![CDATA[frontend]]></category>
            <category><![CDATA[chrome]]></category>
            <category><![CDATA[javascript]]></category>
            <dc:creator><![CDATA[Tomek Sułkowski]]></dc:creator>
            <pubDate>Sun, 23 Dec 2018 15:53:14 GMT</pubDate>
            <atom:updated>2018-12-26T21:51:15.424Z</atom:updated>
            <content:encoded><![CDATA[<figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*YOciiuREo5H8R4050qQCVw.jpeg" /></figure><h3>DevTools tips — day 23: coverage and changes</h3><h4>part of the “Advent calendar for front-end developers” series</h4><p><em>Over the 24 days leading to the holidays I am publishing short articles with tips on how to use DevTools in more performant and fun way. </em><a href="https://medium.com/@tomsu/devtools-tips-day-22-network-tips-69618981fc53"><em>Yesterday</em></a><em> we’ve had a couple of Network tips; today let’s continue the Drawer tips we started </em><a href="https://medium.com/@tomsu/devtools-tips-day-19-drawer-tips-1aa9cc48a1e8"><em>the other day</em></a><em> and talk about 2 more of the useful tools hidden in there:</em></p><h3>65. Check the code coverage</h3><p>A lot of the code that ends up on your page is not actually needed. Maybe it’s a some big chunk of JavaScript from an external library, maybe some CSS rules on forgotten selector that doesn’t match anything anymore.</p><p>To get a nice summary — and details—of that redundant code use the <em>Coverage</em> panel. To open it use the <em>Drawer</em> menu or, quicker, <em>Command Menu</em>:</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/950/1*cN19mKQ6vKAeUEfA7sKOsA.gif" /></figure><p>DevTools’ <em>Coverage</em> tool can track which <strong>lines</strong> of the currently loaded JS &amp; CSS files <em>are </em>being run and displays the percentage of unused bytes.</p><p>It also marks the lines that <em>were run</em> in green and the ones that <em>weren’t</em> — in red. Let’s see it on a simple example:</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/950/1*zuG6cyZgQrS_wB3zK5U1Sg.gif" /></figure><h3>66. Check what you’ve changed</h3><p>Designing in browser, adjusting those css values, playing with the code where it’s evaluated — it’s both convenient and fun. But at some point you might want to compare what you’ve changed with the originally loaded stylesheet.</p><p>For that purpose use the <em>Changes</em> tool that resides in the DevTools’ <em>Drawer</em>.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*RgEqWsYULa4sf_dwBG47Cw.png" /></figure><p>It will not only show you the <strong>changes in the form of a diff</strong> that you may be familiar with from using a source control tool like Git, but also allow to undo them. See that in action:</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/946/1*4FLYzE3ewOgcaLBYIPvWqA.gif" /></figure><p>And that’s it for today. <strong>If you’ve learned something useful</strong>, <strong>please:</strong></p><p><strong>→ smash that👏 button</strong> below️ so more people can see this<br><strong>→ </strong><a href="https://twitter.com/sulco"><strong>follow me </strong>on Twitter (@sulco)</a> so you won’t miss future posts:<br><em>(I write on stuff like this and all things TypeScript, Angular, and React)</em></p><p><a href="https://twitter.com/sulco">Tomek Sułkowski (@sulco) | Twitter</a></p><p>Also, the <strong>24th day</strong> is already published, read it here:</p><p><a href="https://medium.com/@tomsu/devtools-tips-day-24-the-last-day-75f019d2a5e1">DevTools tips — day 24: the last day</a></p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=1b756d07ed1c" width="1" height="1" alt="">]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[DevTools tips — day 22: network tips]]></title>
            <link>https://medium.com/@tomsu/devtools-tips-day-22-network-tips-69618981fc53?source=rss-c17c5e2267f6------2</link>
            <guid isPermaLink="false">https://medium.com/p/69618981fc53</guid>
            <category><![CDATA[development]]></category>
            <category><![CDATA[frontend]]></category>
            <category><![CDATA[front-end-development]]></category>
            <category><![CDATA[chrome]]></category>
            <category><![CDATA[javascript]]></category>
            <dc:creator><![CDATA[Tomek Sułkowski]]></dc:creator>
            <pubDate>Sat, 22 Dec 2018 20:22:19 GMT</pubDate>
            <atom:updated>2018-12-26T21:50:41.242Z</atom:updated>
            <content:encoded><![CDATA[<figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*p4wAUFg0fOEDc0Iz-3UY4w.jpeg" /></figure><h3>DevTools tips — day 22: network tips</h3><h4>part of the “Advent calendar for front-end developers” series</h4><p><em>Over the 24 days leading to the holidays I am publishing short articles with tips on how to use DevTools in more performant and fun way. </em><a href="https://medium.com/@tomsu/devtools-tips-day-21-snippets-e207f489031a"><em>Yesterday</em></a><em> we’ve played with snippets, today let’s talk about network:</em></p><h3>61. Hide network overview</h3><p>Are you usually looking into the <em>Network </em>panel to:</p><ul><li>see that requests timeline</li><li>or maybe just the requests list — to check the statuses, sizes and responses?</li></ul><p>My bet is that it’s the latter. If that’s the case there really is no point in the <em>Overview </em>section taking around half of the <em>Network’s </em>real estate. Hide it.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*Aeg9wsCu-6mzrvBVJau2LA.png" /></figure><h3>62. Request initiator shows a call stack</h3><p>The Initiator column in <em>Network </em>panel shows which script and its line triggered the request. It shows the last step of the call stack that caused the request to be made so unless you are using e.g. a native fetch API, it will point show some low level library code — for example xhr.js when using Axios library or zone.js when working with Angular.</p><p>More than those vendor libraries you probably want to see which part of <em>your </em>code triggered the request. To get that information just hover over that displayed initiator (i.e. the vendor library) and you will see the full call stack, including your file:</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*knmZpBqI_tZIVQe81EazCQ.gif" /></figure><h3>63. Filter requests by method</h3><p>The <em>filter </em>input in the <em>Network</em> panel can take a string or regular expression that you type there and only show the requests that match. But you can also use it to filter by, well, a lot of properties.</p><p>Just type e.g. method: or mime-type: there and see for yourself!</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/762/1*ilCtRqQ1S4Jxb8548-9SXg.gif" /></figure><p>To get a full list of possible keywords press [ctrl] + [space] on the empty input.</p><h3>64. Customise the requests table</h3><p>In the requests table you can see several pieces of information about each request, such as: Status, Type, Initiator, Size and Time. But you can also add more (e.g. I usually add a Method). <strong>Much more</strong> actually:</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*KvdikfmRLrc6S1O9gSJdow.png" /><figcaption>All informations that you can display in the <em>Network panel</em></figcaption></figure><p>To customise which columns are displayed, just right-click anywhere on the requests table’s header. Note that Response Headers is a whole submenu with even more options, and even a possibility to define your own:</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*nROPZgdVRwebbITNT6_uBQ.gif" /></figure><p>And that’s it for today. As always, <strong>if you’ve learned something new</strong>, <strong>please:</strong></p><p><strong>→ smash that👏 button</strong> below️ so more people can see this<br><strong>→ </strong><a href="https://twitter.com/sulco"><strong>follow me </strong>on Twitter (@sulco)</a> so you won’t miss future posts:</p><p><a href="https://twitter.com/sulco">Tomek Sułkowski (@sulco) | Twitter</a></p><p>Also, the <strong>23rd day</strong> is already published, read it here:</p><p><a href="https://medium.com/@tomsu/devtools-tips-day-23-coverage-and-changes-1b756d07ed1c">DevTools tips — day 23: coverage and changes</a></p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=69618981fc53" width="1" height="1" alt="">]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[DevTools tips — day 21: snippets]]></title>
            <link>https://medium.com/@tomsu/devtools-tips-day-21-snippets-e207f489031a?source=rss-c17c5e2267f6------2</link>
            <guid isPermaLink="false">https://medium.com/p/e207f489031a</guid>
            <category><![CDATA[javascript]]></category>
            <category><![CDATA[frontend]]></category>
            <category><![CDATA[development]]></category>
            <category><![CDATA[front-end-development]]></category>
            <category><![CDATA[chrome]]></category>
            <dc:creator><![CDATA[Tomek Sułkowski]]></dc:creator>
            <pubDate>Fri, 21 Dec 2018 22:54:23 GMT</pubDate>
            <atom:updated>2018-12-26T21:49:54.286Z</atom:updated>
            <content:encoded><![CDATA[<figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*9vErCxJ2pp5qmOhnbLG1uA.jpeg" /></figure><h3>DevTools tips — day 21: snippets</h3><h4>part of the “Advent calendar for front-end developers” series</h4><p><em>Over the 24 days leading to the holidays I am publishing short articles with tips on how to use DevTools in more performant and fun way. </em><a href="https://itnext.io/devtools-tips-day-20-workspace-c5aab022d3c7"><em>Yesterday</em></a><em> we have seen some DevTools Workspace magic, today we’ll play with snippets:</em></p><h3>59. Snippets</h3><p>Sometimes I use JavaScript as automation tool to work with 3rd party websites and apps.</p><p>Let’s say for example that I’d want to see how many people clapped on all of my Medium posts. Medium doesn’t provide such total number, so I’ve put together this small script:</p><pre><strong>$$(</strong>&#39;td:last-child .sortableTable-number&#39;<strong>)</strong><br>    .<strong>map(</strong>el =&gt; parseInt(el.innerText)<strong>)</strong><br>    .<strong>reduce(</strong>(total, value) =&gt; total + value<strong>)</strong>;</pre><p>When I go into my stats page and type it into the <em>Console, </em>it will return the number:</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*rkue-QceCc8mKI1H9QssBQ.png" /></figure><p>Now, granted, it didn’t take me that much effort to write that, but if I were to do it once in a while it would certainly be annoying to remember the right selectors etc.</p><p>This is where <em>Snippets</em> come in: it’s a way to store pieces of your JavaScript code into DevTools so you can easily reuse them later.</p><p>To create such snippet, go into <em>Sources </em>panel and in its <em>Navigator</em> sidebar choose <em>Snippets </em>tab. Press “New snippet”, type your code, save it and you’re all set! You can now run the code from right-click menu or by pressing [ctrl]+[enter] shortcut:</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*_EHLwVms_PFw9QqWqViKgw.gif" /></figure><h3>60. Run snippets from wherever</h3><p>Once you have a set of awesome snippets set up, you don’t even have to visit <em>Sources </em>to run them. The quickest way, as we’ve already discovered several times this week, is to use <em>Command Menu</em>. If you type ! in its input, you can pick one of your snippets by name:</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*HaXuvJUIsOo9okt80YHGHA.gif" /></figure><p>And that’s it for today. As always, <strong>if you’ve learned something new</strong>, <strong>please:</strong></p><p><strong>→ smash that👏 button</strong> below️ so more people can see this<br><strong>→ </strong><a href="https://twitter.com/sulco"><strong>follow me </strong>on Twitter (@sulco)</a> so you won’t miss future posts:</p><p><a href="https://twitter.com/sulco">Tomek Sułkowski (@sulco) | Twitter</a></p><p>Also, the <strong>22nd day</strong> is already published, read it here:</p><p><a href="https://medium.com/@tomsu/devtools-tips-day-22-network-tips-69618981fc53">DevTools tips — day 22: network tips</a></p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=e207f489031a" width="1" height="1" alt="">]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[DevTools tips — day 20: workspace]]></title>
            <link>https://itnext.io/devtools-tips-day-20-workspace-c5aab022d3c7?source=rss-c17c5e2267f6------2</link>
            <guid isPermaLink="false">https://medium.com/p/c5aab022d3c7</guid>
            <category><![CDATA[front-end-development]]></category>
            <category><![CDATA[web-development]]></category>
            <category><![CDATA[javascript]]></category>
            <category><![CDATA[frontend]]></category>
            <category><![CDATA[css]]></category>
            <dc:creator><![CDATA[Tomek Sułkowski]]></dc:creator>
            <pubDate>Thu, 20 Dec 2018 22:17:55 GMT</pubDate>
            <atom:updated>2018-12-26T21:49:04.068Z</atom:updated>
            <content:encoded><![CDATA[<figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*DzgPeuNAMoqsJs075-sRfA.jpeg" /></figure><h3>DevTools tips — day 20: workspace</h3><h4>part of the “Advent calendar for front-end developers” series</h4><p><em>Over the 24 days leading to the holidays I am publishing short articles with tips on how to use DevTools in more performant and fun way. </em><a href="https://medium.com/@tomsu/devtools-tips-day-19-drawer-tips-1aa9cc48a1e8"><em>Yesterday</em></a><em> we’ve covered several panels hidden in the DevTools Drawer, today it’s a Workspace day:</em></p><h3>55. Edit your source files from Chrome</h3><p>Sometimes it’s easiest to edit the code right where it’s evaluated — in the browser. If you just drag and drop your project’s folder into the <em>Sources </em>panel, DevTools will synchronise the changes you make there with the actual file system.</p><p>This is super handy for those quick fixes! (I actually knew a dev who preferred to do <em>most </em>of his coding in such fashion)</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*UcD4jP-C9sNpEtujV5VWow.gif" /></figure><p>But wait, it gets better…</p><h3>56. Workspace allows an instant styles sync</h3><p>So as we’ve just said, once you have your DevTools workspace set up, you can edit your HTML and JavaScript (or actually even TypeScript, if you have sourcemaps) files in the <em>Sources</em> panel and after pressing ctrl+s it will be saved in the file system.</p><p>But it’s get even better in case of styles. Because now, even when you edit your style rules in the <em>Styles</em> section of the <em>Elements</em> panel… it will just sync right up. Instantly!</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*_4H3uc5Uurmb3n8CmFxHkA.gif" /></figure><p>What kind of magic is that?!</p><h3>57. Select a target location for new selector</h3><p>If you want to add a new style to an existing selector it’s easy: just find that selector in the <em>Elements</em> panel’s <em>Styles</em> section and start writing your css. But if there is no such selector yet, you need to press that <em>New Style Rule </em>button.</p><p>When you are working with workspaces though, the default location of that new style rule — that &quot;inspector-stylesheet:1&quot; place—is not exactly where you’d want the rule to appear. In such case just hold the <em>New Style Rule</em><strong><em> </em></strong>button and you will see the options will all your css files listed. Just choose your destination and new rule will be saved there!</p><h3>58. Workspace allows css injection!</h3><p>With workspace set up not only are the changes made in your browser persisted into the file system, but also your <strong>CSS </strong>changes save in the file system (i.e. your VSCode, WebStorm, Notepad…) are immediately picked up by the browser and show on your page. <strong>Without refreshing it.</strong></p><p>Let me be clear: there is no external tool used here — no Webpack hot module replacement or nothing — it’s just any local server and DevTools’ workspace.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*bCKcRdpMyjpuy0Fx9BhdzQ.gif" /></figure><p>Phew! I don’t know about you, but for me these tips were <em>actually</em> exciting if not a bit crazy 😅<br>Anyways. As always, <strong>if you’ve learned something new</strong>, <strong>please:</strong></p><p><strong>→ smash that👏 button</strong> below️ so more people can see this<br><strong>→ </strong><a href="https://twitter.com/sulco"><strong>follow me </strong>on Twitter (@sulco)</a> so you won’t miss future posts:</p><p><a href="https://twitter.com/sulco">Tomek Sułkowski (@sulco) | Twitter</a></p><p>Also, the <strong>21st day</strong> is already published, read it here:</p><p><a href="https://medium.com/@tomsu/devtools-tips-day-21-snippets-e207f489031a">DevTools tips — day 21: snippets</a></p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=c5aab022d3c7" width="1" height="1" alt=""><hr><p><a href="https://itnext.io/devtools-tips-day-20-workspace-c5aab022d3c7">DevTools tips — day 20: workspace</a> was originally published in <a href="https://itnext.io/">ITNEXT</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[DevTools tips — day 19: drawer tips]]></title>
            <link>https://medium.com/@tomsu/devtools-tips-day-19-drawer-tips-1aa9cc48a1e8?source=rss-c17c5e2267f6------2</link>
            <guid isPermaLink="false">https://medium.com/p/1aa9cc48a1e8</guid>
            <category><![CDATA[chrome]]></category>
            <category><![CDATA[javascript]]></category>
            <category><![CDATA[front-end-development]]></category>
            <category><![CDATA[development]]></category>
            <category><![CDATA[frontend]]></category>
            <dc:creator><![CDATA[Tomek Sułkowski]]></dc:creator>
            <pubDate>Wed, 19 Dec 2018 19:13:47 GMT</pubDate>
            <atom:updated>2018-12-26T21:48:14.412Z</atom:updated>
            <content:encoded><![CDATA[<figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*x6oPTQuq_bur9s5o0Hgz_Q.jpeg" /></figure><h3>DevTools tips — day 19: drawer tips</h3><h4>part of the “Advent calendar for front-end developers” series</h4><p><em>Over the 24 days leading to the holidays I am publishing short articles with tips on how to use DevTools in more performant and fun way. </em><a href="https://medium.com/@tomsu/https-medium-com-tomsu-devtools-tips-day-18-hidden-in-a-drawer-aee1ba1b7b2e"><em>Yesterday</em></a><em> we’ve started looking into the drawer, today see a couple of interesting tools hidden in there.</em></p><h3>52. Control the sensors</h3><p>If you are using a geolocation API in your application and want to test it, you probably wouldn’t want to drive around all over the world just to do that (there are far better reasons to travel 😉).</p><p><em>Sensors </em>panel located in the <em>Drawer</em> lets you emulate a specific location. You can choose from the predefined places, add your own, or just type latitude/longitude by hand. The selected values will be the ones that navigator.geolocation.watchPosition (or .getCurrentPosition) will report.</p><p>If your app uses accelerometer, the <em>Sensors</em> panel allows to emulate the position of your device in 3D space too!</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/774/1*N8Mxfmng5f6CH7-2V2J05Q.gif" /></figure><h3>53. Simulate network conditions</h3><p>Just as with faking your location you can use the <em>Network conditions </em>drawer panel to simulate a specific network behaviour: pretend the internet is a typical <em>3G network</em> or even <em>offline</em>! That should help appreciate the size of your page’s assets.</p><p>Or test the offline capabilities of an app.</p><p>The <em>Network conditions </em>panel has also a possibility to impersonate a specific user agent.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/858/1*ecaC-4QExDkuqT0SrkZidA.gif" /></figure><h3>54. Have the source by hand</h3><p>In a similar way to how it’s useful to peek into <em>Console</em> while simultaneously having a different panel opened, I sometimes want to see my source code when e.g. I’m mainly focusing on the <em>Elements</em> panel. And just as with the <em>drawer console</em>, you can show <em>Sources </em>in the drawer.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*27aYC3ugCDgfGz1iNIqCuw.png" /></figure><p>As you can notice it doesn’t have all the bells and whistles of the “main” <em>Sources </em>panel, e.g. there is no <em>call stack </em>or <em>control </em>(pause, step over, etc.) buttons. And if the breakpoint will be triggered it won’t be shown in the drawer’s <em>Quick sources</em> but in the main <em>Sources</em>.</p><p>But it’s still useful to have that quick look at the code and for setting up breakpoints.</p><p><strong>If you like this article series</strong>, please<strong>:</strong></p><p><strong>→ clap 👏 button</strong> below️ so more people can see this<br><strong>→ </strong><a href="https://twitter.com/sulco"><strong>follow me </strong>on Twitter (@sulco)</a> so you won’t miss future posts:</p><p><a href="https://twitter.com/sulco">Tomek Sułkowski (@sulco) | Twitter</a></p><p>Also, the <strong>20th day</strong> is already published, read it here:</p><p><a href="https://itnext.io/devtools-tips-day-20-workspace-c5aab022d3c7">DevTools tips — day 20: workspace</a></p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=1aa9cc48a1e8" width="1" height="1" alt="">]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[DevTools tips — day 18: hidden in a drawer]]></title>
            <link>https://itnext.io/https-medium-com-tomsu-devtools-tips-day-18-hidden-in-a-drawer-aee1ba1b7b2e?source=rss-c17c5e2267f6------2</link>
            <guid isPermaLink="false">https://medium.com/p/aee1ba1b7b2e</guid>
            <category><![CDATA[frontend]]></category>
            <category><![CDATA[front-end-development]]></category>
            <category><![CDATA[javascript]]></category>
            <category><![CDATA[developer-tools]]></category>
            <category><![CDATA[chrome]]></category>
            <dc:creator><![CDATA[Tomek Sułkowski]]></dc:creator>
            <pubDate>Tue, 18 Dec 2018 21:47:28 GMT</pubDate>
            <atom:updated>2018-12-26T21:47:23.312Z</atom:updated>
            <content:encoded><![CDATA[<figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*j1eLdLnOkw352V4a0diBVA.jpeg" /></figure><h3>DevTools tips — day 18: hidden in a drawer</h3><h4>part of the “Advent calendar for front-end developers” series</h4><p><em>Over the 24 days leading to the holidays I am publishing short articles with tips on how to use DevTools in more performant and fun way. </em><a href="https://medium.com/@tomsu/devtools-tips-day-17-back-to-the-console-ac2b97285731"><em>Yesterday</em></a><em> we’ve seem some ways to improve logs readability in the console. Today let’s talks about the powerful set of functionalities hidden in the DevTools drawer:</em></p><h3>50. The DevTools drawer</h3><p>Chrome DevTools has a lot of great number of apparatuses divided into its 9 tabs (<em>Elements</em>, <em>Console</em>, <em>Sources</em>, <em>Network</em>, etc…) — but that’s actually just a part of it! There is a “parallel” set of tabs, that are hidden below the main window. This set is called the <strong>Drawer</strong>.</p><p>To access it, when you are in DevTools (any tab), press [esc]. <br>Press [esc] again to hide it:</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/910/1*KHTH8OQdSzEIWfjxK8gfCA.gif" /></figure><p>By default you will see a Console tab there. That’s the same exact console as the main <em>Console</em> panel. That’s why it will show for every main tab (<em>Elements, Sources, Network…</em>) except the <em>Console </em>one — for which it doesn’t really make sense.</p><p>It’s handy to have such console<em> </em>visible at the same time as e.g. the <em>Elements</em> panel. But that’s not all that is hidden in the <em>Drawer</em>.</p><h3>51. The other tools in the drawer</h3><p>There are so many other functionalities hidden in the drawer that you likely won’t need most of them most of the times, that’s why they are hidden and you can just pick and choose which one you want to show there.</p><p>To open the full list of these possibilities click the menu icon (⋮) placed before the drawer console panel’s tab. Alternatively, you can also use the <a href="https://itnext.io/devtools-tips-day-6-thecommand-menu-449eb3966d9">Commands Menu</a> and type in “Drawer”:</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/910/1*eDqaL7PqC9JU5mbKtG86hw.gif" /></figure><p>Ok, let’s see all the options once more:</p><blockquote><em>Animations, </em><em>Changes, </em><em>Console, </em><em>Coverage, </em><em>Network conditions, </em><em>Performance monitor, </em><em>Quick source, </em><em>Remote devices, </em><em>Rendering, </em><em>Request blocking, </em><em>Search, </em><em>Sensors and </em><em>What’s new</em></blockquote><p>Phew, that’s… <em>[counts quickly]</em> a total of <strong>13 new areas to explore!</strong></p><p>As have probably guessed, I will show more tips for the things we can find here… but let’s leave this till tomorrow (<a href="https://medium.com/@tomsu/devtools-tips-day-19-drawer-tips-1aa9cc48a1e8">here</a>), when we’ll look into couple of the coolest of the bunch.</p><p>In the meantime, <strong>if you like this article series</strong>, please<strong>:</strong></p><p><strong>→ clap 👏 button</strong> below️ so more people can see this<br><strong>→ </strong><a href="https://twitter.com/sulco"><strong>follow me </strong>on Twitter (@sulco)</a> so you won’t miss future posts:</p><p><a href="https://twitter.com/sulco">Tomek Sułkowski (@sulco) | Twitter</a></p><p>Also, the <strong>19th day</strong> is already published, read it here:</p><p><a href="https://medium.com/@tomsu/devtools-tips-day-19-drawer-tips-1aa9cc48a1e8">DevTools tips — day 19: drawer tips</a></p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=aee1ba1b7b2e" width="1" height="1" alt=""><hr><p><a href="https://itnext.io/https-medium-com-tomsu-devtools-tips-day-18-hidden-in-a-drawer-aee1ba1b7b2e">DevTools tips — day 18: hidden in a drawer</a> was originally published in <a href="https://itnext.io/">ITNEXT</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[DevTools tips — day 17: back to the console]]></title>
            <link>https://medium.com/@tomsu/devtools-tips-day-17-back-to-the-console-ac2b97285731?source=rss-c17c5e2267f6------2</link>
            <guid isPermaLink="false">https://medium.com/p/ac2b97285731</guid>
            <category><![CDATA[javascript]]></category>
            <category><![CDATA[chrome]]></category>
            <category><![CDATA[frontend]]></category>
            <category><![CDATA[development]]></category>
            <category><![CDATA[front-end-development]]></category>
            <dc:creator><![CDATA[Tomek Sułkowski]]></dc:creator>
            <pubDate>Mon, 17 Dec 2018 18:35:08 GMT</pubDate>
            <atom:updated>2018-12-26T21:46:47.210Z</atom:updated>
            <content:encoded><![CDATA[<figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*S9JLK61YJ-z7z40cEWr1Og.jpeg" /></figure><h3>DevTools tips — day 17: back to the console</h3><h4>part of the “Advent calendar for front-end developers” series</h4><p><em>Over the 24 days leading to the holidays I am publishing short articles with tips on how to use DevTools in more performant and fun way. </em><a href="https://medium.com/@tomsu/devtools-tips-day-16-breakpoints-54bb84a3e6b1"><em>Yesterday</em></a><em> we’ve covered DOM and Ajax breakpoints. Today let’s start the week by going back into console!</em></p><h3>48. For more readable logs— add brackets!</h3><p>If you console.log even a single variable you might forget (or get confused about) which one was that. Things get event less readable if you have multiple variables to log.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*bW2BuCSXEQkMUCZms9K53Q.png" /><figcaption>“Em… which value was what variable again?”</figcaption></figure><p>To make that much more readable, <strong>log an object instead</strong> — just wrap all your console.log parameters in curly brackets. Thanks to the enhanced object literal introduced in ECMAScript 2015, that’s all you really need:</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*o828WtJGc14mPa8vq62SKQ.png" /><figcaption>Credit for this tip: I first saw this idea in the amazing <a href="https://medium.com/u/86a55cd7983b">Wes Bos</a>’ materials</figcaption></figure><p>Can’t get much clearer than this! Or can it…?</p><h3>49. Brackets + table = 🤯</h3><p>Remember that console.table tip from the <a href="https://medium.com/@tomsu/devtools-tips-day-3-console-methods-783791e91990#1c6d">Day 3</a> of our series? <br>Let’s add that too!</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*T6EtiMQu_VLYG5MhmDa5vg.png" /></figure><p>The ultimate log.</p><p>And that’s it for today! As usual, <strong>if you’ve learned something new, please:</strong></p><p><strong>→ clap 👏 button</strong> below️ so more people can see this<br><strong>→ </strong><a href="https://twitter.com/sulco"><strong>follow me </strong>on Twitter (@sulco)</a> so you won’t miss future posts:</p><p><a href="https://twitter.com/sulco">Tomek Sułkowski (@sulco) | Twitter</a></p><p>Also, the <strong>18th day</strong> is already published, read it here:</p><p><a href="https://itnext.io/https-medium-com-tomsu-devtools-tips-day-18-hidden-in-a-drawer-aee1ba1b7b2e">DevTools tips — day 18: hidden in a drawer</a></p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=ac2b97285731" width="1" height="1" alt="">]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[DevTools tips — day 16: breakpoints]]></title>
            <link>https://medium.com/@tomsu/devtools-tips-day-16-breakpoints-54bb84a3e6b1?source=rss-c17c5e2267f6------2</link>
            <guid isPermaLink="false">https://medium.com/p/54bb84a3e6b1</guid>
            <category><![CDATA[front-end-development]]></category>
            <category><![CDATA[chrome]]></category>
            <category><![CDATA[development]]></category>
            <category><![CDATA[javascript]]></category>
            <category><![CDATA[frontend]]></category>
            <dc:creator><![CDATA[Tomek Sułkowski]]></dc:creator>
            <pubDate>Sun, 16 Dec 2018 20:15:52 GMT</pubDate>
            <atom:updated>2018-12-26T21:45:33.158Z</atom:updated>
            <content:encoded><![CDATA[<figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*r2wiboXkxurCyGSCyIGHZQ.jpeg" /></figure><h3>DevTools tips — day 16: breakpoints</h3><h4>part of the “Advent calendar for front-end developers” series</h4><p><em>Over the 24 days leading to the holidays I am publishing short articles with tips on how to use DevTools in more performant and fun way. </em><a href="https://medium.com/@tomsu/devtools-tips-day-15-twitter-day-a842fc58cbfd"><em>Yesterday</em></a><em> we’ve had some “guest tips”. Today let’s look into some ways to trigger a breakpoint.</em></p><h3>45. DOM breakpoints</h3><p>Is Some script changing a part of your DOM and you’re not quite sure which one or when? Add a DOM breakpoint. You can listen to node being added or removed, or its attribute being changed:</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*WGXLu_AejxR9nGt6nra9EA.png" /></figure><p>The breakpoints are remembered between page reloads. Once you’ve set up one — or a couple!—of them, you might forget where specifically they’re attached. How to find them? There are visual cues in the <em>Elements </em>view and a dedicated list in the <em>Sources</em> for this very purpose.</p><p>And don’t worry if the element you’ve attached a breakpoint to is hidden in some collapsed parent ancestor element—it will still show in the <em>Element</em>, just in a lighter color.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*MVdawLp6_SWM7JwTr7vfbg.png" /></figure><h3>46. MutationObserver</h3><figure><img alt="" src="https://cdn-images-1.medium.com/max/820/1*nbq7WhrQ4pkd8iAZpMM9NA.png" /></figure><p>This tip is not exactly related to DevTools but since it’s a nice expansion upon the previous one, I hope you can forgive me this digression.</p><p>Anyways, did you know about MutationObserver? It’s an object that’s just a part of browser API and allows to listen to similar changes as the previously mentioned DOM breakpoints do: <br>childList, attributes and subtree — but this time from your JavaScript code.</p><p>And it’s actually quite well supported, starting with IE11.</p><h3>47. XHR/fetch breakpoints</h3><p>If you want to catch the specific moment an “ajax” request is being sent, use this <strong>XHR/fetch breakpoint</strong>. These you can only set up in the <em>Sources</em> panel (I’d hope for <em>Network</em> panel as well, but that doesn’t seem to be the case).</p><p>You can add a partial URL as a trigger or listen to any request:</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*Df9dQnKJeBAjSCQlekG04Q.png" /></figure><p>And that’s it for today! As usual, <strong>if you’ve learned something new, please:</strong></p><p><strong>→ clap 👏 button</strong> below️ so more people can see this<br><strong>→ </strong><a href="https://twitter.com/sulco"><strong>follow me </strong>on Twitter (@sulco)</a> so you won’t miss future posts:</p><p><a href="https://twitter.com/sulco">Tomek Sułkowski (@sulco) | Twitter</a></p><p>Also, the <strong>17th day</strong> is already published, read it here:</p><p><a href="https://medium.com/@tomsu/devtools-tips-day-17-back-to-the-console-ac2b97285731">DevTools tips — day 17: back to the console</a></p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=54bb84a3e6b1" width="1" height="1" alt="">]]></content:encoded>
        </item>
    </channel>
</rss>