From the beginning, I knew that I wanted MageUpdate to eventually be a self-serve offering. My battle plan thus far has been to offer a full service upgrade service to merchants and solutions partners, and while performing the upgrades myself, to build out tools that would help to automate the process of performing the upgrades.
While doing that over the past few months, I think that I've identified some of the lowest hanging fruit, in terms of functionality that can help to save people a significant amount of time when doing upgrades. I decided that it was time to start building an extension to wrap up this functionality.
I've updated my home page at mageupdate.com with a description of the features that you can expect the extension to contain. Go there, check it out, and sign up on the email list if you're interested and would like to hear more once it's released.
Tuesday, April 2, 2013
Tuesday, March 12, 2013
LA Magento Bugathon
Made my first pilgrimage out to Magento HQ this past weekend for the Bugathon. What an amazing time. Got a chance to meet a couple of my all-time Magento heros - Ben Marks and Fabrizio Branca.
Picture-throwing-the-M or it didn't happen:
I forgot to take a pic with Fabrizio but I promise I met him!!! If you don't believe me, just ask him about my ping pong skills.
Because I had my very own monitor (long story), I felt a burden to be the most productive developer of the entire group. So I managed to be the very first one of the group with a pull request. What did I build, you ask? Well, while some people were busy with trivial enhancements like reducing configuration cache size by 80% for large Multi-store installations, I went to work on a truly difficult feature: adding an event dispatch to the core email template.
It's funny because because I actually got bounced back from code review like 3 different times. They don't mess around with their code review process. It was really a pleasure to be able to work closely with Olga - one of the core team members who I worked with on my pull requests.
For my next issue, I decided to bring out the @sweettooth guns a blazin' and tackle a Sales Rule bug. Almost didn't make it out of that ~230 line process() method alive, but in the end emerged victorious.
Also really enjoyed the presentation by Sergey on Magento 2 - getting increasingly excited about all that v2 will bring.
Huge shout out to Mosses for organizing it - it was really well-organized and such a blast.
Monday, March 11, 2013
How to Override Magento Core Javascript Functionality
In case you've ever had to modify core Magento functionality in the realm of the javascripts, this may come in handy. Today, I needed to look into modifying some validation methods that are located in
js/prototype/validation.js
So what you'll want to do, at a high level, is:
js/prototype/validation.js
So what you'll want to do, at a high level, is:
- Figure out how many different places in Mage you'll need to insert your custom javascript
- Insert your javascript via layout xml of some sort
- Extend the core javascript objects with your customizations
- Profit
Where do I need to insert my javascriptation?
In my case, I was looking for instances of js/prototype/validation.js in the core, and I actually found more than I was hoping to:
- design/adminhtml/default/default/layout/dataflow.xml
- design/adminhtml/default/default/layout/main.xml
- design/adminhtml/default/default/template/forgotpassword.phtml
- design/adminhtml/default/default/template/login.phtml
- design/adminhtml/default/default/template/resetforgottenpassword.phtml
- design/frontend/base/default/layout/page.xml
- design/frontend/enterprise/iphone/layout/page.xml
- design/install/default/default/template/page.phtml
So, in my case, really the only places that I needed to deal with were the main.xml and page.xml. The others were cases where the additional validation wasn't really going to be necessary.
How do insert this bidniss?
Well, you would go ahead and insert via an addJs in the <default> route (most likely) just like any other custom javascript file. You probably want to put it in a location like js/<yourtheme>/prototype/validation.js - in other words map the directory and filename to the one that you're overriding, just like you'd probably do when building a class rewrite in a local code pool PHP module.
And now, the magic.
Thanks to people much smarter than me, I was able to stumble onto this stackoverflow thread where there was some sweet insight into one of the nice features of Prototype. Basically, you can extend any object via the addMethods() method.
Now in the case of adding a validation method, it's actually more straight forward, because all you need to do is call Validation..addAllThese().
Validation.addAllThese([
['validate-po', 'We don't ship to PO boxes, suckafoo.', function(v) {
var no_po = v.toLowerCase();
if((no_po.indexOf('po box')) >= 0) {
return false;
}else {
return true;
}
}]
]);
Profit
Well there you have it. Now you have one less excuse to hack the core.
Monday, February 18, 2013
Website Updates and Recently Completed Projects
Finally got around to making some needed updates to the website. That headline was way too generic ("Save Time and Money on Magento Upgrades"), so I kicked it up a notch with some spice. Also added some testimonials for recently completed projects and updated the pricing section a bit.
I'm very proud to have worked with Kuba from Snowdog, a very experienced and respected Magento solution provider, on a white-label project.
I also completed an Enterprise Edition upgrade for Clean, a really neat product in the health and wellness industry. My client, Dhru, has to be one of the coolest Magento merchants that I've met to date - ton of positive energy while at the same time very successful and ambitious. He also is looking for a solid senior in-house Magento developer in or around the SoCal area, in case anyone out there is looking!
The development agency that I collaborated with on Clean is Anatta Design - big shout out to Ashish and Nirav - two very smart and friendly guys who, by the way, are working on some interesting Magento products and services, so keep an eye out.
I'm very proud to have worked with Kuba from Snowdog, a very experienced and respected Magento solution provider, on a white-label project.
I also completed an Enterprise Edition upgrade for Clean, a really neat product in the health and wellness industry. My client, Dhru, has to be one of the coolest Magento merchants that I've met to date - ton of positive energy while at the same time very successful and ambitious. He also is looking for a solid senior in-house Magento developer in or around the SoCal area, in case anyone out there is looking!
The development agency that I collaborated with on Clean is Anatta Design - big shout out to Ashish and Nirav - two very smart and friendly guys who, by the way, are working on some interesting Magento products and services, so keep an eye out.
Sunday, February 10, 2013
Magento 2 Admin Theme Sneak Peek
I recently took a peek at the Magento 2 admin theme - it's coming along quite nicely! And I thought I'd post up some pics.
The search bar does a nice little javascript animation when you click it
The login screen
Account edit screen - digging that left nav
Little bit o' dashboard.
Orders grid. Like some of the new iconography but definitely needs polish.
System config - where we'll spend most of our time, devs :)
The search bar does a nice little javascript animation when you click it
The spinner. *Really* hoping they're gonna spruce that up a notch or two.
Product grid - nice little quick menu for selecting product type
Product create page - drag-and-drop images up in here.
The wysiwyg, looks like Brendan didn't convince them to go with markdown :)
System Top Menu
Sunday, January 20, 2013
Crazy Idea: Stack Overflow Git Integration
Had a crazy idea today. I was working on a lot of Magento core code repair - basically looking at modifications to the core, removing them and implementing them properly within the local and community module pool, locale translation csv, etc.
And it occurred to me that there are probably like 20 or 30 Stack Overflow questions related specifically to the things that I worked on today. For one reason, people probably tend to modify the core when they're getting stuck figuring out how to implement something properly.
But even in general, a developer is probably many times more likely to be able to answer a SO question related to code that they've recently been working on.
So...I was thinking: what if there was some IDE integration that looked at the files you were working with, analyzed the class ancestry of them, and queried open, unanswered questions on SO that were related to those very classes!
Like, for example, if you just implemented a rewrite of the Mage_Catalog_Product_Image class in order to customize the GD image quality - it looks up questions related to that very class. This would work best for SO questions that actually had code snippets with easily parseable class names in them.
A more generic alternative to IDE integration would simply be Git integration - Maybe a post-commit hook that looked at code you had recently committed. Actually this might be better for a number of reasons:
And it occurred to me that there are probably like 20 or 30 Stack Overflow questions related specifically to the things that I worked on today. For one reason, people probably tend to modify the core when they're getting stuck figuring out how to implement something properly.
But even in general, a developer is probably many times more likely to be able to answer a SO question related to code that they've recently been working on.
So...I was thinking: what if there was some IDE integration that looked at the files you were working with, analyzed the class ancestry of them, and queried open, unanswered questions on SO that were related to those very classes!
Like, for example, if you just implemented a rewrite of the Mage_Catalog_Product_Image class in order to customize the GD image quality - it looks up questions related to that very class. This would work best for SO questions that actually had code snippets with easily parseable class names in them.
A more generic alternative to IDE integration would simply be Git integration - Maybe a post-commit hook that looked at code you had recently committed. Actually this might be better for a number of reasons:
- Applies more generically - doesn't need to be implemented per IDE
- Who wants to be bothered to answer SO questions while they're getting their code on.
- It's usually after you wrap up a task and commit it that you might be in the mood to pop over to SO
Tuesday, January 15, 2013
Magento Cleanup Service
![]() |
| Let's clean that junk up |
A few potential use cases come to mind:
- You're getting ready to start some new development and just want to work off of a clean base.
- Your in-house team could use a little bit of help with some tricky issues that they've been avoiding fixing for fear of breaking something (core code mods, foreign key issues come to mind).
- You could do it yourself but would rather focus on more creative development, and leave the grunt work to someone else.
- You are on-boarding a new client and would like to get their Magento build into a clean state before having your development team's eyes on it.
Just thought I'd post this up and see if I get any feedback. If this is something you may be interested in, please don't hesitate to give a shout.
Subscribe to:
Posts (Atom)















