Posted on November 2nd, 2011 at 12:44pm in
Code,
Web -
2 comments
Just wanted to post a quick tip that resulted from a Tweet from Jonathan Longnecker of FortySeven Media. He asked:
Anyone got Dreamhost to do 301 redirects in tandem with removing #eecms index.php? Weird query string stuff happening.
Well, having a bit of experience working with Dreamhost, I responded. This problem isn’t specific to ExpressionEngine, it actually will apply to any website or application where you are using .htaccess to rewrite index.php out of the URLs. Dreamhost and many shared hosts like it is are set up in such a way that .htaccess is always a bit more painful than usual, using the query string URI protocol. (Not that .htaccess isn’t painful to begin with.)
A typical .htaccess file on one of these hosts would look like this:
RewriteEngine On
RewriteCond $1 !\.(gif|jpe?g|png)$ [NC]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /index.php?/$1 [QSA]
That works out fine until you want to add some 301 redirects into the mix. If you add a standard redirect like:
Redirect 301 /oldpath /newpath
You’ll find that instead of redirecting to www.domain.com/newpath, it ends up going to www.domain.com/newpath/?/oldpath, which isn’t good at all.
The key to fixing this is making sure that your index.php removal rule excludes your 301 redirects.
Just add this line after the RewriteEngine On line:
# put all your redirects inside the parentheses, separated by |s
RewriteCond $1 !^(old|old1|old2) [NC]
Hopefully that’s helpful to someone out there. Thanks to Jonathan for asking a question that I could actually answer.
Posted on October 28th, 2010 at 7:21pm in
Business,
Code,
Rambling -
2 comments
Introduction
I started writing a comment on Phil Sturgeon’s blog post from yesterday, but as my comment grew longer and longer, I felt that it would be better presented as a post on my own blog. I would encourage you to read the post and the comments that follow before diving into my post here, as the context will be valuable in understanding my response.
Also before I move into my commentary, I want to make it abundantly clear that I am encouraged by some of the conversation that has taken place since the initial outcry. Things are certainly not resolved yet, but I do see a glimmer of hope.
My Response
I must say I was taken aback by some of the responses early on to Phil’s post. The negativity from both sides was disheartening, and I know this was not Phil’s intent.
I for one am a huge fan of CodeIgniter, and I know that many of the developers in the CI are as well. I do share in the frustration and disappointment that many others express, though, but it’s only in hopes of seeing change. If I had already lost all hope in the product, I would have abandoned ship much earlier on, and I wouldn’t be writing this response. I think that’s the sentiment that Phil shared as well, though it may not have been taken that way.
Our desire is not to jump ship, but instead to see continued awesomeness from the framework we’ve all loved for so long.
The one thing I wish could be clarified from all the commentary, especially that from those who work at EllisLab is this:
We’ve consistently heard that EllisLab invested lots of money in a framework that doesn’t make them a dime. We know you’ve invested heavily in the framework. And we’re VERY grateful for that. But why ISN’T it making you money?
But, it’s the second part of that I guess I don’t fully understand. I don’t see why EllisLab does not draw value from their open source offering. Why is CodeIgniter CHARITY and not indirect PRODUCT DEVELOPMENT?
As a business owner myself, doing something for the good of the cause is great, but not if it’s going to be a hindrance to my bottom line. That why I wouldn’t create a free product just to be a good will offering, something that I wouldn’t use myself. I would create a product that I use myself to better my business AS WELL as the community. The thing is, companies have made millions of dollars from their products that are based on open source projects that they sponsor.
Of course I don’t understand the inner workings of the company, but from my perspective, investing in CodeIgniter does not take away resources from your commercial offering. On the contrary, I would hope that every feature added to the framework by the community would be code that you can use as you develop ExpressionEngine, perhaps even eventually REDUCING development costs for ExpressionEngine. It’s an indirect connection, but for me it’s simple to see.
Conclusion
My conclusion is simple. I love CodeIgniter and I love ExpressionEngine. I’m an active user of both, on almost every project I do. I want to see the best for both.
It’s not and easy road or a short one, but in the end, I think the only way that you can successfully foster both communities is to put your FAITH in CodeIgniter, not just as charity, but as a core for ExpressionEngine. Set a roadmap that supports your ExpressionEngine roadmap. Let the community contribution help you be even more successful than you already are with fewer resources.
You have two great products, but one is always going to suffer if you don’t allow them support eachother in a much greater way than they already do.
Thank you for reading. And I do hope that you can see the positive mindset I have on this issue. This post is not here to spawn further attacks, but rather to catalyze EllisLab to re-envision their products in a way that benefits THEM and the COMMUNITY.
Posted on August 14th, 2010 at 1:47pm in
Business,
Code,
Rambling -
3 comments
As one of the developers of MojoAddons, along with Zack Kitzmiller, Phil Sturgeon, Dan Horrigan and Tom Myer, we’ve banded together to provide much-needed functionality to extend the MojoMotor platform.
I’ve noticed two threads of discussion happening surrounding the addons we’re creating, selling and supporting, and I’m finding both of these discussions to be a bit discouraging. So I write this post- a rationale of why and how we do what we as well as a plea for your support.
The first discussion revolves around the question, “Why do you charge for all of your addons?”
From my perspective, commercial addons are the ideal solution for a commercial product such as MojoMotor. While it may come across that we just want to cash in on a new market, for me at least the rationale is deeper than that.
As a web developer using ExpressionEngine for my clients, I often need the functionality provided by addons. I am given a choice when I start the project, either I can build all of the functionality myself, or I can purchase someone else’s addon and use it. There is also the third option of finding a free alternative.
I normally choose to purchase a commercial addon. Why?
In either the case of building my own or using someone’s free alternative, I lose support for the addon. If I build it myself, I have to support it. A free addon may have support, but there’s no guarantee of how long it will be available, how attentive the developer will be, etc.
When I’m charging customers thousands of dollars for a website, I don’t want to be taking that kind of risk to my credibility. If something isn’t working, I need to be able to get in contact with someone who knows what they’re doing. Sure I could dig through the code and figure it out myself, but that’s a waste of both my time and the customer’s money. That’s why I use a commercial CMS like ExpressionEngine, and stick with commercial addons to add functionality.
In the same vein, the addons I and other MojoAddons developers are selling come with support. That’s where the price comes into play. Most of us wouldn’t mind contributing a small piece of code to the community to help people out, and both Dan and Phil have done this, but the influx of support requests makes it unreasonable to do this for our larger and more complicated products. It just comes down to a matter of time—donating maybe two or three hours to the cause is one thing, but the unending hours of e-mail support add up and take us away from our other priorities.
Support is the main reason why we charge for our addons.
Along this same line of thinking, I just want to remind our customers that you shouldn’t hesitate to contact us for support. In the MojoAddons download center, and e-mail is provided for support of each of the products you’ve purchased. You’ve paid for our support, so please don’t hesitate to use it.
We’ve had a lot of great reactions to our addons, and we’re excited about that. But a few bugs have cropped up here and there, and I’d encourage you to contact us for help when you do find a problem, rather than trying to fix it yourself. In the end it’ll help make our products better, and it’ll help us help other users of our addons.
The second discussion I’ve become aware of surrounds the development of free alternatives to the addons we’re selling.
Firstly, I’m all about supporting the community. EllisLab is known for fostering active, friendly and helpful communities of users surrounding its products. It’s one of the reasons it’s so great to work with CodeIgniter, ExpressionEngine and now MojoMotor. I just want to get that out of the way to begin with. In no way do I condemn the creation of community code and addons for the good of everyone.
What I do condemn is blatant imitation of commercial addons. I’m certainly no intellectual property expert, and I don’t really want to dive into legal battles. But the reality is, there have been several free addons released that clearly have a basis in the functionality my colleagues and I have envisioned and built.
It’s discouraging to see this, tearing down the hard work we’ve done and the support which we’ve committed to offer.
A lot of thinking, preparation, development time and testing has gone into creating the products we sell. And we’re proud of what we’ve done, creating, hopefully, easy-to-use tools for MojoMotor users.
I totally support the creation of free alternatives, as long as they don’t duplicate the functionality of our addons with nearly-identical syntax, etc.
While I don’t have any recourse for this situation, I want to try and turn this around to have a positive outcome. There are GREAT developers out there now, working hard and fast to create everything the MojoMotor users wish and hope for in addon software. So, instead of condemning these actions I’m going to call them to a greater cause:
As software developers in a great community with a brand new product, I encourage every developer to INNOVATE. Sure the other MojoAddons developers and I have had some pretty awesome ideas thus far, but the community can no move forward if we simply continue to rebuild the same addons in small iterations. The MojoMotor users are calling out for the features they want to see.
Regardless of whether you choose to release your addons for free or commercially, we developers are problem solvers. And trust me, there are plenty of problems out there to solve. So get out there, do it. Don’t let the ideas I or my colleagues have created hold you back to an idea of how your addons should work.
We are a community, and I am glad that EllisLab is committed to organizing its users in this way. I encourage everyone here to respect the creations others have come up with, continue to build up the products we love with equally awesome addons and lastly to work together, not against each other, to bring MojoMotor to new levels of functionality that will benefit everyone.
Posted on July 31st, 2010 at 6:45pm in
Code,
Site News,
Web -
1 comment
This week an exciting thing happened. MojoMotor, the brand new content management system from EllisLab, makers of ExpressionEngine, was released.
I had been testing MojoMotor along with several other developers in the beta program and got a head start into working with the code. As a result Zack Kitzmiller and I set off on a path to build several much-needed addons for the new CMS. Along the way, we also built a really cool little site to show them off and sell them, as well as help to sell third-party addons from other developers. In the future we’ll also be adding third-party packaged themes for MojoMotor users.
So, with that, I’m happy to introduce MojoAddons.com.
If you’re trying out MojoAddons and using it for a project, I think you’ll find our addons are a great fit for making MojoMotor just a bit more powerful.
Posted on July 6th, 2010 at 9:34pm in
Code,
Reviews -
4 comments
I was recently asked to review Packt Publishing’s new book, CodeIgniter 1.7: Professional Development, by fellow CodeIgniter community member, Adam Griffiths. Adam is a well-known developer in the CI community, who, despite his young age, has become well-known among the ranks of CodeIgniter developers with his open source contributions.
I’m always excited to see new CodeIgniter books published, as the framework is growing in popularity and credibility among PHP developers, with applications springing up across the Internet. The framework is known for its excellent user guide and a strong community backing. But sometimes the resources available aren’t quite enough to make the concepts click in a new developer’s mind.
For me, the process involved viewing some of the available screencasts and looking at code that other had written in their applications. It wasn’t hard, but Adam’s new book would have been helpful to me in those early days of development with CodeIgniter. A selection of other CI-focused books have been published in the past, but I haven’t found many to be as practical as Adam’s. In previous books, often a single sample project is selected and used throughout the book to explain all of the concepts.
Adam’s approach is quite different and takes a look at various pieces of functionality that application developers might find very useful, while not walking them through the entire process of building an example application.
Specifically, Adam’s examples of using Twitter and Facebook authentication as well as accessing RESTful web services prove very useful, as these functions are increasingly at the core of many applications being built today.
The book also spends a bit of time talking about the basics of style in PHP coding. A guide like this would have helped to alleviate the evolution of coding style I’ve experienced as I’ve spent more and more time building web applications. It provides a solid baseline, referencing the CodeIgniter documentation’s style guide as a resource for maintaining code consistency.
Overall, I think that CodeIgniter 1.7: Professional Development fills a void in the market for CodeIgniter resources. I’d certainly recommend it to someone just starting out with the framework as an additional resource to use alongside the various other community resources.
The new book is not without its flaws though. As good as it is at helping a new developer get started at building all parts of an application: models, views, controllers and libraries, the one piece that’s lacking is advice on how to integrate with other people’s code. There a wealth of pre-written code out there, which though it may not be built to work with CodeIgniter, can save developers a ton of time as they build applications—if they know how to properly connect with third-party libraries from within the CodeIgniter framework. It can be a little bit tricky at first, so a primer in that area would be ideal.
Additionally, opening up the book with a bit of prior PHP experience is advised. Sometimes the examples don’t fully explain what’s going on in the code, so it could be a little complicated for a complete beginner.
Overall, though, I’m impressed with the direction this book goes. The angle is good, with a focus outside of the typical ‘build a blog in 20 minutes’ example.