Category Archives: Musings

I post my thoughts about the bigger picture of the Tech scene here. Join into the conversation and let me know what you think.

What I Want to Hear About this Tuesday at the State of the Union Address

I received an email from BarackObama.com asking me to fill out a one question survey.

The survey question was:

What issue are you most excited to hear about in the State of the Union?

This was my response:

The biggest issue that lost my enthusiasm in the leadership of our president is how much the NSA has been sabotaging the security of the internet.

I understand that the President worries about our safety, and that the NSA is telling him that they are making things safer.

Frankly, I don’t believe that it is making us safer, it’s eroding the clear leadership that the US has taken in moving the world forward technologically, and is threatening jobs by undermining the integrity of US tech companies. It upset me greatly that the President focused mainly on phone record meta, who uses the phone these days?


    Code Is Poetry

    codeispoetry

    At the bottom of every page of wordpress.org is the above statement, and it’s not just an empty phrase.

    I learned what I know from digging into WordPress. It started by my breaking the site I was supposed to be managing, sorry Karin. Many books, themes, plugins and years later I seem to be able to manage most any PHP site quite proficiently.

    No matter what I’m working on, I try to keep the above in mind. “Code Is Poetry.” If I can make a method more elegant, concise, I go for it.

    Having influenced me so much, I decided to put WordPress to a test. See if the good people at WordPress hold to their own mantra.

    To do so I installed the top CMS platforms on a local environment so I could compare their codebases and database structures with each other. I wasn’t very scientific about what is considered a “top” CMS. I pretty much Googled and made a list of the top few that came up the most. I have not run any performance tests, I may do that for another post. This post is just about structure of code and database. “Code is Poetry” right? Here are my results.

    cms file search

    File count (CMS’ in alphabetical order)
    Concrete5: 4006 files
    Drupal: 1065 files
    Joomla: 5083 files
    WordPress: 1062 files

    cms folder search

     Folder count
    Concrete5: 765
    Drupal: 136
    Joomla: 1233
    WordPress: 112

    Top level folders
    Concrete5: 20
    Drupal: 7
    Joomla: 17
    WordPress: 3

    Why This is Important

    A codebase to a developer is a lot like moving parts in electronics. There more there is, the more that can break. Less doesn’t necessarily mean better, a space shuttle is clearly better than a 747 and has far more moving parts. But to continue the analogy, a SSD is far superior to a HDD.

    Drupal and WordPress are neck and neck in numbers, though, WordPress is ahead by a hair ahead, except for the top level folder stat.

    The top level folder stat is important. WordPress wins hands-down here. Aside from having strong OCD tendencies, it’s important because it’s an indication of the overall clarity of structure of the codebase, which has clear ramifications. Try upgrading WordPress, one click. Try upgrading Drupal… HA!

    The WordPress codebase is structured beautifully with clear delineation between wp-includes, wp-admin, wp-content. It’s clear what is where, and what is what. You do not have to read through their documentation to see clearly where the core sits, and where you can mess around. You cannot say this about the other CMS platforms.

    cms folder breakdown

    Now for the Databases: Table count
    Concrete5: 172
    Drupal: 72
    Joomla: 68
    WordPress: 11

    For more about the elegance of WordPress’ database read: How WordPress Works: Dissecting the Database.

    In conclusion, I don’t want, ever again, to hear about how bloated WordPress is.


      WordPress Proposal: “Deep” Linking Taxonomies to Custom Posts

      EDIT: A very awesome plugin that does this and much more, exists. Go check out Piklist.

      Scenario

      You are building a site for an educational institute. There are several requirements:

      • Speakers – These are the people giving the courses. There could be different speakers for the same course, if there are too many students for one course, or on different years.
      • Courses – Each course could be unique, or it could be the same required course that every student needs to take to get through.
      • Dates – The duration. If you’re dealing with conferences, it could be a single date. If it’s a course, it may be a time-frame.

      Each of these could and should be a custom post type. And each would have its own custom taxonomy. Speakers should have a Department taxonomy. Courses should as well. Dates should have a Semester taxonomy.

      Here’s where things get interesting. What if a Speaker had a taxonomy of Course, so all the lecturers of a specific Course could link themselves to that Course? Wouldn’t it make sense for both Courses and Dates to have the Semester taxonomy?

      Proposed solution

      In addition to linking taxonomies to all other posts with that taxonomy, there is adding the ability to link a taxonomy to a specific custom post as well. This is similar to descriptions for categories, however, taxonomies do not have meta. Posts do.

      This way, when you visit this educational institute’s site and you’re looking at a course, but you’d like to see more about the speaker, you can click one taxonomy link and see all other courses tagged with the speaker, or you can click straight through to the post about that speaker.

      The opposite linking works just as well. You’re looking at a speaker and would like to learn more about a course they teach. The course is already a taxonomy, so you could click and see all the other Speakers who are tagged with this course, i.e. all the Speakers who teach this. Or you could click through to the course itself.

      Obviously this can be done already. Just not automatically, or easily.

      How

      If this were build as a plugin I would create a look-up table linking the taxonomy ID to a post ID. If it were to be incorporated into the core, I would extend `wp_term_taxonomy` with another column that would associate the taxonomy term with the specific custom post ID. A link could be generated with a function like `get_term_post_link()`.

      I think I’ll go ahead and write this plugin now…

      EDIT: It exists!


        Obamacare Websites “Irresponsibly” Built on WordPress

        Edit: Just wanted to point out. According to the video below, if you go here you can hack ALL OF WordPress! How irresponsible?! Oh yeah, and you can hack Google here.

        I’m a fan of TWIT, I listen to the show weekly–it’s one of my favorite podcasts, in fact. I like it because Leo Laporte is clearly very smart, is knowledgable about tech, and he lands outstanding guests. The clip above, though, is a perfect example of how intelligent people can be wrong.

        “This is the federal one, is also running on WordPress. (laughs)”

        Why wouldn’t it? He really doesn’t explain what issue he has with WordPress, except that you can go to /wp-login.php to get to a login screen. As of writing this post there are over 70 million sites running WordPress. Among them are NBC, TED, TechCrunch, CNN, Time, Dow Jones, and UPS, which are running off WordPress VIP, among many other high-profile sites. WordPress is an elegant platform upon which you can build pretty much anything. In fact, more people are using WordPress as the infrastructure for a web application than they are for purely a blogging engine.

        “Of those who use WordPress, 69% use it only as a CMS (Content Management System); 20% use it as a blog/CMS combo; 6% use it for blogging only; and 7% as an application platform”

        State of the Word 2013, statistics

        So there really is no problem with building your site, even if you are a government health exchange, on top of WordPress. The real problem is who is building that site. I was at a party recently and was shmoozing with a fellow developer who mentioned that his company was forced to use a contractor to build their site. My partner burst out laughing when he said that because of my expressive reaction. Web contractors are notorious for building shoddy sites. I’m not saying every contracted site will be poorly built, but their job is to get the site done and move along, which is not conducive towards quality. Not to mention that a good site is a site that is maintained. Consequently. That is exactly why you should have your site built in WordPress. Whether your site is built in-house, or your site is being contracted, I highly recommend building it off WordPress. WordPress is constantly being developed by a quality open-source community. Open source means that everyone and anyone can dig in and read the code. Sounds a little scary, right? But this actually makes WordPress more secure. I read the WordPress source code for fun in my spare time, I learn a lot that way, and countless other expert developers do the same. When ways to improve are found, they’re included into the next release. If and when security holes are found, patches are released to the community immediately. Can you say that for YOUR site’s infrastructure? If your site is a proprietary site, or maintained by a small team, you can’t say the same. WordPress has been tested by 19% of the internet. If security holes were found regularly, you’d hear about it.

        A good site is a site that is maintained.

        Building off WordPress you can rest assured that your site’s engine will continue to be developed long after your developer has left. YES, your site’s custom theme and plugins will need updating. But that will cost you MUCH less than it would to have a whole new site built. As to the security concerns Leo and his esteemed guests raise. Many developers aren’t aware of all that is needed to properly secure a website,WordPress or not. Especially if your developer is looking over the horizon towards their next gig, being a contractor and all. If you’re concerned about your WordPress site’s security, go ahead and harden your site  right now.


          I May Be Ridiculously Good Looking, But It’s My Choice If I Want To Be Seen Naked

          Walking down the street, no matter how ridiculously hot you are, you can expect that you can keep on the clothing you choose to wear. Even if every passer by wants to see you naked. You may choose to wear long sleeves or a tank top. That is your choice.

          If you go to a house of worship you’ll probably dress more respectfully, if you are in a private institution you may be asked to put on a jacket (you may leave if you don’t want to wear it), and when you go to the beach you might wear a bikini or speedos.

          What you choose to cover up or reveal is a choice you make based on your comfort level, the context of where you are, and your beliefs. But you expect that what you choose to wear, may not be liked, but that choice will be respected.

          If you are in a private home or institution, the owners have a right to ask you to leave if they don’t like how you are dressed. But they don’t have the right to force you to take off your clothing without your consent. That is assault.

          If you would like to go into a public institution there are fears that you may be trying to smuggle contraband in, and you may be searched. In that situation your privacy is being compromised; however, being part of society you are relinquishing that right to an extent to ensure everyone else’s safety. It’s part of the Hobbesian social contract. That is with the assumption that you are giving up only what is necessary and you will be searched with the minimum necessary violation.

          We feel so violated by TSA because our privacy when traveling is being violated wantonly, with unnecessary excess. The same goal could be reached with smarter, better trained, better paid individuals, and less abuse.

           

          When I joined Facebook it was like a trendy club that all my friends went to. I dressed accordingly. I sought out my friends, and the people I wanted to become my friends. I dressed my sexiest. And acted accordingly.

          Then Facebook announced that the footage from the security cameras in the joint would be auctioned off to the highest bidder.

          Now I still visit Facebook, because everyone I care about is there. But it’s more like going to your third-cousin’s wedding, to which you have no idea why you were invited, and neither do they.

          Sure there are many people there that you know and love dearly. But there is also that distant great aunt who rented you her apartment and upped the rent 40% year over year. Oh yeah, and that lying tattletale colleague is there too. Didn’t you notice? And everything you do or say will be used to SPAM YOU.

          I went to the club I so enjoyed called Facebook, and It turned out I was inappropriately underdressed.

          That was Facebook.

           

          “What do I have to hide?” they said, when Prism was leaked. “If you have nothing to hide, you have nothing to fear.”

          What if I don’t want to walk down the street naked? I don’t fear it, I AM ridiculously good looking. But I like wearing clothing.

          I like sending an email to a specific person, and know that it is going to them, and not to prying eyes.

          The NSA will claim that their surveillance to falls under the protection of social contract. But that is only true in theory. The fact that some talented high school dropout contractor can look up anyone tells me they did not build the tech with proper checks, regardless of who formally has to sign off.

          There is clearly no consent when everything is placed under a gag order, and everything is collected. That isn’t protecting us, it’s straight out abuse.


            Thoughts about “Man of Steel”

            <Spoilers>So I think that the problem stems from the fact that they are trying to make it the first movie of several. So they are thinking of this movie as a part of a bigger story. On top of that, Superman is not a very complex character. They didn’t do much to help that. So they fill in the gaping hole called Superman’s character with plot, but it’s a) LAME and b) incomplete. So we’re left with an Independence Day movie without Will Smith. And let’s face it, Will Smith’s character carried that movie.</Spoilers>


              Why Technology Killing Jobs is a Good Thing

              technological progress is eliminating the need for many types of jobs and leaving the typical worker worse off than before

              Brynjolfsson and McAfee

              This is scary for a lot of people. Forget having to compete with cheap labor, how do you compete with a machine?

              The problem is that fighting technological advances goes against our very essence as humans. Ever since man started making tools, what’s set us aside from the rest of the animal kingdom has been those tools.

              So we have a situation, now, where technological advances are taking jobs. But we want these advances. Aside from saving money and their potential for creating new industries, it’s our very essence, as humans, to innovate.

              Throughout history innovation has furthered society. When mankind consisted of hunter gatherers there wasn’t much time to create; every head was needed to keep the tribe fed. Once Man went to an agrarian society, it took less energy and fewer people to feed everyone. That’s when other jobs could be supported. This is one of the theses of Guns Germs and Steel.

              A blacksmith can’t smith if he is needed on the hunt. But if you need fewer members of your tribe to feed everyone, you can afford to have the blacksmith make more efficient tools. And progress moves us forward.

              But now have this situation where these technological advances are making all those things that we need accomplished to survive as a society easier to do, and it takes less manpower to do them. So what are those other people supposed to do?

              If we can take a page out of our history, we should reapply those people towards furthering society. The problem is that those savings are going directly to the profit margins of the companies that are using these “job-killing” technologies, and there isn’t incentive to reinvest those profits into creating jobs. We see this in the jobless demographics being stronger among people whose jobs were “blue collar”.

              In economics 101 you learn that if you want less of something, you tax it. And if you want more of something, you incentivize. I believe that the solution to technology taking jobs lies in this same vein. Companies that use “job-killing” technologies should be taxed on their use, but not to the extent that their profits are lost. However, if a company reinvests those profits (pre-tax) in specific things that further society — from Arts to R&D to internal education programs — they can deduct from those “tech taxes”.

              As someone in tech, I’m not sure how “good” this solution is for my sector. However, taking a long look at the evolution of mankind, I think it makes sense. Honestly thought, the cynic in my already knows that the people I propose to tax here would lobby the shit out of any such proposal.

              Thoughts? Comments? If you’d like to tell me I’m wrong, tell me why.


                No Thanks to Parallels… VMWare Rocks!

                Being an Apple fanboy (at least for now) my main devices tend to be Apple. But as a Front-end Developer I still need to test my sites in Internet Explorer. I found that, truly, the best way is in Virtual Machines. Simulators just can’t capture the authentic buggy experience of true cross browser testing. To honestly test your site you need to use the actual browsers themselves.

                An added benefit of running Windows on my Mac is being able to enjoy reliving my and my wife’s childhood games. We’ve been going through Gog.com playing classics such as Gabriel Knight, Quest for Glory, and Betrayal at Krondor. I’m a big fan of Lifehacker so if they tell me that the Best Virtualization App for Mac OSX is Parallels I’ll tend to trust them. Unfortunately, this wasn’t the case this time. At least not with Parallels 8.

                I’m a big fan of Lifehacker. I recently got a Nexus 7 – my first Android device. Since I’m a Front-end Developer I felt it was irresponsible for me not to have any experience with Android… or that’s what I told myself anyways (I like toys). I relied heavily on the Lifehacker posts about Android to get caught up and found them very helpful. So I’ll keep listening to their podcast religiously despite this miss.

                But I digress. We were running Parallels 7 and it was going nicely, but from upgrade the mouse immediately started malfunctioning. The games just didn’t run as they had, Windows didn’t run as it had and the VMs acted much heavier. Not to mention that the company runs like a 90′s digital company. Who limits the time you can purchase a product anymore? It’s just an excuse to extort more $, you can pay extra to have evergreen links.

                Another down side to Parallels is that it is made for running Windows on a Mac and that’s it. Wait, isn’t that what we want? Well, not entirely. I started developing my sites locally. MAMP is great for strictly Front-end Development; however, if you start leveraging PHP, as it should be, if you’re not running the same LAMP stack on your local machine as you are on your server you’ll waste a lot of time. Once you code, you want to know it will work on your production server.

                At work I’ve been using VMWare for all my development work. I have 2 VMs with Windows XP alone, one for running IE6, and one for IE7. So I decided to test out the VMWare Fusion for my Weekend Projects. After 2 days, it blows Parallels out of the water. Not only does Windows run more smoothly for my extra curricular enjoyments, but, unlike Parallels I can run CentOS!


                  A Domain-Agnostic Social Network

                  Ever since the guys at Diaspora raised 200k on Kickstarter I’ve had an itch I am trying to scratch. I wrote a little bit about this already but thought it would be good to flesh out the idea a bit more and put it out there for the sake of “the conversation.”

                  As users of social networks it’s not ideal that less than a handful of companies have a monopoly over all of our social interactions, and none of these companies are compatible with each other.

                  Facebook keeps devising new ways to circumvent our privacy settings. If they didn’t, they couldn’t share information about you and subsequently make money off you. Twitter is now blocking their API from the creative people who made Twitter what it is. Since Instagram was acquired it’s been hemorrhaging users …and there’s very little reason to believe that this story will be different with the next rising social sharing star.

                  Social networks should work off a single protocol the same way email does with SMTP, rather than working as exclusive services onto themselves. What do I mean by this? In an ideal world, if i don’t like Facebook I should be able to move to a competing service; but to a service that interacts back with Facebook so I can still keep all my friends and don’t have to switch them over. But of course, why would Facebook agree to this?

                  Google tried to create a Social Media Transfer Protocol, a.k.a. “Google Wave,” but they neglected to make it backwards compatible — you couldn’t contact someone via Wave who hadn’t signed up for the service. So after the initial excitement everyone forgot about Google Wave and mass adoption never happened (the Google+ notification bar on every Google page was built to solve this same problem.) Nonetheless, when Google created Wave, they opened up to the public protocols that defined how to engage with Wave if you wanted to make a competing service. Sadly, Google+ doesn’t have this.

                  App.net is really cool. I really think that they are on the right track but ultimately they don’t solve the problem because you still don’t actually own your content. You’re renting their service and they’re pledging to you that they won’t f*** around with the content you provide. The concept behind App.net is pretty close to what I describe above as the ideal, but I think they’re still missing the point. They need to be building the pipes, not another database that they own and let you use.

                  The thing is, that that social framework I’m describing almost exists already and it’s called WordPress.

                  Aside from it’s flexibility, I love WordPress for its portability. They make it very clear that they are a framework for you to build upon. You can get a beautiful, quick, simple site up and running on WordPress.com and as soon as you feel that you can’t do any more there, with the click of a button you can export your site and self-host. You have full control, your site is yours, and your content is yours. WordPress is a well thought out data management framework that can be the foundation for just about anything. The proof is in the pudding. They say they want to democratize publishing. That’s exactly what they’ve done.


                  There are two essential elements to sharing in a social network. The first is what you are sharing, a.k.a. the status. Attached to that status typically is meta information about that status. This meta information can be location or an attachment like a link or image. WordPress has the infrastructure to hold whatever data you would like to share; between custom post types and post metadata, your only limitation is your own creativity. With a simple plugin, an entire new social layer can be added to any WordPress-powered site with zero effect on the current functionality of the site.

                  The second essential element of a social network is who you are sharing with, the actual network. On Twitter, for instance, your stati can be public, private, or a direct message. This element is the key difference between what a blog post is and what is status is and from the social network perspective this is the one major difference, IMHO, between WordPress and App.net. However, using the global variable $current_user and/or the Jetpack WordPress.com REST API: “GET /me” call adding this layer to WordPress should be very doable.


                  With such a large user base as WordPress has, I think that it should be a relatively small hurdle to create an overlying social layer connecting all WordPress users whether through Jetpack or via a peer to peer network. The benefits of this over over existing social networks would be total ownership and control over your content. From your own domain, your own personal site, you could run your personal social profile connecting with the entire network.

                  This is not a idea for a startup, I’m not particularly interested in outwardly trying to butt heads with ALL the internet juggernauts at once. If this is a viable idea I see it being grassroots.

                  Tl;dr: App.net is cool, but why reinvent the wheel? The functionality already exists in WordPress.


                    Why Automattic Doesn’t Need to Buy App.net

                    … It looks like they have their own social API out there already.

                    Several months ago I suggested that Automattic purchase Path. Sadly it turns out that it would probably be too expensive (see comments). But the idea behind the post is still oh so true.

                    If you're not paying for it, you're not the customer; you're the product being sold

                    I still want to own my own content. I still want to know that I can hide it, take it down, delete it, do whatever the fuck I want with it, when I want… because my life is MINE. And I don’t want anyone else owning it, using it in ads, selling it, without my explicit knowledge and control. I STILL don’t want my privacy settings changed behind my back and if I wanted my picture to be posted in ads all over the place I would have become a model. And once someone says that they are interested in seeing updates about my life and thoughts I don’t want to have to pay for them to see it.

                    At the end of October, the wildly popular Automattic plugin Jetpack added to version 1.9 including a fantastic JSON api providing access to WordPress.com user info. The idea is that it will provide a tool for developers to build apps on top of the Jetpack framework and interface with the WordPress.com platform.

                    “Instead of just building for the WordPress.com platform, you can build awesome applications that interact with WordPress in general. Any applications built using the API for WordPress.com will automatically work with Jetpack-enabled sites running Jetpack 1.9 or higher.”

                    This is the beginning of an app.net-esque approach to the social issue. Twitter’s growth exploded in its early days largely due to the developer community building upon their api. App.net has built an api upon which developers can build. Now it’s pretty much a pay-for Twitter, but without constraints. I imagine that developers will very quickly expand past that functionality and redefine social for us all over again.

                    The only real problem I see right now with app.net is adoption. How many of you really want to invest in building up your social network from the ground all over again?

                    I wouldn’t feel to good about yet another social network promising you a garden with your own key. But after hearing an interview with Dalton Caldwell on TWiST… and reading their core values I trust that their heart is in the right place. Right back to that quote at the beginning pertaining who is paying for the service…

                    I really wish app.net all the best luck. I think their goals are certainly noble. But with each of these new attempts at another user-guided social network, I come back to the same thought: “Why not WordPress?” Yes, I’m a WordPress fanboy.

                    But that aside, WordPress is the most distributed web platform online today. Their core values are the same as app.net values: anyone can host, install, and change their own WordPress installation. And with Jetpack, it is all now connected. So the network is already in place.

                    The only thing it’s missing to become that social network alternative is one more call in the Jetpack user api.

                    Current User Status

                    But that’s not actually really necessary. There’s the “meta” call under the user call GET /me… A plugin would only need to leverage the update_user_meta/($user->ID,’status’,’Hello World’) function and that plugin could shoot for the moon! (May I suggest we keep it simple, current user status should be simply ‘status’ in user meta.)

                    Calling all developers…

                    WordPress, with the launch of their Jetpack API has now opened up their platform for a potential browser agnostic social network. Come one, come all. It’s self-hosted, it’s free to use. You can install it on any domain. An app.net-esk API is now available for WordPress.

                    Sadly, until they add POST / me this will only work on self-hosted sites. Still. Something to hope for…