Goals and reasons

25 02 2008

I thought I’d iterate the goals I have for One Shore, since in two weeks I’ll be returning to the USA and entering another phase, possibly seeking employment.  I’ve done a lot of brainstorming and experimenting while here, but don’t have much complete to show for it.

Goals: 

  1. Finish one-shore.com site functionality
  2. Redo one-shore.com site with better graphic design
  3. Update resume
  4. Add content to tools wiki
  5. Finalize the QA Site product
  6. Launch cuencatravel.com site
  7. Meaningful contribution to Bugzilla
  8. Brush up with QA tools

Reasons:

  1. Finish one-shore.com site functionality
    • The One Shore site is my business.  It reflects on my ability to have an unfinished site. if If I am to succeed, I need to have a complete site, including all the content, payment processing, and no bugs.
    • Completing it (redoing with MVC) will give me hands on experience with the framework of my choice.  I’ll be able to try out some ideas I’ve been wanting to do but avoiding because I’ve been avoiding writing my own framework from scratch.
    • I need to be able to accept customers.  If contact is not working (it is, but I’d like to use Zend libraries instead of my old script from diamondwillowinn.com) or payments are not accepted, how can I do that.  Even more basic, if I don’t have proper descriptions of what I’m offering, how do they know if they want it.
    • Finally, it will be an example of my skills for potential clients or employers.
  2. Redo one-shore.com site with better graphic design
    • Again, it reflects on me.  While complex javascript trees and tricky CSS rounded corners are cool to implement, they’re practically invisible (and hacks to those who look.)  If I am to impress clients, I need a professional looking layout, consistent, and pleasing.
    • I want a presentation I can be proud of, so I’m not embarrassed if someone looks at my site
    • I spend too much time already fussing over graphic design, and it’s not my strongpoint.  I could easily slip back into spending days trying to come up with a logo, searching for images, or fussing with the colors and layout.  That’s time wasted for me, because it’s not my strong point.  If I have to take a contract to pay for it, I’d have been more productive.
  3. Update resume
    • I need to better present myself to employers.  My old resume is getting old, and I’d like to liven it up.
    • Putting my resume in a DB or generating from an XML file will allow me to make changes easier and show off skills.
    •  I need to have a resume that looks good not just to recruiters, but to real live clients.  It becomes a sales item, not just a contact mechanism.
  4. Add content to tools wiki and blog
    • First of all, I want the content there for myself.  I want to add to it, add my comments, have a reference for what I think about certain tools, how to install them, and if nothing else, where to download them.
    • Secondly, I think the wiki (and blog) are the best advertising I can do.   If someone finds my wiki because they want to know how to install MagickWand, or use RSS feeds with Bugzilla, or whatever, they might be interested in my services.
    • Finally, if it becomes useful, perhaps others would benefit, whether to edits on my wiki, they’re own comments and reviews of tools, or feedback on my blog.  And that is valuable to me, both the information, and the contacts I could make
  5. Finalize the QA Site product
    • I can’t sell something without an example.  While I’m using a whipped together site for Cuenca Travel, it’s by no means a finalized product.  Because I did all the design work and code myself, I didn’t have time to concentrate on the QA Site, though implementing Cuenca Travel was supposed to be the test of a QA site.  The dashboard is still static.
    • It takes too long to implement from scrach, and I need to know what works and what doesn’t.  I need to benchmark on different VPSes (VPSLand / Linode) and with different sizes.  I need to have a VMWare image for download.  Ideally, I’d like to get hired by a client to implement a QA site, that way I can get their feedback.  I’d even give them a month’s free work, just for the feedback.
  6. Launch cuencatravel.com site
    • I want the site to be able to generate content, have businesses and travelers be able to contribute.
    • It might give me valuable experience in handling advertising
    • It would be a display of my web design skills, and give me practical experience with CMSes.  I guess I will use Joomla, though it doesn’t really buy me much.  But if Leslie from CuencaGuide want to contribubute articles or share an events calendar, using Joomla might be the way to go.  It’s too bad about Patricio.  I was really hoping to find someone who would be reliable here so that I could build up the business in Cuenca and provide jobs.
    • Also, if I implement the directory, blogs, galleries, calendar, weather, etc. in Joomla, it will give me something to contribute back to that community and maybe lead to contacts and work there.  I don’t especially want to get into the business of building and maintaining websites, because my expertise is in enterprise QA, not web design.
  7. Meaningful contribution to Bugzilla
    • So far I’ve done a little here and there, but not really made any significant contributions.  I want to be able to say I work on Bugzilla and mean it.
    • The QA & Doc teams could use my help, and I’d like to give feedback to the UE team.
    • I want to be able to add my changes, both to web services, and to the front end.  I’d also like to see the DB abstraction done with CLASS::DBI for the bug (enhancement) I wrote based on the January meeting.
  8. Brush up with QA tools
    • First of all, if I take a job, I want to have the skills to do it.  Especially need to brush up on Mercury tools.
    • Second, I want to be able to better compare.  I’ve looked at just about every bug tracking tool, but I haven’t made any detailed analysis.  I need to look more in-depth at test management tools, and look to integrating different automation tools and build tools.  I’d like to experiment with additional SCM tools such as Aegis, Mercurial, and Git as well.
    • Third, the experience from comparing will help me decide what best to offer for QA Sites
    • Fourth, it will also help me when (not if) I take the plunge and start implementing my own tools.  I’m never completely happy, and I’ve got a psoriasis for QA tools.  My itch will probably never stop until I fully scratch it.  But I’m just worried that my full time job will become developing tools, and I won’t be able to have time for clients (or sailing — or further experiementation and products.)




Unit testing tools in the wiki

23 02 2008

I’ve been working with my new tools wiki for one-shore.com , Twiki; importing entries from dokuwiki, and adding new ones. Anyway, the summary for the unit testing tools entry got a bit long, and I thought I’d move it on here in case anyone wants to read it (like me, sometime in the future.)

Maybe I should offer some commentary on all tools categories in the wiki. I’d like to keep it factual, but I don’t know that many facts, and if it becomes an article or tutorial, it should be moved to the appropriate section of the website.

Of course, I’d love comments, reviews, and details on the wiki from whoever would like to add their insight/experience/rant about any development, testing, or PM tools.

Eventually I’d like to write an article with ideas from this blog post/wiki entry:

Unit Testing

Unit testing tools are code-based tests that exercise class or module level APIs, etc. Hence the term “unit” tests. 

Unit tests provide a way to test code in isolation, in a clearly defined, repeatable manner, and ideally provide techniques for easy execution, grouping, and reporting.

Many unit testing tools also seem to be roped in to doing double duty as code-level functional and integration tests, because they exercise APIs at the code level, are easy to run, and have handy reporting and grouping features. Some unit testing tools, such as [[TestNG]] and [[SimpleTest]] are also geared towards functional testing.
Because “Unit Testing” is sometimes used to mean “code-level testing”, functional testing tools that are designed to directly exercise the code of integrated units are included here. And because mocks and stubs are often necessary, mocking tools are also included.

While Unit tests are important, I find that functional and integration tests give more “bang for the buck”. Not only is mocking and stubbing often difficult and time consuming, it doesn’t always give a clear picture. Granted, isolation is sometimes a key way to focus on the unit under test, but I don’t think unit level code errors that common. Either through printf()’s, debuggers, loggers, or unit tests, developers tend to cover their interfaces at the basic level fairly well.

The real advantage of unit tests is that you don’t have to sort through log files or step though a debugger every time to want to test an object. Unit tests are repeatable, documented, and easy to run, so you end up running them more often (often with every build) — and that reusability is their key value, which pays off big in regression and refactoring.

The documentive aspect of unit tests is also a great boon, because you are actually exercising the APIs, and I can think of no better way to learn about some code. If unit tests are written as part of a use case story or design document, a la [[Fit]] / FitNesse. If tools like this were used more often, unit tests would become even more powerful, and help drive design.

The key is to separate your test suites into those that are designed to test integration and those that target the units themselves. That way you don’t spend too much time re-implementing functionality in your mocks, and when you do mock, it is to specifically test in isolation.

It’s okay to have a test suite fail if you know the functionality it is testing hasn’t been implemented yet. In fact, if you do test first development, every test you write should fail (at least) the first time you run it. The other technique emphasized in agile is to not write too many tests in advance, because “You might not need it”, or a quote approximately like that.

In my opinion, Unit Tests are a great way to extend the compiler, and execute build tests, especially being able to do type checking on dynamically typed languages, and checking algorithms.

List of unit testing tools:

[[JUnit]] (Java)

[[TestNG]] (Java)

[[EasyMock]] (Java)

[[NUnit]] (.NET)

[[PHPUnit]] (PHP)

[[SimpleTest]] (PHP)

[[Test::More]] (Perl)

[[Test::MockObject]] (Perl)

[[Test::Class]] (Perl)

[[Rake]] (Ruby on Rails)





Need to reign in blogs

16 02 2008

I need to reign in my blogs.  Today I posted what amounts to a review of SolarPHP on my fijiaaron blog.  So it turned into a rant.  And then it turned into a discussion about the idea framework.  I wrote 3000 words, and I wrote them on the wrong blog.  Come to think of it, probably general reviews of Products, thoughts on frameworks, development, etc. don’t belong in this blog either.  Or on the sister blog of this one I used to maintain on blogspot.

I’ve abandoned blogspot in favor of wordpress mostly because I like the theme I have for fijiaaron & cuencatravel.  Which is probably mostly because I like the photo of the Cuenca Cathedral.  I don’t like wordpress, and I don’t like blogspot either, but at least it has a bigger textarea to compose in.  And it seems to screw up less.

I should have my blogs tied to my websites, like blog.cuencatravel.com or blog.one-shore.com.  I originally created a wordpress install on one-shore and a blogger account pointing to somewhere on cuencatravel.  But those have been abandoned.  I use this for expediency and habit, and now I have a large amount of (mostly worthless) content here too.  I also suspect that I get a lot more readers than I would self hosted, which was one of the reasons for it as well.

Two reasons keep me here:

1. Inertia - it exists, I’m used to it, and all my content is here, which gives it context
2. Maintenance - wordpress does a better job of maintaining than I ever would

Two reasons to stay here are:

1. Exposure - it gives me more exposure (though we’re talking sub-dozen) and provides links to my site.
2.  Content - I already have my content here, and I like the theme and stats.

What I’d really like is one blog with better category management so my mom, potential employers/customers, or people looking for tools reviews can see what they want and not have to see what they don’t want.  That way, at the least, if I post in the wrong category, a simple edit can move it.  I know they have categories, but no filtering.

Maybe what I need is to just separate the personal, the business, and the tech musings into three blogs.  Which means creating one more.  And defeats keep reason 2 and stay reason 1.





CodeIgniter

5 02 2008

I’m back to my old addiction of reviewing MVC frameworks.  I think I actually like CodeIgniter.  I dismissed it earlier because I’d read reviews that it was quick and dirty or sloppy or whatever, but I think it actually has the best documentation I’ve seen, short of Rails — which may just mean it has the best design out there.  Yes, it is simple.  But that’s a good thing.

It seems to be URL centric, but that’s part of what I need.  Rails’ method of using URLs like /controller/method/params is actually one of the best things about it.  And CodeIgniter’s routes are much easier to understand.

Whoever said it’s not OO enough was silly.  Controllers are extendedable, and when you need to escape out of the CodeIgniter framework completely you can:

  1. create an “escape” controller that does nothing but break out
  2. make a rewrite rule to bypass the CodeIgniter index.php

Compared to the tangle that is Symfony or CakePHP, it’s a breath of fresh air, and gives me the excitement I originally had using Rails, but not the dreary “shoe doesn’t fit” of PHPonTrax or Akelos.

I may need to add some front controller junk for authorization, etc.

And it’s model is very primitive, but workable.  I’d like to be able to pass objects to views, but that would of course break templates, so it’s understandable.  For the first time, I may use templates in PHP.

Now, it’s ability to build a page out of components is fairly limited (basically to appending — better have a vertical layout or solely use CSS.)  This is the bane why people keep going to CMS systems like Joomla or Drupal.  For component layout.

It’s infuriating because permissions and layout of page components has nothing to do with content management.  And I don’t like content management systems because your design (and functionality) are not under version control.  They’re not even files.  They’re crammed into the database (for content & presentation) or framework (for functionality.)

Anyway, I’m excited about CodeIgniter, and don’t believe any of the bad things about it not being a “real” framework.  If you have real issues with it, I’d like to hear.  One thing I haven’t seen is AJAX integration, but I think I can extend the OUTPUT and Template to create my own AJAX widgets.





CuencaTravel.com

2 02 2008

CuencaTravel.com is a new site I’ll be working on with Patricio Pesantez from Aplitec.net.

He responded to the flyer I posted on a bulletin board the Cuenca Polytechnic University.  He’s a web developer with experience with PHP and Joomla, so we’ll be using those tools to develop Cuenca Travel.

One goal I hope to achieve with CuencaTravel.com is to test out a real collaborative effort and build a working qa-site as part of the development process.   So far, so good.

It will give me a chance to evaluate Joomla with MVC (I’m experimenting with Joomla & Symfony integration.)

I realize there is a lot of redundancy between this and other posts, but I need to organize myself better, or focus more.  Maybe only one blog would be better idea, but then I need blogging software with better categorization and access control.





DeskAway

30 01 2008

It has most of the right features, but the UI is a bit unresponsive (maybe just the free version and my internet), and there are some unnecessary steps, like creating a document.  The rich text edit is featureful but just doesn’t feel right.  My only solid complaint is “feel.”  I really wanted to like DeskAway, but I’m not going to use it.





Joint Contact

30 01 2008

Joint Contact is another application who’s (which’s?) developer left a comment on my blog and suggested I look at them. Joint Contact is a product developed by Arbutus Software Inc

I’d suspect the fear of a fairly incoherent and possibly inaccurate review on my blog would be a slight deterrent towards trying to convince me to me a customer. I guess for many companies, any press is good. Not that I could be considered “press” by any stretch of the imagination. Though I did get 21 viewers one day (”hi mom”.)

Joint contact seems nice and responsive, but my browser crashed on file upload.  Not Joint Contact’s fault, mozillas.  Firefox seems to croak on this more, but this time it was Seamonkey.  Looks like they’re backporting features.

Negatives:

Workspaces must be created before documents.
Navigation isn’t that intuitive.  Everything’s in small type on the right margin.  Probably learnable.  Until looking over there, I couldn’t even find tasks.

Anyway,  I’m burned out on reviews.





Wrike

30 01 2008

Wrike was recommended to me in a comment by Megan McAlpine. I guess she works for wrike.

Anyway, I signed up for the trial and spent an hour looking at it. It’s pretty interesting. It is document centric. Actually, it’s folder centric. A folder has a description, can have files uploaded, and have associated tasks. I was a little confused by all the sample folders, some of which seemed more like search results (such a “By Project”.) But the folders are completely customizable. But it’s a bit of a pain to delete all the existing folders. Especially with the lag over a network connection.

The tooltip helps would be more useful if you could see what you wanted, rather than a quick run through of all of them which is distracting and confusing.

The timeline is quite attractive and the ability to modify start and end dates in the timeline is very nice.

The best feature of wrike is the email integration. You can create a task just by sending an email to wrike@wrike.com. The task will be added to a folder if you include the [foldername] in the subject in square brackets. If a folder doesn’t exist, it is created.

I haven’t seen the email feature working, but it’s only been a few minutes since I sent it.

– After several minutes, the task shows up in wrike. It’d be nice if it were quicker, but the idea is that you email someone a task, and only CC wrike. I’d rather see it the other way, and have wrike handle the sending. This way does have the advantage of simplicity. After all, how would you specify notification recipients (other than CC’ing them) instead — or have “watchers” for all emails sent to a folder (or sent by someone), etc. I’d like to see a way that incorporates tracking email threads (responses.) More tags (a la wiki tags) that give more email functionality might be nice. Things that power users could use (such as changing assignment or status) but new users could do via web (with nice tooltips for how to do via email. Think like keyboard shortcuts.)

Reports are nice (really more like filters of tasks, etc.) But they don’t seem to work either.

– Eventually reports showed up too.  Since it doesn’t involve email (except the tasks that are emailed) I don’t understand the delay.

I like how tasks have needed metadata, including multiple statuses (Active, Complete, Deferred, Cancelled), detailed descriptions, attachments and revisions. Tasks also have simple time tracking.

Tasks can be included in folders, but the “folder” taxonomy seems a bit awkward. You have to think of a folder as a tasklist, but that metaphor doesn’t always apply. You can ignore it when you want, but having a marker object of “tasklist” or “action” or something created inside a folder (and showed by default on a folder-level dashboard) would be more intuitive to me. (Though to be honest, adding a tasklist is an extra step I don’t want to do. But for the price of having multiple (or no) task lists in a folder, I’d take it.

I’d rather have Folders, Tasks (and lists) be grouped by project. (And have other folders that are not project specific.) Tags would be a nice meta/multiple marker for things like tasks.

I’m uncertain if the free version allow multiple users and if how, they are added.

Altogether an interesting take, with a unique design and some interesting new features. If it had the ability to have more comlex descriptions (and comments) and managed email notification (outgoing) then I’d probably try it.





Integrating MVC and CMS frameworks

30 01 2008

The problem with most frameworks is that they’re all or nothing.  Some good ones, TurboGears and Symfony come to mind, take existing projects, which makes it easier to swap stuff out, but you’re still on your own.

Joomla seems to be going the route of adding it’s own MVC.  I’d heard earlier that they were going to rebuild on CakePHP.  This is going backwards, but going the other way, adding CMS to the framework is just as silly — like Zope.  I don’t want to use a framework if it tells me how to develop.  And I don’t want to create content in HTML unless I have to.  That’s what paying users get to do.

CMS is an application, and it should only be used to manage content.  Integration with authorization and the model is necessary to check permissions and generate from templates, but that’s it.  If a site user needs to edit their content in the site, then an edit button should forward them to the CMS app.  The site should not be run by the CMS app.





CuencaTravel.com

30 01 2008

I’m starting work on a new site with my new partner, Patricio, a web developer.  He has his own business and web site, aplitec.net, which shows he has some design talent.  He’s experienced with PHP and Joomla.

The site is called CuencaTravel.com.  It aims to be a resource connecting visitors to Cuenca with local people and businesses.  The type of stuff you’d want to find on a travel website.

  • A directory of businesses travelers might be interested in:
    hotels, restaurants, travel agents, tour operations, shops and artisans, etc.
  •  Reviews and comparisons of businesses, attractions, sights, etc.
  • A map of the city and the ability to find businesses, attractions, sights, etc.
  • Blogs, galleries, comments, etc. by travelers and locals
  • Articles and advice for travelers
  • News and local events
  • Advertising, specials, package deals
  • Hotel & tour reservations and bookings
  • A marketplace for local products from shops, artisans, etc.

I hope to use this project to refine my process ideas and test drive a qa site.  In essence, CuencaTravel.com will be the first qa-site user (apart from bootstrapping.) One Shore is still looking for others willing to try out QA Site and give feedback.  It’s free for 3 months, and maybe more, if you’re a good customer.  That includes a free VPS server and support.

Of course I want Cuenca Travel to succeed as well.