Archive for July 24th, 2010
Saturday, July 24th, 2010
Presented by Robert Holmes (robbiethegeek)
(Got here a bit late, but caught the very beginning of drush command overview)
Handy drush commands
- drush - listing of all the drush commands available to you
- drush status - basic info on your site
- drush sqlc (drush sql-cli) - takes you into MySQL console using the credentials of the site you’re accessing with drush right now
- drush dl <projectname> - downloads code for module (project) into sites/all/<projectname>; can list multiple projects at once
- drush dl <projectname>-<version> - download a specific version of a module, e.g. drush dl filefield-6.x-3.x-dev
- drush en <projectname> - enable <projectname>
- drush up - upgrade code and database for Drupal core and third-party modules
- drush sql-dump - Performs a dump of the current Drupal site’s database. This will vomit it all over the screen, so instead you’ll want to direct the SQL dump to a file using drush sql-dump –result-file=filename.sql or drush sql-dump > filename.sql (and then
- drush cc - clear the cache that you then specify from the menu, or specify within the command as drush cc theme or drush cc all etc
- drush help <command> - get help on the given drush command
Random Notes
- You can use drush in conjunction with other shell commands, wrap drush commands in shell scripts, etc
- Other modules can also expose functionality and add commands to drush, e.g. devel module
- Drush supports the ability to remotely connect to a server - open an ssh connection, run a drush command, and bring it locally
- http://dgo.to/ - Drupal URL shortener AND smartener with quick paths to projects, issue queues, nodes by number, users, etc
Posted in Drupal, DrupalCampNYC8 | No Comments »
Saturday, July 24th, 2010
Presented by Alex Urevick-Ackelsberg, Zivtech (12-person Drupal shop based in Philly)
Starting Out
- look to other existing shops to get insights into the business of selling Drupal
- Define the type of Drupal/web shop you are. Are you just a Drupal firm? Do you provide other services/products? What are you selling?
- Good to write up a mission statement, followed by a business plan - take the time to look at the market, the other players in the market, assess the cost and payout of the business
- Small Business Association - many resources that you can tap into when starting out, even just as a freelancer
- Cash flow is a tricky thing to handle; need to know how much money you need to get started. Do you need investors? Loans? Are you going to bootstrap it?
- Money comes in through accounts receivable; goes out through payroll, accounts payable, and taxes. Need to have it coming in faster than it’s going out.
Partners
- Who are you looking to partner with? Why? Do you want to stop doing certain parts of the work? Does your shop need skills that you don’t have?
- Define roles for each partner
- Split tasks and responsibilities up
- Keep partners accountable
- Seth - the perfect partner is someone who you don’t agree with all the time, to be challenged
Management
- Remote vs office
- Being in the same room can help facilitate quick communication
- Managing teams of developers
- can be like herding cats
- if your shop sells hours
- who ends up being a project manager? is that a separate role or can other people take on that role in addition to development?
- Sometimes developers don’t have good project management skills; sometimes it’s based on scale and you just get to a size where it won’t work
- Fixed bids vs retainers/hourly
- “If you want a good way to bankrupt your company, do a fixed bid.”
- Zivtech either sells buckets of time (e.g. 100 hours to be used within a certain amount of time) or estimated costs (here’s the top of what we think it’s gonna cost, if it gets to where we think it’s going to be 10% over that we come back and check in)
- push back from others in the audience (Liza, Seth) about fixed bids working if projects are managed well, clients not being willing to go for non-fixed bids
- Zivtech bills based on who’s working on the project; different levels of skill
- Liza - can be important to have a client manager (not necessarily the same as the project manager)
- someone else in the room - gives clients deadlines for giving feedback
- Zivtech uses unfuddle for ticketing, time tracking, etc - has git and svn repositories
- suggestion: multiply the number of hours you think a task will take by three and you’re more likely to be on target!
- Juggling more and longer term engagements
- Tricky to figure out how to juggle how many projects you’re taking on at once
- A key thing is to overbook yourself
- Balancing contribution and business development with client work
- balance the non-billable hours well
- make sure you’re charging enough to withstand the time that folks are doing non-billable work
- Drupal is something of a publish or perish business; you’ve got to put yourself out there, contribute to the community
- Outsourcing
- a more flexible way to pay people for work than payroll; accounts payable is “pay when you can” whereas payroll happens every two weeks no matter what
Sales and Marketing
- Sales cycles
- understand how long clients will take to make decisions, sign contracts, send initial deposit and later payments
- understand how clients’ fiscal years work and how that will affect the work you’re getting
- RFP, estimates, and proposals - understand how your internal cycle works
- MeetUps, Camps, Local community sites and conferences - good sources for new clients
- Contribute!!! in open source! Publish or Perish!
- Develop or claim modules in desired verticals (e.g. mapping, media, mobile, etc) - focus your contributions in the area you’re trying to work with
Basic Roadblocks to Growth
- Cash flow is king!
- you can demand a certain amount up front from many clients, though some clients will tell you how they’re going to pay; they generally ask for 40-50% up front
- Taxes
- Accounts Receivable/Collections
- gently but consistently remind clients to pay you
- make sure you get into your clients payment system ASAP - contact billing right away
- do regular billing, biweekly or monthly
- try to avoid being a hard-ass to collect; you’re building relationships, so you want to communicate the need to pay as gently as possible
- Talent
- can be a huge impediment to Drupal shops
- you need to aggressively train smart people, not just expect to find all the highly-developed talent you need
Get Help!
- SCORE (Service Corp of Retired Executives), SBA, Business Schools
- some business schools have programs where they place interns with you for a period of time to assist you in the startup stage
- Collaborate with other shops
- Consultants email list
Questions
- is client acquisition a “hard marketing” expense? As in, something that can be written off?
Posted in Uncategorized | No Comments »
Saturday, July 24th, 2010
Presented by Roger López (zroger)
Admin Themes
- clients/users appreciate a clear visual division between the public front-end view of the site and the admin view
- Garland: out-of-the-box theme that can be used to easily create that visual separation; it’s the easy choice, but there are others that are specifically tailored to be admin themes
- Root Candy: specifically focused on being used on the administrative side; creates tabs at the tops for “root-level” admin items, emphasis on readibility, good table structures
- comes with built-in slide-out control panel that you can drop any block on the site into
- Rubik: another admin theme designed for clear, clean admin with a keen eye to styling messaging, help text
Tools, Toolbars
- Admin module; little wrench in the corner that expands out into an administration
- admin_menu module: gives you a nice dropdown menu across the top of your site (front-end and back-end), a number of functions under the Druplicon dropdown menu
Administrator != Developer
- A menu of quick-links specially created for client administrator can be very helpful
- Modules to build an admin interface:
- Views bulk operations - lets you build a view of content (eg nodes, files, comments) and provide checkbox-style operations on all of the nodes
- Draggable Views - lets users drag and drop lists of content into a completely arbitrary sort
- Nodequeue - one step beyond Draggable Views, does the drag and drop sorting but also controls specific pinpointing of what content is included in what queue, e.g. take ten completely unrelated nodes and put them into one queue
- Panels - you can use it to create a dashboard view of content for your administrators, e.g. a dashboard just for users who are comment moderators
Developer tools & APIs
- Ctools - suite of modules that exist to support other modules
- includes AJAX library - ideas behind it are foundation for AJAX libraries in Drupal 7
- Wizard - multi-step forms
- Non-volatile Object Caching
- Dialog API - merges jQuery UI Dialog widget with Ctools AJAX - do simple form submissions through a dialog
- Features - bundle up all the views for admin interfaces, just like with the front-end stuff
WYSIWYG
- they’ve gotten better at outputting valid (if not entirely efficient) output
- WYSIWYG API is the way to go now; editor specific modules are deprecated
- input_formats - new module that allows you to export input formats as Features code (!!!)
- better_formats - module that attempts to improve the input format specifications of Drupal, default input formats per role (!!!)
- Insert - works in conjunction with imagefields and filefields - get an insert button next to each imagefield, throws it into the body of the node, works with all major Imagefields (!!!)
Random
- Check out http://www.sequelpro.com/ - MySQL management for Mac OS X
Posted in Drupal, DrupalCampNYC8 | No Comments »
Saturday, July 24th, 2010
Presented by Theresa Summa (theresaanna) and Seth Cohn (sethcohn)
- Looked at a non-Drupal site, cnn.com - cramming as much information on one page as possible - they throw as much on the page as possible to appeal to as many different people as possible
- observer.com - a Drupal site that does something very similar
- How do you standardize the display of each piece of content on your site (e.g. pictures in proper sizes, providing all essential data, formatting it)
- economist.com and globalpost.com - more content-rich sites built in Drupal
Imagefield
- let users upload images in a CCK node
- lets users upload multiple images, sort the list to select which is going to be featured on the front page, the others get inserted into the content appropriately and in a consistent way by Drupal
- bulk uploader available
Imagecache
- resizes/crops images on the fly according to your preset dimensions
- helps standardize image sizes across the site
- Imagecache is included in Drupal 7 core, hurrah!
- Imagecache presets stop large images from breaking your layout
Quicktabs
- allows you to combine multiple items into one Quicktabs block with tabs on the top
- Nice jQuery action to allow users to switch from one section to the next, loaded all at once, or via Ajax on the fly
- Plays nicely with Views, individual Nodes, and multiple Blocks
Views Slideshow
- the recommended solution (”best of the breed” according to Seth) for rotating carousel type things
Panels
- Provides a drag and drop interface for units of content on the site to be added, deleted, and arranged in a layout on the fly
- “is all sorts of insane magic”
- pros for Panels - great Views integration, user friendly for non-techie users
- Negative - spans between modules and theme layer, so it’s slower, performance hit on your site, takes a lot of liberties
- If you’re a themer, you might be able to do without panels
Composite Layout
- could be called Panels Light
- gives you the Panels approach but does it on a node by node basis - you can choose predesigned layouts on a node by node basis, e.g. a different layout for each individual blog entry, on the fly.
- Display Suite is another alternative
Vertical Tabs
- for the content adding and editing side of the site - much easier
- divide your node add/edit forms into sections with vertical tabs on the side, collapsed along with a summary of the collapsed settings.
- Makes large content types easier for content producers to maintain
- Drupal 7 includes this in core, Drupal 6 module mostly works well
Arrange Fields
- http://drupal.org/project/arrange_fields
- First commit was 5 weeks ago as of 7/24/10 so is early on, but lots of potential
- “This module lets you drag-and-drop the fields of any CCK content type, Webform, or almost any other form in Drupal into the positions you would like for editing. This makes it super simple to have forms with inline fields, which you can change at any point. Tab indexing is also updated, so no matter how you arrange the fields, the users can still tab through them easily. And, you can now add arbitrary bits of HTML markup– labels, images, HR’s, etc.”
CCK Fieldgroup Tabs
- separate CCK fields onto a completely separate tab to break down long node creation forms
Random Notes
- check out Nodequeue again for arbitrary lists of nodes, drag and drop
- you can feed Nodequeues through views
- Imagefield Insert module
- get good at Views theming - so much can be done!
- My question: what’s the best practices approach to fine-grain tuning of everything via node-whatever.tpl.php files vs doing as much as possible within the CSS. Answer: there are a lot of different philosophies; have to consider how custom and how specific this content type needs to be displayed. If it can be done through CSS fairly easily, go for it; there’s a performance hit to loading bunches of node-whatever.tpl.php vs using already loaded & cached CSS. Theresa says her philosophy is to keep the number of files down as much as possible.
- Omega theme (Theresa: “If Zen and 960gs had a baby, it would be Omega”
Posted in Drupal, DrupalCampNYC8, theming | No Comments »