It's almost as if I can hear the nails pounding the coffin shut. Every complaint on the web is another whack on the hammer. Adobe just killed itself with the Creative Cloud annoucement on Monday.
What an incredibly short sighted announcement! In essence, they announced that they are no longer "selling" software, just renting it. If you want upgrades, you have to start subscribing.
I am outraged! They announce this the first day of MAX and expect all of us to mindlessly jump on the cloud.
Here are my problems with it:
1. Cost. Not everyone can shell out $50 a month for your software. Think of all the small business owners and educators and hobbyists out there who you have just priced out of the market. In the past they would buy the software when they could afford it and then use it for years until they had enough money to upgrade. You have lost all those customers.
2. Absolute power corrupts absolutely. If we all get on the cloud, we are all at your mercy and you no longer have any compelling reasons to upgrade your software OR keep the cost affordable.
3. Shortsightedness. After years and years of paying your subscription prices, what happens if I need to take a quick look at an old .psd file and my subscription has run out? You are so greedy that I would have to re-subscribe to be able to open my own files.
4. I can't buy into bad management. If you will do something this brainless with your customers, you are going to ruin the software anyway and run this company into the ground.
I hate saying this, because I have always had nothing but love for Adobe. I have been using their software for 13 years. I currently own and frequently use the CS5.5 Master Collection.
My first action was to go to the Adobe Forums and complain on the Creative Cloud forum. I quickly noticed that Adobe was shuffling the complaints to the bottom of the stack.
Then I thought it might make a difference if I signed the petition that has been started on change.org.
I'm not normally an activist, but this has outraged me, and as Aaron Tippin would say "If you don't stand for something, you'll fall for anything."
http://www.change.org/petitions/adobe-systems-incorporated-eliminate-the-mandatory-creative-cloud-subscription-model
I still have the slightest glimmer of hope that someone in upper management at Adobe will realize this is a huge mistake and change it.
They can still have the cloud, I just want the choice to buy the software.
So I challenge those of you at MAX to go buy a poster board and a sharpie and TELL ADOBE HOW YOU FEEL. Carry them proudly in the lobby as MAX winds down! Don't be an ant in the Adobe colony, be a leader. Be an innovator. Stand up for what is right, and call them on this decision, because it's wrong.
Wednesday, May 8, 2013
Wednesday, May 1, 2013
The Importance of URL Rewriting
I am terrible about explaining things sometimes, and lately I've been working with a client on URL rewriting. I've done a lot of techno-speak but I'm not sure that I have really explained in laymans terms what URL rewriting is, and why it's important.
What is it?
When you go to your About us page on your web site right
now, if you typed in the whole address into your browser, it might look something like this:
http://www.yoursite.com/index.cfm/sitepages/show/2
That URL doesn't tell us anything about the page, and it's
very hard to remember.
Wouldn't it be better to have that URL be this?
http://www.yoursite.com/About-Us
That is URL rewriting. It's the process of making your page
names descriptive, instead of cryptic.
When we start rewriting those URL's, a great thing happens...
you can now anticipate what a page will be.
Want to find out about services? My guess would be the URL
would be:
http://www.yoursite.com/services
Want to go to the contact us page? My guess would be:
http://www.yoursite.com/Contact-Us
Best of all, those guesses would be right! So by rewriting the URL's,
the first thing we've done is make those pages easy to remember. If I'm on my
smart phone and don't want to have to go to the home page of your site, to get to your contact
page, I can now easily remember how to get there. With so many people using the browsers on their phones, making those pages easy to get to is going to increase your traffic.
But URL rewriting isn't just for people, it's for search
engines too.
Google and other search engines give your pages a "rank." When you do a search, the pages with the
highest rankings show up first.
By making the name of the page descriptive of the content,
your rank will improve, and therefore your pages will show up higher in
searches.
So hopefully that is a simple explanation of what URL rewriting is, and why it's so important. If you are serious about SEO, URL rewriting is a smart thing to do.
Implementing URL rewriting in CFWheels
This is just how I do it in CFWheels. I'd really like to hear how others are accomplishing it to see if I can improve on the method.
Let's create a hypothetical table called "sitepages."
In that table, I create a field for the title of the page and a unique field for the "slug."
In the sitepages model, I add a beforeSave callback.
<!---Add this to the models init method--->
<cfset beforeSave("checktheslug")>
Then, I create the "checktheslug" function:
If the user doesn't specify a slug, then the slug takes the title of the page, replaces spaces with hyphens, and then strips out any extraneous characters like quotation marks, exclamation points, etc.
Then all I have to do is set up a route, and I'm in business:
<!---Add this to the routes --->
addRoute(name="sitepages", pattern="pages/[slug]", controller="sitepages", action="show");
Implementing URL rewriting in CFWheels
This is just how I do it in CFWheels. I'd really like to hear how others are accomplishing it to see if I can improve on the method.
Let's create a hypothetical table called "sitepages."
In that table, I create a field for the title of the page and a unique field for the "slug."
In the sitepages model, I add a beforeSave callback.
<!---Add this to the models init method--->
<cfset beforeSave("checktheslug")>
Then, I create the "checktheslug" function:
If the user doesn't specify a slug, then the slug takes the title of the page, replaces spaces with hyphens, and then strips out any extraneous characters like quotation marks, exclamation points, etc.
Then all I have to do is set up a route, and I'm in business:
<!---Add this to the routes --->
addRoute(name="sitepages", pattern="pages/[slug]", controller="sitepages", action="show");
Thursday, April 25, 2013
Flash Builder 4.5 Won't Open
The most frustrating part of being a programmer is keeping up with my own legacy code. I used to do a lot of flash and flex projects before apple killed flash. Now I find myself needing to go back and update something on an old site and it's tough to properly maintain my work environment after switching computers a couple of times.
First Flash Builder 4.5 wouldn't open on my new machine.
After a ton of googling, and trying all kinds of things including editing the registry, I found the simple answer.
All I had to do was change the name of the workspace folder, and viola, Flash Builder opened.
Then I run into my next headache, the system couldn't find the old fds.swc file that used to be in the C:/coldfusion9/wwwroot/WEB-INF/flex/lib folder.
That was a nightmare finding that old file. I think I'll put it online somewhere in case anyone needs it.
Then the next headache was upgrading from the old flash sdk to the new one. I couldn't remember which sdk I used on the old code, so I had to update it before the files would compile.
Then I had to change some code before I could compile. I got the error: 'application' has been deprecated since 4.0. Please use 'FlexGlobals.topLevelApplication'."
So on that I had to replace every "Application.application" reference in your project with "FlexGlobals.topLevelApplication". Also had to replace the "import mx.core.Application" with "import mx.core.FlexGlobals".
Altogether I wasted like half a day on this, and the setup is still not complete. Before I was running my flash remoting out of the C:/ColdFusion9/wwwroot folder and using a port number. Now I have everything running through IIS7 and the physical folder is now C:/inetpub/wwwroot so I still have to change the destination for my remoting. I'm not even sure what to change this to. I put the CFIDE folder into the c:/inetpub/wwwroot folder but I think ColdFusion still "lives" at c:/ColdFusion9/ (I'll not sure about that) and then the remoting is expecting a server name/port number in the remoting-config.xml, so I have to do a little research to figure this out. But I'm writing this down with the hopes that somebody out there knows the answer to my quandary.
First Flash Builder 4.5 wouldn't open on my new machine.
After a ton of googling, and trying all kinds of things including editing the registry, I found the simple answer.
All I had to do was change the name of the workspace folder, and viola, Flash Builder opened.
Then I run into my next headache, the system couldn't find the old fds.swc file that used to be in the C:/coldfusion9/wwwroot/WEB-INF/flex/lib folder.
That was a nightmare finding that old file. I think I'll put it online somewhere in case anyone needs it.
Then the next headache was upgrading from the old flash sdk to the new one. I couldn't remember which sdk I used on the old code, so I had to update it before the files would compile.
Then I had to change some code before I could compile. I got the error: 'application' has been deprecated since 4.0. Please use 'FlexGlobals.topLevelApplication'."
So on that I had to replace every "Application.application" reference in your project with "FlexGlobals.topLevelApplication". Also had to replace the "import mx.core.Application" with "import mx.core.FlexGlobals".
Altogether I wasted like half a day on this, and the setup is still not complete. Before I was running my flash remoting out of the C:/ColdFusion9/wwwroot folder and using a port number. Now I have everything running through IIS7 and the physical folder is now C:/inetpub/wwwroot so I still have to change the destination for my remoting. I'm not even sure what to change this to. I put the CFIDE folder into the c:/inetpub/wwwroot folder but I think ColdFusion still "lives" at c:/ColdFusion9/ (I'll not sure about that) and then the remoting is expecting a server name/port number in the remoting-config.xml, so I have to do a little research to figure this out. But I'm writing this down with the hopes that somebody out there knows the answer to my quandary.
Wednesday, April 10, 2013
iPhone Setup with Gmail, Google Contacts & Google Calendar
I just switched to an iPhone 4 (yes I am behind the times) and had a bit of trouble getting my gmail, google contacts and google calendar set up.
Here is the situation:
If you go to Settings > Mail, Contacts, Calendars > Add account > and choose gmail, you are only able to sync your email, calendar and notes. Your contacts are no where to be found.
I googled it and found a bunch of posts that recommended setting it up in an exchange account, so I tried that, only to find that as of Jan. 30th, 2013, Google has disabled sync on the exchange accounts. See this press release from google: http://support.google.com/a/bin/answer.py?hl=en&answer=2716936
So the only way to have it all is to add each one manually. There is a lot of conflicting information out there, so this is what worked for me:
-----------------------------------------
Setting up Gmail
Go to Setup > Mail, Contacts Calendars > Add Account > Other
Choose Add Mail Account
Enter your:
Name
Email
Password
Description
click next
Make sure you choose the IMAP button
fill out all information.
Your incoming Mail Server host name is: imap.gmail.com
Your outgoing Mail server host name is: smtp.gmail.com
--------------------
Setting up Google Contacts
Sidenote: Google kind of hides contacts from you in gmail, so to see them click the down error next to the big red Gmail in the upper left hand corner.
On your iphone,
Go to Setup > Mail, Contacts Calendars > Add Account > Other
Choose Add CardDAV account
Server: google.com
User Name: this is your gmail email address
Password: your gmail password
Description: Anything you want
Hit Done
The trick to this is you will get an error that it can't use SSL. Click Cancel on this error and then click the advanced tab. Make sure Use SSL is ON and set your port to 443
and then click done.
It should authenticate then and your contacts will now be synced.
-----------------------
Setting up your Google Calendar is exactly the same as setting up your Contacts, except you will choose to add a CalDAV account instead of a CardDAV account
Go to Setup > Mail, Contacts Calendars > Add Account > Other
Choose to Add a CalDAV Account
Server: google.com
User Name: this is your gmail email address
Password: your gmail password
Description: Anything you want
Advanced Settings:
SSL: ON
Port: 443
Account URL: (this will be generated for you) but if you need to enter it for any reason it is https://www.google.com/calendar/dav/yourgoogleemailaccount/user
You have to replace your gmail email address in the URL and this is important: Your ampersand sign has to be URL friendly so use %40 instead of @
--------------------------
Here is the situation:
If you go to Settings > Mail, Contacts, Calendars > Add account > and choose gmail, you are only able to sync your email, calendar and notes. Your contacts are no where to be found.
I googled it and found a bunch of posts that recommended setting it up in an exchange account, so I tried that, only to find that as of Jan. 30th, 2013, Google has disabled sync on the exchange accounts. See this press release from google: http://support.google.com/a/bin/answer.py?hl=en&answer=2716936
So the only way to have it all is to add each one manually. There is a lot of conflicting information out there, so this is what worked for me:
-----------------------------------------
Setting up Gmail
Go to Setup > Mail, Contacts Calendars > Add Account > Other
Choose Add Mail Account
Enter your:
Name
Password
Description
click next
Make sure you choose the IMAP button
fill out all information.
Your incoming Mail Server host name is: imap.gmail.com
Your outgoing Mail server host name is: smtp.gmail.com
--------------------
Setting up Google Contacts
Sidenote: Google kind of hides contacts from you in gmail, so to see them click the down error next to the big red Gmail in the upper left hand corner.
On your iphone,
Go to Setup > Mail, Contacts Calendars > Add Account > Other
Choose Add CardDAV account
Server: google.com
User Name: this is your gmail email address
Password: your gmail password
Description: Anything you want
Hit Done
The trick to this is you will get an error that it can't use SSL. Click Cancel on this error and then click the advanced tab. Make sure Use SSL is ON and set your port to 443
and then click done.
It should authenticate then and your contacts will now be synced.
-----------------------
Setting up your Google Calendar is exactly the same as setting up your Contacts, except you will choose to add a CalDAV account instead of a CardDAV account
Go to Setup > Mail, Contacts Calendars > Add Account > Other
Choose to Add a CalDAV Account
Server: google.com
User Name: this is your gmail email address
Password: your gmail password
Description: Anything you want
Advanced Settings:
SSL: ON
Port: 443
Account URL: (this will be generated for you) but if you need to enter it for any reason it is https://www.google.com/calendar/dav/yourgoogleemailaccount/user
You have to replace your gmail email address in the URL and this is important: Your ampersand sign has to be URL friendly so use %40 instead of @
--------------------------
Subscribe to:
Posts (Atom)