The Year of the Horse

As we approach a critical mass of the open source version of Tendenci, it is very fitting that it is in the Chinese year of the Horse. From http://www.chinesefortunecalendar.com/2014.htm

Horse is one of Chinese favorite animals. Horse provides people quick transportation before automobiles, so people can quickly reach their destinations. Horse even can help people to win the battle. Therefore Horse is a symbol of traveling, competition and victory. That’s why Horse is connected to speedy success in China.

Horses like to compete with others. They pursuit for their freedom, passion and leadership. That implies that people will have busy schedule for their goals in the year of Horse. Horse hour of Chinese Horoscopes is from 11 A.M. to 1 P.M. Sunshine generates lots of heat during the Horse hour. Therefore, horse is connected to heat, fire and red. Horses like the social activities, because horses like show off themselves. Since horse is a social animal and red is also connected to love, therefore. horse is treated as a Romantic Star in Chinese Horoscope.

and

Genghis Khan built the Mongol Empire by horses. The Mongol Horses were a smaller breed, they were bred for endurance, not for speed like stallions. Genghis Khan conquered Eastern Europe so quickly. Because Eastern European countries never realized Mongol cavalry can arrive their territories so fast and they didn’t have enough time to prepare the defense. They said each Mongol cavalryman had three or four horses. They will change another horse when one got tired. So Mongolian horses can take turn and get some rest. Mongol cavalryman even knew how to sleep in the saddle. That’s why they can travel long distances without stopping. We know horses can sleep while standing. Mongolian horses have a better sleeping skill. When they ran in a group, the horse in the center can sleep while running.

Horse is intelligent animal. Horses need to be trained to become useful to human. Human can make Horse famous. Without human’s guide, Horse just a wild animal. It doesn’t know where to go. There is no destination in its life.

Indeed there is destination in life. And it is worth fighting for. I’m in. I’m humbled by my mistakes. That is the past. We live in interesting times and the destination is what makes such a curse irrelevant. The Mongolian Horses know the way. Steady wins the race.

Decline in Crime 43% Since 1990 (yes really – so stop watching advertising shows!)

Serious crime has DROPPED 43% since 1990.

FORTY THREE PERCENT
43 PERCENT
43 PERCENT DROP IN CRIME AND THE MEDIA HAS CONVINCED YOU IT’S UP
BECAUSE THERE IS NO MEDIA, THERE ARE ONLY ADVERTISING COMPANIES. SORRY. #TRUTH

43% Drop in Crime in US Since 1990

See that HUGE decline since 1990. Those are the facts. Please Stop, just stop, stop being a tool to “the man.” Just stop.

I ask people. You should ask people to. “Is crime up or down in the US since 1990? They will say “up”. Then ask “by how much do you think it’s up?” They will say anything from 5 to 50%. They think crime is up. I ask “can you google it for us” (try duckduckgo for search too. Google isn’t God. Really people?) and I get nothing. Blank stares.

They look at the actual crime data and their minds can’t grasp it. The lie is so big we’ve all come to believe it to be true.

STOP IT!

Stop, just stop. Sorry to burst everyone’s paranoid bubble (insert pot-kettle cliche here) with facts. I know, we all hate it when someone drops facts on a good ghost story. Sadly it is true – you are safer now in the US than ever.

With a BS in Political Science (a BS in BS?) I frequently hear people parroting advertising companies that run search engines or web sites or TV shows or Newspapers. Note the first phrase – “ADVERTISING COMPANIES” – they need to sell advertising. Nothing more nothing less.

IF IT BLEEDS IT LEADS

If you sell advertising, how do you make more money? Simple, follow a very old formula and scare the life out of people. It boils down to, what if it bleeds less than before but nobody notices?

Gun Homicide Rates Drop 49% per 1000 people

What’s old is still new again – “If it bleeds, it leads.”

Stop, just stop. No more fear mongering to weak minds. And if you don’t have a weak mind, then educate and empower those around you. Advertising companies make money from page views, not from facts. They do not have your best interests at heart. But you know that. So tell your kids! Tell them! It’s not a conspiracy, it’s the system and it’s YOUR responsibility to educate your children and your community that what is in your best interest is different from what sells the most ads.

It’s all about the money….

Yes…

Example: “OK, yea, we are selling banner ads and we decided to just lie on our rate sheets that 5000 people picked up the paper in the Doctor’s office and it should be a 5000x multiple of subscribers.” (an exaggeration for the sake of drawing eyeballs… and no, the irony is not lost on money, but I don’t sell advertising and I’m not paid for this so wahtev…. )

Insiders Game

For those not in the Advertising Business, which thankfully despite the resolute ethical souls leading the Houston Advertising community (disclaimer: I was formerly a board member of AAF-Houston) the rate sheet dictates the “ad buy” rate. So the more people who view an advertisement the more you can charge. If you can convince people that your business journal is subscribed to once (1) and viewed by an additional twenty (20) people (um.. not on this planet anyway so unless aliens are spiriting it away in the night and buying online then I call BS (zOMG so (recursive(recursive(nerd-humor, *args, *kwargs))) then you can sell advertisements at a higher rates. Thus it sells ads (*cough* chron.com *cough*.)

I know, crazy, right?

Worst headline ever:

CRIME DROPS 40+ PERCENT IN LAST 20 YEARS REGARDLESS OF POLITICAL PARTY IN PWER

Facts and all that “stuff“. Those silly facts get in the way of our preconceived ideology.

Oh, and gun violence is down as well.

wolfram-alpha

It’s not all good news as death by gun is stupid. And a shame. We can continue to do better. One tragic fact not discussed in the media is that more people die from self inflicted gunshot wounds than are victims of homicides involving a gun.
Homicides vs Suicides

http://www.pewsocialtrends.org/2013/05/07/gun-violence-in-america/st_13-05-02_ss_guncrimes_06_suicide/

As a true friend has been reminding me lately:

“When is the best time to plant a tree? 20 years ago. And right now.”

PROGRESS. It’s a journey. It will take time. But these are huge improvements the media has no incentive to tell us about because they don’t sell advertisements.

django can make some weird db schemas. just sayin.

When you have awesome people and less than awesome results, it is usually one of three things

  1. leadership (me),
  2. processes or
  3. design (in the global sense of project design patterns).

I set all three as CEO for our rewrite of Tendenci to the open source software platform for nonprofits. Thus no matter what, I take 100% of the responsibility for delays between 2009 and 2014.

To be clear, I’m pleased with the progress on Tendenci, self hosted or our hosted solutions. Basically the team kicked ass on Tendenci 5.1 and I’m proud of them. It was definitely a cumulative effort from many people, past and present, addressing an incredibly complex problem – people.

Tendenci is about people, it isn’t a shopping cart selling shirts (and shopping carts can be complex, just nothing as complex as human behavior).

Tendenci is designed to be as simple as possible, but no simpler. The “minimum viable product” of 2009 is not something our client base wanted to hear about in 2014, even if the new version of Tendenci does mobile and much more. People don’t like to go backwards from what is now called “agile” development.

Lesson 1 – if you want to get REALLY agile – only build what people fund.

Yes, only build funded modifications. (Or contributed pull requests as time is money.) It’s amazing how many people will suggest a great mod. Everyone uses the web so clearly they are experts sharing their wisdom of how it should be built. As if driving a car makes me qualified to build one. And when you say 4k for the mod suddenly the programming module they desperately need isn’t relevant and they find another way.

Why? Why charge for modifications? Priorities. It tell you what people value. And we did that very well from 2001 to 2009. Resulting in a stress tested solid product. But proprietary because 2001 was a bit too soon to start building open source web apps. We had to start over if we wanted to be open source, so I pulled the trigger.

Then I tried to simplify things a bit too much. Things got a bit too Web 2.0 with blocks and giant fonts losing all data density in the display. Upsetting our power-users and looking clunky on screen. My bad. (the good news is it is mostly fixed now.)

Why is oversimplification such a fail?

Think about your car’s dashboard and controls. Look at them when you next get in your car. Incredibly complex information, right? Vast amounts of it. Presented while you are going 70 mph. Just wow. If what is fundamentally a horse (staying with the horse/car analogy briefly) with no visual controls, has evolved to this level of complexity, then exactly how simple can you make Association Management Software? Well, it isn’t a simple problem. 20,000 users on a web application is much more complicated than a car. Or a shopping cart.

Tendenci – because humans are complex. Groups of humans are even more complex!

So why this post? I’d like to start sharing what I learned along the way. Why this is one step in a long journey. And hopefully our clients and employees and the entire open source community will benefit from it. If not, then those who prefer destruction over creating something, those who laugh at people still tilting at windmills, then they will have won and there will be written documentation of my folly.

All I can do is tell you a bit about the journey. Record it along the way. And schedule blog posts over time.

Disclaimers: For the purpose of this series of posts I make no apologies if I speak Geek or brutalize the English language with poor grammar and typos while using pseudo-code to express programming concepts, all mixed up together with abandon in horrific run-on sentences. It happens. Go read another blog if it isn’t your thing. This one is mine.

As for the database schemas – I’ll cover that in a future post…for now suffice it to say I have had to relearn the primacy of MVC is MODEL-CONTROLLER-VIEW in that order. And it takes discipline to do that with Django. More later….

state

State
Impure functions are often more efficient but also require that the programmer “keep track” of the state of several variables. Keeping track of this state becomes increasingly difficult as programs grow in size. By eschewing state programmers are able to conceptually scale out to solve much larger problems. The loss of performance is often negligible compared to the freedom to trust that your functions work as expected on your inputs.

Maintaining state provides efficiency at the cost of surprises. Pure functions produce no surprises and so lighten the mental load of the programmer.

http://toolz.readthedocs.org/en/latest/purity.html

More Creative Commons Stock Photography

Aspen Colorado
Aspen Colorado

A new set of “Creative Commons Attribution Stock photography” is up on the Tendenci Open Source Software site. Per the request of one of new employees the focus of this gallery is on scenic landscapes.

And of course there are quite a few Tendenci Stock Photo Galleries to make your association or nonprofit website unique. They are all Creative Commons Attribution (check the license on the image individually and attribution and a link back is always appreciated.

Enjoy!

Order Button

Car Dealership Franchise Contracts are Socialist Monopolies. Duh.

Order Button
Order button on the Tesla Motors Web Site
Car Dealership Franchise Agreements are Government Sponsored Monopolies. Oh please. Stop that 2k tax per car per family. Yes, I said it. For that matter so is the NFL, the NBA, the NHL, etc…. so let’s just call a Spade a Spade. (And speaking of “Spades“, while not a gambler myself, the last time I checked the casino industry was more open to competition than car dealerships. Go figure.)

If you want to save about 2k per car purchase – check the link on car dealership monopolies … It’s about time the monopoly of dealerships was seriously threatened with…. um….. CAPITALISM. FREEDOM. APPLE PIE. THE AMERICAN WAY. So why do we have socialized / monopoly car franchises? History and cronyism my friends. No. Other. Reason.

Free Enterprise is a good thing folks. I recognize the need for regulation (the tragedy of the commons) to protect our commons (no Benzene in the rivers for example – that’s a good regulation.)

But can’t we let competition keep up with technology? Why can’t I buy a car direct from the manufacturer? Name one rational reason besides protectionist laws from the stone age? (with apologies to my friends who might still be at UCS or ReyRey).

I work on the Internet. The speed of innovation is so radically fast and the threats to your business model are constant. And our business is 17 years old because WE ADAPT. Yes, people who can’t adapt that fast leave the company, but…. you know, it’s called competition for a reason. Adapt or die unfortunately.

So it will be interesting to see which manufacturer invalidates all of it’s franchise agreements with the dealerships first by allowing direct sales. Because whoever does it first, those dealerships will sell the MOST cars.

Yes, at first the dealers will be upset, and then, it’ll be alright. Everythings gonna be alright. And dealers know they make most of their profit from Parts and Service anyway. (OK, and Used Cars & F&I but we can’t fix it all at once I guess.)

http://beta.slashdot.org/story/207413

SXSW V2V – Proprietary to Open Source: Giving Away $6M is Harder Than You Think

My presentation slides from speaking at SXSW V2V in Las Vegas this week. The official description is below and they are producing a video so I’ll either update this post or add the video as well.

Proprietary to Open Source: Giving Away $6M is Harder Than You Think

After 15 years running a successful business, Ed Schipul released the source code for his proprietary software, Tendenci, to the world. Foreseeing the impact the cloud, mobile, and GIS, Ed knew he had to change his business model or become irrelevant. Open source was the path to future sustainability and innovation.

There were however, seemingly insurmountable challenges. Tendenci 5, the first open source CMS platform for nonprofit organizations, had to be completely rewritten from .Net, ASP and SQL to Python, Django and PostgreSQL. From Github to cloud software, he had to choose all the tools to put in place to support his rewritten product and new architecture.

Lessons learned from the transition include the importance of testing and how to make your application’s architecture more scalable as well as what open source tools have proved to be most valuable. Ed will share his reasons for thinking that all of this is the best choice for both the product and the development community.

See more at: http://schedule.sxswv2v.com/events/event_V2VP29570#sthash.SM08HnZT.dpuf

andywharhol

ImageMagick and Redmine on Ubuntu 12.04 LTS

Notes from the dungeon: ImageMagick and Redmine 2014-03-23

# abbreviated notes on installing redmine gems with imagemagick on ubuntu 12.04
# some of the following notes came from http://www.underworldproject.org/documentation/LibpngDownload.html
# which is an open source library for subsurface exploration like “magma” (yes, I said “magma”)

sudo su
cd tmp
wget http://sourceforge.net/projects/libpng/files/libpng16/1.6.10/libpng-1.6.10.tar.gz
tar zxvf libpng-1.6.10.tar.gz
cd libpng-1.6.10
./configure --prefix=/usr/local
make
make install

# imagemagik still doesn’t install the gem. Found this on StackOverflow but lost the link:

apt-get install graphicsmagick-libmagick-dev-compat

/rant/ – global variables like PATH are needed. Windows has the registry. In this case for ImageMagick to work with PNGs we need to tell it the home globally defined as PNG_DIR. There are several ways to do this in unix and in Ubuntu/debian. I personally don’t like variables stuck in .bashrc if the variables are really user specific. The .bashrc for your profile is NOT global. And skeleton profile files for unix named user profiles are a one-time thing that you can’t update everyone globally later once their profile is created. GLOBAL_VARS in .profile or .bashrc make (specifically you the network admin) your life convenient. But it’s not all about us. .bashrc variables or custom entries in /etc/hosts suck. Magical profile specific path variables break the python rule of “no magic” which means that in every other way they completely suxor. Let’s be honest – it just tempts you to run applications as root, right? None of us have ever seen that. HmmmmHMMMM? /end-rant/

Better option: profile.d applies to all bash prompts as well as any GUI that gets launched so it is currently my preferred method. (note “preferred methods” for me frequently last either 48 hours or 20 years, one or the other. Educate me if you have a better way.)

In this case we need to specify one variable only. But it will expand so let’s do it the right way. We’ll make a .sh file in /etc/profile.d. In practice I usually put these with my project without execute rights and then sym link them into the /etc/profile.d/ folder with “chmod +x myscript.sh” etc…. But to keep it simple – let’s just make our shell script as follows.

cd /etc/profile.d
sudo touch redmine_globals.sh
chmod 755 redmine_globals.sh
sudo nano redmine_globals.sh
# for bash put this in the script file
export PNG_DIR=/usr/local

# exit. or call it manually with “source /etc/profile.d/redmine_globals.sh”

PROGRESS? Let’s check it.

http:// your-domain-name-for-redmine/admin/info

NOoooooOOOOOoooo… Alas I still get a fail when I refresh the redmine page on the availability of ImageMagick. Major FAIL. I read a bunch more as it still didn’t work. Found this command and it executes properly.

sudo apt-get install libmagickwand-dev

#but did it work? Hmmmm.

bundle install --without test development

# still no

# Then tried this:

sudo apt-get install imagemagick libmagickwand-dev ruby-rmagick

# restarted

root@redmine:/var/data/redmine# touch tmp/restart.txt

SUCCESS!!!!!

Screen Shot 2014-03-23 at 3.12.46 PM

Web Marketing, Sociology, Photography, Programming