FED’s vs BED’s: The first day.

Okay, first off, it’s been a while. Ever since joining WDS, I haven’t really had a reason to blog here, because well I blog there. But! I have an opporitunity to blog about more personal stuff with a series of posts centered around an experiment me and Eric Fuller are doing.

First off, we’re creating a new WordPress plugin centered around creating a todo list you can use when logged into your WordPress site. It basically will operate like this:

But, the reason we’re working on this project is because we want to experiment with the relationship between backend developers and front-end developers. We feel that the relationship between a FED (Eric) and a BED (me) can be a lot more smooth if we can only clearly identify who takes care of what and draw harder lines between (and even change completely) what a FED does and what a BED does when creating a feature.

So, I’ll be blogging the process here!

Day One

This week I basically scaffolded a base plugin using WDS’s plugin generator, definitely a BED task since it’s a plugin and not really a theme. One big hurtle for me was when I showed Eric what I had done. Thinking like a BED, I had tried to setup a template system of some kind that will allow Eric to add new templates and template parts/pieces, but then he told me, “I’m going to basically delete all that and have Js handle all the templates.” As a BED that really confused me initially, but Eric explained to me that he most likely was going to use Js/jQuery to build the HTML elements on the fly using JS, which for a BED means I don’t build any (maybe a bit here and there) markup, he does; that’s his job! I think too often BED get into the markup game, when really that’s a FED’s job.

So, next, Eric is going to basically build out what you see in that gif above, without any functionality. Well, almost. If you look at #6, he’s going to basically setup a static dataset for his UI to use. So, upon loading the page, his UI will be pushed to the DOM and populated with dummy data and should work for that page load instance. Creating a list or a new list item would simply push data to his dummy dataset (I think), deleting would remove it, etc. His entire UI is going to work off of a static dataset in JS loaded only for that page load. When the page reloads, it starts all over. I will be coming in when he is done and replacing that dummy data with actual data from an API request. The idea is he should have all the structure for the data worked out, I only need to ensure that data ends up being persistent.

Axios & Promises

One big change for me, as a BED, was Eric’s suggestion to use Axios and the understanding of JS Promises. Once I finally got my mind wrapped around Promises, it make complete sense to use Axios (a Promise based system) going forward instead of your typical $.ajax() system jQuery uses. Usually the handling of data is handled by the $.ajax() request itself, using callbacks like success and compete which disconnects the JS. Promises are functions that run our AJAX requests, etc, and simply pass the data back to the caller instead of passing the data to it’s own success method, etc.

Basically, Promises are functions that wait until your either resolve it or reject it, and that tells the caller when to continue using .then. It was a bit to wrap around my head, but check out Axios and do your own research on Promises, they’re way better than passing the handling of a request, such as an AJAX request, to another function.

So, he can just setup a new axios.get( functionThatReturnsJsonData() ) and later on, when I build the API endpoint for that data, I can just replace it with axios.get( 'http://.../data' ). At the end of the day, as a BED, I do little markup! That is the FED’s job! The meeting place for BED and FED work will simply be JS, yet the FED drives most of the JS.

Working Backwards

Me and Eric are working backwards than what we’re usually used to doing, which is basically: BED go create all the things then have the FED simply style it using SCSS. This time Eric, the FED, is going to drive “building all the things” since he is in charge of UI and UX! UX here is the most important, so it’s important that the FED (the designer) drive the UX initially. But, he’s not going to build out the data, that’s going to be my job after he gets the UI and UX going!

Takehome

One thought we had was that using the build UI/UX first, and using dummy data initially is a good thing; to the point that we think any client could simply approve of the UI/UX first at that point without any BED intervention. Once a client approves of the UI and UX then the BED can come in and build out all the data. All too often changes in the UX/UI cause a lot of work to be done when it’s all build-out. This ensures the client approves only the UX/UI, and if they don’t we save the BED from having to do any extra work. The FED simply changes the UI/UX around, and makes a few tweaks to the dummy data (if necessary), then when the client is fully happy, the BED just has to ensure the right data ends up in the right places (they don’t have to worry about UI/UX changes at all, yey!).

This also ensures that the BED can design the storage for these items separate from the FED. The BED can also get a better grasp of how he might design the storage areas for this data (e.g. a CPT, or custom tables, etc) by having a good understanding of how the data will look. As a BED seeing the data first is always a good thing, rather than designing it before the UI/UX.

Takehome: UX/UI (FED) drives data (BED), not the other way around.

Follow # for more! Check out our repo, we are clearly identifying what is FED and BED!

I Landed a Dream Job at WebDevStudios!

TL;DR: I totally landed a dream job with WebDevStudios! It’s late, I know….

2007, I download WordPress

When I downloaded WordPress to create my first site with it, I had no idea it would become such a huge part of my life. It was easy, it had plugins, it had themes, it was something I could work with. That’s how it all started. As the years went on I would go on to push WordPress as “the future,” and it was, especially for me. I would use WordPress to build many sites, it’s in everything I would build.

2007+

For almost a decade WordPress would be the center of most of the things I did. I can’t express enough how happy I am that WordPress is Open Source. My love, and of course need, for Open Source software is what pulled me to WordPress in the early days.

During this time I’d work building WordPress sites for lots of people, friends, and even family. Towards the end I would finally start working on my own WordPress themes and plugins.

…2014, I meet WordPress addicts

I attend my first WordCamp (#wcphx) and see all these WordPress addicts, thinking how lucky they are to get to do WordPress day in and day out and work with other WordPress people.

I decide to make a change. I need to work with these people, I needed to be a part of a community who are crazy about WordPress like I am. I set out to find a dream job, one of those “do what you love, you’ll never work a day in your life” deals.

I aim high hoping for anything I could get my hands on. Let’s just say it was a trip and I learned a lot along the way. But I noticed WebDevStudios needs a front-end developer. I think it’s a long shot, but knew this would be huge if I were able to get a job with these guys…

2015, …and I did!

It was a big deal when I got the call from Dre telling me I had got the job. I’m pretty sure I said something in reply like, “This is great. I can’t wait!” But what I was really thinking was, “Holy shit! I got the job!”

It’s been an amazing couple of weeks. WordPress is now what I do and I’m excited to work and learn with the great people I’ve been getting acquainted with over at WebDevStudios. They’re a crazy bunch, but that’s right up my alley, and I’m honored to be associated with such a prestigious company.

Thank You’s

A lot of people helped me along the way, especially family and friends with their encouragement and support. They truly know the “journey” I was on trying to make WordPress what I do, especially my patient and very understanding fiance Ashley.

But, most of all, as cliche as it will sound, I do owe a lot to the WordPress community itself. Because they make a great open source platform like WordPress, they’ve opened up this opportunity for me.

My experience working at home for the first few weeks

Reblogged from: My experience working at home for the first few weeks@4dads1blog

It’s been about sixteen weeks since my new roommate, my daughter Lexie, moved in. It took about a day to realize that day care in one of the livable cities, Scottsdale, wasn’t going to be an option. Everyone works in our family, so we were faced with trying to solve a dilemma. How do avoid day care, work, and take care of a new baby. The solution ended up being that her mom would work at home two days a week and I would work at home three. This way we could avoid expensive day care and spend more time with our little one.

Luckily for the both of us we had working environments that supported the transition. I write code all day while she answers emails and phone calls, all of which could be done at home. So, it’s been about three weeks in, and so far here’s what it’s been like.

Effin’ Monkeys & Rangers

Baby watches Power RangerI started off thinking that all the grunting and whimpering Lexie would do would not be a problem, and it wasn’t. But, throughout the day I could see her getting bored. The grunting and crying would increase and then I found a magic bullet…TV. I figured out that she would actually watch and listen to anything coming from the TV like the rest of us. It soon became routine to pull up Curious George on the tube and let her be per-occupied with all the monkey sounds.

…until it started getting on my freakin’ nerves. For some reason a grunting baby doesn’t bother me, but the sound of a menacing monkey, who really isn’t that bright, started to drive me up the wall. It soon was replaced with Power Rangers, which she also found very amusing.

…until I realized new things about the show I didn’t before. Yeah, I guess my inquisitive nature was kicking in because all of a sudden I was thinking, “Why was the yellow ranger Asian, coincidence? Why does the Black Ranger break dance, was that necessary?” As a kid it was simple, people in colored suits kicking adult butt! So… it was distracting me to say the least.

Entertaining the baby had begun to lead to distractions for me. But, all was not lost. All hail the mighty iPad! I figured out I could set up the iPad in the crib with Lexie and she was equally entertained by the crazy monkey (and even music). Now thinking about it, I think it may have lead to her successes in rolling over (she’d lay on her side to veg out).

Routines

If you want to get anything done hanging out with a infant who can’t even figure out that those are her feet, you have to have a routine. Two naps. Two feedings. Play with a toy for at least two hours. Swing right before nap time. And, making sure you’re present at least every once in a while.

Right! Me and Lexie’s routine took a few days to develop, but I always try and remain consistent. As long as it’s consistent, I can’t say I’ve had anything to complain about. I also had to make sure I paid attention to her once in a while. A quick “Hey baby, soaked that toy with all your spit yet?” helped let her know her dad wasn’t just ignoring her.

Too Much Sleep = You’re a Dumbass

The one thing that’s super hard to not do is let her sleep too much. The nap time is the best time to get things done, and I’ve been far too tempted to let her just sleep. But…that kind of plan is going to kick you in the ass later…about eight hours later when she’s ready to party at about 3 am! Again, going back to the routine, I have to make sure she has some engaging things to do throughout the day so she doesn’t just fall asleep.

But, believe me, you’ll be tempted…and you will pay for it.

Mornings

This is an addon to routines. Morning, when you’re the one staying home, are essential. You must get breakfast because as soon as your friend who kisses you leaves it’s all about work and, as we discussed, routine. You might not get that breakfast or coffee you need in the AM!

Luck

Lexie is a sweetheart. She rarely cries and only uses it to clue you into things like, “Dad I think I peed, I’m not sure, but please check it’s driving me nuts!” Or, “Dad, I’m starving. I’d get it myself, but that’s pretty much impossible…please feed me!” Sometimes I get the occasional, “I don’t like this spot! Or that one! Nope, I want to sit up!”

But, really, she’s a really good kid and not fussy for the most part (she’s just chillin’ in her bopie right now). That’s just blind luck! You’ll need some of that too!

#wcphx: What I took away from my first WordCamp

WordCamp Phoenix Logo

So, I’ve been waiting all day to write this blog! The last day of WordCamp Phoenix was awesome! I’d have to say the contributor sessions today were great and really brought home WordCamp for me!

Google Destination URL

I’ve also completed my goal of publishing a plugin during WordCamp Phoenix. You can now use Google Destination URL by installing from the WordPress.org repository. I tried to use as many things I learned at WCPHX while developing it. You can see more about the process from the GitHub commits.

Google Destination URL will allow you to add link in the WordPress editor by searching Google for the link. Check it out.

But! The other part I wanted to blog about was, “What did I learn at WordCamp Phoenix?” I’m going to cover the stuff I’ve retained; the stuff that really stuck out. Let’s start with…

Day 1

The first day was, obviously, my first time at a WordCamp. But, right away I was learning new things! I really think most people owe it to themselves (as a developer) to learn things from going to WordCamp.

During day 1 I learned more about the things that I didn’t know much about before, or didn’t use as much. It was the most informal day for me. The best part was when Konstantin Obenland and Michael Cain did “Cain and Obenland in the Morning” talk-show like event. But it was also awesome to learn some cool stuff from Brad Parbs and Cliff Seal.

Where to always use filters: return;

Brad Parbs told me this one.

The first thing I learned was something that felt like something I should have considered or thought of before. When you’re returning a value from a function, you can automatically give other developers an automatic advantage by allowing someone to hook into the values you are returning. Now I can use filters easily.

I kind-of show how you can do this in this example:

Send PHP data to JS using  wp_localize_script

How I’ve usually accomplished this is by embedding an inline script to set a JS variable with values in it. Turns out WordPress already does this quite well.

In these examples you can see how I setup a JS var called google_destination_url_js on the PHP side.

Using Transients for Caching

Cliff Seal showed us this one.

I had known about transients before WCPHX, but I never really thought about how to use them. In the example below I show you how I cached Google Search results in my new plugin.

If you were to type aubrey, and then modify what you typed to aubrie, the search (on keyup) will return another result (the same result) for a, u, b, and r all over again, even though you already typed each of those chars less than a second ago (while typing).

You can see what I mean in the examples below. I cache each keyup result so that, if the delete button is hit and aub is typed twice in two different searches, we are bugging the Google API once for a, au, and aub.

Day 2

Day 2 was one of those days when I just couldn’t decide what talk I wanted to attend. They were themed into 3 groups, one was client/beginner based, the next business based, and the last one developer based. I would get stuck trying to decide, WordPress Mobile App Development, or Managing Client Expectations from Start to Finish?

Some things I took away from Day 2…

Turn down work that isn’t for you or your company

It’s pretty self explanatory, but I heard this talked about and said so much on Day 2 that it became obvious that taking on work that doesn’t fit your style or company just spells disaster.

You can make Apps out of your WordPress sites

I always knew that there might be a way to do this, but one of the talks that day confirmed for me that, indeed, it can be done.

Look into AppPresser for more info.

I’m still not ready for Capistrano

Though the talk was really good, using Capistrano still frightens me haha! It was probably the only talk where I felt like it would be easier to just make the symlink myself.

Paul Clark Still uses MAMP, and that’s OK! (Varying Vagrant Vagrants)

Throughout the camp, people were raving about VVV (Varying Vagrant Vagrants). Now, it doesn’t frighten me as much as using Capistrano, but I’ve just always just trusted MAMP. But, like I said, Paul Clark said he still uses MAMP, and know what, so do I.

Varying Vagrant Vagrants is from the guys at 10up.

Day 3 (today)

Day 3 is probably my favorite day. I spend all day in a small room with a bunch of other WordPress loving people. The day wasn’t about making money off Websites, or how to use new API’s, etc, it was about the thing I love about WordPress: contributing.

And, the things I took away are:

WordPress people want YOU to get involved

The overall feeling I got from the people in this particular part of the camp was that they really really want people to get involved. It may look like the WordPress god’s in IRC or Make don’t really need your help, but you’d be wrong.

WordPress people are so welcoming to people who want to help, but you kind of got to get in there and let them know. I asked a few questions about how to really get in there and start working on things, and it turns out that if you just show up, you’re probably on the list! But, you need to…

Ask Questions or Get Help!

There were tons of WordPress people that said, “please, tweet me, I will help you out,” the whole time I was there. Brave up, ask questions, bug someone (but be nice).

I plan on bugging Mike Schroder on how to get involved in core…well…because he told me to.

The new way to build new things for core is build a plugin

I asked about how to get involved in building new features, and the experiment with MP6 is still on-going. There are people (and teams) who are devising plans to get new things into core today! They build a plugin, everyone checks it out, and walla it’s in core (or not).

But, if it doesn’t make it, hey it’s still a plugin…Beautiful!

The key is getting in touch with these teams. IRC is the sure way to get involved, and get involved today! Now is the time to do it (as of January). They are working on building teams for 3.9!

And, finally…

The overall thing I took away from the camp is that there is a community. From the far reaches of the inter-webs it may seem like there are a lot of hidden people working on WordPress that don’t need your help. Being my first WordCamp, I came from a place where I knew I could get involved, but (I don’t know how to explain it) there was just something missing…

…It was going to a WordCamp! You’re going to meet those people, put some faces on them, and get a renewed sense to get involved!

WordCamps are also a great place to learn the ropes. Sure you can read up on things, and like me learn through experience, but the “pros” at WordCamps will show you how to box with your gloves off. Plus it’s just an eye-opener. You’ll hear and see things you hadn’t before…promise.

Well, that’s pretty much it! The great people who made WordCamp Phoenix happen deserve more recognition that they probably get! I’ll be coming back next year, I might also be going to other one’s too, who knows!

What did you get out of it!?

WordCamp Phoenix, Day 1 + New Plugin #wcphx

For my first experience at a WordCamp, today was a success as expected! I got to learn all kinds of new stuff (I’ll outline below) from awesome people and even some Automatticians! My favorite part/talk had to be the “Cain and Obenland in the Morning (Afternoon)” where they sang there intro (sorry, no video) throughout the talk, plus I learned a lot more about the theme customizer.

It was interesting to see some Automatticians face-to-face and I met a few other people along the way that knew so much more than me. Registration was probably the most hectic part (done in one location), but after that it was pretty easy. I’m learning that a big part of “learning” WordPress comes from attending WordCamps, as I learned a lot of new kind-of “hidden” things going on in WordPress that I never knew about before. Plus, you get to learn a lot from the audience as well.

The First Plugin

As I mentioned before I wanted to write a plugin this weekend during WordCamp Pheonix. I had a few ideas, and I decided on Add link without having to go find the link, copy, and paste (via Google search). What this will look like is…

Screen Shot 2014-01-17 at 7.12.41 PM

I’ll be optimizing the area where you add a link. Usually I have to open a new tab, “Google” the URL, copy, paste over and over. What I plan to do is make the link textbox do an Ajax search from Google and give you some results to choose from. Nine times out of ten the first few will be your result, click, and you’ve added your link.

I’ll be developing over at BitBucket (about to do the new tab thing I won’t have to do anymore…), and I plan on adding support for WP Markdown (again), since I use that instead of the normal WordPress link-make-r-thingy.