Surviving Anxiety, or, How I re-met Adam Culp Today

tl;dr: Read Adam Culp’s post on how anxiety damn near killed him*

I just read an amazing post about someone surviving anxiety, and it’s from a very unexpected place: Adam Culp’s blog. Adam is many things: sharp developer, Zend consultant and developer relations personality, and PHP Sunshine organizer. Adam is also an avid runner. From the first time I met him I was impressed by his appearance of effectiveness, togetherness, and health. He might be surprised to know that this is how I “see” him, but I suspect I’m not the only one. I personally draw inspiration from him anytime I’m out for a run myself (literally I think about my projection of Adam and measure myself against that; I should also mention that I am inspired to run for health and enjoyment by my colleague Vinai Kopp and by my wife Tracey). My running is teaching me two things. One is to “push through” – to go beyond a point when I want to give up short of a goal. The other is to pay attention and take a break when I need it lest I end up hurting myself.

Imagine my surprise to read Adam’s post in which he talks about being at the helm of a failing business, smoking packs of cigarettes each day, and succumbing to hospital-grade anxiety attacks. As someone who spent most of my early years plagued by anxiety attacks, I was left in shock and in tears reading his post today. My idol of programming & health has been through an amazing transformation from someone I suspect wouldn’t recognize. It’s always good to have one’s assumptions challenged – there’s a lot to be learned in those moments.

I encourage everyone to read Adam’s brief, powerful post. Even if you are not dealing with crushing anxiety, it’s certain that you know someone who is. It’s a terrible thing to experience, and it’s a wonderful thing to be past, though I’m always worried that it’s waiting for me in the wings – one never fully recovers from it, I suspect.

A tip of the hat to the supremely wonderful Cal Evans for tweeting the post.

*Didn’t really damn near kill him, but that’s the feeling. If he’d kept going on the same way though it might have.

Magento 2 Issues Up For Grabs!

The doors on the Mighty Orange Towers continue to open up. You’ll notice a new tag at the Magento 2 repo on GitHub: up for grabsThis tag is Magento’s marker for tasks with which we want community help! (Teaser: this is part of a bigger initiative around community collaboration, but more on that later.)

There are currently three issues marked as “up for grabs”:

So, check ’em out (ha!) and get cracking. If you are planning on working on any of these issues, it might be wise to drop a comment on the issue’s discussion thread to coordinate with other community members. No need to duplicate efforts!

By the way: the up for grabs tag connects the Magento 2 repo with up-for-grabs.net, a great initiative by Keith Dahlby (@dahlbyk) to encourage involvement of the open source community with open source projects. Give it a look, it’s a great idea!

– benmarks

Magento + PayPal Update & Feedback Request

tl;dr: We want your feedback on Magento + PayPal integration. Comment here, email me, or chat over at /r/Magento.


It’s no secret that PayPal has been, is, and continues to be an important part of Magento’s value to eBay Enterprise. The benefit extends to the merchants which provide PayPal payment methods to their customers, as there are plenty of data which demonstrate improved conversion rates with the Express Checkout shortcut in addition to a mosaic of other benefits when various PayPal methods and options are added to the mix

So, the benefits are real. From my past experience as a full time developer though I recall a couple of pain points. For example, PayPal’s various payment methods had unclear naming conventions as well as uncertain regional and functional limitations. It was therefore hard to know which PayPal payment method(s) to recommend for clients. I also recall some pain points with the integration itself (especially when IPN was involved). There are several discussions online which indicate that integration difficulties exist for others as well.

I’m happy to report that the landscape for both PayPal as well as the Magento + PayPal integration has been improving. Within the last year and a half PayPal has stepped up their game in terms of internal tech, account provisioning, and ease of sandbox testing. (Sidebar: PayPal even has a Head of Open Source and an entire suite of open source libraries. Add Braintree to the mix, and it’s clear that developers are a focus for the new PayPal.) And as a member of Magento’s Small Business team, I can also share that there is dedicated, ongoing effort to understand and resolve integration issues. This effort along with effort from Magento’s Product team have resulted in improvements to Magento’s integration as well as improvements among various third-party checkout integrations in order to fix and optimize Magento’s PayPal checkout flow.

However, we want to ensure that we understand any lingering issues as well as issues which were resolved by an upgrade. We’re also eager to hear about any Magento + PayPal success stories. So, please share your Magento + PayPal experiences with me via email, leave a comment on this post, or chat over at Reddit on /r/MagentoThe experiences which you all share with me will directly affect Magento’s success now and in the future. I will likely keep emails and comments internal to eBay, so feel free to get deep but please don’t post credentials or anything sensitive. I may not be able to send a personal response to everyone, but please know that all of your messages will be used for the benefit of Magento and PayPal. Also, we may follow up with you to get more information about your experience.

 

Contributing to Magento 2

Opening Up

Magento 2 Engineering Lead Max Yekaterynenko announced last week that the we would soon accept public pull requests on the Magento 2 GitHub repository. I’m delighted to share that the first pull requests have been now been merged! Tobias Zander has the honor of being the first community member with a merged pull request (PR) – one which cleans up a funny copy-paste error. I also had a PR merged to correct a misspelling of a certain name in the core code. While these first two merged PRs offer purely cosmetic improvements (and allowed us a final test of the new contribution model), they represent a new, exciting reality for Magento development: the community now has the ability to contribute directly to the Magento 2 codebase, and this collaboration takes place in full view of everyone – just as one would expect of an open source software.

How does it work?

Contributions to the Magento 2 codebase are done via GitHub using the fork & pull model. This contribution model has contributors maintaining their own copy of the forked codebase (which can easily be synced with the main copy). The forked repository is then used to submit a request to the base repository to “pull” a set of changes (hence the phrase “pull request”). The excellent GitHub interface has a GUI for doing all of this and even includes a discussion panel for each PR which allows everyone to see the reason why a PR is or is not merged as well as the ability to add to the discussion. GitHub also has a very good primer on pull requests under their help site.

Contributing to Magento 2 on GitHub

As mentioned, there are two essential actions in order to submit a contribution. First, fork the magento/magento2 repository under your own free GitHub account (or collaborate with someone else who has done this). Once you have a forked repository to use, you can create PRs based on changes made to that fork.

Forking a repository on GitHub is easy:

  1. Create or log in to your free account on GitHub
  2. Navigate to the Magento 2 repository on GitHub
  3. Click the “Fork” button at the top right:
    Screen Shot 2014-12-23 at 6.45.01 PM
  4. Clone the repo into your development environment, get the app installed, and start playing!

Creating a pull request is also easy:

  1. First, check the existing PRs and make sure you aren’t duplicating others’ work!
  2. Create a feature branch for your changes and push those changes to the copy of your repository at GitHub (this is the best way to organize and even update your PR)
  3. In your repository, click the pull request icon at the right, and then click the green “New Pull Request” button:
    Screen Shot 2014-12-23 at 8.43.57 PM
  4. Ensure that the “base” (the left side) is set to magento:develop and the “head” (the right side) is set to the appropriate branch/commit/etc.:
    Screen Shot 2014-12-23 at 8.53.30 PM
  5. Review the changes, then click the green “Create pull request” button, fill out the form, and click the “Create pull request” button again to submit the PR – that’s it!

As a reminder: remember to make your magento/magento2 pull request to the “develop” branch. I forgot to do this with my first PR and now I can never visit Kiev ;-)!

After submitting your PR you can head over to the magento/magento2 repository’s Pull Requests panel to see you PR along with the others. Your PR will undergo automated testing, and assuming it passes, will be up for consideration by the core team for inclusion in the Magento 2 core.

Additional notes about contributions:

  • Contributions must adhere to Magento coding standards
  • PRs must be accompanied by a description of their purpose
  • PRs which include new logic or new features must be submitted along with unit/integration test coverage (we will be releasing more information on writing test coverage in the near future)
  • For large features or changes, please open an issue here and discuss first. This may prevent duplicate or unnecessary effort, and it may gain you some additional contributors.
  • PRs which include new features must be submitted along with a proposed documentation update as well (see below)

Contributions to documentation

Magento 2 documentation is also available for update on GitHub via the same fork & pull model. In fact, it’s easy to create and propose changes or additions to the documentation by using GitHub’s built-in editor – no need to download the forked repository to work on it. For more information, see my buddy Bradburn Young’s recent guest post on Alan Kent’s blog. The big thing: make pull requests to the develop branch, just like you would for the Magento 2 codebase.

A note about Magento 2 development environments

If you’ve been a Magento developer for a little while, please note that there are a number of architectural and environmental differences between Magento 2 and Magento 1.x – including higher minimum versions for PHP and MySQL – which may require a new development environment configuration in order to work with Magento 2. If you need to continue supporting an incompatible development environment for current / legacy projects, virtualization is a popular, maintainable, and increasingly simple option to have a separate execution environment for Magento 2. There are several resources which have information to get you up and running with virtualization:

I will certainly add to this list as time goes on; feel free to comment with links to other resources which you find helpful – and let me know about any resources which are less than helpful as well so we can work with the authors to get them corrected.

We’ve been working hard to get Magento 2 ready for contribution, and there has been a lot of excitement internally to see this become a reality. Now it is up to the community to make the most of our open source contribution model. The Magento 2 Developer Beta closes in a few short months, and Q4 of 2015 will be here before we know it as well. Everyone’s involvement along the way is critical to making sure that Magento 2 is the best successor to Magento 1.x, one which will serve us well in the years to come. Onward and upward!

 

Magento 2 Developer Beta: What You Need to Know

Well folks, the Magento 2 Dev Beta is finally here, and just in time for my birthday! Let’s pretend that all of the hard work, public and private deliberation, as well as the diligent effort by members of the Product, Engineering, and Marketing teams is somehow my birthday present to you all. Enjoy! Read below to find out what you need to know.

What is Magento 2?

Magento 2 is the still-in-development successor to Magento 1.x. The goal for Magento 2 is to take the experience of thousands of developers building eCommerce solutions with Magento 1.x and incorporate this architectural, functional, and customization experience into the core code?. Some of the best features of Magento 1.x (declarative configuration, layout XML, and modularity to name a few) are realized in Magento 2, but with refactored implementations based on collective experience. We’re also making sure that Magento 2 is built for now and for the future through enhanced testability, service contracts for a more stable API, semantic versioning and utilization of Composer, all with scalability and performance in mind. For me the best and most important aspect of Magento 2 is that we are building it in close collaboration with the community via a new and much-improved GitHub contribution process, described below.

What is this Developer Beta?

Developer Beta, which runs from December 18, 2014 through March 2015 is the chance for developers of all types (core, independent, solution partner, merchant, and extension developers) to have a say in the foundation of Magento 2. It is the time and the process through which the underlying architecture of the Magento 2 eCommerce application is amended, vetted, and finalized. It is imperative that your voice be heard even if you are relatively new to the world of Magento. For old hats and newbies alike we’ve built a brand new Developer Hub which should serve as your one-stop shop for information about Magento 2 development. Once you’ve checked that out, head over to the official Magento 2 GitHub repository to look at the code and conversations. If you’re new to Magento, spend some time familiarizing yourself with the community there, download the code, and start contributing when you’re ready – just fork the repo and submit pull requests! You can also view Magento 2 documentation at a brand new site and contribute to it via a separate separate GitHub repository (HUGE kudos to the technical writing team for conceiving this… and for learning git!). We said we were committed to improved collaboration and more transparency; it is my hope that these long-desired changes demonstrate our commitment to our community.

What if you have feedback or a question about Magento 2?

All feedback (e.g. “Magento 2 should/shouldn’t do/include/use…”) and most questions (e.g. “Should Magento 2 do/include/use…”) regarding Magento 2 should be added to the “Issues” section of the Magento 2 repository on GitHub. It’s simply the best place to aggregate and archive feedback for ourselves and for everyone in the community, and it is the only place where Magento engineers will be monitoring issues, requests, and contributions.

However, if you have a question about Magento 2 that is not intended as a contribution (e.g. “How do I get Magento 2 up & running locally?” or “How do I create an extension?”), you should first try to find a solution by checking the Developer Hub, the Magento 2 documentation, or the installation guide. If after consulting these resources you are still having a problem, you should check for a solution at the Magento StackExchange site.

What is the Magento StackExchange site, and how do you use it?

The StackExchange question and answer platform which encourages clear questions and answers (as opposed to a general discussion forum). Magento SE is a community-created and community-maintained place for technical questions and answers. It was started by several community members (myself included) almost two years ago (before I joined Magento) and is frequented by top-notch developer community members.

To be a responsible member of the Magento SE, you should do two things before posting a question. First, try to solve on your own, because it is always evident when someone has not tried to help themselves before posting, and these questions (e.g. “How do I install Magento?”) are often ignored or deleted. Second, search for your question to see if it has been asked or answered; if it has, vote up the question and the solution, and if it hasn’t, go ahead and create a new question. Post all relevant details, being sure to include the version number and whatever steps you took to attempt to solve your question.

Finally, please note that the Magento SE site is not “officially” monitored by Magento. Again, if you have Magento 2 feedback which you want the core team or other Magento employees to consider, please post to the Magento 2 GitHub repository.

If you have some feedback or a question which doesn’t seem to fit at GitHub or on Magento SE, I encourage you to interact with your fellow community members and Magento employees via Twitter, IRC (#magento on Freenode), and in person at meetups and events. I can be reached on Twitter at @benmarks, via email at community@magento.com, and out in the world at official Magento events such as Imagine and MagentoLive, at unofficial, community-run Magento events such as Meet Magento, and at general PHP/open source/eCommerce events all over the world. I’m always eager to meet and learn from new folks and to talk about the best open source eCommerce platform on the planet.

Magento Community Update #1

Introduction

Well, here we are, finally: the first of many monthly updates. I’ll start by stating that I have two goals for these updates:

  • Inform the Magento community about the things & thoughts that are happening inside my head as well as inside the mighty orange towers
  • Give some additional visibility to the things & thoughts which are happening within the community itself

That said, by no means should I or these reports be considered a final/ultimate voice of either the community or of Magento itself. Magento is different from a lot of software & service companies in that our community has direct access to various people in the organization, which includes talking with our developers and project managers via GitHub and Twitter. You can find me on Twitter at @benmarks and you can send me email at community@magento.com.

Community Evangelism

Many of you don’t know me, or don’t know much about me. For the past six years I’ve served as a Magento developer, educator, certification consultant, and active community participant. I joined Magento in April of 2014 to serve as the Magento Evangelist. Developer evangelism is a recent concept in the programming world, and it’s a vital thing for a big company with an open source product and highly active community. My job has two main functions: to make sure you all know what you need to know about Magento (both the company and the software), and to ensure that Magento knows what is important to you all.

Update

Magento 2

In all of my travels across most of the world, the question which I’m asked most frequently is, “When is Magento 2 coming out?” I’ve noticed that there are two reasons why I’m asked this question. The first reason is out of a healthy mistrust of our stated timelines: as many of you know, Magento 2 was announced quite a while ago, and there are various reasons why we are still talking about its pending release today. The second reason is that many people have missed our numerous announcements of the “new” release timeline. I’ll answer both of these reasons at once. The stated timeline follows:

  • 2014 Q4: M2 Dev Platform Beta
  • 2015 Q1: M2 Dev Platform Release Candidate
  • 2015 Q3/Q4: M2 Merchant Beta
  • 2015 Q4: M2 General Availability

This timeline was first announced in May of 2014 at Magento Imagine, and it has been consistently repeated at every official Magento event since. Everyone in the company is focused on delivering against these expectations which we’ve set. It’s important that we do deliver, as it is important to have your faith and confidence as well as the confidence of the eCommerce space that we can deliver as promised. Disregard that I am very much an optimist when I state with confidence that we will deliver according to this timeline. You don’t have to take my word for it though: our distinguished Chief Architect, Alan Kent, committed to this timeline (or an even earlier delivery) back in September at the community-run Meet Magento event in New York. And guess what…?

The code for the Magento 2 Dev Beta is live… go check it out at GitHub right now!

Magento, “open source,” and GitHub

I’m also frequently asked about / frequently hear about the nature of Magento’s “open source” approach and commitment. While there’s no doubt that Magento CE is by definition open source software (the OFL & AFL licensing mandate it as such), the questions and concerns I’ve heard are in regards to how Magento satisfies the open source development model itself. For the record, these concerns predate the Magento 2 era, going all the way back to the initial release of the platform (and probably earlier, but I only started paying attention in 2008). For example, in Magento 1 there were no nightly or weekly builds as there are in some other open source projects. Rather, code pushes to Magento’s public SVN repository were infrequent and certainly not intended to be a regular, transparent update for the community. Also, the roadmap for Magento 1 was mostly focused on issues being resolved rather than features being released. Issues themselves were inconsistently updated in the bug tracker. And the most significant deviation for Magento from open source development was the cumbersome mechanism by which our community of developers and users contributed feedback, features, and patches to the product. This was the old way of doing things though. Magento has been improving in its openness even before my arrival, and I am delighted to say that we have many actions to point to our increasing openness as open source stewards of the Magento 2 project. I’ll be posting more about this really, really good news tomorrow following the Magento 2 Dev Beta webinar.

What happened to the forums?

One of the first things I wanted to fix after joining Magento this year were the forums. I joined the forums as a member back in 2008, seeking information and occasionally finding some. Before too much time I was answering questions myself, and I soon became a moderator. Eventually though a combination of work, spam, and progressive degradation in forum moderation features ran me off (as it ran off many others). Others stuck around, but the fight against spam was ceaseless. Earlier this year the spam problem really came to a head and we placed the forums in archive mode. When we did this I added an email alias of mine to the archived forum pages as a stopgap… and have since personally responded to hundreds of inquiries for help!

I’m glad to report that we are integrating a SaaS platform which will replace the forums and provide additional community-focused/community-enabling tools. Using a SaaS solution allows us to focus our efforts on interaction rather than maintenance. Gone will be the days of fighting spam and tolerating bugs: our SaaS vendor has dedicated anti-spam and support teams. We’re currently working with our existing community moderators, and we will have an update on the launch sometime in the next few months.

What happened to translations?

I happened upon the old translations page/tool at magentocommerce.com back in August, and I was immediately struck by the four things: the number of locales present, the lack of usability, the lack of completeness for most translations, and the fact that we were not linking to this page anywhere. Clearly a better solution is called for. I took the functionality offline and added the same community@ email  so I could still help anyone needing translations. Shockingly, I started receiving 3-4 emails per day from people literally all over the world (save Antarctica) needing translations. To my horror I realize that people have been downloading very, very incomplete translation packs for some time now! So, I’ve been regularly responding to these emails explaining how to find translation packs in Connect (link), and requesting help with future translation efforts. This should help us seed the new crowdsourced translation tool when it comes online. As is the case with the forums, I don’t have a firm timeline to announce for this yet, but I will announce it as soon as I do.

What’s up with Connect?

Speaking of Connect, I would like to share that we in Small Business are working on a new implementation of this facility. This is a massive project, as we are incorporating years of feedback regarding extension quality, searchability, as well as the need to prepare Connect for the Magento 2 era. Details and timeline for these changes are going to be announced by my boss Ryan Thompson very soon, so stay tuned for that. Of course, your feedback on Connect is always welcome at community@magento.com.

Conclusion

There is a lot going on in the world of Magento and there is much to talk about – in fact, this post was a lot longer before wiser heads suggested I condense it. If you are an established community member, you will be thrilled by our announcements over the next month. If you are new, you are coming into the community at an exciting time. There’s an amazing future ahead of all of us, and the real winners are the merchants and customers who will benefit from our collective efforts.

It’s about time.

It really is about time. I’m making time for blogging – probably a lot about Magento, some about travels, some about music, and some about the miscellany that make life wonderful (or at the very least, interesting).

I’ve been thinking quite a lot about how I spend my time these days. I’ve spent a good bit of time on the road over the past few years (over 200,000 miles in air travel alone across three continents), mostly to conduct trainings for Magento U, but also to speak and teach at conferences. Most of the classroom time – more than 1500 hours as of 4/2014 – has been spent delivering the Magento U Fundamentals of Magento Development course. I love it. I’ve taught it 35 times, I always learn from it, and I get such a kick out of helping others find their way (and their opportunity) in the world of Magento development. I have so much fun and see so many places that when I talk about it I am often asked, “How do I get your job?!?” To answer that I have to jump back through time to start at the beginning.

I accidentally stumbled into programming eleven years ago. Since then several things have fallen into place to get me to where I am today. Standing out among all of the deliberate acts and happenstance is a moment five and a half years ago in 2008. I sent a slightly cryptic but thoroughly awesome cover letter to Kevin Eichelberger. That letter – which in retrospect was nothing short of ridiculous – somehow led to my becoming employee #1 at Blue Acorn, an agency which has grown to become one of the best in the Magento and eCommerce worlds. Kevin gave me time and resources to learn Magento, a fledgling eCommerce app and framework with little documentation. With Kevin’s assistance and approval I parlayed this time and experience into a consulting and teaching role for the Magento U organization. Thus, time spent in my IDE turned into time on the road. (Bonus: time on the road turns into hotel and air travel points, and these turn into vacations with the proud, patient woman in my life.)

I spent my time off the road infusing my growing knowledge back into the Blue Acorn organization, which was in the process of growing to its current population of more than 60 employees. Most of the people I’ve interviewed, hired, or worked with over the years are still at Blue Acorn. It’s amazing to watch Kevin’s six-year-old vision writ large and real. It is equally amazing to see so many of my coworkers grow in their craft and their knowledge. I watch new developers enter the organization and know that they have a place to learn and grow well into the future. Time spent at Blue Acorn is time well spent.

That said, when I am sated, that satiety is often short-lived. These five and a half years at Blue Acorn have been the most significant in my progression as a developer and as a member of the Magento community. My time at work, whether at a desk in Charleston or on the road, has taught me how kind and giving people everywhere are, whether they share knowledge, effort, opportunity, or all of these. I’ve learned so much from so many. It is because of my growth, progression, connection, and because of the level of excellence and stability at Blue Acorn that I recently broached a difficult topic with Kevin. I’ve realized that a new time has arrived: the time for me to move on.

I have spent the best time that I can with Blue Acorn, but right now my best-spent time is behind me. I have to challenge myself to do something different, to do something more. While it is perhaps the most mature, forward-looking realization I have ever had, it is definitely the most terrifying decision I’ve ever made. Credit to my subtle sage of a wife who pointed out that well-considered fear is both an indicator and motivator for proper growth and change. Complacency ultimately begets mediocrity. Mediocrity is an insidious vehicle to a state of misery. Credit also to Kevin and to Blue Acorn for graciously and selflessly accommodating my decision.

To my friends and colleagues: I will remain involved in the Magento and eCommerce worlds. I will definitely be at Magento Imagine for all the festivities (#LasVegas5k #MageRun#ImagineHackathon#PreImagine, and of course the conference). I’ll still be tweeting the tweetsexchanging the Magento stacks, and working on the Grokking Magento book series, I know what’s coming next, just as I know that it will take some time for me to build it up and for me to build up to it. Stay tuned.

It was an April morning when they told us we should go.
As I turn to you, you smiled at me – How could we say no?
With all the fun to have, to live the dreams we always had
Oh, the songs to sing, when we at last return again.

Led Zeppelin, “Achilles’ Last Stand”

❤ B