<?xml version="1.0" encoding="UTF-8"?><rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>MiguelPimentel.do</title><description>Personal website and blog. Contains a short list of my projects, and blog posts.</description><link>https://miguelpimentel.do/</link><atom:link href="https://miguelpimentel.do/rss.xml" rel="self" type="application/rss+xml"/><item><title>Blogging to Tame the Monkey Mind</title><link>https://miguelpimentel.do/blog/2023-04-11-monkey-mind/</link><guid isPermaLink="true">https://miguelpimentel.do/blog/2023-04-11-monkey-mind/</guid><description>The last 18 months have changed me profoundly, and I feel like I need to write these feelings down.</description><pubDate>Tue, 11 Apr 2023 00:00:00 GMT</pubDate><content:encoded>&lt;img src=&quot;https://miguelpimentel.do//_astro/cover-image.Bjf4TWU7.webp&quot; alt=&quot;Pensive Monkey by Reubx.&quot; /&gt;&lt;p&gt;Last week, I came across Danny Guo’s &lt;a href=&quot;https://www.dannyguo.com/blog/why-i-blog&quot;&gt;Why I Blog&lt;/a&gt; post, and it inspired me to write this.&lt;/p&gt;
&lt;p&gt;The term &lt;a href=&quot;https://en.wikipedia.org/wiki/Monkey_mind&quot;&gt;monkey mind&lt;/a&gt; is a Buddhist term meaning: restless, unsettled, incontrollable. The original analogy comes from describing the human mind as being full of drunken monkeys, constantly screeching, fighting, distracting, and creating general mental chaos. I’ll go over what helps &lt;em&gt;me&lt;/em&gt; keep the monkeys at bay. I hope some of this resonates with you and your monkeys as well.&lt;/p&gt;
&lt;h2&gt;Clear My Mind&lt;/h2&gt;
&lt;p&gt;My brain seems to always find distractions for me to tangent off to. Sitting down and making an effort to write everything rushing through my head has been an important mechanism to reduce my stress levels. This concept of dumping your brain by writing isn’t new, but it was to me.&lt;/p&gt;
&lt;p&gt;It took me some time to mold the raw output into something I could use. In my case, it started within my journal. Using the left page for brain dump, and the right page to process it down to simple tasks, references, and other tagged entries. Small details like leaving space between entries allow me to go back and add an entry in a much closer position relative to other similar ones.&lt;/p&gt;
&lt;h2&gt;Share Knowledge&lt;/h2&gt;
&lt;p&gt;When I think of sharing knowledge, the image of me boring my friends to death on a topic they aren’t interested in comes to mind. It is my goal to minimize those kinds of situations. I find it easier to talk about a topic in person if I have already “talked” about it on the blog. I can actually debate the idea, without feeling the need to interject at every interaction.&lt;/p&gt;
&lt;p&gt;A sure way to tell whether you know a topic, comes from being able to teach it to someone else. I am &lt;em&gt;horrible&lt;/em&gt; at keeping explanations simple. I am &lt;em&gt;terrible&lt;/em&gt; at controlling my impulse to talk when engaged in conversation. Sharing &lt;em&gt;knowledge&lt;/em&gt; via these posts helps my overall mental state. It reduces the amount of fleeting ideas going back and forth, and provides me with an opportunity to turn those into actionable ideas instead of letting them grow old and irrelevant.&lt;/p&gt;
&lt;h2&gt;Document My Learning&lt;/h2&gt;
&lt;p&gt;Recently, I have been down the rabbit-hole that is Personal Knowledge Management (PKM) tools and apps. Jumping from app to app, looking for something that “&lt;em&gt;works&lt;/em&gt;” for you. It’s fun! But, it is stupid easy to lose sight of your initial goal and turn that curiosity into wasted efforts.&lt;/p&gt;
&lt;p&gt;By making a public commitment (even if nobody reads it), I am imposing a healthy amount of pressure on myself to be more open and honest about how I use my time. Keeping yourself accountable is &lt;em&gt;hard work&lt;/em&gt;. Any amount of effort to curb “mindless wonder” helps tremendously.&lt;/p&gt;
&lt;h2&gt;Starting a Blog&lt;/h2&gt;
&lt;p&gt;Blogging pushes me to refine my better ideas. Expanding a fleeting thought into a blog post has a liberating feeling. It’s not even related to others reading your post. You don’t need an audience to start. The same way you should &lt;em&gt;just&lt;/em&gt; journal, you should &lt;em&gt;just&lt;/em&gt; blog.&lt;/p&gt;
&lt;p&gt;Comes from the same idea that producing content is and should be a priority over consuming it. Find what topics make you want to write. Compile your reference material. List articles you’ve read, blogs you have enjoyed, reference that weird website you know and talk about why.&lt;/p&gt;
&lt;p&gt;Avoid getting stuck on details. You can change your hosting provider later. The first thing you’d need to consider is whether you’ll be using a custom domain. I highly suggest you do so, as it makes for easier &lt;em&gt;platform changes&lt;/em&gt;. My personal recommendation is to start writing anywhere. Pick a platform and focus on writing about things you are interested in.&lt;/p&gt;
&lt;p&gt;Here are a few places to start:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://bearblog.dev/&quot;&gt;Bearblog&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://wordpress.com/&quot;&gt;WordPress&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.blogger.com/&quot;&gt;Blogger&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://medium.com/&quot;&gt;Medium&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://mataroa.blog/&quot;&gt;Mataroa&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://prose.sh/&quot;&gt;Prose.sh&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://dev.to/&quot;&gt;DEV Community&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</content:encoded><enclosure url="https://miguelpimentel.do//_astro/cover-image.Bjf4TWU7.webp" length="0" type="image/webp"/></item><item><title>Being a Firefighter Does Not Save You From Burnout</title><link>https://miguelpimentel.do/blog/2023-07-05-on-burnout/</link><guid isPermaLink="true">https://miguelpimentel.do/blog/2023-07-05-on-burnout/</guid><description>The last 18 months have changed me profoundly, and I feel like I need to write these feelings down.</description><pubDate>Wed, 05 Jul 2023 00:00:00 GMT</pubDate><content:encoded>&lt;img src=&quot;https://miguelpimentel.do//_astro/cover-image.CrYMYECN.webp&quot; alt=&quot;Walking Firefighter by Andrew Gaines.&quot; /&gt;&lt;p&gt;My life took a sharp turn early last year. I am a very private person. You will not find me sharing my personal life on social media. That said, these last 18 months have changed me profoundly, and I feel like I need to write these feelings down. This post&apos;s threshold of success is helping one other person navigate difficult times.&lt;/p&gt;
&lt;p&gt;Burning out is something I had little experience with. A mental image of what it looks like when you burn out was all I had. My only context coming from watching online influencers post articles/videos about how bad it can be. I never really learned what it looks like before you burn out, how you get to there, what the signs are. After three and a half years of being a volunteer firefighter, I burned out. It did not catch me by surprise; I had been struggling mentally for some time. Every day, telling myself that it would be different, that it would change. That feeling went away eventually, leaving me with too much to handle.&lt;/p&gt;
&lt;h2&gt;What Being a Volunteer Firefighter Means&lt;/h2&gt;
&lt;p&gt;Depends on where the question is being asked. Volunteer, or sometimes paid-on-call firefighters make up more than 70% of registered fire departments. Minnesota sits at more than 85% volunteer fire departments, according to the &lt;a href=&quot;https://apps.usfa.fema.gov/registry/summary&quot;&gt;National Fire Department Registry&lt;/a&gt;. Our setting is Bloomington, Minnesota in the US.&lt;/p&gt;
&lt;p&gt;Here are some quick facts on being a volunteer/paid-on-call firefighter for the fourth-largest city (by population) in Minnesota a few of years before:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Bloomington has 6 fire stations spread somewhat evenly over the city.&lt;/li&gt;
&lt;li&gt;To be eligible, you need to live within 4 minutes of your nearest fire station.&lt;/li&gt;
&lt;li&gt;You carry a pager around, when specific tones play, you are being asked to respond. This meant stopping anything you were doing, driving to the station, and responding to the incident in a fire vehicle.&lt;/li&gt;
&lt;li&gt;Depending on incident time, one, two, three, or all six stations can be paged together to respond. For example, medicals calls involve 1 station responding with 1 truck, while residential fire calls start a 3 station response immediately.&lt;/li&gt;
&lt;li&gt;You need to respond to at least 30% of the calls that were assigned to your station. These meant emergency calls during your work hours, weekends, holidays count against you.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Learning What Being Homesick Was All About&lt;/h2&gt;
&lt;p&gt;During the pandemic, the emergency medical calls went through the roof. The Police Department was unable to keep up with the large number of incidents, so the city came to rely on the approximate 100 volunteer Fire Department to pick up the slack. This meant those working normal 8 to 5 jobs had a harder time keeping up with their 30% minimum. Without going into details, it was difficult.&lt;/p&gt;
&lt;p&gt;At the time, I was not in a good place mentally. Lots of things were lingering in the back of my mind. Everything has been made worse since I became woefully aware that I was homesick. I had planned to go visit for winter in 2020, but that option was quickly taken off the table. For context, I moved to the United States in Summer 2015, and to this day, due to one reason or another, I have yet to return.&lt;/p&gt;
&lt;p&gt;The later half of 2021 overwhelmed me. Several things accumulated over time, some went under the radar and were never addressed until it was too late, and others were willfully ignored. Struggling to maintain my sanity and mental health, I decided to take a 90-day leave of absence from the fire department. My plans were to spend the extra time looking after my mental health. Unfortunately, nothing improved.&lt;/p&gt;
&lt;p&gt;When the time came to rejoin, I opted to extend my leave as much as I could. I opted for another 90-day leave of absence, the maximum time allowed before needing to rejoin or separate. Again, nothing improved. I was just not in a good place mentally. A few days before needing to rejoin after 6 months of leave, I broke a bone in my hand.&lt;/p&gt;
&lt;h2&gt;How Did This Happen&lt;/h2&gt;
&lt;p&gt;Distracted, I went to move a glass/ceramic base from my desk to the kitchen. It made it a good foot before I accidentally dropped it on a dog bowl on the floor. (we fed the dogs in weird places back them) It slipped from my hands and fell on the bowl and shattered. This was &lt;em&gt;not&lt;/em&gt; the first time this had happened. I… struggle to describe what my feelings at the time were. My brain approved the decision to punch something. When tasked with finding something to punch, once again, my regretful train of thought took me outside, to the patio where I proceeded to turn around and punch the side of the house. The factors considered at the time were overwritten by rage.&lt;/p&gt;
&lt;h2&gt;Being Stubborn is Not the Same as Being Naive&lt;/h2&gt;
&lt;p&gt;So it happened. I punched the side of the house. &lt;em&gt;&lt;strong&gt;Pain.&lt;/strong&gt;&lt;/em&gt; Broke a bone in my hand, unbeknownst to me, of course. I managed to convince myself that it was a minor injury and I didn&apos;t need to be seen by a doctor. The hand hurt, but I chose to ignore it because my pride was in danger! (it wasn&apos;t) I went about my business for &lt;em&gt;three days&lt;/em&gt; before the pain overtook my pride. After the initial triage, and x-rays were completed, the doctor returned to the room with x-rays of my hand and informed me that I had a boxer&apos;s fracture in my right hand. My brain could no longer hold the spell it had me under. I wasn&apos;t being naive, I was being stubborn.&lt;/p&gt;
&lt;p&gt;Unfortunately, having used all the time permitted for a leave of absence, and lacking the ability to rejoin due to my right hand being broken, I quit the fire department.&lt;/p&gt;
&lt;h2&gt;Accepting Help is the Hardest Part&lt;/h2&gt;
&lt;p&gt;It does get tough sometimes, life can weight a lot more than what you can handle. What we often forget is to look around, to look for the people that are willing and lovingly ready to help. My biggest mistake was thinking I had no support, when it really was the complete opposite. I am in a &lt;strong&gt;much&lt;/strong&gt; better place now. I have others to thank for that. The road back is long, but I have friends and family right beside me. It has been a long time, but I finally feel like I am moving forward.&lt;/p&gt;
</content:encoded><enclosure url="https://miguelpimentel.do//_astro/cover-image.CrYMYECN.webp" length="0" type="image/webp"/></item><item><title>Aurora Borealis Reference Guide</title><link>https://miguelpimentel.do/blog/2023-07-11-aurora-borealis/</link><guid isPermaLink="true">https://miguelpimentel.do/blog/2023-07-11-aurora-borealis/</guid><description>July 12th, 2023, was supposed to feature high solar activity, allowing for an incredibly large area of the northern United States to witness the Auroras as long as the light pollution was low enough.</description><pubDate>Tue, 11 Jul 2023 00:00:00 GMT</pubDate><content:encoded>&lt;img src=&quot;https://miguelpimentel.do//_astro/cover-image.B3BS0th_.webp&quot; alt=&quot;Aurora Borealis by Serey Kim.&quot; /&gt;&lt;p&gt;Wednesday, July 12th, 2023, was supposed to feature high solar activity, allowing for an incredibly large area of the northern United States to witness the Auroras as long as the light pollution was low enough.&lt;/p&gt;
&lt;p&gt;Solar activity stayed at normal levels, so only the usual locations were able to see the lights, causing me to cancel my plans. Nevertheless, I wanted to share them here.&lt;/p&gt;
&lt;h2&gt;Light Pollution&lt;/h2&gt;
&lt;p&gt;Take a look at these locations sorted by distance.&lt;/p&gt;
&lt;p&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th data-label=&quot;Location&quot;&gt;Location&lt;/th&gt;
&lt;th data-label=&quot;Distance&quot;&gt;Distance&lt;/th&gt;
&lt;th data-label=&quot;Travel Time&quot;&gt;Travel Time&lt;/th&gt;
&lt;th data-label=&quot;Rank*&quot;&gt;Rank*&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td data-label=&quot;Location&quot;&gt;Minneapolis&lt;/td&gt;
&lt;td data-label=&quot;Distance&quot;&gt;16 miles&lt;/td&gt;
&lt;td data-label=&quot;Travel Time&quot;&gt;25 minutes&lt;/td&gt;
&lt;td data-label=&quot;Rank*&quot;&gt;0&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td data-label=&quot;Location&quot;&gt;Bloomington&lt;/td&gt;
&lt;td data-label=&quot;Distance&quot;&gt;2 miles&lt;/td&gt;
&lt;td data-label=&quot;Travel Time&quot;&gt;5 minutes&lt;/td&gt;
&lt;td data-label=&quot;Rank*&quot;&gt;1&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td data-label=&quot;Location&quot;&gt;Chaska&lt;/td&gt;
&lt;td data-label=&quot;Distance&quot;&gt;15 miles&lt;/td&gt;
&lt;td data-label=&quot;Travel Time&quot;&gt;20 minutes&lt;/td&gt;
&lt;td data-label=&quot;Rank*&quot;&gt;2&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td data-label=&quot;Location&quot;&gt;Farmington&lt;/td&gt;
&lt;td data-label=&quot;Distance&quot;&gt;24 miles&lt;/td&gt;
&lt;td data-label=&quot;Travel Time&quot;&gt;35 minutes&lt;/td&gt;
&lt;td data-label=&quot;Rank*&quot;&gt;3&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td data-label=&quot;Location&quot;&gt;Jordan&lt;/td&gt;
&lt;td data-label=&quot;Distance&quot;&gt;22 miles&lt;/td&gt;
&lt;td data-label=&quot;Travel Time&quot;&gt;25 minutes&lt;/td&gt;
&lt;td data-label=&quot;Rank*&quot;&gt;4&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td data-label=&quot;Location&quot;&gt;Norwood&lt;/td&gt;
&lt;td data-label=&quot;Distance&quot;&gt;35 miles&lt;/td&gt;
&lt;td data-label=&quot;Travel Time&quot;&gt;40 minutes&lt;/td&gt;
&lt;td data-label=&quot;Rank*&quot;&gt;5&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td data-label=&quot;Location&quot;&gt;Gaylord&lt;/td&gt;
&lt;td data-label=&quot;Distance&quot;&gt;55 miles&lt;/td&gt;
&lt;td data-label=&quot;Travel Time&quot;&gt;60 minutes&lt;/td&gt;
&lt;td data-label=&quot;Rank*&quot;&gt;6&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td data-label=&quot;Location&quot;&gt;Rapidan&lt;/td&gt;
&lt;td data-label=&quot;Distance&quot;&gt;75 miles&lt;/td&gt;
&lt;td data-label=&quot;Travel Time&quot;&gt;75 minutes&lt;/td&gt;
&lt;td data-label=&quot;Rank*&quot;&gt;7&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td data-label=&quot;Location&quot;&gt;Chengwatana&lt;/td&gt;
&lt;td data-label=&quot;Distance&quot;&gt;95 miles&lt;/td&gt;
&lt;td data-label=&quot;Travel Time&quot;&gt;90 minutes&lt;/td&gt;
&lt;td data-label=&quot;Rank*&quot;&gt;8&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td data-label=&quot;Location&quot;&gt;Sacred Heart&lt;/td&gt;
&lt;td data-label=&quot;Distance&quot;&gt;105 miles&lt;/td&gt;
&lt;td data-label=&quot;Travel Time&quot;&gt;120 minutes&lt;/td&gt;
&lt;td data-label=&quot;Rank*&quot;&gt;9&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/p&gt;
&lt;p&gt;* Higher Rank is considered better.&lt;/p&gt;
&lt;h2&gt;Tips to Get a Better Look&lt;/h2&gt;
&lt;p&gt;Viewing the aurora depends on four important factors.&lt;/p&gt;
&lt;h3&gt;1. Geomagnetic Activity&lt;/h3&gt;
&lt;p&gt;If the geomagnetic field is active, then the aurora will be brighter and further from the poles. Geomagnetic activity is driven by solar activity and solar coronal holes and thus it waxes and wanes with time. The level of geomagnetic activity is indicated by the planetary K index or Kp. The Kp index ranges from 0 to 9.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;For Kp in the range 0 to 2, the aurora will be far north, quite dim in intensity, and not very active.&lt;/li&gt;
&lt;li&gt;For Kp in the range of 3 to 5, the aurora will move further from the poles, it will become brighter and there will be more auroral activity (motion and formations). If you are in the right place, these aurora can be quite pleasing to look at.&lt;/li&gt;
&lt;li&gt;For Kp in the range 6 to 7, the aurora will move even further from the poles and will become quite bright and active. At this geomagnetic activity level, it might be possible to see the aurora from the northern edge of the United States.&lt;/li&gt;
&lt;li&gt;For Kp in the range 8 to 9, the aurora will move even further towards the equator and it will become very bright and very active. These are the events that create the best aurora and the extended auroral oval will be observable by the most people. At these levels, aurora may be seen directly overhead from the northern states of the USA.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;It should be noted that the relationship between Kp and auroral latitude are approximate and represent averages. There will be times when these relationships do not hold up exactly.&lt;/p&gt;
&lt;p&gt;There is an approximate relationship between Kp and the equatorward extent of the auroral oval. This relationship holds true in geomagnetic latitude, not geographic. At Kp = 0, the equator ward edge of the auroral oval is approximately 66 degrees. And it moves equatorward about 2 degrees for each level of Kp. So for Kp = 1, the aurora would move down to 64 degrees, for Kp=2, it would move to 62 degrees, etc… until reaching Kp of 9 at 48 degrees magnetic latitude.&lt;/p&gt;
&lt;h3&gt;2. Location&lt;/h3&gt;
&lt;p&gt;Go towards the magnetic poles. The north magnetic pole is currently about 400 km (250 miles) from the geographic pole and is located in the islands of north east Canada. Find a place where you can see to the north ( or south if you are in the southern hemisphere). Given the right vantage point, say for example on top of a hill in the northern hemisphere with an unobstructed view toward the north, a person can see aurora even when it is 1000 km (600 miles) further north. It should be noted that if you are in the right place under the aurora, you can see very nice auroral displays even with low geomagnetic activity (Kp = 3 or 4).&lt;/p&gt;
&lt;h3&gt;3. It Must Be Dark&lt;/h3&gt;
&lt;p&gt;Go out at night. Get away from city lights. The full moon will also diminish the apparent brightness of the aurora (not the actual brightness). One caveat that people often neglect to think of is that the high latitudes where aurora occur are also latitudes where it doesn&apos;t get dark in the summer. So combining a summer vacation to the arctic with aurora watching usually doesn&apos;t work. The aurora may still be there but it is only visible when it is dark.&lt;/p&gt;
&lt;h3&gt;4. Timing&lt;/h3&gt;
&lt;p&gt;Best aurora is usually within an hour or two of midnight (between 10 PM and 2 AM local time). These hours of active aurora expand towards evening and morning as the level of geomagnetic activity increases. There may be aurora in the evening and morning but it is usually not as active and therefore, not as visually appealing.&lt;/p&gt;
&lt;p&gt;The best Seasons for aurora watching are around the spring and fall equinoxes. Due to subtleties in the way the solar wind interacts with Earth&apos;s magnetosphere, there is a tendency towards larger geomagnetic storms, and thus better auroras, to occur near the equinoxes. However, the number of hours of darkness decreases (increases) rapidly near the spring (fall) equinox so this caveat must be considered for those traveling to see the aurora.&lt;/p&gt;
&lt;p&gt;Below are maps showing the most southern extent of where aurora might be observable for different levels of the geomagnetic Kp index (and the NOAA G scale). It should be noted that the aurora can often be observed hundreds of kilometers (miles) equatorward of the actual aurora so these figures do not indicate where the aurora may be but rather the point from which it may be observed.&lt;/p&gt;
&lt;h2&gt;Aurora Forecast&lt;/h2&gt;
&lt;h3&gt;July 12th, 2023&lt;/h3&gt;
&lt;p&gt;&lt;img src=src=&quot;aurora-1.webp&quot;https://miguelpimentel.do//blog/2023-07-11-aurora-borealis/&quot;src=&quot;aurora-1.webp&quot; alt=&quot;alt=&amp;quot;NOAA Space Weather Prediction Center - G-Kp&quot; /&gt;
G is NOAA Geomagnetic Storm Index (0–5)&lt;br /&gt;
Kp is Planetary K Index (0–9)&lt;/p&gt;
&lt;h3&gt;September 18th, 2023&lt;/h3&gt;
&lt;p&gt;&lt;img src=src=&quot;aurora-2.webp&quot;https://miguelpimentel.do//blog/2023-07-11-aurora-borealis/&quot;src=&quot;aurora-2.webp&quot; alt=&quot;aurora forecast for 2023-09-18&quot; /&gt;&lt;/p&gt;
&lt;h2&gt;Additional Resources&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://www.gi.alaska.edu/monitors/aurora-forecast&quot;&gt;Aurora Forecast&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.swpc.noaa.gov/content/aurora-dashboard-experimental&quot;&gt;Aurora Dashboard&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.swpc.noaa.gov/phenomena&quot;&gt;Space Weather Phenomena&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.swpc.noaa.gov/content/aurora-tutorial&quot;&gt;Dive Deeper Into the Science of the Aurora&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</content:encoded><enclosure url="https://miguelpimentel.do//_astro/cover-image.B3BS0th_.webp" length="0" type="image/webp"/></item><item><title>Comparing SSD and NVMe Technologies</title><link>https://miguelpimentel.do/blog/2023-07-27-comparing-ssd-nvme/</link><guid isPermaLink="true">https://miguelpimentel.do/blog/2023-07-27-comparing-ssd-nvme/</guid><description>The main goal of this post was to aid in selecting SSD, and NVMe drives during a Micro Center sale.</description><pubDate>Thu, 27 Jul 2023 00:00:00 GMT</pubDate><content:encoded>&lt;img src=&quot;https://miguelpimentel.do//_astro/cover-image.D7dLAxBk.webp&quot; alt=&quot;SSD NVME by Marc PEZIN.&quot; /&gt;&lt;p&gt;The main goal of this post was to aid in selecting SSD, and NVMe drives during a Micro Center sale. But I&apos;ll try to give an overview of what to look for next time you find yourself in the same position.&lt;/p&gt;
&lt;h2&gt;Storage Technologies&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;MLC V-NAND is the best option.&lt;/li&gt;
&lt;li&gt;TLC is equivalent to V-NAND, and viceversa.&lt;/li&gt;
&lt;li&gt;QLC is cheap but a &lt;em&gt;little&lt;/em&gt; less reliable.&lt;/li&gt;
&lt;li&gt;3D NAND is your basic entry point to SSDs.&lt;/li&gt;
&lt;/ol&gt;
&lt;h3&gt;3D NAND&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;The most basic of modern SSD technologies. Great for throwing on cheap systems, home servers, anything non-critical really.&lt;/li&gt;
&lt;li&gt;It is not recommended to host your Operating System on 3D NAND, or QLC.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Quad Level Cell (QLC)&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;QLC (Quad Level Cell) is cheaper to manufacture than TLC (Triple Level Cell).&lt;/li&gt;
&lt;li&gt;QLC is much slower and less durable to constant writing than TLC.&lt;/li&gt;
&lt;li&gt;It is not recommended to host your Operating System on 3D NAND, or QLC.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Triple Level Cell (TLC)&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;TLC is more reliable when compared to QLC.&lt;/li&gt;
&lt;li&gt;MLC is a Triple Level Cell based Samsung technology.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Multi Level Cell (MLC)&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;MLC is a Triple Level Cell based Samsung technology.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;How Are SSDs Scored&lt;/h2&gt;
&lt;h3&gt;Storage&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;1 point per GB
&lt;ul&gt;
&lt;li&gt;Less accurate the bigger the SSD&lt;/li&gt;
&lt;li&gt;3 TB and higher drives scale exp/log instead of linearly.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Price&lt;/h3&gt;
&lt;p&gt;Based on price per $1. Selected $0.10 as the baseline after averaging some calculations.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;1 point for every $0.01 / GB below $0.10&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Technology Coefficient&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;3D NAND Coefficient = 0.5 (Big Penalty)&lt;/li&gt;
&lt;li&gt;QLC Coefficient = 0.75 (Small Penalty)&lt;/li&gt;
&lt;li&gt;TLC Coefficient = 1.0 (No Change)&lt;/li&gt;
&lt;li&gt;MLC V-NAND coefficient = 1.25 (Small Advantage)&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;NVMe M.2 2280 M Key&lt;/h2&gt;
&lt;p&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th data-label=&quot;Brand&quot;&gt;Brand&lt;/th&gt;
&lt;th data-label=&quot;Storage&quot;&gt;Storage&lt;/th&gt;
&lt;th data-label=&quot;Price&quot;&gt;Price&lt;/th&gt;
&lt;th data-label=&quot;Notes&quot;&gt;Notes&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td data-label=&quot;Brand&quot;&gt;970 EVO Plus&lt;/td&gt;
&lt;td data-label=&quot;Storage&quot;&gt;500 GB&lt;/td&gt;
&lt;td data-label=&quot;Price&quot;&gt;$35&lt;/td&gt;
&lt;td data-label=&quot;Notes&quot;&gt;MLC V-NAND&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td data-label=&quot;Brand&quot;&gt;970 EVO Plus&lt;/td&gt;
&lt;td data-label=&quot;Storage&quot;&gt;2 TB&lt;/td&gt;
&lt;td data-label=&quot;Price&quot;&gt;$100&lt;/td&gt;
&lt;td data-label=&quot;Notes&quot;&gt;MLC V-NAND&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td data-label=&quot;Brand&quot;&gt;970 EVO Plus&lt;/td&gt;
&lt;td data-label=&quot;Storage&quot;&gt;1 TB&lt;/td&gt;
&lt;td data-label=&quot;Price&quot;&gt;$50&lt;/td&gt;
&lt;td data-label=&quot;Notes&quot;&gt;V-NAND&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td data-label=&quot;Brand&quot;&gt;980&lt;/td&gt;
&lt;td data-label=&quot;Storage&quot;&gt;1 TB&lt;/td&gt;
&lt;td data-label=&quot;Price&quot;&gt;$50&lt;/td&gt;
&lt;td data-label=&quot;Notes&quot;&gt;MLC V-NAND&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td data-label=&quot;Brand&quot;&gt;980 Pro&lt;/td&gt;
&lt;td data-label=&quot;Storage&quot;&gt;2 TB&lt;/td&gt;
&lt;td data-label=&quot;Price&quot;&gt;$120&lt;/td&gt;
&lt;td data-label=&quot;Notes&quot;&gt;MLC V-NAND&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td data-label=&quot;Brand&quot;&gt;980 Pro&lt;/td&gt;
&lt;td data-label=&quot;Storage&quot;&gt;1 TB&lt;/td&gt;
&lt;td data-label=&quot;Price&quot;&gt;$70&lt;/td&gt;
&lt;td data-label=&quot;Notes&quot;&gt;V-NAND&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td data-label=&quot;Brand&quot;&gt;990 PRO&lt;/td&gt;
&lt;td data-label=&quot;Storage&quot;&gt;1 TB&lt;/td&gt;
&lt;td data-label=&quot;Price&quot;&gt;$80&lt;/td&gt;
&lt;td data-label=&quot;Notes&quot;&gt;MLC V-NAND&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td data-label=&quot;Brand&quot;&gt;Crucial P3&lt;/td&gt;
&lt;td data-label=&quot;Storage&quot;&gt;1 TB&lt;/td&gt;
&lt;td data-label=&quot;Price&quot;&gt;$40&lt;/td&gt;
&lt;td data-label=&quot;Notes&quot;&gt;3D NAND&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td data-label=&quot;Brand&quot;&gt;Inland&lt;/td&gt;
&lt;td data-label=&quot;Storage&quot;&gt;500 GB&lt;/td&gt;
&lt;td data-label=&quot;Price&quot;&gt;$23&lt;/td&gt;
&lt;td data-label=&quot;Notes&quot;&gt;QLC&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td data-label=&quot;Brand&quot;&gt;Inland&lt;/td&gt;
&lt;td data-label=&quot;Storage&quot;&gt;1 TB&lt;/td&gt;
&lt;td data-label=&quot;Price&quot;&gt;$40&lt;/td&gt;
&lt;td data-label=&quot;Notes&quot;&gt;QLC&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td data-label=&quot;Brand&quot;&gt;Inland&lt;/td&gt;
&lt;td data-label=&quot;Storage&quot;&gt;2 TB&lt;/td&gt;
&lt;td data-label=&quot;Price&quot;&gt;$70&lt;/td&gt;
&lt;td data-label=&quot;Notes&quot;&gt;QLC&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td data-label=&quot;Brand&quot;&gt;Performance&lt;/td&gt;
&lt;td data-label=&quot;Storage&quot;&gt;1 TB&lt;/td&gt;
&lt;td data-label=&quot;Price&quot;&gt;$55&lt;/td&gt;
&lt;td data-label=&quot;Notes&quot;&gt;TLC&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td data-label=&quot;Brand&quot;&gt;Prime&lt;/td&gt;
&lt;td data-label=&quot;Storage&quot;&gt;500 GB&lt;/td&gt;
&lt;td data-label=&quot;Price&quot;&gt;$30&lt;/td&gt;
&lt;td data-label=&quot;Notes&quot;&gt;TLC&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td data-label=&quot;Brand&quot;&gt;Prime&lt;/td&gt;
&lt;td data-label=&quot;Storage&quot;&gt;1 TB&lt;/td&gt;
&lt;td data-label=&quot;Price&quot;&gt;$50&lt;/td&gt;
&lt;td data-label=&quot;Notes&quot;&gt;TLC&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/p&gt;
&lt;h2&gt;SSD&lt;/h2&gt;
&lt;p&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th data-label=&quot;Brand&quot;&gt;Brand&lt;/th&gt;
&lt;th data-label=&quot;Storage&quot;&gt;Storage&lt;/th&gt;
&lt;th data-label=&quot;Price&quot;&gt;Price&lt;/th&gt;
&lt;th data-label=&quot;Notes&quot;&gt;Notes&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td data-label=&quot;Brand&quot;&gt;Inland&lt;/td&gt;
&lt;td data-label=&quot;Storage&quot;&gt;1 TB&lt;/td&gt;
&lt;td data-label=&quot;Price&quot;&gt;$50&lt;/td&gt;
&lt;td data-label=&quot;Notes&quot;&gt;TLC&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td data-label=&quot;Brand&quot;&gt;Inland&lt;/td&gt;
&lt;td data-label=&quot;Storage&quot;&gt;512 GB&lt;/td&gt;
&lt;td data-label=&quot;Price&quot;&gt;$25&lt;/td&gt;
&lt;td data-label=&quot;Notes&quot;&gt;TLC&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td data-label=&quot;Brand&quot;&gt;Platinum&lt;/td&gt;
&lt;td data-label=&quot;Storage&quot;&gt;2 TB&lt;/td&gt;
&lt;td data-label=&quot;Price&quot;&gt;$80&lt;/td&gt;
&lt;td data-label=&quot;Notes&quot;&gt;TLC&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td data-label=&quot;Brand&quot;&gt;Platinum&lt;/td&gt;
&lt;td data-label=&quot;Storage&quot;&gt;1 TB&lt;/td&gt;
&lt;td data-label=&quot;Price&quot;&gt;$43&lt;/td&gt;
&lt;td data-label=&quot;Notes&quot;&gt;TLC&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td data-label=&quot;Brand&quot;&gt;Professional&lt;/td&gt;
&lt;td data-label=&quot;Storage&quot;&gt;256 GB&lt;/td&gt;
&lt;td data-label=&quot;Price&quot;&gt;$20&lt;/td&gt;
&lt;td data-label=&quot;Notes&quot;&gt;3D NAND&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td data-label=&quot;Brand&quot;&gt;Professional&lt;/td&gt;
&lt;td data-label=&quot;Storage&quot;&gt;125 GB&lt;/td&gt;
&lt;td data-label=&quot;Price&quot;&gt;$15&lt;/td&gt;
&lt;td data-label=&quot;Notes&quot;&gt;TLC&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td data-label=&quot;Brand&quot;&gt;870 EVO&lt;/td&gt;
&lt;td data-label=&quot;Storage&quot;&gt;1 TB&lt;/td&gt;
&lt;td data-label=&quot;Price&quot;&gt;$50&lt;/td&gt;
&lt;td data-label=&quot;Notes&quot;&gt;MLC V-NAND&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td data-label=&quot;Brand&quot;&gt;870 EVO&lt;/td&gt;
&lt;td data-label=&quot;Storage&quot;&gt;4 TB&lt;/td&gt;
&lt;td data-label=&quot;Price&quot;&gt;$220&lt;/td&gt;
&lt;td data-label=&quot;Notes&quot;&gt;MLC V-NAND&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td data-label=&quot;Brand&quot;&gt;870 EVO&lt;/td&gt;
&lt;td data-label=&quot;Storage&quot;&gt;500 GB&lt;/td&gt;
&lt;td data-label=&quot;Price&quot;&gt;$40&lt;/td&gt;
&lt;td data-label=&quot;Notes&quot;&gt;MLC V-NAND&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td data-label=&quot;Brand&quot;&gt;870 QVO&lt;/td&gt;
&lt;td data-label=&quot;Storage&quot;&gt;1 TB&lt;/td&gt;
&lt;td data-label=&quot;Price&quot;&gt;$70&lt;/td&gt;
&lt;td data-label=&quot;Notes&quot;&gt;QLC V-NAND&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/p&gt;
&lt;h2&gt;Final Scores&lt;/h2&gt;
&lt;h3&gt;NVMe&lt;/h3&gt;
&lt;p&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th data-label=&quot;Description&quot;&gt;Description&lt;/th&gt;
&lt;th data-label=&quot;$ / GB&quot;&gt;$ / GB&lt;/th&gt;
&lt;th data-label=&quot;Coef&quot;&gt;Coef&lt;/th&gt;
&lt;th data-label=&quot;Score&quot;&gt;Score&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td data-label=&quot;Description&quot;&gt;970 500 GB $35 MLC&lt;/td&gt;
&lt;td data-label=&quot;$ / GB&quot;&gt;0.070&lt;/td&gt;
&lt;td data-label=&quot;Coef&quot;&gt;1.25&lt;/td&gt;
&lt;td data-label=&quot;Score&quot;&gt;629&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td data-label=&quot;Description&quot;&gt;970 2 TB $100 MLC&lt;/td&gt;
&lt;td data-label=&quot;$ / GB&quot;&gt;0.050&lt;/td&gt;
&lt;td data-label=&quot;Coef&quot;&gt;1.25&lt;/td&gt;
&lt;td data-label=&quot;Score&quot;&gt;2506&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td data-label=&quot;Description&quot;&gt;970 1 TB $100 MLC&lt;/td&gt;
&lt;td data-label=&quot;$ / GB&quot;&gt;0.103&lt;/td&gt;
&lt;td data-label=&quot;Coef&quot;&gt;1.25&lt;/td&gt;
&lt;td data-label=&quot;Score&quot;&gt;1250&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td data-label=&quot;Description&quot;&gt;980 1 TB $50 V&lt;/td&gt;
&lt;td data-label=&quot;$ / GB&quot;&gt;0.050&lt;/td&gt;
&lt;td data-label=&quot;Coef&quot;&gt;1&lt;/td&gt;
&lt;td data-label=&quot;Score&quot;&gt;1005&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td data-label=&quot;Description&quot;&gt;980P 2 TB $120 MLC&lt;/td&gt;
&lt;td data-label=&quot;$ / GB&quot;&gt;0.060&lt;/td&gt;
&lt;td data-label=&quot;Coef&quot;&gt;1.25&lt;/td&gt;
&lt;td data-label=&quot;Score&quot;&gt;2505&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td data-label=&quot;Description&quot;&gt;980P 1 TB $70 V&lt;/td&gt;
&lt;td data-label=&quot;$ / GB&quot;&gt;0.070&lt;/td&gt;
&lt;td data-label=&quot;Coef&quot;&gt;1&lt;/td&gt;
&lt;td data-label=&quot;Score&quot;&gt;1003&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td data-label=&quot;Description&quot;&gt;990P 1 TB $80 MLC&lt;/td&gt;
&lt;td data-label=&quot;$ / GB&quot;&gt;0.080&lt;/td&gt;
&lt;td data-label=&quot;Coef&quot;&gt;1.25&lt;/td&gt;
&lt;td data-label=&quot;Score&quot;&gt;1253&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td data-label=&quot;Description&quot;&gt;Crucial 1 TB $40 3D&lt;/td&gt;
&lt;td data-label=&quot;$ / GB&quot;&gt;0.040&lt;/td&gt;
&lt;td data-label=&quot;Coef&quot;&gt;0.5&lt;/td&gt;
&lt;td data-label=&quot;Score&quot;&gt;503&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td data-label=&quot;Description&quot;&gt;Inland 500 GB $23 QLC&lt;/td&gt;
&lt;td data-label=&quot;$ / GB&quot;&gt;0.046&lt;/td&gt;
&lt;td data-label=&quot;Coef&quot;&gt;0.75&lt;/td&gt;
&lt;td data-label=&quot;Score&quot;&gt;379&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td data-label=&quot;Description&quot;&gt;Inland 1 TB $40 QLC&lt;/td&gt;
&lt;td data-label=&quot;$ / GB&quot;&gt;0.040&lt;/td&gt;
&lt;td data-label=&quot;Coef&quot;&gt;0.75&lt;/td&gt;
&lt;td data-label=&quot;Score&quot;&gt;755&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td data-label=&quot;Description&quot;&gt;Inland 2 TB $70 QLC&lt;/td&gt;
&lt;td data-label=&quot;$ / GB&quot;&gt;0.035&lt;/td&gt;
&lt;td data-label=&quot;Coef&quot;&gt;0.75&lt;/td&gt;
&lt;td data-label=&quot;Score&quot;&gt;1505&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td data-label=&quot;Description&quot;&gt;Performance 1 TB $55 TLC&lt;/td&gt;
&lt;td data-label=&quot;$ / GB&quot;&gt;0.055&lt;/td&gt;
&lt;td data-label=&quot;Coef&quot;&gt;1&lt;/td&gt;
&lt;td data-label=&quot;Score&quot;&gt;1005&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td data-label=&quot;Description&quot;&gt;Prime 500 GB $30 TLC&lt;/td&gt;
&lt;td data-label=&quot;$ / GB&quot;&gt;0.060&lt;/td&gt;
&lt;td data-label=&quot;Coef&quot;&gt;1&lt;/td&gt;
&lt;td data-label=&quot;Score&quot;&gt;504&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td data-label=&quot;Description&quot;&gt;Prime 1 TB $50 TLC&lt;/td&gt;
&lt;td data-label=&quot;$ / GB&quot;&gt;0.050&lt;/td&gt;
&lt;td data-label=&quot;Coef&quot;&gt;1&lt;/td&gt;
&lt;td data-label=&quot;Score&quot;&gt;1005&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/p&gt;
&lt;p&gt;*&lt;em&gt;Higher is better.&lt;/em&gt;&lt;/p&gt;
&lt;h3&gt;SSD&lt;/h3&gt;
&lt;p&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th data-label=&quot;Description&quot;&gt;Description&lt;/th&gt;
&lt;th data-label=&quot;$ / GB&quot;&gt;$ / GB&lt;/th&gt;
&lt;th data-label=&quot;Coef&quot;&gt;Coef&lt;/th&gt;
&lt;th data-label=&quot;Score&quot;&gt;Score&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td data-label=&quot;Description&quot;&gt;Inland 1TB $50 TLC&lt;/td&gt;
&lt;td data-label=&quot;$ / GB&quot;&gt;0.050&lt;/td&gt;
&lt;td data-label=&quot;Coef&quot;&gt;1&lt;/td&gt;
&lt;td data-label=&quot;Score&quot;&gt;1005&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td data-label=&quot;Description&quot;&gt;Inland 512GB $25 TLC&lt;/td&gt;
&lt;td data-label=&quot;$ / GB&quot;&gt;0.049&lt;/td&gt;
&lt;td data-label=&quot;Coef&quot;&gt;1&lt;/td&gt;
&lt;td data-label=&quot;Score&quot;&gt;517&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td data-label=&quot;Description&quot;&gt;Platinum 2TB $80 TLC&lt;/td&gt;
&lt;td data-label=&quot;$ / GB&quot;&gt;0.040&lt;/td&gt;
&lt;td data-label=&quot;Coef&quot;&gt;1&lt;/td&gt;
&lt;td data-label=&quot;Score&quot;&gt;2006&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td data-label=&quot;Description&quot;&gt;Platinum 1TB $43 TLC&lt;/td&gt;
&lt;td data-label=&quot;$ / GB&quot;&gt;0.043&lt;/td&gt;
&lt;td data-label=&quot;Coef&quot;&gt;1&lt;/td&gt;
&lt;td data-label=&quot;Score&quot;&gt;1006&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td data-label=&quot;Description&quot;&gt;Professional 256GB $20 3D&lt;/td&gt;
&lt;td data-label=&quot;$ / GB&quot;&gt;0.078&lt;/td&gt;
&lt;td data-label=&quot;Coef&quot;&gt;0.5&lt;/td&gt;
&lt;td data-label=&quot;Score&quot;&gt;129&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td data-label=&quot;Description&quot;&gt;Professional 125GB $15 3D&lt;/td&gt;
&lt;td data-label=&quot;$ / GB&quot;&gt;0.120&lt;/td&gt;
&lt;td data-label=&quot;Coef&quot;&gt;0.5&lt;/td&gt;
&lt;td data-label=&quot;Score&quot;&gt;63&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td data-label=&quot;Description&quot;&gt;970 500 GB $35 MLC&lt;/td&gt;
&lt;td data-label=&quot;$ / GB&quot;&gt;0.070&lt;/td&gt;
&lt;td data-label=&quot;Coef&quot;&gt;1.25&lt;/td&gt;
&lt;td data-label=&quot;Score&quot;&gt;629&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td data-label=&quot;Description&quot;&gt;970 2 TB $100 MLC&lt;/td&gt;
&lt;td data-label=&quot;$ / GB&quot;&gt;0.050&lt;/td&gt;
&lt;td data-label=&quot;Coef&quot;&gt;1.25&lt;/td&gt;
&lt;td data-label=&quot;Score&quot;&gt;2506&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td data-label=&quot;Description&quot;&gt;970 1 TB $100 MLC&lt;/td&gt;
&lt;td data-label=&quot;$ / GB&quot;&gt;0.103&lt;/td&gt;
&lt;td data-label=&quot;Coef&quot;&gt;1.25&lt;/td&gt;
&lt;td data-label=&quot;Score&quot;&gt;1250&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td data-label=&quot;Description&quot;&gt;980 1 TB $50 V&lt;/td&gt;
&lt;td data-label=&quot;$ / GB&quot;&gt;0.050&lt;/td&gt;
&lt;td data-label=&quot;Coef&quot;&gt;1&lt;/td&gt;
&lt;td data-label=&quot;Score&quot;&gt;1005&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td data-label=&quot;Description&quot;&gt;980P 2 TB $120 MLC&lt;/td&gt;
&lt;td data-label=&quot;$ / GB&quot;&gt;0.060&lt;/td&gt;
&lt;td data-label=&quot;Coef&quot;&gt;1.25&lt;/td&gt;
&lt;td data-label=&quot;Score&quot;&gt;2505&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td data-label=&quot;Description&quot;&gt;980P 1 TB $70 V&lt;/td&gt;
&lt;td data-label=&quot;$ / GB&quot;&gt;0.070&lt;/td&gt;
&lt;td data-label=&quot;Coef&quot;&gt;1&lt;/td&gt;
&lt;td data-label=&quot;Score&quot;&gt;1003&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td data-label=&quot;Description&quot;&gt;990P 1 TB $80 MLC&lt;/td&gt;
&lt;td data-label=&quot;$ / GB&quot;&gt;0.080&lt;/td&gt;
&lt;td data-label=&quot;Coef&quot;&gt;1.25&lt;/td&gt;
&lt;td data-label=&quot;Score&quot;&gt;1253&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/p&gt;
&lt;p&gt;*&lt;em&gt;Higher is better.&lt;/em&gt;&lt;/p&gt;
&lt;h2&gt;Conclusions&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Cheap system? Get &lt;strong&gt;any&lt;/strong&gt; of these.&lt;/li&gt;
&lt;li&gt;Secondary drive? Get any &lt;strong&gt;QLC&lt;/strong&gt; or better.&lt;/li&gt;
&lt;li&gt;OS Drive? Get any &lt;strong&gt;TLC&lt;/strong&gt; or better.&lt;/li&gt;
&lt;li&gt;Extra cash? Premium for reliability? Get any &lt;strong&gt;Samsung&lt;/strong&gt; from the list.&lt;/li&gt;
&lt;/ul&gt;
</content:encoded><enclosure url="https://miguelpimentel.do//_astro/cover-image.D7dLAxBk.webp" length="0" type="image/webp"/></item><item><title>10 Fun Facts About the Dominican Republic</title><link>https://miguelpimentel.do/blog/2024-09-12-dominican-fun-facts/</link><guid isPermaLink="true">https://miguelpimentel.do/blog/2024-09-12-dominican-fun-facts/</guid><description>Rediscovering my homeland after 8 years away - sharing the Dominican Republic through the eyes of someone who grew down there.</description><pubDate>Thu, 12 Sep 2024 00:00:00 GMT</pubDate><content:encoded>&lt;img src=&quot;https://miguelpimentel.do//_astro/cover-image.ubm5VZN6.webp&quot; alt=&quot;Dominican flag by Ruddy Corporan.&quot; /&gt;&lt;p&gt;After eight years away from the Dominican Republic, I returned in winter 2023. Walking through familiar streets in my hometown of Bonao, sitting in Santo Domingo&apos;s colonial plazas, and hearing the sounds I&apos;d grown up with felt like rediscovering a country I thought I knew completely. That visit reminded me how much of my homeland&apos;s story remains untold to the outside world.&lt;/p&gt;
&lt;p&gt;These facts come from a country I lived in for most of my life, experienced firsthand, and want to share with those who&apos;ve never been there.&lt;/p&gt;
&lt;h2&gt;1. Cigua Palmera: Our National Bird&lt;/h2&gt;
&lt;p&gt;&lt;img src=src=&quot;./palmchat.webp&quot;https://miguelpimentel.do//blog/2024-09-12-dominican-fun-facts/&quot;src=&quot;./palmchat.webp&quot; alt=&quot;Palmchat&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Growing up in Bonao, my friends and I would spot Cigua Palmeras in our school courtyard. These small, chattering birds build massive communal nests that look like apartment complexes wedged into palm trees. The scientific name is Dulus dominicus, and they exist nowhere else on Earth except on the island of Hispaniola.&lt;/p&gt;
&lt;p&gt;Cigua Palmeras (known in English as Palmchats) are intensely social, building nests that can house dozens of families. Their nests can weigh hundreds of pounds and last for years, passed down through bird generations like family homes. When hurricanes come through, these communal structures often survive better than individual nests.&lt;/p&gt;
&lt;h2&gt;2. Larimar: Found Only Here&lt;/h2&gt;
&lt;p&gt;&lt;img src=src=&quot;./larimar.webp&quot;https://miguelpimentel.do//blog/2024-09-12-dominican-fun-facts/&quot;src=&quot;./larimar.webp&quot; alt=&quot;Larimar&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Larimar exists only in the Dominican Republic, specifically in the southwestern province of Barahona. This blue variety of pectolite ranges from pale sky blue to deep ocean blue, and Dominicans discovered it in 1974. The name combines &quot;Lari&quot; (from the discoverer&apos;s daughter Larissa) and &quot;mar&quot; (sea in Spanish).&lt;/p&gt;
&lt;p&gt;The stone forms in volcanic cavities and requires hand-mining from mountainous terrain. Dominican miners rappel into cave systems to extract the mineral. The blue coloration comes from copper substitution, and no two pieces are identical. In jewelry shops across the country, you&apos;ll find Larimar set in gold, worn by locals and sold to visitors.&lt;/p&gt;
&lt;h2&gt;3. Taíno Petroglyphs in Cave Systems&lt;/h2&gt;
&lt;p&gt;&lt;img src=src=&quot;./ta%C3%ADno-pictographs.webp&quot;https://miguelpimentel.do//blog/2024-09-12-dominican-fun-facts/&quot;src=&quot;./ta%C3%ADno-pictographs.webp&quot; alt=&quot;Taíno pictograph&quot; /&gt;&lt;/p&gt;
&lt;p&gt;I first entered the Cueva de las Maravillas (Cave of Wonders) on a school trip as a kid. Walking into that cave system for the first time meant seeing stalactites and stalagmites, but more importantly, seeing the drawings left by the Taíno people who lived on our island centuries before Columbus.&lt;/p&gt;
&lt;p&gt;The Taíno petroglyphs and pictographs show faces, ceremonial scenes, and symbols that archaeologists believe represent their spiritual beliefs and daily life. The cave stays cool year-round, protected from hurricanes and time.&lt;/p&gt;
&lt;h2&gt;4. Hispaniolan Solenodon: An Ancient Mammal&lt;/h2&gt;
&lt;p&gt;&lt;img src=src=&quot;./hispaniolan-solenodon.webp&quot;https://miguelpimentel.do//blog/2024-09-12-dominican-fun-facts/&quot;src=&quot;./hispaniolan-solenodon.webp&quot; alt=&quot;Hispaniolan Solenodon&quot; /&gt;&lt;/p&gt;
&lt;p&gt;The Hispaniolan solenodon (Solenodon paradoxus) looks like something from another era because it has remained virtually unchanged for millions of years. This nocturnal mammal is one of the few venomous mammals on Earth. Its saliva contains toxins that help it hunt insects and small prey.&lt;/p&gt;
&lt;p&gt;Most Dominicans never see solenodons because they&apos;re nocturnal and increasingly rare due to habitat loss and predation by introduced species like cats and dogs. They survive in the mountain forests of the Dominican Republic and Haiti.&lt;/p&gt;
&lt;h2&gt;5. First European Settlement: La Isabela&lt;/h2&gt;
&lt;p&gt;&lt;img src=src=&quot;./taino-fishermen.webp&quot;https://miguelpimentel.do//blog/2024-09-12-dominican-fun-facts/&quot;src=&quot;./taino-fishermen.webp&quot; alt=&quot;Taíno fishermen&quot; /&gt;&lt;/p&gt;
&lt;p&gt;The Dominican Republic hosted the first permanent European settlement in the Americas. La Isabela, established by Christopher Columbus in 1493, predates Jamestown by over a century.&lt;/p&gt;
&lt;p&gt;When Columbus established La Isabela on the northern coast, the Taíno people already had sophisticated societies, agriculture, and trade networks. La Isabela failed as a settlement due to disease, poor planning, and conflicts with indigenous populations, leading to its abandonment. Its establishment marked the beginning of Spanish colonization in the Americas.&lt;/p&gt;
&lt;h2&gt;6. Santo Domingo: Oldest Continuously Inhabited European City&lt;/h2&gt;
&lt;p&gt;&lt;img src=src=&quot;./santo-domingo-1665.webp&quot;https://miguelpimentel.do//blog/2024-09-12-dominican-fun-facts/&quot;src=&quot;./santo-domingo-1665.webp&quot; alt=&quot;Santo Domingo as depicted circa 1665&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Santo Domingo, founded in 1498, is the oldest continuously inhabited European-established city in the Americas. Walking through its colonial zone, you&apos;re moving through 500+ years of continuous history.&lt;/p&gt;
&lt;p&gt;The city contains the first cathedral, first hospital, first university, and first palace built by Europeans in the New World. The Cathedral of Santo Domingo, completed in 1540, is where many Dominicans mark important life events. Santo Domingo was a major Spanish colonial capital, governing territories that extended far beyond the island.&lt;/p&gt;
&lt;h2&gt;7. Pico Duarte: The Caribbean&apos;s Highest Peak&lt;/h2&gt;
&lt;p&gt;&lt;img src=src=&quot;./pico-duarte.webp&quot;https://miguelpimentel.do//blog/2024-09-12-dominican-fun-facts/&quot;src=&quot;./pico-duarte.webp&quot; alt=&quot;Pico Duarte&quot; /&gt;&lt;/p&gt;
&lt;p&gt;At 3,098 meters (10,164 feet), Pico Duarte is the tallest mountain in the Caribbean. The climb takes you through multiple climate zones, from tropical lowlands to pine forests to alpine conditions at the summit. During December and January, temperatures at the peak can drop below freezing.&lt;/p&gt;
&lt;p&gt;The peak is named after Juan Pablo Duarte, one of the founding fathers of Dominican independence. The Dominican Republic contains mountains, valleys, deserts, and forests alongside its coastline.&lt;/p&gt;
&lt;h2&gt;8. Lake Enriquillo: Below Sea Level&lt;/h2&gt;
&lt;p&gt;&lt;img src=src=&quot;./lake-enriquillo.webp&quot;https://miguelpimentel.do//blog/2024-09-12-dominican-fun-facts/&quot;src=&quot;./lake-enriquillo.webp&quot; alt=&quot;Lake Enriquillo&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Lake Enriquillo sits 44 meters (144 feet) below sea level, making it the lowest point in the Caribbean. This hypersaline lake, three times saltier than the ocean, supports a unique ecosystem.&lt;/p&gt;
&lt;p&gt;American crocodiles live in Lake Enriquillo. Flamingos feed in its salty waters. The lake expands and contracts based on rainfall, sometimes growing large enough to threaten nearby communities, sometimes shrinking to expose vast salt flats. Within a few hours&apos; drive, you can go from the Caribbean&apos;s highest peak to its lowest point.&lt;/p&gt;
&lt;h2&gt;9. Carnaval: February Celebrations&lt;/h2&gt;
&lt;p&gt;&lt;img src=src=&quot;./carnaval.webp&quot;https://miguelpimentel.do//blog/2024-09-12-dominican-fun-facts/&quot;src=&quot;./carnaval.webp&quot; alt=&quot;Carnaval in the Dominican Republic&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Dominican Carnaval happens every February, climaxing on Independence Day (February 27th). Growing up in Bonao, Carnaval came to our doorstep. The parade route ran right in front of my grandparents&apos; house, so we&apos;d sit on the sidewalk and watch the entire spectacle unfold.&lt;/p&gt;
&lt;p&gt;The masks are the centerpiece. Diablos Cojuelos (limping devils) are the most iconic characters, with elaborate horned masks and colorful costumes. Each region has distinct characters: Roba la Gallina (steals the chicken), La Ciguapa (a mythical woman from Dominican folklore), and Los Taínos (representing our indigenous heritage).&lt;/p&gt;
&lt;p&gt;The Diablos Cojuelos carry vejigas (inflated bladders) to playfully hit spectators. Dominican Carnaval blends African, Spanish, and Taíno influences. For Dominican families, Carnaval is cultural transmission. Children learn about Dominican mythology and history through these characters.&lt;/p&gt;
&lt;h2&gt;10. Humpback Whales in Samaná Bay&lt;/h2&gt;
&lt;p&gt;&lt;img src=src=&quot;./humpback-whale-breaching-samana.webp&quot;https://miguelpimentel.do//blog/2024-09-12-dominican-fun-facts/&quot;src=&quot;./humpback-whale-breaching-samana.webp&quot; alt=&quot;Humpback whale breacking in Samana Bay&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Every year from January to March, humpback whales migrate to Samaná Bay&apos;s warm, shallow waters to mate and give birth. This migration is one of the longest animal journeys on Earth. These whales travel from feeding grounds near Greenland and Iceland to breed in Dominican waters.&lt;/p&gt;
&lt;p&gt;Samaná Bay provides warm, shallow, and protected conditions for whale calves to be born and gain strength before the journey north. The whale watching industry in Samaná employs hundreds of Dominicans. Local boat operators, many of whom grew up fishing these same waters, now guide visitors to observe whales.&lt;/p&gt;
&lt;h2&gt;Coming Home&lt;/h2&gt;
&lt;p&gt;Returning to the Dominican Republic after eight years away, I found much infrastructure development alongside things that remained unchanged: the sound of nature in the morning, the taste of mangoes from trees I remembered as a child, family gatherings that stretch late into the night, and lots of dancing.&lt;/p&gt;
&lt;p&gt;The Dominican Republic contains Caribbean beaches and mountain peaks, ancient Taíno caves and colonial cathedrals, endemic birds and migrating whales. For those who&apos;ve never been there, these facts offer a glimpse into a country beyond any single image. For those of us who call it home, they&apos;re reminders of why part of us always remains Dominican.&lt;/p&gt;
</content:encoded><enclosure url="https://miguelpimentel.do//_astro/cover-image.ubm5VZN6.webp" length="0" type="image/webp"/></item><item><title>Building in Silence</title><link>https://miguelpimentel.do/blog/2025-07-31-building-in-silence/</link><guid isPermaLink="true">https://miguelpimentel.do/blog/2025-07-31-building-in-silence/</guid><description>The last year has been about creating rather than documenting. While that focus led to some projects I&apos;m genuinely proud of, it also created documentation debt that I&apos;m only now realizing I need to pay back.</description><pubDate>Thu, 31 Jul 2025 00:00:00 GMT</pubDate><content:encoded>&lt;img src=&quot;https://miguelpimentel.do//_astro/cover-image.B3b0htjK.webp&quot; alt=&quot;Computer keyboard by Dongsh.&quot; /&gt;&lt;h2&gt;Acknowledging the Gap&lt;/h2&gt;
&lt;p&gt;I haven&apos;t published a blog post in almost a year. Not because I stopped learning or stopped building – quite the opposite, actually. I&apos;ve been deep in project mode, head down, solving problems and shipping code. Somewhere along the way, I forgot that building without writing is like learning without teaching. You miss half the value.&lt;/p&gt;
&lt;p&gt;The last year has been about creating rather than documenting. While that focus led to some projects I&apos;m genuinely proud of, it also created documentation debt that I&apos;m only now realizing I need to pay back.&lt;/p&gt;
&lt;h2&gt;What I&apos;ve Been Building&lt;/h2&gt;
&lt;p&gt;PomoBar came first. After an ADHD diagnosis, I needed better focus tools. The Pomodoro Technique worked, existing timers felt clunky and broke my concentration. So I built a minimalist timer that lives in Obsidian&apos;s status bar – my first real TypeScript project and first published Obsidian plugin.&lt;/p&gt;
&lt;p&gt;The Adopt-a-Drain and Traffic Studies Dashboards came from a bigger change – switching jobs in August 2024. After four years as an Assistant Contract Administrator at Metro Transit, I moved to the City of Crystal as an Engineering Project Manager. Better work-life balance, shorter commute, and the chance to work directly with residents rather than just high-level stakeholders.&lt;/p&gt;
&lt;p&gt;The new role gave me something I hadn&apos;t expected: flexibility to propose solutions. When I saw CSV files full of volunteer cleaning data and traffic study spreadsheets that nobody had time to analyze, I built demos on my own time. Python, Streamlit, and Plotly turned those proof-of-concepts into approved work projects. Suddenly I was the person responsible for all traffic studies reporting in the city, armed with dashboards that actually made the data useful.&lt;/p&gt;
&lt;p&gt;It&apos;s been validating – proving to myself that I can be an effective Project Manager without the college degree I never finished. The technical skills I&apos;d been developing as a hobby became genuinely valuable tools for municipal work.&lt;/p&gt;
&lt;p&gt;Meanwhile, my Digital Garden evolved. I&apos;ve been rethinking my approach to personal knowledge management – not just what tools I use, how I structure and connect ideas. Less collecting, more connecting.&lt;/p&gt;
&lt;h2&gt;Lessons From the Silence&lt;/h2&gt;
&lt;p&gt;When you&apos;re deep in creation mode, writing about projects feels like a distraction from making progress. That&apos;s exactly backward. Writing forces you to clarify your thinking, identify what you actually learned, and solidify those lessons before moving to the next shiny problem.&lt;/p&gt;
&lt;p&gt;I fell into perfectionist thinking without realizing it. Every project felt like it needed a comprehensive technical deep dive, complete with code samples and detailed tutorials. So I wrote nothing instead of writing something.&lt;/p&gt;
&lt;p&gt;Projects without accompanying writing lose their teaching value – both for others and for future me. I can barely remember why I made certain architectural decisions in PomoBar, and it&apos;s only been a few months.&lt;/p&gt;
&lt;p&gt;Starting a new role while deep in project mode created intense learning – new systems, new responsibilities, new technical challenges. The mental energy required to establish myself professionally while pursuing Python projects was helpful overall, more taxing than expected. The building focus became both an escape and a way to prove my capabilities in a new environment.&lt;/p&gt;
&lt;p&gt;The biggest lesson: shorter posts are perfectly fine. Not everything needs to be a 3,000-word technical tutorial. Sometimes a brief reflection or a quick tip is exactly what&apos;s needed.&lt;/p&gt;
&lt;h2&gt;Getting Back to Writing&lt;/h2&gt;
&lt;p&gt;This post is intentionally shorter than what I had in mind. It&apos;s my reminder that consistency beats perfection every time. I&apos;d rather publish brief, useful thoughts regularly than comprehensive pieces never.&lt;/p&gt;
&lt;p&gt;Explaining a project to others forces you to understand it differently. Teaching clarifies your own thinking. The act of putting ideas into words reveals gaps in your logic and surfaces your actual insights.&lt;/p&gt;
&lt;p&gt;Building in public isn&apos;t just about the code – it&apos;s about the process, the decisions, the dead ends, and the small wins. Those stories often matter more than the final implementation details.&lt;/p&gt;
&lt;h2&gt;Moving Forward&lt;/h2&gt;
&lt;p&gt;The restless curiosity that drove me to start blogging in the first place is still there. Still generating ideas, still jumping between interests, still needing an outlet for scattered thoughts. The transition from regional transit projects to municipal data work hasn&apos;t slowed this down – working directly with residents and being involved with generational projects like the Blue Line Extension has given me even more to process.&lt;/p&gt;
&lt;p&gt;The goal isn&apos;t to write about every project or document every learning experience. It&apos;s to maintain the habit of reflection, of turning experience into insight, of sharing the process rather than just the results.&lt;/p&gt;
&lt;p&gt;Sometimes that means short posts. Sometimes longer technical dives. Either way, it means showing up and putting words on the page.&lt;/p&gt;
&lt;p&gt;I&apos;m back to writing. Not because I have everything figured out – writing is how I figure things out.&lt;/p&gt;
</content:encoded><enclosure url="https://miguelpimentel.do//_astro/cover-image.B3b0htjK.webp" length="0" type="image/webp"/></item><item><title>My Actual Problem-Solving Rituals</title><link>https://miguelpimentel.do/blog/2025-09-09-actual-problem-solving-rituals/</link><guid isPermaLink="true">https://miguelpimentel.do/blog/2025-09-09-actual-problem-solving-rituals/</guid><description>Aggressive metal music while trying to solve complex problems? That sounds like a recipe for distraction, not focus. But here&apos;s the thing I&apos;ve learned about my brain since my ADHD diagnosis: what works for me doesn&apos;t always match what&apos;s supposed to work.</description><pubDate>Tue, 09 Sep 2025 00:00:00 GMT</pubDate><content:encoded>&lt;img src=&quot;https://miguelpimentel.do//_astro/cover-image.CIFeWnpJ.jpg&quot; alt=&quot;Photo by Javier Allegue Barros on Unsplash.&quot; /&gt;&lt;p&gt;Picture this: I&apos;m staring at a stubborn piece of code that won&apos;t work, my browser has twelve tabs open, and I&apos;m genuinely stuck. What do I do? I put on my noise-canceling headphones and blast &quot;Psychosocial&quot; by Slipknot.&lt;/p&gt;
&lt;p&gt;Most productivity advice would tell you that&apos;s exactly wrong. Aggressive metal music while trying to solve complex problems? That sounds like a recipe for distraction, not focus. But here&apos;s the thing I&apos;ve learned about my brain since my ADHD diagnosis: what works for me doesn&apos;t always match what&apos;s supposed to work.&lt;/p&gt;
&lt;p&gt;I&apos;ve spent years figuring out my actual problem-solving rituals, the weird collection of habits that genuinely help me think through challenges. Some of them make sense, others probably look strange from the outside. All of them work better than the generic productivity advice I used to force myself to follow.&lt;/p&gt;
&lt;h2&gt;Fidgeting as Focus&lt;/h2&gt;
&lt;p&gt;When I&apos;m stuck on something, my body knows before my brain does. I start unconsciously cracking my fingers, petting my beard, or playing with my hair. For the longest time, I thought these were bad habits I should stop. Turns out, they&apos;re part of how I think.&lt;/p&gt;
&lt;p&gt;There&apos;s something about that physical fidgeting that helps my brain work through problems. It&apos;s not nervous energy, it&apos;s thinking energy! When I try to sit perfectly still and focus, I actually get more distracted. But when I let myself fidget, my mind settles into a better thinking rhythm.&lt;/p&gt;
&lt;p&gt;The real breakthrough came when I noticed that productive procrastination actually works for me. When I&apos;m stuck on a work problem, sometimes the best thing I can do is fold laundry or clean the house. There&apos;s something about the repetitive, simple, physical tasks that lets my subconscious work on the real problem. I&apos;ll be organizing a closet and suddenly the solution to a Python function I&apos;ve been wrestling with just appears in my head.&lt;/p&gt;
&lt;h2&gt;Environment Tweaks&lt;/h2&gt;
&lt;p&gt;I have a headphone hierarchy for different types of thinking. Regular earphones are for when I need a soft disconnect. I remain aware of my surroundings but creating a small bubble of focus. Noise-canceling headphones are for when I need to disappear into deeper work.&lt;/p&gt;
&lt;p&gt;And then there&apos;s the music choice that surprises most people. When I need to concentrate or solve problems, I reach for Slipknot, System of a Down, All That Remains, Muse, Thirty Seconds to Mars. The more &quot;aggressive&quot; music actually helps me focus. I think it&apos;s because the intensity matches the mental effort I&apos;m putting in. Calm, ambient music makes my brain wander. But what others would consider &quot;too much&quot; seems to keep me locked in.&lt;/p&gt;
&lt;p&gt;I know it sounds counterintuitive. Friends have asked how I can think clearly with heavy music playing. But my ADHD brain craves stimulation, and the aggressive music provides just enough background intensity to keep me engaged without being distracting.&lt;/p&gt;
&lt;h2&gt;When Problems Get Too Big&lt;/h2&gt;
&lt;p&gt;Sometimes a problem feels bigger than what I can hold in my head all at once. That&apos;s when I switch from trying to think my way through it to getting it out of my brain entirely.&lt;/p&gt;
&lt;p&gt;If I have too much swirling around mentally, I do a brain dump straight into Obsidian. No organization, no structure – just everything that&apos;s bouncing around in my head gets typed out in my daily journal. Once external, I can see patterns and priorities that were invisible when everything was just competing for mental space.&lt;/p&gt;
&lt;p&gt;For complex technical problems or big decisions, I &lt;em&gt;still&lt;/em&gt; reach for pen and paper. There&apos;s something about the physical act of writing that slows down my thinking in a good way. Digital tools are great for capturing and organizing, but when I really need to work through something step by step, handwriting forces me to be more deliberate.&lt;/p&gt;
&lt;p&gt;When I&apos;m procrastinating or jumping between tasks without making progress, I use pomodoro timers to create structure. I actually built &lt;a href=&quot;https://github.com/semanticdata/obsidian-pomodoro&quot;&gt;PomoBar&lt;/a&gt; as an Obsidian plugin because I needed a timer that stayed out of my way but was available when natural flow breaks down. Pen and paper is my backup plan when everything else stops working.&lt;/p&gt;
&lt;h2&gt;What Doesn&apos;t Work&lt;/h2&gt;
&lt;p&gt;Here&apos;s what I&apos;ve learned about my ADHD brain and traditional productivity advice: most of it assumes a neurotypical brain that operates on predictable schedules and &lt;em&gt;consistent motivation levels&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;My motivation fluctuates throughout the day in ways I can&apos;t predict or control. Some mornings I wake up with laser focus and can tackle complex problems for hours. Other days, I struggle to concentrate on simple tasks until later in the day. The emotional rollercoaster is real! Rigid scheduling that doesn&apos;t account for these natural fluctuations just sets me up for failure and frustration.&lt;/p&gt;
&lt;p&gt;Time blocking is something I&apos;m experimenting with, but it only works when I build in flexibility. I can&apos;t schedule &quot;deep work&quot; from 9-11 AM and expect my brain to cooperate just because it&apos;s on the calendar. Instead, I try to match my planned tasks to whatever mental energy I actually have in the moment. Sometimes that means the task scheduled for the afternoon gets done in the morning, or vice versa.&lt;/p&gt;
&lt;h2&gt;Final Thoughts&lt;/h2&gt;
&lt;p&gt;The biggest lesson I&apos;ve learned about problem-solving so far, is that the rituals that work for your specific brain matter more than following someone else&apos;s system. My combo can look chaotic from the outside, but it consistently helps me work through challenges better than any productivity methodology I&apos;ve tried to force myself into.&lt;/p&gt;
&lt;p&gt;Your problem-solving rituals might be completely different. Maybe you need silence and stillness. Maybe you think best while cooking or in the shower. Maybe you need collaborative conversation or complete isolation. The point isn&apos;t to copy what works for someone else, it&apos;s to pay attention to what actually works for you, even if it sounds weird to other people.&lt;/p&gt;
</content:encoded><enclosure url="https://miguelpimentel.do//_astro/cover-image.CIFeWnpJ.jpg" length="0" type="image/webp"/></item><item><title>Unlock the Sidebar Width in Firefox</title><link>https://miguelpimentel.do/blog/2023-06-25-unlock-firefox-sidebar/</link><guid isPermaLink="true">https://miguelpimentel.do/blog/2023-06-25-unlock-firefox-sidebar/</guid><description>Tutorial about unlocking the max-width of Firefox&apos;s sidebar. Doing so gives you a better experience when using extensions embedded within the sidebar.</description><pubDate>Sun, 25 Jun 2023 00:00:00 GMT</pubDate><content:encoded>&lt;img src=&quot;https://miguelpimentel.do//_astro/cover-image.iuywvUNn.webp&quot; alt=&quot;Firefox Logo.&quot; /&gt;&lt;p&gt;This post will guide you through unlocking the sidebar width in Firefox. It will let you resize it beyond what is possible by default. We will be setting both the maximum, and the minimum width. You will have a chance to customize these values once at the right step.&lt;/p&gt;
&lt;h2&gt;Why Would Anyone Want to Do This?&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;To enhance the use of the Firefox &lt;a href=&quot;https://addons.mozilla.org/en-US/firefox/addon/side-view/&quot;&gt;Side View&lt;/a&gt; extension.&lt;/li&gt;
&lt;li&gt;To compliment the use of one of my Firefox sidebar &lt;a href=&quot;https://addons.mozilla.org/en-US/firefox/user/17772574/&quot;&gt;extensions&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Overview&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;Open &lt;code&gt;about:support&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Locate your &lt;em&gt;Profile Folder&lt;/em&gt;.&lt;/li&gt;
&lt;li&gt;Open your &lt;em&gt;Profile Folder&lt;/em&gt;.&lt;/li&gt;
&lt;li&gt;Create a new folder called &lt;code&gt;chrome&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Inside the &lt;code&gt;chrome&lt;/code&gt; folder, create a new file called &lt;code&gt;userChrome.css&lt;/code&gt; (includes the file extension).&lt;/li&gt;
&lt;li&gt;Copy and paste this in it: &lt;code&gt;#sidebar-box { max-width: 40% !important; min-width: 300px !important; }&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Customize the width to your preference.&lt;/li&gt;
&lt;li&gt;Open &lt;code&gt;about:config&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Find &lt;code&gt;toolkit.legacyUserProfileCustomizations.stylesheets&lt;/code&gt; and change its value to &lt;code&gt;true&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Restart Firefox.&lt;/li&gt;
&lt;/ol&gt;
&lt;h2&gt;Step-by-Step Instructions&lt;/h2&gt;
&lt;h3&gt;1. Open &lt;code&gt;about:support&lt;/code&gt;&lt;/h3&gt;
&lt;p&gt;In a new tab, navigate to &lt;code&gt;&lt;about:support&gt;&lt;/code&gt;.&lt;/p&gt;
&lt;h3&gt;2. Locate the Profile Folder&lt;/h3&gt;
&lt;p&gt;Under &lt;em&gt;Application Basics&lt;/em&gt;, find &lt;strong&gt;Profile Folder&lt;/strong&gt;.&lt;/p&gt;
&lt;h3&gt;3. Open Profile Folder&lt;/h3&gt;
&lt;p&gt;Locate and click the &lt;strong&gt;Open Folder&lt;/strong&gt; button next to it. You&apos;ll find it next to an address similar to:[^1]&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;%appdata%\Mozilla\Firefox\Profiles\your-profile-id.default
&lt;/code&gt;&lt;/pre&gt;
&lt;blockquote&gt;
&lt;p&gt;Note: In Windows, &lt;code&gt;%appdata%&lt;/code&gt; is equivalent to:&lt;br /&gt;
&lt;code&gt;C:\Users\your-username\AppData\Roaming&lt;/code&gt;.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3&gt;4. Create New Folder &lt;code&gt;chrome&lt;/code&gt;&lt;/h3&gt;
&lt;p&gt;Inside your &lt;em&gt;Firefox Profile Folder&lt;/em&gt;, create a new folder named &lt;code&gt;chrome&lt;/code&gt;.&lt;/p&gt;
&lt;h3&gt;5. Create &lt;code&gt;userChrome.css&lt;/code&gt;&lt;/h3&gt;
&lt;p&gt;Inside the newly created &lt;code&gt;chrome&lt;/code&gt; folder, create a new file named &lt;code&gt;userChrome.css&lt;/code&gt;.&lt;/p&gt;
&lt;h3&gt;6. Copy and Paste Its Contents&lt;/h3&gt;
&lt;p&gt;Copy the following code, and paste as content inside &lt;code&gt;useChrome.css&lt;/code&gt; and save:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;#sidebar-box {
  max-width: 40% !important;
  min-width: 300px !important;
}
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;7. Customize the Width&lt;/h3&gt;
&lt;p&gt;You may change the units to any length you find more convenient.&lt;/p&gt;
&lt;h3&gt;8. Open &lt;code&gt;about:config&lt;/code&gt;&lt;/h3&gt;
&lt;p&gt;In a new tab, navigate to &lt;a&gt;about:config&lt;/a&gt;, and search for:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;toolkit.legacyUserProfileCustomizations.stylesheets
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;9. Change the Value&lt;/h3&gt;
&lt;p&gt;Change its value to &lt;code&gt;true&lt;/code&gt;.&lt;/p&gt;
&lt;h3&gt;10. Restart Firefox&lt;/h3&gt;
&lt;p&gt;Finally, restart Firefox for the changes to take effect.&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;[^1]: In Windows, &lt;code&gt;%appdata%&lt;/code&gt; is equivalent to: &lt;code&gt;C:\Users\your-username\AppData\Roaming&lt;/code&gt;.&lt;/p&gt;
</content:encoded><enclosure url="https://miguelpimentel.do//_astro/cover-image.iuywvUNn.webp" length="0" type="image/webp"/></item><item><title>PomoBar for Obsidian</title><link>https://miguelpimentel.do/blog/2025-08-17-pomobar-introduction/</link><guid isPermaLink="true">https://miguelpimentel.do/blog/2025-08-17-pomobar-introduction/</guid><description>The story behind creating a minimalist Pomodoro timer plugin for Obsidian that lives in your status bar.</description><pubDate>Sun, 17 Aug 2025 00:00:00 GMT</pubDate><content:encoded>&lt;img src=&quot;https://miguelpimentel.do//_astro/cover-image.zuAhKkmO.jpg&quot; alt=&quot;Photo by Ngo Ngoc Khai Huyen on Unsplash.&quot; /&gt;&lt;p&gt;After my ADHD diagnosis, the &lt;a href=&quot;https://en.wikipedia.org/wiki/Pomodoro_Technique&quot;&gt;Pomodoro Technique&lt;/a&gt; became essential for managing my focus. As someone who spends most of my day in &lt;a href=&quot;https://obsidian.md/&quot;&gt;Obsidian&lt;/a&gt;, I wanted a timer that lived seamlessly within my note-taking environment without cluttering my workspace.&lt;/p&gt;
&lt;p&gt;That&apos;s how &lt;a href=&quot;https://semanticdata.github.io/obsidian-pomodoro/&quot;&gt;PomoBar&lt;/a&gt; was born: a minimalist Pomodoro timer that sits quietly in Obsidian&apos;s status bar, ready when I need it but invisible when I don&apos;t.&lt;/p&gt;
&lt;p&gt;PomoBar was one of those projects I built during my year of silence, focused on solving a real problem I faced daily, but never taking the time to document the process. Looking back, that was a mistake. The development journey taught me lessons about constraints, user experience, and the value of building tools you actually use.&lt;/p&gt;
&lt;h2&gt;From HTML Prototype to Production Plugin&lt;/h2&gt;
&lt;p&gt;Before diving into Obsidian plugin development, I built a standalone HTML version in &lt;a href=&quot;https://codepen.io/semanticdata/pen/PwwpZgE&quot;&gt;CodePen&lt;/a&gt; to test the concept. Working with familiar HTML, CSS, and JavaScript let me focus on the user experience without learning new APIs. The prototype had a full visual interface with buttons and progress rings – essentially a traditional web app.&lt;/p&gt;
&lt;p&gt;&lt;img src=src=&quot;pomobar-html.png&quot;https://miguelpimentel.do//blog/2025-08-17-pomobar-introduction/&quot;src=&quot;pomobar-html.png&quot; alt=&quot;PomoBar HTML Prototype&quot; /&gt;&lt;/p&gt;
&lt;p&gt;But when I moved to create the Obsidian plugin, everything changed. This was my first plugin and my first real TypeScript project. I was suddenly wrestling with type definitions, Obsidian&apos;s API patterns, and figuring out how to cram a full timer interface into a tiny status bar element.&lt;/p&gt;
&lt;p&gt;&lt;img src=src=&quot;screenshot-1.png&quot;https://miguelpimentel.do//blog/2025-08-17-pomobar-introduction/&quot;src=&quot;screenshot-1.png&quot; alt=&quot;PomoBar Screenshot&quot; /&gt;
&lt;img src=src=&quot;screenshot-2.png&quot;https://miguelpimentel.do//blog/2025-08-17-pomobar-introduction/&quot;src=&quot;screenshot-2.png&quot; alt=&quot;PomoBar Screenshot&quot; /&gt;&lt;/p&gt;
&lt;h2&gt;The Problem with Existing Solutions&lt;/h2&gt;
&lt;p&gt;Before building PomoBar, I tried several Pomodoro apps and browser extensions. They all shared similar problems:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Context switching&lt;/strong&gt;: Alt+tabbing to external apps broke my concentration when I was finally focused&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Visual clutter&lt;/strong&gt;: Most timers demanded screen real estate I couldn&apos;t spare&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Over-engineering&lt;/strong&gt;: Complex features I never used made simple tasks unnecessarily complicated&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;I needed something that followed the Unix philosophy: do one thing and do it well. A timer that would stay out of my way but be instantly accessible when needed.&lt;/p&gt;
&lt;h2&gt;Architecture Decisions: Building for Maintainability&lt;/h2&gt;
&lt;p&gt;What started as a &lt;a href=&quot;https://github.com/semanticdata/obsidian-pomodoro/blob/9e3828254aa1b61c6f98b70fb9c50df4508215c8/main.ts&quot;&gt;single-file experiment&lt;/a&gt; evolved into a properly structured project. I learned the hard way that even simple plugins benefit from clean architecture.&lt;/p&gt;
&lt;p&gt;The current structure separates concerns clearly:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;main.ts&lt;/code&gt;: Plugin lifecycle and Obsidian integration&lt;/li&gt;
&lt;li&gt;&lt;code&gt;timer.ts&lt;/code&gt;: All timer logic and state management&lt;/li&gt;
&lt;li&gt;&lt;code&gt;SettingsTab.ts&lt;/code&gt;: Configuration interface&lt;/li&gt;
&lt;li&gt;&lt;code&gt;types.ts&lt;/code&gt;: TypeScript interfaces and type definitions&lt;/li&gt;
&lt;li&gt;&lt;code&gt;constants.ts&lt;/code&gt;: Application constants and enums&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;This modular approach made the codebase easier to test, debug, and extend. When I needed to add features like optional status bar icons or improved memory management, I could modify individual components without touching the core timer logic.&lt;/p&gt;
&lt;h2&gt;Design Philosophy: Flexible Minimalism&lt;/h2&gt;
&lt;p&gt;The core design principle for PomoBar remained radical simplicity, but with thoughtful flexibility:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;A soft timer display in the status bar showing &lt;code&gt;MM:SS&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Optional icon that changes based on timer state&lt;/li&gt;
&lt;li&gt;Left click to start/pause&lt;/li&gt;
&lt;li&gt;Middle click to cycle between work, short break, and long break&lt;/li&gt;
&lt;li&gt;Right click to reset (when paused)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The interface stays minimal, but users can customize duration settings and choose whether to show the timer icon. Smart defaults (25/5/15 minutes) work for most people, but the plugin adapts to different workflows.&lt;/p&gt;
&lt;h2&gt;Technical Deep Dives&lt;/h2&gt;
&lt;p&gt;Building something simple sounds easy until you actually try it. What seemed like &quot;just put a timer in the status bar&quot; quickly revealed layers of complexity I hadn&apos;t anticipated.&lt;/p&gt;
&lt;h3&gt;State Management and Memory Safety&lt;/h3&gt;
&lt;p&gt;The timer tracks multiple pieces of state: current mode, remaining time, work interval count, and running status. Getting this right required careful attention to cleanup:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;cleanup() {
    // Clean up any remaining intervals
    this.registeredIntervals.forEach(intervalId =&gt; {
        window.clearInterval(intervalId);
    });
    this.registeredIntervals.clear();
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;JavaScript&apos;s &lt;code&gt;setInterval&lt;/code&gt; can create memory leaks if not handled correctly, especially in a plugin environment where code gets reloaded frequently during development. Obsidian&apos;s &lt;code&gt;registerInterval&lt;/code&gt; method helps, but proper manual cleanup ensures reliability.&lt;/p&gt;
&lt;h3&gt;User Feedback Integration&lt;/h3&gt;
&lt;p&gt;Early feedback taught me important lessons about user expectations. A GitHub issue pointed out that users wanted the plugin to automatically cycle through the traditional Pomodoro sequence: &lt;em&gt;work&lt;/em&gt; → &lt;em&gt;short break&lt;/em&gt; → &lt;em&gt;work&lt;/em&gt; → &lt;em&gt;short break&lt;/em&gt; → &lt;em&gt;work&lt;/em&gt; → &lt;em&gt;long break&lt;/em&gt;. The user noted they were using &quot;25/5 cycles with the occasional 15 extended break&quot; and wanted the timer to default to 5-minute breaks instead of requiring manual selection each time.&lt;/p&gt;
&lt;p&gt;This feedback was really helpful. It highlighted a core workflow need I hadn&apos;t fully considered. Instead of adding buttons or dropdowns, I implemented automatic cycling while keeping the same three-click interaction model.&lt;/p&gt;
&lt;h3&gt;TypeScript in Practice&lt;/h3&gt;
&lt;p&gt;Moving from vanilla JavaScript to TypeScript added complexity I hadn&apos;t expected, but the benefits became clear quickly:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;interface PomodoroSettings {
  workTime: number;
  shortBreakTime: number;
  longBreakTime: number;
  intervalsBeforeLongBreak: number;
  showIcon: boolean;
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;TypeScript caught several bugs during development that would have been runtime errors in JavaScript. The type safety made refactoring safer and the code more self-documenting.&lt;/p&gt;
&lt;h2&gt;Modern Development Practices&lt;/h2&gt;
&lt;p&gt;Building PomoBar taught me the value of proper development tooling, even for small projects.&lt;/p&gt;
&lt;h3&gt;Build System and Tooling&lt;/h3&gt;
&lt;p&gt;I experimented with different build systems before settling on &lt;strong&gt;esbuild&lt;/strong&gt;. While I briefly tried &lt;strong&gt;Vite&lt;/strong&gt; for its development features, &lt;strong&gt;esbuild&lt;/strong&gt; proved more stable and performant for an Obsidian plugin. The build process handles TypeScript compilation, bundling, and development hot-reloading.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;ESLint&lt;/strong&gt; and proper TypeScript configuration catch issues before they reach users. The development experience improved dramatically once I had reliable linting and type checking in place.&lt;/p&gt;
&lt;h3&gt;Testing and Validation&lt;/h3&gt;
&lt;p&gt;I added a &lt;strong&gt;Jest&lt;/strong&gt; test suite to verify timer logic, settings validation, and plugin lifecycle management. Testing Obsidian plugins requires mocking the API, but the effort pays off in confidence and easier refactoring.&lt;/p&gt;
&lt;p&gt;The settings validation alone prevented several user-facing bugs:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;private validateAndUpdateSetting(
    value: string,
    settingProperty: &apos;workTime&apos; | &apos;shortBreakTime&apos; | &apos;longBreakTime&apos;,
    resetAction: &apos;resetTimer&apos; | &apos;resetPomodoroSession&apos;
): boolean {
    const numValue = parseInt(value.trim());
    if (!isNaN(numValue) &amp;amp;&amp;amp; numValue &gt; 0 &amp;amp;&amp;amp; Number.isInteger(Number(value.trim()))) {
        this.plugin.settings[settingProperty] = numValue;
        return true;
    }
    return false;
}
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;Documentation as Development Practice&lt;/h2&gt;
&lt;p&gt;One lesson from my year of building in silence: document as you build, not after. PomoBar now includes:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;README: Clear installation and usage instructions&lt;/li&gt;
&lt;li&gt;CHANGELOG: Detailed release notes for every version&lt;/li&gt;
&lt;li&gt;CONTRIBUTING: Short guide on how to contribute to the project&lt;/li&gt;
&lt;li&gt;Documentation site: Built with MkDocs for comprehensive user guides&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Writing documentation forces you to think clearly about user experience and API design. It also makes the project more welcoming to contributors and users.&lt;/p&gt;
&lt;h2&gt;Current State and Lessons Learned&lt;/h2&gt;
&lt;p&gt;PomoBar today is a robust, well-tested plugin that hundreds of users use daily. What started as a simple timer evolved into a thoughtful tool that balances simplicity with reliability.&lt;/p&gt;
&lt;p&gt;The biggest lessons weren&apos;t about TypeScript syntax or Obsidian APIs. They were about building software people actually use:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Start with real problems&lt;/strong&gt;: Build something you need, not something that sounds interesting&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;User feedback shapes everything&lt;/strong&gt;: GitHub issues taught me more about user needs than any amount of planning&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Simple interfaces can hide complex implementations&lt;/strong&gt;: The three-click interaction model required careful state management underneath&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Architecture matters even for small projects&lt;/strong&gt;: Clean separation of concerns makes everything easier&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Building Your Own Plugin&lt;/h2&gt;
&lt;p&gt;If you&apos;re interested in building Obsidian plugins, here&apos;s what I wish I&apos;d known starting out:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Start with a real need&lt;/strong&gt;: Build something you&apos;ll actually use daily&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Learn TypeScript properly&lt;/strong&gt;: Don&apos;t just get by with &lt;code&gt;@ts-ignore&lt;/code&gt; comments&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Set up proper tooling early&lt;/strong&gt;: ESLint, testing, and build processes pay off quickly&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Document as you build&lt;/strong&gt;: Future you will thank present you&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Listen to user feedback&lt;/strong&gt;: GitHub issues contain valuable insights about real workflows&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;The complete &lt;a href=&quot;https://github.com/semanticdata/obsidian-pomodoro&quot;&gt;source code&lt;/a&gt; for PomoBar is available on GitHub, along with comprehensive documentation. If you decide to build your own plugin, I&apos;d love to hear what problems you&apos;re solving. Sometimes the best ideas come from scratching your own itch.&lt;/p&gt;
&lt;h2&gt;Final Thoughts&lt;/h2&gt;
&lt;p&gt;Building PomoBar taught me that effective tools don&apos;t need complex interfaces. Sometimes the software you forget you&apos;re using is exactly what you need.&lt;/p&gt;
&lt;p&gt;This project also taught me something about the value of writing alongside building. I shipped PomoBar months ago, but only now am I capturing the lessons learned and design decisions made. The technical details are still fresh, but some of the emotional journey – the frustration with existing tools, the satisfaction of solving my own problem – has already faded.&lt;/p&gt;
&lt;p&gt;Writing about projects after the fact is harder than writing during development, but it&apos;s still valuable. The technical lessons remain clear even if some of the emotional journey has faded. This is my reminder to document the process, not just the results.&lt;/p&gt;
</content:encoded><enclosure url="https://miguelpimentel.do//_astro/cover-image.zuAhKkmO.jpg" length="0" type="image/webp"/></item><item><title>When Being Wrong Goes Right</title><link>https://miguelpimentel.do/blog/2025-09-15-when-being-wrong-goes-right/</link><guid isPermaLink="true">https://miguelpimentel.do/blog/2025-09-15-when-being-wrong-goes-right/</guid><description>A few weeks ago, I got the kind of news that should&apos;ve made me feel great but instead left me with a familiar knot in my stomach. The bids for our 2025 Sewer Rehabilitation Project had come in, and my estimates were high. Way high.</description><pubDate>Mon, 15 Sep 2025 00:00:00 GMT</pubDate><content:encoded>&lt;img src=&quot;https://miguelpimentel.do//_astro/cover-image.Dma0m6kS.jpg&quot; alt=&quot;Photo by K O on Unsplash.&quot; /&gt;&lt;p&gt;A few weeks ago, I got the kind of news that should&apos;ve made me feel great but instead left me with a familiar knot in my stomach. The bids for our 2025 Sewer Rehabilitation Project had come in, and my estimates were high. Way high.&lt;/p&gt;
&lt;p&gt;I&apos;d estimated $65 per linear foot for the sewer liner work. The winning contractor came in at $42.90. The second-place bid was $51.31. In the project management world, being off by that much feels like failure, even when it&apos;s not.&lt;/p&gt;
&lt;p&gt;But here&apos;s the thing that took me a while to process: being &quot;wrong&quot; in this case created something amazing. Because my estimates were conservative, we suddenly had enough budget to add 1,395 additional feet of sewer rehabilitation work. The same project budget that I thought would cover 1,855 feet could now handle 3,250 feet. The city got significantly more infrastructure improvement for the same money.&lt;/p&gt;
&lt;p&gt;So why did I feel like I&apos;d messed up instead of celebrating a win?&lt;/p&gt;
&lt;h2&gt;The Project Details&lt;/h2&gt;
&lt;p&gt;Let me back up and explain what actually happened, because the numbers tell a story that&apos;s bigger than just one municipal project.&lt;/p&gt;
&lt;p&gt;The City of Crystal needed to rehabilitate aging sewer lines – the kind of invisible infrastructure work that keeps cities functioning but never makes headlines. We were planning to install 1,855 linear feet of 8-inch sewer liner to fix deteriorating vitrified clay pipes that were decades old.&lt;/p&gt;
&lt;p&gt;This was also Crystal&apos;s first major sewer rehabilitation project in years, which meant I needed to create the framework from scratch. I spent weeks consulting the City Engineers Association of Minnesota guidelines and working with colleagues from Le Sueur and Champlin to write new Standard Detail Specifications for Sewer Rehabilitation Procedures. It was important to get this right – not just for this project, but to establish standards for future work.&lt;/p&gt;
&lt;p&gt;As the project manager, I had to estimate costs for budgeting and to set a baseline for evaluating contractor bids. I researched similar projects, talked to other municipalities, and landed on $65 per linear foot. It felt reasonable – maybe even slightly conservative, but I wanted to make sure we had adequate budget.&lt;/p&gt;
&lt;p&gt;The project also included adding 550 feet of storm sewer liner work after we discovered a sinkhole near the original scope. This last-minute addition created some time pressure as we rushed to incorporate the additional work before the bid opening, but it didn&apos;t affect my core sewer rehabilitation estimates.&lt;/p&gt;
&lt;p&gt;When the bids opened, reality hit differently. The winning contractor bid $42.90 per linear foot. The runner-up was $51.31. Both were significantly lower than my estimate, and both were qualified, reputable contractors.&lt;/p&gt;
&lt;p&gt;The result? Instead of feeling constrained by budget, we could suddenly afford to add another 1,395 feet of sewer rehabilitation work that the city desperately needed. What started as one project became a much more comprehensive infrastructure improvement.&lt;/p&gt;
&lt;h2&gt;The Pressure to Be Perfect&lt;/h2&gt;
&lt;p&gt;Here&apos;s what I couldn&apos;t shake, though: the voice in my head that kept saying I should&apos;ve known better. That a good project manager would&apos;ve hit closer to the actual market price. That being off by 30-50% meant I wasn&apos;t doing my job well enough.&lt;/p&gt;
&lt;p&gt;This kind of thinking isn&apos;t unique to municipal engineering. There&apos;s this culture in project management – maybe in professional life generally – that treats precision as the ultimate goal. You&apos;re supposed to nail your estimates, predict outcomes accurately, and demonstrate that you truly understand your field through exact forecasting.&lt;/p&gt;
&lt;p&gt;For someone with rejection sensitive dysphoria, this pressure hits differently. RSD is this intense fear of being criticized or perceived as incompetent, and it&apos;s common with ADHD. It&apos;s not just feeling bad about mistakes – it&apos;s the overwhelming certainty that any error proves you don&apos;t belong in your role. When my estimates came in high, RSD whispered that everyone would think I didn&apos;t know what I was doing.&lt;/p&gt;
&lt;p&gt;The irony is almost funny: my &quot;mistake&quot; delivered objectively better outcomes for the city. More infrastructure repair, better use of taxpayer money, and the flexibility to address additional needs that emerged during the project. But my brain was stuck on the fact that I&apos;d been &quot;wrong&quot; about the market pricing.&lt;/p&gt;
&lt;h2&gt;Redefining Success&lt;/h2&gt;
&lt;p&gt;What if I&apos;ve been thinking about this all wrong, though? What if conservative estimates aren&apos;t character flaws but strategic wisdom?&lt;/p&gt;
&lt;p&gt;The truth is, I wasn&apos;t trying to predict the exact market price down to the penny. I was trying to ensure the city had adequate budget to complete necessary infrastructure work. Mission accomplished, in a bigger way than originally planned.&lt;/p&gt;
&lt;p&gt;There&apos;s a difference between being precise and being prepared. Precision aims to hit exact targets. Preparation builds in buffers for the unknown variables that always show up in real projects. Maybe my ADHD brain, which tends to think about worst-case scenarios and plan for multiple contingencies, actually serves me well in this context.&lt;/p&gt;
&lt;p&gt;This applies way beyond municipal engineering, too. How often do we beat ourselves up for overestimating how long a project will take, how much money we&apos;ll need, or how challenging something will be? We treat these &quot;errors&quot; as personal failings instead of recognizing them as useful caution.&lt;/p&gt;
&lt;p&gt;When I plan extra time for a task and finish early, that&apos;s not poor time management – that&apos;s creating space for unexpected complications or higher-quality work. When I budget more money than I end up spending, that&apos;s not wasteful planning – that&apos;s building financial flexibility for opportunities or emergencies.&lt;/p&gt;
&lt;p&gt;The fear of being wrong can actually prevent us from being usefully wrong. If I&apos;d tried to estimate exactly what contractors would bid, I might&apos;ve aimed for $45 per linear foot and left no room for additional work when the opportunity arose. The &quot;mistake&quot; of overestimating created possibilities that precision would&apos;ve eliminated.&lt;/p&gt;
&lt;p&gt;Sometimes the best thing you can be is strategically, beneficially wrong. Sometimes building in buffers serves everyone better than trying to hit bullseyes. And sometimes the thing that makes you feel like you failed is actually the thing that made everything work.&lt;/p&gt;
</content:encoded><enclosure url="https://miguelpimentel.do//_astro/cover-image.Dma0m6kS.jpg" length="0" type="image/webp"/></item></channel></rss>