WordPress is not a web application framework

I just watched Matt Mullenweg's interview at Le Web 2012. For the second time I heard him say that the focus for WordPress over the next four years will be turning WordPress into a web application framework. In my opinion, WordPress as a web application framework, makes zero sense. WordPress in it's current state sucks as a Web Application framework, and it should. It wasn't designed to be a web application framework, it's a blogging platform that can work well as a CMS. I think shifting focus from these two primary functions (blogging and managing content) into building web applications will hurt WordPress.

WordPress will lose focus on what its users want

WordPress is a blogging platform that can work well as a CMS. It currently doesn't do either of those two things that well. WordPress is feature heavy, the admin is bloated and confusing, and the software is slow. Don't get me wrong. I'm not bashing WordPress or saying it's terrible software. I'm simply stating the facts, WordPress is great but it has much room for improvement. Automattic should focus on what WordPress already does, and do it a hell of a lot better. That means being smarter about what gets loaded and when, simplifying the admin, cleaning up the current code, improving the documentation, and trimming the fat.

WordPress will never compete with CodeIgniter or Ruby on Rails

CodeIgniter and RoR are the two best web application frameworks I've used. They are designed for one thing and thing only, make awesome web applications quickly and efficiently. Because they only focus on one thing, they do that one thing very well. Great web application frameworks share common features such as MVC architecture, REST, and migration support. None of which are supported by WordPress. We could start talking about "what if" WordPress supported this or that, but that is not the point. The point is WordPress will become a molotov cocktail of code. Break the glass and the whole thing will burst into flames. Even if WordPress tried they could never catch up to Rails or CI. Those two projects are way too far ahead at this point. Why can't WordPress be happy doing what it already does and focus on doing it better?

There is no shame in being a great blogging platform

When I hear Matt Mullenweg talk about WordPress as a Web Application Platform I can't help but feel that in some way he believes that being a great blogging platform isn't enough or is somehow inferior. Blogging is a large part of the web and great blogging software will be needed for a long time. Why doesn't Automattic just focus on building great blogging software? The more they lose focus on blogging the more room they leave for another company or open source project to come up and replace them.

What do you think? Is WordPress heading in the right direction with the goal of being a Web Application framework, or should they focus on being a blogging platform and CMS?

NOTE: If you recently commented on this post and it's not showing up, it is because I recently switched my comments to Disqus. The old comments take 24 hours to be imported.

Reflecting on 2012

2012 has been a great year for me overall. 2011 was the year in which I became much more focused on my future and realized I had to make some big decisions. 2012 was the year in which those decisions really started to pay off. I started doing web development full time at the start of 2012. I feel incredibly lucky to be doing something I truly love and enjoy. When I reflect on the past year it's obvious that my main focus was on learning and doing more web development.

The programming knowledge I have now compared to January of last year is, in my opinion, an incredible difference. It seems that the more I learn the more I realize how much I do not know or how much farther I have to go. That is actually an encouraging thought. There is so much room to grow in the web development field that things are almost never boring. It is a constant learning process.

The biggest change in my life by far in 2012 was moving to a big city (Chicago). I grew up in a very small town (Pendleton, IN - population 4,000). Moving farther away from home and experiencing life in a big city has definitely helped me grow as a person. I still don't want to live in a big city in the long term, but I discovered many aspects of city life that I enjoy.

  • It's much easier to meet like minded people
  • Somehow it actually makes the world feel smaller
  • You can get around fairly easily without a car
  • Networking and professional growth is significantly easier

What I am most proud of

  • Experiencing big city living for the first time
  • Doing web development full time
  • Exploring my passion for programming and making huge leaps in my programming knowledge
  • Finding a girl I love
  • Taking a 3 month training program for learning Ruby on Rails
  • Releasing my own open source software for the first time
  • Starting to blog

Shortcomings - What I could have done better

  • Maintain a healthy diet
  • Maintain a regular sleep schedule
  • Track short term goals
  • Write more blog posts

Goals for 2013

  • Turn my shortcomings into strengths
  • Make significant contributions to open source software
  • Teach programming to help others and increase my own knowledge
  • Create software that helps people
  • Save enough to get a mortgage in 2014

Project Euler Problem 8 in Ruby

Find the greatest product of five consecutive digits in the 1000-digit number.


number = "7316717653133062491922511967442657474235534919493496983520312774506326239578318016984801869478851843858615607891129494954595017379583319528532088055111254069874715852386305071569329096329522744304355766896648950445244523161731856403098711121722383113622298934233803081353362766142828064444866452387493035890729629049156044077239071381051585930796086670172427121883998797908792274921901699720888093776657273330010533678812202354218097512545405947522435258490771167055601360483958644670632441572215539753697817977846174064955149290862569321978468622482839722413756570560574902614079729686524145351004748216637048440319989000889524345065854122758866688116427171479924442928230863465674813919123162824586178664583591245665294765456828489128831426076900422421902267105562632111110937054421750694165896040807198403850962455444362981230987879927244284909188845801561660979191338754992005240636899125607176060588611646710940507754100225698315520005593572972571636269561882670428252483600823257530420752963450"

def calculate_largest_product(number)

  number = number.split('')
  product = 0

  while number.size > 0
    new_product = number[0].to_i * number[1].to_i * number[2].to_i * number[3].to_i * number[4].to_i
    product = new_product > product ? new_product : product


puts calculate_largest_product(number) #=> 40824

Project Euler Problem 5 in Ruby

2520 is the smallest number that can be divided by each of the numbers from 1 to 10 without any remainder.
What is the smallest positive number that is evenly divisible by all of the numbers from 1 to 20?

def euler5

  count = 1

  while true
    num = 20 * count

    # This seems ridiculous but all my short solutions were causing stack overflow
    if num % 1 == 0 and num % 2 == 0 and num % 3 == 0 and num % 4 == 0 and num % 5 == 0 and num % 6 == 0 and num % 7 == 0 and num % 8 == 0 and num % 9 == 0 and num % 10 == 0 and num % 11 == 0 and num % 12 == 0 and num % 13 == 0 and num % 14 == 0 and num % 15 == 0 and num % 16 == 0 and num % 17 == 0 and num % 18 == 0 and num % 19 == 0 and num % 20 == 0
      return num

    count += 1


require 'rspec'

describe :euler5 do

  it 'returns the smallest positive number evenly divisible by all of the numbers from 1 to 20' do
    expect(euler5).to eq(232792560)


Project Euler Problem 6 in Ruby

The sum of the squares of the first ten natural numbers is,
12 + 22 + ... + 102 = 385

The square of the sum of the first ten natural numbers is,
(1 + 2 + ... + 10)2 = 552 = 3025

Hence the difference between the sum of the squares of the first ten natural numbers and the square of the sum is 3025 - 385 = 2640.

Find the difference between the sum of the squares of the first one hundred natural numbers and the square of the sum.

class EulerSix

  def self.sum_of_squares(numbers, sum = 0)
    numbers.each {|num| sum += num**2}

  def self.square_of_sum(numbers, sum = 0)
    numbers.each {|num| sum += num}

  def self.diff_of_sum_of_squares_and_square_of_sums(numbers)
    square_of_sum(numbers) - sum_of_squares(numbers)


require 'rspec'

describe EulerSix do

  it 'can calculate the sum of squares of an array of integers' do
    EulerSix.sum_of_squares((1..10).to_a).should == 385

  it 'can calculate the square of the sum of an array of integers' do
    EulerSix.square_of_sum((1..10).to_a).should == 3025

  it 'can find the difference between a sum of the squares and a square of the sum of an array of integers' do
    EulerSix.diff_of_sum_of_squares_and_square_of_sums((1..10).to_a).should == 2640