Blog

Over the past month I've been working with the Defense Digital Service (DDS) on a new website promoting open source software within the Department of Defense. I've been working as a volunteer with another volunteer and the DDS team to build and launch the .mil site before it is presented at OSCON. We're hoping it'll be finished and ready by it's launch date. Once it goes live I'll post a link and discuss some of the tools we are using. It's been a fun experience and not an opportunity that comes up very often.
1:48 am
After a lot of thinking about it, I've decided I'm going to start a think tank on improving government and initiatives. I'm going to invite someone from every field to act as a subject matter expert. We will then discuss issues and try to find solutions. Once we have determined a solution we will contact government officials and make suggestions. We will also work with charities and try to help improve communities. I've been wanting to do this for years, but wasn't sure how to go about it. I think I know now, so it's time to start.
12:47 am
Well, I've been told I don't blog enough (hey Shaley), so I'm back :). My last post I talked about moving to Node.js development and I have to say I like it. I miss some things about PHP, but it was my first love. One of the things my team is building is a SaaS platform and the cool thing is we will be doing SDKs in other languages, like PHP. That means Clay isn't dead and I'll be building in new features to test our platform. A lot of cool things going on, I just can't talk about them just yet.
2:35 amNode.js
So, after 17 years of PHP development, I'm learning something new: node.js. I'm loving it so far, but I also miss a lot about the way I've used PHP. Unfortunately, there are some things node.js does better, so I'm learning something new. I wrote a framework from scratch, but it was just to learn it. I'm using Hapi for my latest project, which I love, but also fight with a lot. My current project is a commercial venture, which I plan to discuss more in the near future. Fun times.
We have a new baby girl! She was born on Saturday :) It's been a while, but I'm still here. I've been doing a lot of coding lately, just not in PHP or on Clay. It may be my first closed source project. It may get open sourced down the road though. A lot has been going on lately. Need to blog more often though.
We finally moved into our new house today, finally. Pics and stuff to come. Feels nice to spend the night at home, instead of the hotels we've been in for the last 2 months.
We will be leaving Italy soon, so we decided to take one last trip to Venice. It was a cold day, but overall a good one. Google took the liberty of applying a filter to a picture of the tower in San Marco's Square:

6:03 pm
Worked on my Summernote app some more. I found it either difficult or confusing to build a full plugin, so I actually forked the JS file. I wrote my embed stuff directly into Summernote and it works quite well. I'm probably going to keep it that way for now and actually remove the code for buttons I don't need. Eventually I'd like to make every button a plugin, but from what I can tell, you can't create new handlers in a plugin, you have to use the generic one. I could be wrong though, I'm no JS expert. Part of my emphasis shifted later in the day to the thought of turning the embedded sites into a service (product). There are sites out there that do that, but I don't really want to pay for it if I can do it. I may build it into Clay and make it a collective feature like some of the other stuff I'm working on. ;)

Roll Tide! 

Clemson played their hearts out, hats off to those guys. 2 champions, unfortunately there's only trophy.
11:20 am
While working on the Summernote app for Clay, I noticed attached videos (from YouTube, vimeo, etc) were put in iframes. Unfortunately my HTML filter forbids iframes and for good reason. So, I made something new instead. I've made a way to embed videos, images, tweets, Github's, etc, without compromising to XSS attackers. It uses a server side response to validate a request and then attaches the relevant tags to display the type of content. I actually borrowed part of the idea, but haven't seen an implementation quite like mine. It uses ajax of course, so each item loads independently and uses a standard starter tag to launch it, regardless of content type. I built the JavaScript side into the main JS file for Clay, so it will work anywhere on the page. I still have to do the button actions in Summernote, but that looks fairly easy.
So, I've been working on a custom upload Callback for Summernote, pretty much the last 3 hours. I could not get it to work. I searched for every keyword I could think of and everything showed variations of what I was doing. Finally, I found this little blurb on the docs that say since 0.7.0, callbacks require to be wrapped in callback : {}. Hours of frustration, looking at the same few lines and rewriting the same thing, over and over... Nothing I found on Google, even stuff posted in December, showed that for callbacks. I want to hug whomever wrote that blurb... In summary, callbacks in Summernote 0.7.1 have to be wrapped in callback.