Blog

Totally Random Episode 6 from concrete5 on Vimeo.

Hey!Andrewagain, and I'm going to recap the news.

This Week's News

How we assign your karma raffle numbers

We have three databases - one for each type of contribution (Promotion, Helping People, and Developing). For each Karma point a user has in a silo they get a number of tickets assigned to their name so we end up with 1,000,000 total tickets. Then to build random numbers from toys in the Kidd's Toy Museum.

TheWinners, and What They Got

Watch the video to see who won what.


Hey! Andrew again, and I'm going to recap the news.

This Week's News

How we assign your karma raffle numbers

We have three databases - one for each type of contribution (Promotion, Helping People, and Developing). For each Karma point a user has in a silo they get a number of tickets assigned to their name so we end up with 1,000,000 total tickets. Then to build random numbers from toys in the Kidd's Toy Museum.

The Winners, and What They Got

Watch the video to see who won what.


Most of what I've learned from going open source are just good life lessons I probably could/should have picked up anyway, and this one's certainly in that camp. I've always idolized the renaissance man. I'm a big believer in knowing a little about a lot of things vs. knowing a lot about a little. I respect the need for specialists, but even then I think they tend to be better when they've put in the work to stretch their intellect across more than one silo of information. It builds empathy and humility to not always be the expert at what you're interested in.

Going open source has provided me the opportunity to run into any number of people who are very very bright at one thing, don't foster that fundamental curiosity about topics they have no expertise in, and yet seem to think their impressive intellect makes their opinion right on all topics regardless. Just because you're amazing at the 100 yard dash doesn't mean you know dick all about water polo.

I actually had one person complain about their in-ability to do something in concrete5 with the line "look, I /am/ a rocket scientist at such and such university.. I should be able to XYZ." Strangely I am not a rocket scientist and I dropped out of college, but I can do XYZ quite easily. Go figure.

I was reminded of this just now when a thread on slashdot came up. Some fellow is chastising Apple for calling their new iPhone screen technology "Retina Display." Apparently this "marketing drivel" has so offended this guy he feels the need to rant about it on slashdot:

"Again though, why the use of meaningless words? Couldn't he have just said "the resolution/DPI is so dense that your eyes won't be able to distinguish individual pixels"? What, does the average Apple customer really seek the need of some special word to wrap up the device's capabilities in? And if they do, what does that say about their average customer?

I think it's insulting to the people that buy Apple's products, regardless of whether people seek it out or not."

from slashdot.org

Holy crap dude! For real?? Yes. This is what we have language for. You use words and phrases to sum up larger concepts so a conversation can happen at an acceptable pace. Words do create some ambiguity as definitions tend to be subjective, but without some consolidation it's difficult for anyone to get beyond facts and into useful concepts in a real world situation. I mean clearly this individual is smart enough to understand what a pixel is, how DPI might work, etc… But the basic purpose of language (were not even talking about marketing yet!) seems to not only escape them, but insult them as well.

I take two lessons from this:

1) I am a moron. This one shows up a lot in my life lessons from open source. So far I find the dumber I assume myself to be, the more pleasantly surprised I am when I get something right. If I am hearing about something that others think is awesome and my geek-gland says "that's stupid marketing drivel," chances are they're right and I'm wrong.

2) Just because you're talking to someone "smart," doesn't mean they have a clue what they're talking about.


When we were commercial software things we're, quite frankly, easier in a lot of ways. We had a few dozen clients we had active relationships with, and we worked on about half a dozen projects at a time. In those days it was pretty easy to try out a new idea with the CMS because we would simply put it on the latest clients setup and see what happened. We didn't really worry too much about keeping everyone on the latest version of the platform, and subsequently we didn't have to spend a lot of time worried about backwards compatibility.

We also didn't see a tremendous amount of intentional abuse of our systems. While we did build some large, active, and successful sites, the code behind them was only open to people who had worked with us in the past. To break one of our sites in the commercial days, you'd simply have to guess at vulnerabilities instead of being able to scour code for them first.

Now things have changed. Every feature idea we have is more and more tempered by "what will this do to existing sites or old versions." We've learned about (and quickly addressed) any number of vulnerabilities that some guy in his basement found for free – when paid consultants had found none for five years before. You quickly learn that even the most well intentioned work can cause havoc.

For example, there are two blocks in concrete5 that are commonly used to build navigations: the Auto-Nav block and the Page List block. The Auto-Nav block had been built to honor a certain variable you can set at a page level to hide that page from the navigation. The Page List did not honor the same attribute, and someone from the community pointed out that it really would make more sense if it did. We agreed and "fixed" it as part of some other version changes. Weeks later, people started complaining that their sites we're missing pages. After some frustration we realized "duh" of course people had built sites that worked around the way the blocks behaved in the past and the simple "fix" to the Page List block actually broke their sites.

We spend a lot of our time trying to manage issues that could mature like this now. I tend to take much longer to release something than I used to. I tend to be more thoughtful about the reasons and needs behind any feature changes. The temptation to "fix" something that could have been better implemented in the first place is very strong. Learning to first resist and then very delicately architect not necessarily the perfect, but rather the lowest impact solution, has been a new adventure for me. Once you go open source it is safe to assume that someone somewhere who is smarter than you and has all the time in the world, is finding the mistakes, finding the holes, and making up their own weird work-arounds which will impact you later. Be careful what you touch because no good deed goes unpunished.


Totally Random Episode 5 from concrete5 on Vimeo.

Hey!Andrewagain, and I'm going to recap the news.

This Week's News

How we assign your karma raffle numbers

We have three databases - one for each type of contribution (Promotion, Helping People, and Developing). For each Karma point a user has in a silo they get a number of tickets assigned to their name so we end up with 1,000,000 total tickets. Then to build random numbers from license plates in our parking lot.

TheWinners, and What They Got

Watch the video to see who won what.


(Pulled from here: https://www.concrete5.org/about/our_philosophy/a-letter-to-php-developers/)

Hi,

I'm Franz, I used to be a developer, now I write emails. I was programming logo in first grade, I was running BBS's in the 80's, hacking together sites with SSI and PHPv3 in the 90's. Now I run concrete5.org with Andrew, who grew up hacking IRC and has worked with me for over a decade. We built concrete5 after years of consulting and frustration with other systems.

I know there are thousands of content management systems, and the learning curve for any new system is a beast, so I applaud the fact that you've bothered to look for something new and have read this far at all. Let me tell you a few things about where we're coming from that might help you continue to find the energy to get under the hood of concrete5:

  1. We talk about "path of least resistance" around the office a lot. This means creating elegant solutions to real problems. You can't get too high-level or you've just added a layer of confusion. You can't get too specific because you'll end up re-writing it constantly. It's about finding what the consistent elements of the challenge are and building a solution that addresses them while offering complete flexibility around everything else. Path of least resistance doesn't mean cutting corners, it means spending the time to understand a problem and create strong tools for building all the types of solutions you'll need in the future.
  2. Object oriented code is a good means to an end – but it's not the goal. The goal is having reusable code that someone can understand at a glance. If I had to spend 30 minutes looking for a single line of code that is buried 10 directories deep in a file with nothing else in it, chances are you've failed in meeting the goal, even though you're strictly OOP. That doesn't mean procedural is good, it just means quality is about thoughtful balance.
  3. Just because you can, doesn't mean you should. It's fun to brainstorm but lets not pretend every idea is a good one. I personally am the proud owner of many bad ideas. Every feature added means that much more risk of edge case bugs, so lets debate the value/cost ratio of that feature. Just because we're "open source" doesn't mean we're socialist hippies. Lets also not forget that the first 80% of building something is relatively fun and easy, it's the last 20% of dialing it in that will kill you.
  4. Less is more. These are websites, not rocket-ships. A page on a website is just a page. While concrete5 certainly has a learning curve and you will need to invest a little energy to get started, you should find the number of concepts you have to grapple with to be far lower than what you've grown accustomed to.
  5. From the ground up concrete5 was designed to be a CMS. We built this as our tool box to make picky agency clients happy. It's not a blog that people use as a CMS. It's not a news site that had features draped on it until it served no particular market and got dubbed a CMS. It is a well thought-out framework that was designed to let crazy clients manage a great looking website, with next to no training.

If you're hot under the collar right now because I just made it clear I'm not going to automatically approve your add-on when it doesn't follow standards, or that I've failed to understand that your computer science teacher is a god amongst men – chances are you're going to find your developer glory elsewhere. If these points resonate with you, keep exploring. You'll find a nicely thought out system that follows MVC and OOP practices where they add value, and helps you get your job done faster and more effectively in the real world.

Best wishes
Franz Maruna
CEO, Concrete CMS Inc.


totally random episode 4 from concrete5 on Vimeo.

Hey!Andrewagain, and I'm going to recap the news.

This Week's News

  • Some new stuff is in the works for the home page and about area. We also added drop downs to the documentation tab. Big deal, huh?
  • I released a new how-to detailing how to setup a demo site that resets itself ever hour.It can also be read and commented on atandrewembler.com.
  • We mention some traffic from Webdesign Ledger, Reddit, and 1stWebDesigner. Be a chum and comment there for us.

How we assign your karma raffle numbers

With three awesome prizes to give away, we decided to have three databases - one for each type of contribution (Promotion, Helping People, and Developing). For each Karma point a user has in a silo they get a number of tickets assigned to their name so we end up with 1,000,000 total tickets. Then to build random numbers we randomly picked knives out of a display case at Benchmade and used their model numbers.

TheWinners, and What They Got

Awesome Prizes:

  1. A Benchmade Knife and concrete5 T-Shirt
  2. $155 in site credit here and a Benchmade hoodie
  3. A WHOLE YEAR of free hosting on a Commercial grade account with us, and a Benchmade hoodie.

Watch the video to see who won what.


concrete5 - Totally Random Episode 3 from concrete5 on Vimeo.

Hey!Andrewagain, and I'm going to recap the news.

This Week's News

How we assign your karma raffle numbers

For each raffle, we're going to assign a total of 1,000,000 raffle tickets to all the winner's of karma points.For this contest, we grabbed all karma points assigned from noon last Thursday to noon yesterday (Thursday). We assigned a number of tickets to each karma point, randomized the order in our database, and rolled some ten sided dice to pick matching numbers.

TheWinners, and What They Got

Watch the video to find out!


This Week's News


Totally Random - Episode 2 from concrete5 on Vimeo.

Hey!Andrewagain, and I'm going to recap the news.

This Week's News

How we assign your karma raffle numbers

For each raffle, we're going to assign a total of 1,000,000 raffle tickets to all the winner's of karma points.For this contest, we grabbed all karma points assigned from noon last Thursday to noon today (May 13th, 2010).The total?43,760 points. That means, each karma point is going to get you 22 tickets, with37,280 extra tickets dispersed randomly throughout the previous winners. THAT'S A LOT OF CHANCES TO WIN. Then, we got Prescott from the Laurelhurst Theater to roll some 6-digit numbers while we hung out on his roof. It was pretty cool.

TheWinners, and What They Got

Watch the video to find out!