[ad_1] Hey, WordPress fans. We are checking in with your latest dose of weekly WordPress news. This week, Jetpack released its latest update with bug fixes and some improvements. Most notably, it now lets users access features as soon as the plugin is enabled, instead of requiring authentication with WordPress.com. Beyond that, Gutenberg 10.5 introduces new features including PDF embeds, adding block color options, and more. Let’s get to all of this week’s WordPress news… WORDPRESS NEWS AND ARTICLES TUTORIALS AND HOW-TOS RESOURCES [ad_2] Source link
Continue readingMonthly Archives: June 2021
Building Backcast, Part 4 | Tom McFarlin
[ad_1] TL;DR: The private podcast account is set up but not yet recorded; I’m looking to do that sooner rather than later. I’m looking to possibly abandon exclusive Overcast support which I’ll briefly talk about. This article walks through the process of defining the conditions for unit testing and how I’ve decided to go about writing the first set of unit tests. Building Backcast, Unit Testing Where Do I Go From Here? Originally, this post was going to be a combination of setting up PHPUnit and getting up and running with writing unit tests but, if you’ve been reading along, then you saw how well that went over. Honestly, I’m glad I encountered that early on in the process as it shows the random rabbit holes any of us end up in whenever we’re writing code. Secondly, after running into a hurdle with authentication with Overcast and deciding to just go with a manual export of podcast feeds, I started looking at a couple of different podcast applications to see how they exported their feeds. Ultimately, I was looking for a set of standards (which would include common attributes) that I could use to evaluate the validity of a file and to update the backup with only new information. (Of course, the first import is always going to be the largest.) I asked myself the following questions: Do I look for a file with a specific name? Do I verify the content of the file? Do I accept any XML file? Do I need to verify the size or date of the file? Some of these questions, like many, lead me into thinking about other things, too, but in trying to make as much progress as possible with as little friction as necessary, I decided to do the following: Verify the type of file (that is, an opml file), Verify that it’s well-formed or, rather, valid XML, Verify four attributes of the XML file that appear to be common across podcast exports. (I’m going to test for the opml tag, the rss value for the type attribute, the outline tag, and the xmlUrl key.) If any of these fail, then I’ll assume that I have an incorrect export. That seems to be a reasonable balance for now. And now that I have PHPUnit set up and running correctly, I can start writing unit tests. Test Data Before writing the tests, I want to make sure I have a couple of export files that I can test against. This, I hope, will verify the validity of the tests. I’m creating an exports directory in the tests directory and dropping in an export from Overcast and from Pocketcasts. And now that I’ve that done, I’ve merged the current feature branch into the develop branch. A Note About My GitHub Workflow In case I’ve not described this before, my workflow for this project includes creating a develop branch off of main and then a corresponding feature branch off of develop so that I can work on a single branch. As it stands, I’m trying to keep each branch with a specific post. I’ve not really shared them yet because it’s a private repository but once I have enough functioning code to throw out into the public, I’ll open the repository. Maybe by the end of this post, even. Writing Tests Before writing tests, I need to do the following: set up a core class in the src directory, set up the autoload functionality in the composer.json configuration file, and verify that PHPUnit can access my class Once that’s done, I can actually get into writing tests. But I need to get this scaffolding done first. Set Up a Core Class That’s in a Namespace Initially, I’d started out with a constant defined in the main file, but I’m going to move away from that. The fastest way for me to get from nothing-to-something is to set up a single class, for now, that will encapsulate the functionality I’m trying to test. This is the part where I rationalize not doing BDUF. Big Design Up Front (BDUF) is a software development approach in which the program’s design is to be completed and perfected before that program’s implementation is started. It is often associated with the waterfall model of software development. Wikipedia I share a little bit more in my Scattered Thoughts in the section at the end of this post. Refactoring the Bootstrap First, I’m creating a new branch (aptly called feature/add-validation-tests since that’s what I’ll be doing in this post) and I’m going to clean out the code in the core backcast.php file, or the bootstrap file, so that I can use it to instantiate an object from the class I’m going to be writing. This means the bootstrap file will look like this: #!/usr/local/bin/php <?php namespace Backcast; require ‘vendor/autoload.php’; new Backcast(); Note here, though, that I’m including the autoload.php file generated by Composer. Define Autoload Functionality Before going any further, let me share what the composer.json file looks like: { “name”: “tommcfarlin/backcast”, “description”: “An application used to backup podcast subscriptions via podcast XML exports.”, “require-dev”: { “phpunit/phpunit”: “^8” }, “autoload”: { “psr-4”: { “Backcast\”: “src” } }, “autoload-dev”: { “psr-4”: { “Backcast\Tests\”: “tests” } } } The two things I want to call out are the autoload and the autoload-dev areas. The first section tells composer where to locate files for the autoloader which is ideally used in production environments. The second section tells Composer that only the files in this area are intended for non-production environments. This means when you run composer dump-autoload –no-dev on the command-line, nothing will be generated for the tests directories. With that said, let’s set up the core class. The Initial Backcast Class First, I’m going to add a Backcast.php file to the src directory. I want to easily verify it’s been instantiated so to make this easy, it looks like this: <?php namespace Backcast; class Backcast { public function __construct() { echo ‘This class
Continue readingHow to Set Your Site Icon (Favicon) in WordPress • WPShout
[ad_1] One thing every WordPress site should have is a site icon, also called a “favicon”—the little tiny image that shows up in your browser tabs to let you tell one site from another. Ours at WPShout is a orange circle with a bullhorn inside it, so you which tabs are us. For the more visually-inclined, here’s a relevant summary image of a site icon: Image illustrating a site favicon taken from WordPress itself, because they illustrated it so well ☺️ This video Quick Guide walks you through how to change your WordPress site icon. It’s easier now than ever, because WordPress has embedded this feature right into the Customizer. And WordPress’s standard site icon uploading process has you covered for all the less common uses for favicons (such as serving as retina-ready desktop app icons if someone saves a shortcut to your site onto her iPad homescreen). Here’s my video guide on how to set your site icon in WordPress: And here’s our text guide to the same information: How to Change the Site Icon of Your WordPress Site Collect the image that you’ll use as your site icon (if it’s not already on your WordPress site). Open the Customizer in WordPress. You can click “Customize” along the top bar (if you’re viewing pages on your site), or “Appearance > Customize” in the left-side menu (if you’re in your WordPress admin area). Open the “Site Identity” panel by clicking it from the initial listing panel. Open the “Site Icon” section. If it hasn’t been used before on your site you’ll click the “Select Image” button. There you will select an image already in your image library, or have the ability to upload a new one. (If you’ve ever used WordPress’s media library, this screen should be familiar.) You will have the ability to crop the image. If it was square, you’ll probably skip this by clicking “Crop Image” without resizing the selection box. (If you do need to crop, drag away.) With that, you’ll be set. Your browser tab may immediately update with the image. If it doesn’t, but you see something like this, you’re set: (Browser caching can be hard to debug, but refresh may fix it for you.) 🙂 And that’s how to change your WordPress site icon! Streamlining this process has been one of the default Customizer’s sweetest features. Let us know if you have any questions—we’re happy to help. [ad_2] Source link
Continue readingA Journey toward Freedom with WordPress – वर्डप्रेससंगै स्वतन्त्रता तर्फको यात्रामा
[ad_1] यो लेख नेपाली भाषामा पनि उपलब्ध छ। Hello world! “Always be thankful for what you have, many people have nothing!” – Buddha Yes, I’m immensely grateful to be writing this essay! I’m fortunate to have had the education that gave me the capacity to aspire, get into a WordPress job, meet people from around the world, connect with Topher of HeroPress, and tell my story! How I Landed Into a WordPress Job My WordPress journey began by chance! Honestly, I didn’t know WordPress until I landed on a WordPress job. Back then, I was doing my Master’s degree in Sociology and had just left my work as a school teacher. I was looking for a job that would allow me to focus on my study and pay me a decent salary. I had a long career of over 5 years in teaching which was a full-time job. In addition to 9 AM to 5 PM work, we had to work extra hours at home – designing lesson plans, evaluating assignment works, exams, etc. – so I was finding it hard to manage time for my own study. I just needed a job that wouldn’t require me to work after office hours. After applying to several different positions, I finally got a content writing job. Fortunately, the company turned out to be a successful WordPress development company based in Nepal (Access Keys). Well, it’s how my WordPress story began! But it’s not the full story. For Hope! My Family’s Struggle for Education I come from a remote village in the hills of Nepal, not connected by any means of transportation until recently. We had to walk a minimum of an hour to go to the nearest school, from where I completed my secondary education. But that time wasn’t just about walking hours to reach school. It was also about poverty, hardships, and the burning desire to overcome them someday! Schools were first opened in the late 1970s in our village but my parents couldn’t even complete the lower secondary level. Pervasive poverty and lack of awareness both were responsible for it. Time passed but our family’s financial condition was still the same. But my parents had understood that the only way out of it was education. Hence, they decided to send us to school, no matter what. Our father sometimes as a seasonal migrant worker to India, sometimes as a porter, brought us (me and my siblings) school supplies. Our mother worked day and night, managed home, family, and our farm. After completing secondary level education, I moved to a nearby city in the guardianship of my aunt. With minimal financial support from my parents, my aunt helped me complete higher secondary school. However, she had her own hardships. She was a single mother without any academic degree so had to work minimum-wage jobs which hardly met her and her family’s needs. Therefore, I couldn’t simply add to her burden. And on the other side, my parents had to support my younger siblings too. So, the only choice I had, if I wanted to study further, was to support myself, for which I started teaching in a school. Breakthrough through English Language Skills I got my life’s first job but it wasn’t easy. I joined a private English-medium school as a teacher. But my schooling as well as the undergraduate program had been in our national language, Nepali, and not in English. We had “English” as a subject in school but the teacher taught us English in the Nepali language. We never spoke in English. Yet, my English writing was fine as I was a good student. When I joined an English medium school as a teacher, I had no choice but to improve my English. I practiced speaking English with primary-level students. Within a year, my spoken English improved considerably. Along with my teaching job, I continued my college. It was a super-busy schedule but was the only option I had! With my earnings, I paid my college fees, covered some of my living expenses, and also supported my family. Well, this is how I completed my Bachelor’s degree and started my Master’s degree too. Later on, the same teaching job that I started to sustain myself enabled me to apply for an English content writing job! As of now, I’m quite confident about my English language skills but still feel hesitant when I have to talk with native speakers. My WordPress Journey – Toward Freedom As I stated earlier, I landed on my first WordPress job when I was looking for the type of job that would allow me free time for my study. Yes, and that’s from where my journey toward freedom began! During my interview, I explained to the CEO of Access Keys (Arjun Singh Thakuri) about the flexibility that I need in my new job so that I could also focus well on my studies. I was hired and could join from 11 AM instead of the usual 9:30 AM after attending my classes in the morning. It was a moment of gratitude and great relief for me! I learnt WordPress at Access Keys. First, by reading Wikipedia and other blogs on the web. Second, from Arjun sir as well as from the senior developers and the designers at the company. I used to have a lot of questions, and my team at Access Keys helped me get answers to those questions. Third, by doing. I set up a WordPress.com blog, a testing site on localhost, and tried different options. My curiosity was definitely the driving force, but above all, ‘the way WordPress is built’ is what made it possible for someone like me (with no technical background) to understand a powerful website creation software, WordPress. As for content writing skills, I started with list articles (theme collections). Arjun sir mentored me for my first few articles. Later, Access Keys hired an experienced SEO professional Amin Ghale who taught me more about SEO and
Continue readingCustom User Avatar Plugins for WordPress – WordPress Tavern
[ad_1] You know what one of the great things about open source is? Others can use a project’s code, share it wholesale, modify it, and/or distribute their changes. These are the pillars upon which WordPress stands. It is a beautiful thing to watch in practice. Most often, it means we can build off the shoulders of those giants who came before us, continually improving the software for ourselves and others. It is how WordPress got its start nearly two decades ago as a fork of the b2/cafelog blogging system. Sometimes, it just means having the freedom to give your friend a copy of something you love and letting them use it. Other times, it is the gateway for a budding developer learning how functions or classes work for the first time, ripping apart a project to see what makes it tick. Every so often, the promise of free software means that others can decide to go their own way when they do not like the direction a project is heading. They can fork the code, carving a new destination for its future. This is what happened when ProfilePress overhauled its WP User Avatar plugin, turning it into a full-fledged membership solution. While its average user may not be able or willing to dip their toes into the depths of the development waters, when you have a 400,000+ user base, a few of them are bound to be programmers. Or at least tech-savvy enough to create a copy of the previous version and distribute it directly. It did not take long — mere days — before ex-users began sharing their forks. The beauty of open source is that they have the power to do this without some corporation cracking down on them. I wanted to acknowledge what they accomplished by jumping into a messy situation and making quick alternatives for many users who felt abandoned. This is my symbolic handclap. 👏 It is not often that we get to mention WordPress’s license without gearing up for battle. However, the GPL played a crucial role in making these forks possible. The license protected the plugin’s user base, giving them multiple alternative paths to take. Without further preaching the merits of open source, the following are the current forks of WP User Avatar: One User Avatar by Daniel Tara (One Designs). It already has nine translations and is available on WordPress.org. Custom User Avatar by David Artiss. It is currently available on GitHub, but it appears he plans to add it to the plugin directory. Orig User Avatar by Philipp Stracker. This one is also only available on GitHub. Each fork looks like a straight port of the latest version of WP User Avatar before version 3.0. There are some necessary code and branding changes. The first two also remove all advertising from the plugin. For anyone looking to return to the exact same functionality as the old plugin, any one of these will do the job. Alternative Solutions Straight ports are nice to have, especially for those who need to keep their data intact for many user accounts, but this could also be an opportunity for others to look at alternatives. And, custom user avatar solutions are a dime a dozen. There is a little something for everyone out there. The following is nowhere near a comprehensive list. I have either tested or used most of these in the past couple of years. I encourage anyone to share plugins I did not include in the comments. Simple Local Avatars Topping any list of custom avatar solutions is Simple Local Avatars by 10up. The WordPress company is one of the most respected in the community, and its employees contribute heavily to core development. 10up tends to put together solid plugins. Simple Local Avatars does just what it says on the box. It allows users to upload custom avatars to their site. It also generates requested image sizes on demand. It works alongside Gravatar, a feature that can be enabled or disabled. It also has built-in options for site administrators to grant permission to non-authorized roles to upload their photos. WP User Avatars WP User Avatars by John James Jacoby, a lead developer for bbPress and BuddyPress, is another simple plugin. Like many similar solutions, it adds a form for users to manage their avatar from their profile pages. It is unique in that it works alongside a suite of other user-related plugins that Jacoby offers. While it can work on its own, it is at least worth checking out his WP User Profiles plugin, which overhauls WordPress profile pages. It and his other user-related plugins work in conjunction with each other. Plugin users can pick and choose which they wish to install. User Profile Picture There seems to be a pattern emerging here — users tend to love these simple avatar solutions. User Profile Picture by Cozmoslabs is another that fits this mold. It also includes a block to allow post or page authors to output any user’s profile (avatar, name, description, and posts link) on the site front end. Users without permission to upload an image cannot add an avatar with this plugin alone. By default, this is the Administrator, Editor, and Author roles. Site admins will need to install either a permissions plugin or Cozmoslabs’ Profile Builder for the extra capability. Pixel Avatars (Toolbelt) Pixel Avatars is a privacy-first Gravatar replacement. It takes a different route than similar options by not providing a method to upload a custom avatar. Instead, it automatically generates unique avatars for each user with a bit of JavaScript. It is a fun twist on the typical avatar system. Technically, this is not a standalone avatar plugin. The Pixel Avatars system is a sub-component of the Toolbelt plugin. Created by Ben Gillbanks, it is a collection of tools that he uses for most of his WordPress projects. It may be overkill for many, but each plugin module can be enabled or disabled based on user needs.
Continue readingDevKinsta Review: Local Development Environments On Demand
[ad_1] It’s common advice when developing a WordPress website – set up a local development environment. Because of this, there are some great products that help you spin WordPress sites up in a snap. This DevKinsta review looks at the latest, and potential greatest. Underneath that familiar purple hue is a set of essential tools and services to create a local website. From there, you can push your site live to your Kinsta server, direct from the dashboard. In this DevKinsta review, we’ll look at how to set up a local development environment using the tool. Though, the main bulk of this post will be looking at how DevKinsta works and helps you to create sites. A Introduction to Kinsta For the unaware, Kinsta is one of the major players when it comes to WordPress hosting. It’s a top-tier solution that offers rock-solid stability and a dependable infrastructure. It runs off of the Google Cloud platform, and packs in an immense number of features to help you create and maintain your WordPress website. Speed is a fundamental focus with Kinsta. Servers run on Nginx, using LXD containers. If this doesn’t mean much to you, know that they’re both fast and reliable. There is also a dedicated focus on security and stability. There are hardware firewalls in place, and near-constant monitoring of your site in various ways to make sure uptime remains high. To tie everything together, there’s a custom dashboard in place called MyKinsta. It’s great to look at, easy to navigate, and gives you almost everything you need to manage your sites. In comparison to dashboards such as cPanel, it offers top-notch usability. It’s the perfect complement to Kinsta’s server infrastructure. An unmentioned aspect is how Kinsta cares for its customer base. The support provision is fantastic, and this extends to new additional features. This post isn’t about Kinsta’s hosting though – this is a DevKinsta review. We’ve talked about the platform in depth in a previous article. It also takes a spot in our managed hosting roundup. You can gauge our opinion through those articles, but the TL;DR is that Kinsta is one of the very best hosts available. The Basics of DevKinsta Given that Kinsta tries to provide the functionality users will need to manage their sites, it’s no surprise that development is part of the thought process. Kinsta itself is developer-friendly in a few ways. We’ll get onto the competition later in this DevKinsta review, but for now, it looks to fill a gap others have missed. It’s a tool in a line of similar solutions that helps you create new WordPress sites fast. The idea is to make it super-simple to build and experiment with your site within a local environment. It’s more accurate to say that the Docker-based DevKinsta is a suite of tools to help you create local sites. In the box, you’ll get the following: A full stack, including WordPress, Nginx, MySQL, and a choice of PHP version. Support for HTTPS protocols, so you can test this aspect out before hitting a live server. A database manager in Adminer. Compared to phpMyAdmin (the competing solution) it’s lightweight and encapsulated in a single file. Built-in error logging functionality. Email testing that’s a snap to use. DevKinsta is also multilingual, and offers cross-platform support for Windows, macOS, and Linux. We’ll get onto using DevKinsta in a few sections time. For now, let’s clear up why you’d want to use DevKinsta in the first place. Why You’d Want to Use DevKinsta to Create Local WordPress Sites Before we get into using DevKinsta, it’s worth taking some time to discuss why you’d want to develop in a local environment. There are a few basic reasons for doing so: You can keep your live site and development site as far apart as possible. There’s no rush to develop your site, as the local environment means you can take as much time as you need. Expanding on the previous point, you can better reserve your server’s resources. You can better define your development workflow, from local to staging, and finally to your live server. If you’ve not used a local development tool such as DevKinsta before, you might have reservations about adding yet another step to your workflow. This is understandable, because an extra layer of software could give you a potential efficiency hit. The good news is that DevKinsta slots straight in, and in lots of cases will improve your development and turnaround time. If you’re a user of another local development tool, DevKinsta offers lots of functionality, with state of the art tools. Of course, if you’re developing for a Kinsta-based site, there’s no reason not to use DevKinsta. Next, this DevKinsta review is going to look at the day-to-day use of the tool. Using DevKinsta One of the first taglines you’ll read about DevKinsta is how it offers one-click site creation. This isn’t 100 percent true, but it’s so close that the reality isn’t worth quibbling over. Once DevKinsta is up and running, it takes a minimum of three clicks to build and deploy a new WordPress site within your local environment: As an aside, if you’re using a dark mode on your computer, DevKinsta looks odd given that the site itself is full of lots of white and purple! Of course, this doesn’t affect the tool at all. When you first power up DevKinsta, you come to the Sites screen. This is an overview of all of the sites you’ve created, and there are three options to open your site. You can open the front end, the site’s folder on your system, and the site’s wp-admin page. There’s also a traffic light menu that lets you delete the site, and open the database manager: Clicking on a site from the list opens a Site Info panel, which has everything you’ll need to manage your site on a few levels: The great benefit of this this section (apart from the super layout) is that
Continue readingGiveWP Joins the Liquid Web Family
[ad_1] Hey, WordPress fans. We are checking in with your latest dose of weekly WordPress news. This week, there was another big acquisition in the WordPress space. Liquid Web acquired GiveWP, one of the leading donation and fundraising plugins for WordPress websites. Along with its recent acquisitions, Liquid Web introduced StellarWP, its new umbrella brand for premium WordPress software products and services. Beyond that, the Gutenberg development team introduced new user-facing features and changes that upgrade the block-editing experience. Let’s get to all of this week’s WordPress news… WORDPRESS NEWS AND ARTICLES TUTORIALS AND HOW-TOS RESOURCES [ad_2] Source link
Continue readingSort WordPress Posts By Date
[ad_1] TL;DR: If you’re looking for an easy way to sort WordPress posts by date (be it descending or ascending) in the administration area without having users click on the Date column header, you can do so through the use of the pre_get_posts filter that provides a reference to the instance WP_Query running on the page. For examples in code on how to do that, check out the rest of the article. Sort WordPress Posts This article is written such that it assumes your set up in class-based. This means that the set up for the filter is defined in a function such as init and it invokes a public function name on the class such as sort_articles_by_recent_time. Finally, it defines a priority of 10 and specifies the function will accept a single arguments (which is an instance of WP_Query. First, add the following filter: add_action( ‘pre_get_posts’, [ $this, ‘sort_articles_by_recent_time’ ], 10, 1 ); Then add the following function: public function sort_articles_by_recent_time( WP_Query $query ) { global $pagenow; if ( ! is_admin() || ‘edit.php’ !== $pagenow ) { return; } $query->set( ‘orderby’, ‘date’ ); $query->set( ‘order’, ‘desc’ ); } Here’s how it works: Note the first conditional checks if we’re not in the administration area or if we’re not on the edit.php page (which is the post listing page), we simply leave the functionality. This is a guard clause or an early return. If we meet both of those criterias, then we’ll update the query so that it orders to posts by date in descending order. This means the most recent dates will always be listed at the top. This does not account of post status (so if it’s a draft or a post with the publish status then it won’t matter). Further, this will prevent users from having to click on the Date column header to sort the results as needed if this is something you so desire in your solution. References [ad_2] Source link
Continue readingUpdating a Publishing Plugin to the Block Editor • WPShout
[ad_1] Helen Hou-Sandí is certainly one of the most important people making (core) WordPress better, and she’s been doing it for years. So I take a pretty keen interest in what she’s working on. So when this post about updating a “legacy” WordPress post-meta post so that it was compatible, I knew I had to read it. And a few months later, I finally did. 🤪 I really appreciated both the article’s style and comprehensiveness. So please give it a read if “modernizing an old plugin for Gutenberg” is somewhere on your to-do list. The article tackles a number of things I’d meant to understand better for years in an approachable way: writing compatible JavaScript and using wp-scripts are the two that leap to mind. Visit helen.blog → [ad_2] Source link
Continue readingYou Don’t Have To Want What Everyone Else Wants
[ad_1] I launched a WordPress-based business sometime around 2013. Starting a business is a goal for a lot of people, but it was never something I intentionally set out to do. I was in university at the time and blogging about books — just doing something I loved. But then I had an idea for a WordPress plugin that would make book bloggers’ lives easier. Although I did decide to sell it instead of releasing it for free, making a lot of money was never my goal. I thought maybe I’d make $500 overall if I was lucky. But three months in I’d already made nearly $1500 and those numbers would only continue to climb. By the time I graduated university, this little business of mine was already fully paying my bills. I went straight from graduation to running a full time business. Over the next few years, I sold pre-made plugins, built custom plugins, launched custom websites for authors and bloggers, dipped into the managed WordPress hosting space, and created WordPress e-courses. Objectively, business was great. But by 2016, I was waking up every morning and thinking, “What the hell am I doing?” The more my business grew, the more I was afraid it was about to crash and burn. The more I diversified, the less confident I felt about what I was doing. Above everything, I was tired. Turns out, I’m not a businesswoman I was tired of selling, of marketing, of advertising, of promoting. I was tired of asking myself “will this sell?” before I started a new project. I missed creating just for the sheer fun and joy of it, which was how my very first plugin even came to be. I just wanted to build cool things and quietly release them into the wild. I love to create but I don’t love to sell. Perhaps I could have hired people to help me with the aspects of my business I didn’t enjoy, but although business was going well for a one person show, I didn’t feel like it was going well enough to hire more people and confidently feel like I could pay their salary every month. And the thought of having that responsibility just brought me even more anxiety. I felt stuck and, honestly, ashamed of how I felt about my business. Was I being ungrateful? I had this incredible thing going for me — I was paying all my bills, working flexible hours (and from home!), and calling all the shots. This is what other people aspire to have, and I had it! I was embarrassed to admit that maybe I didn’t like it anymore. I didn’t want to be in charge. I didn’t want to have the entire success or failure of a business resting on my shoulders. I remember looking through job listings trying to imagine myself doing something else — anything else. But another problem I had was that running my own business straight out of school had spoiled me. I didn’t want to be in charge, but I also still wanted to work from home. I still wanted flexible hours. I didn’t want to sacrifice my 3pm gym session. I still wanted a certain degree of freedom in what I did each day. I wanted all the benefits of running my own business, without any of the downsides I had come to dread. A well timed opportunity In late 2016, sheer luck and good timing brought me to Sandhills Development. I was offered a job at a company that could amazingly check every box on my dream list. I could work from home, set my own hours, have a weird schedule, still make the gym at 3pm, and most importantly: my job would just be one thing. I could focus on building really cool stuff, and nothing else. I wouldn’t have to think about marketing or sales or profit. It’s been over four years since then and I’m now the lead developer for Easy Digital Downloads — the plugin I originally used to sell my first product. So I think things are going pretty well! My old business does still exist, but in a very low key way. I still work on and maintain the products out of love and passion for them, but with zero pressure to actually make sales or be successful. The biggest difference is the boundaries I’ve been able to create in my life. When running my own business, I didn’t work all day long, but I did tend to think about work all the time. Growth was always on my mind because making that happen was purely up to me. I was putting so much pressure on myself to do well, that I couldn’t stop thinking about it. But now, work goes away as soon as I decide I’m done for the day. I don’t think about it after hours. There’s comfort in the fact that although I care about the company, it’s not my company, and the success — or failure — of the company isn’t purely up to me; if something does go wrong when I’m gone, there’s someone else capable of handling it. What works for someone else may not work for you Some people would consider it a downgrade to go from business owner to employee, but it was absolutely the right move for me. Running your own business is often glamorized, but not everyone is cut out to wear all the hats that a one-person business requires, and not everyone has the drive to grow a business into something larger. And that’s okay. At the time, it was immensely hard for me to admit that out loud because I thought it would make me a failure. There is no “one size fits all” dream job and I learned that being the owner of a company is not mine. If what you’re doing now isn’t working then there’s absolutely no shame in bowing out, even if you’re currently living
Continue reading