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.

73167176531330624919225119674426574742355349194934
96983520312774506326239578318016984801869478851843
85861560789112949495459501737958331952853208805511
12540698747158523863050715693290963295227443043557
66896648950445244523161731856403098711121722383113
62229893423380308135336276614282806444486645238749
30358907296290491560440772390713810515859307960866
70172427121883998797908792274921901699720888093776
65727333001053367881220235421809751254540594752243
52584907711670556013604839586446706324415722155397
53697817977846174064955149290862569321978468622482
83972241375657056057490261407972968652414535100474
82166370484403199890008895243450658541227588666881
16427171479924442928230863465674813919123162824586
17866458359124566529476545682848912883142607690042
24219022671055626321111109370544217506941658960408
07198403850962455444362981230987879927244284909188
84580156166097919133875499200524063689912560717606
05886116467109405077541002256983155200055935729725
71636269561882670428252483600823257530420752963450

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
    number.shift
  end

  product
end

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
    end

    count += 1
  end

end

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)
  end

end

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}
    sum
  end

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

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

end



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
  end

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

  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
  end

end