Skip to main content

Modernizing File Management with Spacedrive – Is it worth it?

· 4 min read
Bekah Hawrot Weigel
Developer Experience Lead

Today is day 14 of my 29 Days of Open Source Alternatives series, where I'll be exploring open source alternatives to proprietary software in the categories of Game Development and Multimedia, Development Tools and Platforms, Productivity and Collaboration Tools, and more. If you'd like to see the list of the open source alternatives I'll be covering this month, head over to my 29 Days of Open Source Alts Page or if you want more open source to learn-to-code programs, check out this list. This is our first post in the Productivity & Collaboration Category.


My first job after college was as a GED (Graduate Equivalent Diploma) instructor. That means that I was teaching people in the United States who had left high school how to pass their GED exam. I do not consider myself an organized person. (See my last post if you want to learn why.) But one day, my department lead showered me with praise for being so organized. And then I thought, "The dirty clothes on my floor at home aren't connected to my organization at work." They held separate space in my brain.

Transforming Productivity with Open Source Gamification: Habitica

· 4 min read
Bekah Hawrot Weigel
Developer Experience Lead

Today is day 13 of my 29 Days of Open Source Alternatives series, where I'll be exploring open source alternatives to proprietary software in the categories of Game Development and Multimedia, Development Tools and Platforms, Productivity and Collaboration Tools, and more. If you'd like to see the list of the open source alternatives I'll be covering this month, head over to my 29 Days of Open Source Alts Page. This is our second post in the Productivity & Collaboration Category.


A couple of years ago - mid-pandemic - I was diagnosed with ADHD. Maybe it was unsurprising to people who knew me, but it was surprising to me. I didn’t have the symptoms I had heard about. I did well in school, I accomplished all of my tasks, all-in-all I was what some might consider incredibly productive. What I learned about myself and my ADHD is that I had created decades of coping mechanisms that I didn’t even realize. I tended to lean into the things that I was good at.

Three open source alternatives to Calendly

· 5 min read
Bekah Hawrot Weigel
Developer Experience Lead

Today is day 12 of my 29 Days of Open Source Alternatives series, where I'll be exploring open source alternatives to proprietary software in the categories of Game Development and Multimedia, Development Tools and Platforms, Productivity and Collaboration Tools, and more. If you'd like to see the list of the open source alternatives I'll be covering this month, head over to my 29 Days of Open Source Alts Page or if you want more open source to learn-to-code programs, check out this list. This is our first post in the Productivity & Collaboration Category.


Chances are, you either have a calendar schedule or you've interacted with someone else's scheduler. I have been incredibly resistant to having one myself, although I have tried (and didn't love) Calendly in the past to help schedule podcast episodes. At this point, it's necessary for me to have a way to easily schedule meeting, kids' events, and whatever else is happening. To do this, I investigated three open source alternatives to Calendly: cal.com, Fossify Calendar, and Easy!Appointments.

Transforming Lives Through Code: freeCodeCamp

· 5 min read
Bekah Hawrot Weigel
Developer Experience Lead

Today is day 11 of my 29 Days of Open Source Alternatives series, where I'll be exploring open source alternatives to proprietary software in the categories of Game Development and Multimedia, Development Tools and Platforms, Productivity and Collaboration Tools, and more. If you'd like to see the list of the open source alternatives I'll be covering this month, head over to my 29 Days of Open Source Alts Page or if you want more open source learn-to-code programs, check out this list.

When I first started learning to code, I started with freeCodeCamp (FCC). I had spent the last nine years of my life teaching college English, and I needed a change. And what I found, changed my life. I had gone through some major life trauma, and I was stuck. I was stuck in the thoughts that cycled through my mind, stuck in loneliness, stuck in a world that kept moving without me.

ResearchHub: The GitHub of Scientific Research

· 5 min read
Bekah Hawrot Weigel
Developer Experience Lead

Today is day 10 of my 29 Days of Open Source Alternatives series, where I'll be exploring open source alternatives to proprietary software in the categories of Game Development and Multimedia, Development Tools and Platforms, Productivity and Collaboration Tools, and more. If you'd like to see the list of the open source alternatives I'll be covering this month, head over to my 29 Days of Open Source Alts Page or check out my bonus lists: open source games and open source learn to code programs.

Before coming into tech, I spent ten years in academia. I always found it frustrating that so much research was guarded behind paywalls. Why were we preventing people from valuable research that could allow us to grow in our areas of expertise? Now, I was in the humanities and not the sciences, but once I learned about ResearchHub, I was intrigued.

Why would you use Backend as a Service (BaaS)?

· 8 min read
Bekah Hawrot Weigel
Developer Experience Lead

Today is day 9 of my 29 Days of Open Source Alternatives series, where I'll be exploring open source alternatives to proprietary software in the categories of Game Development and Multimedia, Development Tools and Platforms, Productivity and Collaboration Tools, and more. If you'd like to see the list of the open source alternatives I'll be covering this month, head over to my 29 Days of Open Source Alts Page or if you want more open source to learn-to-code programs, check out this list.

In the United States, it's National Pizza Day! That means we're going to start this post with a pizza story.

Getting User Feedback for Success: Tips and Tools

· 4 min read
Bekah Hawrot Weigel
Developer Experience Lead

Today is day 8 of my 29 Days of Open Source Alternatives series, where I'll be exploring open source alternatives to proprietary software in the categories of Game Development and Multimedia, Development Tools and Platforms, Productivity and Collaboration Tools, and more. If you'd like to see the list of the open source alternatives I'll be covering this month, head over to my 29 Days of Open Source Alts Page or check out my bonus lists: open source games and API Development Tools.


We all need feedback. If we went to grow and succeed, we need to understand our strengths and weaknesses. And I'll bet that many of us have filled out a feedback form to give product feedback.

Documenso v. Docusign: THE SHOWDOWN

· 3 min read
Bekah Hawrot Weigel
Developer Experience Lead

Today is day 7 of my 29 Days of Open Source Alternatives series, where I'll be exploring open source alternatives to proprietary software in the categories of Game Development and Multimedia, Development Tools and Platforms, Productivity and Collaboration Tools, and more. If you'd like to see the list of the open source alternatives I'll be covering this month, head over to my 29 Days of Open Source Alts Page or check out my bonus lists: open source games and API Development Tools.


A Tale of Two Electronic Signature Platforms

It's time to enter the ring as two heavyweight champions face off: DocuSign and Documenso. In one corner, we have the reigning champion – DocuSign, the established player with years of experience in the eSignature market. In the other corner, emerging contender Documenso brings a fresh perspective, aiming to disrupt the industry with its innovative open source approach.

Challenging the Skeptics: Unveiling the Undeniable Goodness of Tailwind CSS

· 6 min read
Nick Taylor
AI Engineer

People definitely have opinions about Tailwind. There are staunch supporters and staunch haters, but I really don't want to get into all that. Head on over to Twitter if you want to waste some time.

If you're pretty well versed with Tailwind, this article might not be for you, but who knows? Read on and maybe you'll learn something.

I'm coming in with what, I think, is a fresh perspective. I'm using Tailwind for the first time professionally. Furthermore, I don't consider myself a CSS expert, but I think I have pretty solid CSS skills.

I mention all this, to convey a sentiment, I've seen many people exhibit. You're using Tailwind because you don't understand CSS. I do understand CSS.

So the first thing that I've seen when people say when they do not like Tailwind, is that it's not CSS, or it's inline CSS. This is completely false, even coming in as a newbie to Tailwind, all Tailwind is, at the end of the day, once it's compiled, is CSS utility classes.

Comparisons

So let's look at some comparisons between Tailwind and "real" CSS. I'm going to put the vanilla CSS in a style tag, but you could also put it in a .css file and link it in the head of your HTML or however your application bundles CSS. This is just for the sake of comparison.

First Glances of Tailwind

Vanilla CSS

{% raw %}
<style>
.my-list {
display: flex;
flex-direction: column;
gap: 1.5rem;
}

.my-list li {
border-width: 1px;
}
</style>
<ul class="my-list">
<li>Item 1</li>
<li>Item 2</li>
<li>Item 3</li>
</ul>
{% endraw %}

Tailwind

{% raw %}
<ul class="flex flex-col gap-6">
<li class="border">Item 1</li>
<li class="border">Item 2</li>
<li class="border">Item 3</li>
</ul>
{% endraw %}

So the first thing someone might say is that Tailwind is repeating the border CSS class on a list item, <li>, instead of using a selector that can target the li DOM elements. This is true, but Tailwind allows you to create the equivalent of .my-list li. You can do the following:

{% raw %}
<ul class="flex flex-col gap-6 [&_li]:border">
<li>Item 1</li>
<li>Item 2</li>
<li>Item 3</li>
</ul>
{% endraw %}

This is probably where someone might say, "Well, now you're just writing inline CSS." This is also false. It will generate a CSS rule based on the [&_li]:border CSS class name. It will compile it to literal CSS that will generate an equivalent CSS rule comparable to the CSS rule for the .mylist li selector.

In fact, this is what it compiles to. I've formatted it since it gets minified.

{% raw %}
.\[\&_li\]\:border li {
border-width: 1px;
}
{% endraw %}

You could make an argument that the "real" version looks nicer, but this isn't a strong argument, and you have CSS source maps if you open the browser dev tools.

I'll say it here and repeat it again later. Tailwind is a utility-first CSS framework. It's not inline CSS.

If you want to see an example of this in production grade code, check out a recent pull request (PR) of mine to the OpenSauced app repository.

https://github.com/open-sauced/app/pull/2524

Styling pseudo-elements

What about something more complex like pseudo-elements? Let's take the ::before pseudo-element for a spin.

Vanilla CSS

{% raw %}
<style>
.pizza-time::before {
content: attr(data-inset-label);
}
</style>
<p data-inset-label="🍕" class="pizza-time">OpenSauced is awesome!</p>
{% endraw %}

Tailwind

{% raw %}
<p data-inset-label="🍕" class="before:content-[attr(data-inset-label)]">
OpenSauced is awesome!
</p>
{% endraw %}

Here's what it generates as CSS when Tailwind compiles that CSS class.

{% raw %}
.before\:content-\[attr\(data-inset-label\)\]:before{
--tw-content:attr(data-inset-label);
content:var(--tw-content)
}
{% endraw %}

You could complain that that is one hell of a bloated CSS class name, but again, I don't think this is a colossal deal.

If you want to see an example of this in production grade code, check out a recent PR of mine to the OpenSauced app repository.

https://github.com/open-sauced/app/pull/2552

Animations

If you're looking to add animations, Tailwind ships with plenty of useful animations and CSS classes to leverage them.

Need a custom animation? You can do that as well. I won't go into it here, but here's a great post about writing custom animations in Tailwind.

Accessibility

You've got all these cool animations, but what if someone has specified prefers-reduced-motion? Tailwind can handle that for you as long as you prefix your animation with motion-safe:, e.g.

{% raw %}
<p class="motion-safe:animate-spin">Spinning text</p>
{% endraw %}

There's other useful Tailwind classes for accessibility, like sr-only, which will remain in the page, but only be visible to screen readers.

I think something that would be interesting to add to the Tailwind a11y story is using Tatiana Mac's (@tatianamac) approach of taking a no-motion-first approach to animations.

Define some base styles

I'm all for components, and I'm a big fan of JSX. Tailwind pairs nicely with components, but I do think that it's still good to have some base styles defined, even if you are using components.

For example, a base font size and colour, focus state styles, headings etc. This is what I ended up doing in the OpenSauced app repository.

Another Complaint: It's like bootstrap

Tailwind CSS on its own is not like bootstrap. It's just CSS utility classes, whereas bootstrap is UI components and CSS.

I've never used it, but maybe you could fall into this trap with Tailwind UI.

Tradeoffs

Like many things, there are tradeoffs. I think the biggest one is learning the Tailwind CSS classes and naming conventions for building them, but I think the benefits outweigh this. And to be honest, once you start writing the classes frequently, the naming convention just sticks in your head.

And if you have some super complex CSS, for whatever reason, Tailwind can't handle, there's nothing wrong with adding some custom CSS.

Wrapping Things Up

I literally only started using Tailwind September 18th of 2023 when I started at OpenSauced.

Tailwind has made me super productive while building out OpenSauced, and I've used it in some other projects since then.

Remember, Tailwind is a utility-first CSS framework. It's not inline CSS.

I encourage you to give Tailwind a go. They have outstanding documentation and great IDE support to help you along the way.

If you give it a go and say it's not for me, that's OK. Use what makes you the most productive.

Stay saucy peeps!

If you would like to know more about my work in open source, follow me on OpenSauced.

Development Tools and Platforms: Create your Dev.to + Pipedream Automation in under 20 minutes

· 5 min read
Bekah Hawrot Weigel
Developer Experience Lead

Today is day 6 of my 29 Days of Open Source Alternatives series, where I'll be exploring open source alternatives to proprietary software in the categories of Game Development and Multimedia, Development Tools and Platforms, Productivity and Collaboration Tools, and more. If you'd like to see the list of the open source alternatives I'll be covering this month, head over to my 29 Days of Open Source Alts Page or check out my bonus lists: open source games and API Development Tools.


A couple of years ago, I was working with a university doctoral student who was recording oral histories. One of the biggest challenges she faced was taking the videos and transcribing them, which was required by the doctoral committee. We came up with a low-code way to solve her problem: the solution was Pipedream.