Ask A Question is a Wordpress plugin that allows you to quickly take feedback on your site through an AJAX form. You can see it in action over at Juped.
It's been a while since last updated and needed to be cleaned off for the newest versions of Wordpress.
I had a few hours to work on it and got version 0.2 done. Not many features, but lots of internal stuff is cleaned up. Dropped Scriptalicious in favor of the JQuery bundled with Wordpress. Use new Wordpress internals where applicable. Fix a few bugs that crept out in the last version.
If you'd like to try it out, head over to: http://github.com/bradjasper/wp-ask-a-question.
Please let me know if you have any issues along with any big features you think are missing.
For the past few months I've been trying to find other developers in Iowa. Its difficult, but not impossible. I've managed to find a few here in the Quad Cities, but was able to find many more in other parts of the state.
I was able to meet some people at the recent Iowa Code Camp and am now lucky enough to have found a Python User Group being started in Iowa City.
The first meeting is tomorrow, so if you're in the area and want to find out more, please join the group.
For the past couple of months I've been working on migrating my old website from a Wordpress based setup to a custom site written with Django.
Now that Summer is here, I've had some time to wipe off the dust and get everything launched.
If you notice any bugs, contact me.
Lately everyone seems to be down about the Economy. Recent graduates can't find jobs. People are being laid off in enormous numbers. Everything is very unstable, and no-one knows what's going to happen next.
But I'm hopeful. I'm hopeful because we're on the downside of a curve. The bubble just popped in the Tech world, and all the easy VC money that goes with it is gone. This means people are bootstrapping, and its a wonderful thing. Business plans and first month profits to boot!
This is a good thing because it brings people back to reality and quickly erases the hype of a sustainable freemium model. The Tech world gets so caught up in its own echo chamber its reminiscent of a mini-hollywood filled with its own mini-cewebrities. The recent downturn has let people rediscover the value of business models that aren't based on advertising and "getting really big"--but I digress.
When "big ideas" stop getting VC money, lots of developers either leave the space or kill their ideas. This is a huge opportunity for the rest of us. Suddenly, there's way less competition. But not only that, there is way less VC-funded competition--even better.
Some people say their idea needs VC funding. Maybe. Some ideas need funding. But the reality is, many startups take money because its there. It helps accelerate growth and lets you work on your startup full-time until you become profitable. There are many ways to move into a competitive high-priced market, be creative.
Taking VC money is sexy and all the cool kids are doing it, but there are other ways. There's nothing wrong with working 10 hours a week on a project. Your lack of time will let you focus on what's really important. Cutting out bloat will make you leaner, quicker and better.
Launch early, get feedback, iterate quickly. Fund it with your existing job and work on it in your spare time. Have no doubt, smart developers have their heads down working on their next project. By the time everybody else starts looking for VC money, they'll already be riding the wave.
The Django Admin interface is the best thing since sliced bread. Its flexible enough to handle 80% of everyday needs and built so that handling the other 20% isn't too bad. Generally speaking, its pretty good for entering data.
Little things like setting default fields can dramatically speed up the data entry process. When you repeat a process hundreds of times, a 30 second improvement can be significant.
Which is why it bugged me that I couldn't set default values for my admin.TabularInline field:
The result was an extra minute for every host I was entering in to Hosting Choice.
After speaking with some people in #django on irc.freenote.net I realized Greasemonkey would be the best way to tackle this problem. Apparently, sub-classing the admin.TabularInline class is more trouble than it's worth.
The Greasemonkey solution is a little dirty, but it definitely gets the job done. It could have make the script shorter, but I opted to include jQuery--because I find Javascript without jQuery these days maddening.
The end result is this:
Here's the script in all its mighty. To set your own default values, adjust the defaults dictionary at the top. The keys are jQuery selectors and the values are whatever your default value is.
// ==UserScript== // @name Django Default Admin // @namespace /django_admin // @description Script fot setting default values in the Django Admin // @include http://hosting-choice.com/admin/catalog/host/add/ // ==/UserScript==// Syntax is {#id, 'default value'} defaults = { '#id_feature_set-0-type': 'Price', '#id_feature_set-0-value': 6.95, '#id_feature_set-1-type': 'Bandwidth', '#id_feature_set-1-value': 0, '#id_feature_set-2-type': 'Space', '#id_feature_set-2-value': 0}
// Attach jQuery var GM_JQ = document.createElement('script'); GM_JQ.src = 'http://jquery.com/src/jquery-latest.js'; GM_JQ.type = 'text/javascript';
document.getElementsByTagName('head')[0].appendChild(GM_JQ);
// Check if jQuery's loaded function GM_wait() { if (typeof unsafeWindow.jQuery == 'undefined') { window.setTimeout(GM_wait,100); } else { $ = unsafeWindow.jQuery; letsJQuery(); } }
GM_wait();
function letsJQuery() { for (id in defaults) { $(id).val(defaults[id]); } }