wp_create_category(‘Fatherhood’)

I feel like I’ve dropped off the face of the planet. I haven’t done any WordPress-y stuff, haven’t been up late coding a new plugin, nothing, nata.

Today I did, however, have some time to re-do my site. It’s now called codefrom.coffee because, on an impulse, I bought a domain (http://codefrom.coffee) with the same syntax that you can now use to get to this site (you may already have). While I was doing some cleaning up, I noticed this post needed a new category. Fatherhood. Yep, this is the reason I haven’t been on here in a while- I’m about to be a dad. It’s insanely great as I sit here waiting (could be any day now) for a child to pop out and let me be a dad!

I’m glad I got to press this moment on my blog before I forgot to. Maybe this is a good start to a Dad Blog!

Hash 1.1: IRC/HipChat-like chat system built on PHP, jQuery, HTML, & CSS

First off, this is my first post about Hash, a “secret” chat project I’ve been working on to replace my personal IRC woes (mainly IRC logging). Don’t get me wrong, I love IRC, but I also love HipChat, but I hate that HipChat list closed….you get the point. Plus I needed something dead simple, no logins, no signups, just chat…

Hash is a simple IRC-like, HipChat-like (mainly in that it has persistent chat), (PHP, jQuery, HTML/CSS)-based chat system. So anyone can use a Hash install to use.

Screenshot showing Hash collecting nick and hash names

Here’s how it works. All you do is create a room (which I call a hash, because you hash things out), and pick a nick. No login. No password, in fact two people (at the moment) could use a single nick or login as many. Then, chat. Notifications let you know when something new is said. Chat history is persistent.

It’s developer friendly, which only really means it’s easy to create rooms, share them, and assign people nicks because the chat uses ?hash=&nick= to start the person loading the hash off with a hash and a nick. Easy for inviting clients into chat rooms by just giving them a link.

Hash 1.1 will continue to make small improvements to make Hash more useful. I have been using it, and it appears to be stable enough to use, again for private purposes. Not sure about public use yet, but I need it for a few new things, and so 1.1 will get those features.

You can try out Hash on my site where you can make a hash and start chatting away with someone else. I’d love to see people use it and give feedback.

Want to help? Check out Hash on Github. There are some issues that need some help.

ShortcodeML

First of all, this is a proposal. I just want to solve a few simple problems with this:

  1. Ticket #25295
  2. Personal experience with clients using WordPress can’t get how to use <br> in HTML mode, but can use a shortcode like [br] or [break], or [break clear-left] better
  3. I want to wrap a <div> around an element, but possible cuts and paste’s can erase it because the code isn’t seen in visual
  4. When I do add a <div style="float:right"> around an element in the editor, it actually happens in the editor. Sometimes this is nice, sometimes this sucks

…this seems like a solution to some of these issues because I have used these kinds of solutions before in themes and plugins to help clients and myself do more HTML-y things in the editor. I just want to build an all-in-one solution.

Follow #shortcodeml on my blog for updates.

Let’s see if I can sort this out. Because of ticket #25295, and the fact that 3.9 will most-likely not have the “Advanced” tab when editing an image’s properties, we will sadly no longer to be able to click on an image, go to Advanced, and, for instance, add class names like  .aligntop to an image.

I don’t think this should be done in the Advanced tab anyways. Sure, for images, it’s a quick way to do it, but if you really want to add a class to something, you’re going to use the text mode to do it (especially for something like a div or ul).

This ticket gave me the idea to write something close to bbScript, remember bbScript?

“Wouldn’t it be nice to just [code]...[/code]?”

Let’s add on to the image problem and say that, yeah, we also can’t add a break return without sending the user into text mode in the editor and having them write <br>, which when switching back to Visual isn’t apparent that it’s there. It’s kind-of invisible. What if we could  [br] instead, or [break], which is more understandable and readable, or  [break clear left] to also clear left (we should also be able to [br style="clear:left"] because some of us are more familiar with HTML. It’s also hard to, in the editor, wrap <code> around a piece of text. I’m currently using a plugin, but wouldn’t it be nice to just [code]...[/code]?

That’s where the idea of a plugin, that I’m calling ShortcodeML, would allow us to do more HTML-y things in the editor and solve our ticket problem because we can just [span class="aligntop"]<img />[/span] or [class="aligntop" block]<img />[/class]. And for an intermediate WordPress user, this isn’t HTML, because you can see it, and it’s readable, and it’s a shortcode.

Organize the Idea

I didn’t want to go find some large list of HTML tags and kill myself coding each one. I wanted to do something more graceful and simple that solves the problems. First off, we only need a few HTML elements (I’m open to additions) to work with in the editor (tag|readable):

[p|paragraph]

[div|divider]

[span|inline]

[code|inline-code]

[pre|block-code]

[br|break]

[hr|horizontal-rule]

All of these only need to accept a few helpful attributes (attribute|readable attribute):

[... class|classes=""]

[... style|css=""]

[... id=""]

Data attribute can be handled like:

[... data="value", data-selector="x"]

Gives us… <span data-x="value">...

We are also going to need some handy quick writable tags where “…” below are any of our tags above. Some elements may not need a “tag”, so “…” will not be included:

[... clear-left|right|both]

Gives us…: <... style="clear:left|right|both;

[clear-left|right|both]

Gives us…: <span style="clear:left|right|both;

[hidden]|[inline]|[block]|[inline-block]

Gives us…: <span style="display:none|inline|block|inline-block;

[... inline|block|inline-block|hidden]

Gives us…: <... style="display:inline|block|inline-block|none"

[class='classes classes2']

Gives us…: <span class="classes classes2"

Some examples:

[paragraph clear-left]...[/p]

[clear-left]...[/clear-left]

[inline class="classname"]

[divider inline clear-left css="margin-top:20px"]...[/p]

[break clear-both hidden]

[class="aligntop" block]...[/class]

[class="aligntop"]...[/class]

So, that’s my idea and what I’d like to start building. If you have any feedback, ideas, modifications, whatever, please comment!

#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!?