May 26, 2013

Voyeurism: An Expansive Private Conversation with Zach

Zach @ St. Lawrence Market

Zach @ St. Lawrence Market

Interesting morning. Fell asleep at my keyboard this morning. Opened my eyes groggily and it was 45 minutes later. Then I pinged Zach and had an expansive, hour long Skype chat.

Midway through, I said that our conversation would make for a decent podcast. Well, in lieu of the podcast-that-wasn’t, I want to let you in on our conversation.

Zach Atkinson is a programmer-slash-consultant in Whitby, just east of Toronto. He is getting paid zippo-nada-nothing for all the heart-and-soul that he is pouring into LaSalleMart, including the first LaSalleMart Canada live site install (http://KearnsOptical.com). Zach’s sweat equity in LaSalleMart is tremendous.

The pressure today is to fix the existing PayPal Pro payment method.

Reminder: LaSalleMart is a fork of Tienda 0.8.2. At this point LaSalleMart is virtually all Tienda. There are differences, which are more overt now.

PayPal Pro is something that is pure Tienda, and something is fucking up. How else to say it? Not on Zach’s site, but on my old Tienda Distro site at h2oAudio.ca. This site is slated to migrate to LaSalleMart, but before we Press Da Button on that, we have to fix PPPRo. I suspect the problem is really the interaction between the plugin and the component. I’ve already made cosmetic changes to this plugin. Oh well.

We also have an urgent need to create a brand new Canada Post shipping plugin. We can’t wait any longer. The h2o site, and a local client I’ve had since my early Joomla days, need PPPro and Canada Post. Zach has graciously answered my call for help, and has refused offers of $$.  Remember that when you talk to Zach. Like Cab Calloway said, he’s got the heart as big as a whale.

Zach started complaining about checkout. Hey, take a number! He said we should go through the Amazon checkout to get ideas. I started laughing, I’ve done this how many times already? I said Amazon has Conditional Branching in checkout. If you do X, Amazon’s checkout will respond with Y. Furthermore, we need LaSalleMart to handle a matrix of rules. Such as special checkout pathways for certain classes of customers, location of buyers, etc. LaSalleMart is absolutely, completely inadequate to the task. To cut to the chase, to achieve the Amazonian/Magentonian features that are so often expressed to me, we must avail ourselves to all of Joomla, not just confine ourselves to the component-module-plugin paradigm.

We talked about busting up the LaSalleMart admin for the 2.5 conversion. Discrete components let’s us know that we finished a piece of the admin. Don’t want to do it in one fell swoop. Also, gives us the freedom to stick to the original Tienda code, or start refactoring. Or both! So, looks like we’ll have com_lm_adminconfig, com_lm_adminorder, com_lm_adminproducts, etc instead of just /administrator/components/com_lasallemart for Joomla 2.5.

At first we’re gonna have to install each component individually, and Live Update each one individually. Absolutely irritating and infuriating! However, we are on a road to somewhere, and that somewhere is called “Package Management” — which is yet another reason why Club Commerce should embrace the Square One project, by contributing labour and money to it. We’ll get there!

Not that I pontificated to Zach about this during our call, but I will in this post (!) that the conventional way we perceive Joomla — “we” being my target Club Commerce Members of consultants and site owners — is positively medieval. Owning/running the websites, and vertically integrating into software development opens up wide vistas of opportunities.

We both agree that steering LaSalleMart into mobile is critical. However, first things first: we have to convert to Joomla 2.5. Mobile is where Club Commerce as a funding model is so important. We’re (“we” = Members) going to have to do all this stuff  within my Club and not depend on the emergence of components or technologies to ease our burden. Responsive design is only the beginning. We have to understand buyer behaviour with the different mobile devices, and align our sites to these behaviours. Club Commerce has an incredible potential to blaze the trail with Joomla ecomm on mobile. To me, the first step is to understand the different behaviours people exhibit on different mobile devices. The idea of treating mobile devices like the desktop is wrong wrong wrong!

In the same breath, I suggested embedding media into LaSalleMart. Why not put video into the admin at pressure points where people get frustrated. Why not put video into checkout! What about the advent of Internet TV? Yes, I’m thinking ahead.

Bob @ St. Lawrence Market

Bob @ St. Lawrence Market

Zach asked me pointed questions about builds. Look, there’s something y’all have to understand about Club Commerce: it’s a place where the Members have BOTH the websites AND the software. The whole is greater than the sum of the parts. Having BOTH the sites & the software is EXPLOSIVE for our online businesses. I’m in the same boat as Zach, because I have clients too! If Zach has 100 sites under his wing, and I have 100 sites under my wing, then how to do we manage the upgrades? How do we do backups/disaster recovery? 100 sites that have weekly updates of 20 separate comoponents needs a management solution beyond “initiate Live update 2,000 times per week”. The solution: we build an pipeline. What will end up happening is all the sites under our wing will be managed as custom Software-as-a-Service sites rather than as traditional Joomla sites –> WHICH IS EXACTLY WHAT WE WANT.

Something else Zach brought up was doing seminars. Old fashioned seminars where attendees even pay to get in and then sign up as clients on the way out. Members-only classroom style get-togethers. Joint JUGSWO and JUGT events that Club Commerce sponsors. I’m all for trying out the first, especially if people are vetted. Extremely excited about the second two. Joint events is not pie-in-the-sky shit, both are Very Real possibilities.

I said that the Toronto area could end up being one of the world’s hotbeds of Joomla ecommerce, given that we are here and so can do physical meet-ups. If a third to half of my Club Commerce Members end up being from an expanded GTA area, we could blaze quite a trail to the benefit of my Members, and the broader worldwide Joomla community. And you thought I lacked ambition!

 

 

 


Slice, Dice, Chop and Grate: LaSalleMart’s Conversion to Joomla 2.5

How do I  proceed with the LaSalleMart conversion to Joomla 2.5?

It’s not going to happen in a fell swoop, as if I can hoist LaSalleMart on Joomla 2.5, do a bunch of search-replaces, then refresh browser and all is well.

How will I know as I progress that the conversion is successful?

What I’m going to do is do the conversion in pieces. I’m going to take a piece of the LM admin, and do that first. When that works, I’ll convert another piece.

As I take each piece, I will amputate code that relate to features we are not carrying forward to the Joomla 2.5.

I will initiate the conversion, and Zach will help me as we go along.

As I gain Club Commerce membership sign-ups, we’ll increment the resources we can devote to the conversion. But, there’s no doubt about it, the waiting is over and this week I am starting the conversion.

Once I start conversion, it will be my Number One technical priority. All other technical work will be deferred, except for critical fixes. So Canada Post and the PayPal Pro tweaks will have to wait. I imagine I will be working on the conversion every evening/night.

The only other priority will be growing Club Commerce Membership.

There is enough post-conversion sites & development in the pipeline already, among my small little group, that the conversion itself has become a pressure point. My goal is to relieve the pressure.

Since time is a priority, scope is not. Any opportunity to amputate code will be taken. I want to end up with a lean-and-mean LaSalleMart “2.5″ that will be the basis of immense development efforts. We will rebuild that which was amputated.

I may break up the LM admin into multiple extensions. This will help me convert LaSalleMart into discrete pieces — I’ll know that for sure the product details works because it’s a separate component. I’ll know that the config works because it’s a separate component. So, there’s some refactoring that will take place as we go along — inexorable and inevitable, so let’s make the most of it.

 

 

 

 

 


Soaring with Phing and GitHub — and Akeeba Live Update

Working on LaSalleMart’s first live site with Zach Atkinson highlighted a problem with Akeeba Live Update.

Live Update is a subset of the Akeeba Release System. LU allows you to update LaSalleMart from your Joomla Administrator, instead of trudging to my download site, logging in, downloading, etc etc.

It really works. There’s an icon in the LaSalleMart dashboard that tells you if you have the latest version. If not, you click to the update page.

On my end of things, every time I have an update, I have to go to my ARS admin and fill out forms. Which is fine if I have one new release every week or two. But, what happens when I have a new release daily? Or even — gasp! — more than one per day? Then, it’s a major PITA to update the ARS admin.

A new release per day? You betcha! If I make one small change — which I did late this afternoon — why wait to release it? Philosophically, I want all LaSalleMart sites to have my changes asap. Continuous Integration, Continuous Deployment — the key word is “continuous”!

GitHub.com is great. We update the repo(s), and the code is ready for Phing.

Phing is proving to be so powerful that I’m starting to consider it a weapon. Once the LaSalleMart repositories are PUSHed, it takes mere minutes to get all three LaSalleMart flavours uploaded to the Akeeba Release System folders.

However, updating my ARS admin is proving to be a bottleneck. In fact, knowing I have to update it has caused me to delay running my Phing builds. This is a Very Bad Behaviour: the antithesis of “continuous”.

The Joomla installer a bottleneck. Not just physically; but, it is a nasty limiting mindset. I have Grand Plans to bypass the Joomla installer completely. However, in the here-and-now, we are using the Joomla installer; and, using ARS.

So, after achieving “continuous” with GitHub and Phing, how to I overcome the ARS bottleneck? Well, did I mention that Phing is very powerful?

Phing does databases. Phing can talk to the ARS database directly. The Phing task is called “pdosqlexec”

So, Phing UPDATEs the ARS database directly.  Look Ma, no Administrator! Bada Bing, Phing uploads the new ZIP files, and then does the UPDATEs right after.

But, I cheated. As Nicholas will probably read this, I better fess up! Phing UPDATEs #__ars_releases only. I don’t bother adding brand new releases, I just pretend that my latest ZIPs are the very first releases. Saves a lot of bother this way, although not what ARS intends. Well, I use ARS as a conduit between code origination and final upstream code, rather than a software release mechanism. It’s continuous deployment, baby!

I ended up tweaking manifest.xml and defines.php (and a few other things). Most fun reserved for phiguring out Phing. A journey learning how-to set up the automation. But, whooooooaaaa, now that I have the automation in place, it sings!

LaSalleMart updates can be on your site within 10 minutes of the GitHub update. With the automation, I have no extra steps with the Phing builds, except to update the separate parameter file (which is now a single point of entry instead of 3 separate files).

Forget about waiting for releases. I do ‘em as I go along. Continuously.

Even via good ol’  Live Update, we deploy continuously!

This is the modern way of doing it. Phing & GitHub are powerful ways to make it happen for us.

UPDATE (June 26, 2012):

From Nicholas:

The BleedingEdge category type was designed to remedy this issue. Just create a new directory with the version number and upload the files in it. Coupled with the Automatic  Descriptions feature it’s upload and publish with zero clicks. I have a Phing task called ftpdeploy in all my components. Issuing a new dev release is as simple as “phing ftpdeploy” for me ;) Feel free to browse my Git repos and salvage all the Phing code you need :) [https://akeeba.assembla.com/code/akeeba-release-system/subversion/nodes]

Nicholas, awesome! I will take a look at this Thank you!

 

 

 

 

 

 


Mid June LaSalleMart Status

UpdateZach Atkinson is the my Founding Tribe Member who is most involved in the day-to-day progression of LaSalleMart.

He is a programmer-slash-consultant. We think of ourselves as consultants who cross the Great Divide into development. However, on the other side of the aisle are programmers who consult.

Zach is installing the first live LaSalleMart site. As such, we’ve been collaborating to make this happen. Zach is doing a terrific job of being the first to User Test LaSalleMart.

This inaugural installation has given us the opportunity to work more closely; and, to smooth out some rough edges that we’ve come across. Better to work with a programmer for the first round of User Testing — I get more empathy! Probably just an illusion.

There’s a caveat on the Tienda download page:

Tienda is in production beta, which means YES you may use it on live sites!  Be conscious that there are non-critical known bugs that we are working on. Also, some of the features are not 100% functional.

When we come across a problem, we don’t know if we encountered a known <100% functional feature; or, if it’s a problem in a =100%.  Enabling product reviews impaired site performance on pages whose products have attributes. Are in 100% or <100% territory here? Well, we definitely disabled product reviews, and site performance improved.

AkeebaBackup.com’s Akeeba Release System’s Live Update feature failed User Testing. This is a must-have feature, so we can update LaSalleMart in the Joomla Administrator. We plan on having a lot of releases (en route to eventual Continuous Deployment), so it would sure be convenient to do the updates within Joomla. That’s how Joomla 2.5 does it now.

Well, I ended up re-jigging installation/update to accomodate Live Update. It’s done. In so doing, though, I had to replicate installation/update code in all three “flavour” repositories, in order to accommodate the Joomla installer. This should be the only time ev-ah that we replicate code among the LaSalleMart repositories.

While I was re-jigging the installation, I took the liberty of increasing the default config options from 5 records to 215 records (give or take). I kinda Bob-i-cized the install. Hey, screw it, I hate these generic set-ups anyways — the entire philosophy is to do specific builds.

It was oh-so-tempting to add more geocode records each LaSalleMart edition (aka “flavour”). It is a major PITA to have to set ‘em up cold. However tempting it was to get deeper into the payment & shipping default set-up, I concluded that with all the different permutations it’s better to impute  the direct experiences of my Club Commerce Members; rather than guess what they want. Plus, there are build issues that I want to defer.

Zach found a problem with one of the product details’ drop-down options. The solution was to customize this particular drop-down for Canadian HST/PST/GST, because the generic handling made no sense at all — and the drop-down as-is introduced an error. It’s the first time I introduced specific Canadianization to the product details form, and I love it! This is exactly what I’m trying to achieve, a Canuck Cart! We’ll probably have to do something similar for LaSalleMart California when we do our first install.

We now have another Toronto install on the way — Canada Post is needed for this one. Plus, two Calgary installs; and, two or three California installs.

I spent a lot of time working on my Launch Article, and the “LaSalleMart News ” podcast that complimented it. I’m not a marketing guru and it takes me halfway to forever to do it. But, until I get to 250 to 300 Members (methinks), I have to sink time into marketing. In fact, LaSalleMart is so primed now that I have to do marketing full time (methinks) in order to get Membership from basically zero to 250-300.

Although I’ve not yet completed my Canada Post shipping plugin and my PayPal Pro tweaks, I am going to hold them in abeyance for now and spend my technical time on the Joomla 2.5 conversion. After meeting Zach in person this week — a perfect late summer afternoon at St. Lawrence Market area — we’ve come up with our approach.

I’ll tell you something: if I had more Members, I’d be aggressive soliciting ideas and stimulating discussion about this, because there’s more than meets the eye here. Zach is basically representing future Members, and as such I wanted to meet with him personally, and flesh out a decision tree on this.

The bottom line is that we decided that TIME is the most important project element (4 basic project constraints: time, cost, scope, quality –> pick 2!). This is where the Tienda caveat above entered our thinking? Why convert features that are < 100%? The purpose of my Club is to create & maintain our own Joomla ecommerce software, so we’re going to DIY anyways within my Club. So, let’s amputate code. The less code, the less to convert to Joomla 2.5, the faster we can do it. That’s the theory!

The idea is to aggressively amputate features and code. Lean and mean. Maybe too lean. But, we’ll rebuild LaSalleMart up in our image. The conversion to Joomla 2.5 marks the first discrete break from Tienda.

Custom fields, product comments, product reviews, subscription products, the dashboard reports, guest checkout, one page checkout are for sure to be deleted. Most of the plugins and modules will initially be ignored. The system plugin over-rides com_user, so I’m basically hoping to ditch this plugin completely.

Using multiple GitHub.com repos and Phing for building the three LaSalleMart zip files are a tremendous success. After the final commit, it takes less than 10 minutes to get the three new fresh completed zip files uploaded for downloaded AND ready for your Live Updating. With the pressure of our first live site upon us, it’s a beautiful thing (after I did my re-jigging for Live Update). It works for real. We have multiple specific “jurisdictional” editions of LaSalleMart.

LaSalleMart is real, is viable, is ready.

The long grinding road to get to this point is done. Now, we absolutely need to get Membership popped to 250 to 300 to realize the potential of what we’re doing.

The important thing is to work on issues pertaining to the first live site as they arise; convert to Joomla 2.5; and, GROW MEMBERSHIP SIGNIFICANTLY! Yes, it’s time to join.