home · blog · groups · about us · contact us
DevelopmentNow Blog
 Friday, March 02, 2007
 
 

I updated Project Timer a bit. Projects are now grouped by day (each day has different projects), you can record notes for a project, and all your data is saved on your local machine.

Future ideas would be to let the user have a master project list, export data to Excel, and integrate with sites like SlimTimer.

 

March 2, 2007    Bookmark to Digg or other social bookmarking
#    Disclaimer  |  Comments [0]



 Thursday, March 01, 2007
 
 

If you want a better administrative panel on your GoDaddy VDS/VPS, and you have PHP5 installed, you can install WebMin. SSH into your box using PuTTY.

First we want to install Perl's Net::SSL library, which allows Webmin to run under SSL. But first we need the OpenSSL source code:

su - root

cd /usr/local
wget http://www.openssl.org/source/openssl-0.9.7f.tar.gz
tar xvfz openssl-0.9.7f.tar.gz
mv openssl-0.9.7f openssl

Next we install perl's Net::SSL library via RPM:

wget ftp://ftp.pbone.net/mirror/download.fedora.redhat.com/pub/fedora/linux/extras/4/i386/perl-Net-SSLeay-1.26-3.fc4.i386.rpm
rpm -i perl-Net-SSLeay-1.26-3.fc4.i386.rpm

Now test to make sure Net:SSLeay works. When you run the below command you should get no response. If you get an error then it's not installed correctly:

perl -e 'use Net::SSLeay'
Ok, now we can download and install WebMin:

wget http://prdownloads.sourceforge.net/webadmin/webmin-1.330-1.noarch.rpm
rpm -U webmin-1.330-1.noarch.rpm

Now you can log into webmin at https://yourserver:10000. Log in under the same account as your PuTTY account.

Note the above assumes you're installing version 1.330 :)

Hosting | OS | Tools
March 1, 2007    Bookmark to Digg or other social bookmarking
#    Disclaimer  |  Comments [0]



 
 

activeCollab is a free, open source competitor to Basecamp, a very popular online project collaboration tool. It's been getting good buzz & good steam, but I was bothered to read this on their blog a few days ago (edited):

There will be no 0.7.5 or any other major version in 0.x branch. Next major release is activeCollab 1.0 and it is scheduled for summer 2007. Code in 1.0 branch is not compatible with 0.x code so parallel development is not possible.

To keep the development process focused as possible there will be no public beta versions.

activeCollab 1.0 and future core development will be developed exclusively by company that [Ilija Studen, the activeCollab founder] started, and [the] community will be able to contribute by developing plugins, themes and translations.

Note that the above are exerpted from the full blog post. When asked about licensing, Ilija responded with

Can’t tell much about licensing, but we will most probably go with something used by profit oriented open source projects (MySQL, SugarCRM…) One thing is for sure – there will be a free and open source version that match current feature set so current users will not be let down when 1.0 gets launched.

Whole point of this transformation is to provide more value to users, not to drive them away. We are aware that some people will now like the idea of profit oriented open source project, but still being able to provide good support, dedicated development team and guaranty that we’ll be here next year is something that we find really important. Hope that most of the users agree with us on that.

So...hmm. To me it sounds like activeCollab is privatizing the project, disappearing for several months before the next release, and focusing more on profit. Not a good sign, really...I felt it had potential to move ahead, fueled by contributions from the community, but whether for money-seeking and/or project management reasons, that sounds like it's going to change. It might work out well, but I could also see the project disappearing for months while the community waits patiently for summer 2007. The community asks about progress, but since the source & beta are closed, no one can monitor progress. The deadline slips to fall 2007, then winter 2007, and ... well, could be bad.

Granted, I could be wrong .. I don't know Ilija or the team he's assembled, and 37 signals did very well with a small team & closed source when they built BaseCamp. Of course, one of activeCollab's strengths (IMO) is that it's not BaseCamp.

I wouldn't be surprised to see some of the activeCollab community forking off the source code on their own & keeping a separate open source version of activeCollab under a new name. It happens with wikis a lot, I know. :)

Edit: this thread in the activeCollab forums is worth reading if you want more background on Ilija's motivation. It seems like Ilija wants to work on activeCollab, wants it to remain free, and wants it to be a successful product that's still around 5 years from now. But, he wants to earn a living on it, and he feels like having a controlled (not open?) project with a small team (ideally in the same physical space) is the right way for him to achieve that. Not that there's anything wrong with his goals & opinions, but I think the activeCollab community was definitely (IMO) caught off guard.

March 1, 2007    Bookmark to Digg or other social bookmarking
#    Disclaimer  |  Comments [3]



 
 

Read/Write Web has a writeup on software for virtual teams. Stuff for project collaboration, VoIP, screen sharing, source code repositories, etc.

Also see my other tools roundup post, or the Tools category.

March 1, 2007    Bookmark to Digg or other social bookmarking
#    Disclaimer  |  Comments [0]



 Wednesday, February 28, 2007
 
 

One of my projects involves a complex financial database (stored in Access). I wanted to add a feature to the client EXE that allowed testers to FTP their current copy of the database to me so that I could try to reproduce problems without having to reenter all the data. I didn't see an FTP control handy in VS2003, and I didn't feel like messing around with Windows built-in FTP command line program, which doesn't support passive mode & is annoying to pass parameters to.

So I found NcFTP, a free command line FTP program that fit the bill. Specifically, it offers a dedicated "uploader" program called NcFTPPut. Now, the codebehind for my "Upload Database" button looks like this

Private Sub UploadDatabase()
  If MessageBox.Show("Upload current database for testing? You must be connected to the internet.", _
      "Confirm Upload", MessageBoxButtons.YesNo) = DialogResult.Yes Then

    ' make temporary copy of database
    Dim currentDB As String = AppConfig.GetDBFileName
    Dim tmpDBName As String = currentDB.Replace(".mdb", "-" & _
      System.DateTime.Now.ToString("M-d-yyyy-h-m") & ".mdb")

    System.IO.File.Copy(currentDB, tmpDBName, True)

    ' upload using NcFTPPut
    Dim exe As String = System.IO.Path.GetDirectoryName(Application.ExecutablePath) & _
      "\ncftpput.exe"
    Dim params As String = "-u MyFTPUserName -p FTPPassword ftp.developmentnow.com . """ & tmpDBName & """"
    Try
      Dim myProcess As Process = System.Diagnostics.Process.Start(exe, params)

      myProcess.WaitForExit()

    Catch ex As Exception
      MessageBox.Show(ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error)

    Finally
      ' delete temp copy
      System.IO.File.Delete(tmpDBName)
    End Try
  End If
End Sub

It's simple, but it works. Now whenever testers find problems with the program, they can just click the "Upload Database" button in my app to send me the data I need to reproduce the problem.

 

February 28, 2007    Bookmark to Digg or other social bookmarking
#    Disclaimer  |  Comments [0]



 
 

I threw together a small windows app to help track projects. You can download it here.

I guess it would be better as a web app, but anyhow...oh, and feedback is always appreciated.

Edit: just saw SlimTimer today, a web-based time tracker thingy. Looks like my little project timer might be off to an early grave. :)

February 28, 2007    Bookmark to Digg or other social bookmarking
#    Disclaimer  |  Comments [0]



 
 

Ok ok, you want to compress your ASPX files in IIS, but you don't want to do it for every site, and you want to exclude certain directories. You don't want to edit the metabase by hand, either.

No problem! Copy the below into a BAT file, run it from a command prompt, and voila! Note that you should edit the site number and directory numbers.

But before you run the below BAT, back up your metabase and make sure you know how to restore it! IIS Manager->Right-click server->Tasks -> Backup/Restore Configuration.

If you don't feel comfortable administering IIS or running the below batch file, don't! And even though I hate disclaimers, this script is provided AS-IS with no warranty in any way.

REM HTTP Compression Script
REM
REM Enables compression of static and dynamic files
REM Turns off compression for all sites except site #123
REM Also turns off compression for site #123's /SomeDirectory/Directory2 directory
REM
REM Copyright 2007 Ben Strackany
REM This script is provided AS-IS, no warranty implied or provided, Ben Strackany and 
REM DevelopmentNow are not responsible for any damage your site, server, or love life 
REM may incur as a result of running this batch file.
REM
REM BACK UP YOUR METABASE BEFORE RUNNING THIS SCRIPT!

REM compress static files
CSCRIPT.EXE C:\Inetpub\AdminScripts\ADSUTIL.VBS SET W3Svc/Filters/Compression/GZIP/HcFileExtensions "htm" "html" "js" "txt" 
CSCRIPT.EXE C:\Inetpub\AdminScripts\ADSUTIL.VBS SET W3Svc/Filters/Compression/DEFLATE/HcFileExtensions "htm" "html" "js" "txt"

REM compress dynamic files
CSCRIPT.EXE C:\Inetpub\AdminScripts\ADSUTIL.VBS SET W3Svc/Filters/Compression/DEFLATE/HcScriptFileExtensions "asp" "asmx" "aspx"
CSCRIPT.EXE C:\Inetpub\AdminScripts\ADSUTIL.VBS SET W3Svc/Filters/Compression/GZIP/HcScriptFileExtensions "asp" "asmx" "aspx"

REM set compression level
CSCRIPT.EXE C:\Inetpub\AdminScripts\ADSUTIL.VBS SET W3Svc/Filters/Compression/GZIP/HcDynamicCompressionLevel "9" 
CSCRIPT.EXE C:\Inetpub\AdminScripts\ADSUTIL.VBS SET W3Svc/Filters/Compression/DEFLATE/HcDynamicCompressionLevel "9"


REM turn off global compression
cscript.exe C:\Inetpub\AdminScripts\adsutil.vbs set w3svc/root/DoStaticCompression False 
cscript.exe C:\Inetpub\AdminScripts\adsutil.vbs set w3svc/root/DoDynamicCompression False 

REM turn on compression for a specific site
REM ****** EDIT THE NUMBER TO BE THE SITE # YOU WANT TO TURN COMPRESSION ON FOR ****
cscript.exe C:\Inetpub\AdminScripts\adsutil.vbs set w3svc/123/root/DoStaticCompression True 
cscript.exe C:\Inetpub\AdminScripts\adsutil.vbs set w3svc/123/root/DoDynamicCompression True

REM turn off compression for a given dir
REM note that the dir needs to exist in the metabase: in IIS, create the vdir, then optionally
REM open properties for it and click "Remove" next to the application
REM ****** EDIT THE NUMBER AND DIRECTORY TO BE THE SITE AND DIRECTORY YOU WANT TO TURN COMPRESSION OFF FOR ****
cscript.exe c:\inetpub\adminscripts\adsutil.vbs set w3svc/123/root/SomeDirectory/Directory2/DoStaticCompression false
cscript.exe c:\inetpub\adminscripts\adsutil.vbs set w3svc/123/root/SomeDirectory/Directory2/DoDynamicCompression false

REM restart IIS
iisreset.exe

 

The above is pretty self-explanatory. In the top half, we're setting which file types should be compressed, along with the compression level. In the bottom half, we're adjusting compression settings globally, for various sites, and for a specific directory.

The script is not only to use, but to help you understand how the HTTP Compression configuration works, so you can adjust it to suit. For example, you can include other extensions to compress (CFM, PHP), or turn on & off compression for other webs, directories, or files.

To test your settings, get yourself a copy of Fiddler and install it. Run Fiddler, and browse your site. In the left pane, click a request that you think should be compressed, then click the Session Inspector tab on the right and look in the HTTP Compression area. If your page is compressed, GZIP or DEFLATE Encoding will be selected.

fiddlergzip.png

Thanks go to posts from BlueDog, KB234497, and Scott Forsyth.

ASP.NET | OS
February 28, 2007    Bookmark to Digg or other social bookmarking
#    Disclaimer  |  Comments [2]



 Thursday, February 22, 2007
 
 

I've been doing some PHP development lately (yes, I know, you're probably wondering why I'm not doing Ruby on Rails) and I started to look around for a good PHP IDE. Zend Studio is supposedly awesome, but it's hundreds of dollars. I'll be trying out Eclipse (or TruStudio, which is built on Eclipse) soon, but I heard it's slow. We'll see.

Recently I came across PHP Designer recently & it doesn't seem too bad. It has built in help, context highlight, and (very important for me) statement completion/Intellisense/Code Assist/whatev. It's only a 14 day trial (not 30?), but currently it costs $54.

PHP Designer Screenie

February 22, 2007    Bookmark to Digg or other social bookmarking
#    Disclaimer  |  Comments [1]



 Wednesday, February 21, 2007
 
 

From the WURFL list, some good suggestions on ways to simulate mobile browsers & test mobile-aware web apps using Firefox plugins:

Tom Thurston suggests

...the firefox "user agent switcher" extension. Just add it, and create profiles for all the devices you wish to "emulate", i.e. use MOT-V3 and your platform will think that you are a motorola v3 hitting your site, and render xhtml-mp, and deliver the appropriate assets, even though you are on a web browser.

Alejandro Guerrieri says :

The "user agent switcher" for Firefox is a great tool. I usually combine it with 3 more plugins that can make your life happier and easier:

- "Modify Headers" ->
https://addons. mozilla.org/ firefox/967/

Allows you to modify _any_ header being sent by Firefox. It can replace "user agent switcher" since you can set the header "user-agent" also, but UAS it's quite more convenient for that (select the UA from a drop down menu). Anyway, if you want to set any other header (like some "accept" or maybe "x-msisdn") this is the tool to do it.

- "wmlbrowser" ->
https://addons. mozilla.org/ firefox/62/

Allows your Firefox to render WML pages, though some features doesn't work like a real device (most notably "on enter forward"). Anyway, really great
to test WML-Only pages or try WURFL with "retro" devices ;)

- "XHTML Mobile Profile" ->
https://addons. mozilla.org/ firefox/1345/

Adds support to mime-type "application/ vnd.wap.xhtml+ xml", not natively supportd by firefox, which only supports "application/ xhtml+xml" .

I usually develop with those four plugins. Sometimes I also use some SDK's from device manufacturers, but most of the time I use Firefox with that plugins enabled.

Thanks Tom and Alejandro!

February 21, 2007    Bookmark to Digg or other social bookmarking
#    Disclaimer  |  Comments [0]



 Saturday, February 17, 2007
 
 
Saw this list of GTD tools on Digg. Or maybe somewhere else. Anyhow, they look kinda cool, but I'm still going to install Outlook 2007 and see if that works as well.
February 17, 2007    Bookmark to Digg or other social bookmarking
#    Disclaimer  |  Comments [0]



 Friday, February 16, 2007
 
 

New version of FireBug is out (v1.0.1), if you use javascript and FireFox, get it! Release notes for 1.0.1:

  1. Support escaping the % sign in console.log() calls using %%
  2. Support "Find Next" in the CSS tab
  3. Fixed problem causing inconsistent breakpoint triggering
  4. Deleting a disabled CSS property will work properly
  5. Fixed bug that prevented editing of DOM properties with numeric values
  6. Inserted warning about incompatibility with Sothink SWF Catcher extension
  7. Fixed incompatibility with HTML Validator extension

And no, I'm not going to post a blog every time a minor rev of something comes out. Only sometimes. :)

Code | Tools
February 16, 2007    Bookmark to Digg or other social bookmarking
#    Disclaimer  |  Comments [0]



 
 
FYI, TinyMCE is a nice little editor that makes it super easy to turn a regular textbox into a WYSIWYG HTML editor.

You can play with a demo and see how to install it.

I haven't looked into how to extend it, but if you have a number of textboxes containing editable HTML, you owe it to yourself & your users to bolt something on like TinyMCE.

FWIW I've also worked extensively with FreeTextBox, and while it's nice, installation is a bit more involved, and progress on it seems to have slowed. Plus it's not totally free open source, and the HTML output isn't very XHTML (unless you buy the non-free version).

TinyMCE is cool because it's a literal bolt-on that you can include w/o touching your ASP/ASP.NET/PHP code if you don't want to.

To be fair, another really popular WYGIWYG editor is FCKeditor. I haven't used it, but I've heard it's the bees knees.

And lastly, there's a new potentially-hip WYSIWYM (What You See Is What You Mean) editor cll WYMEditor that I mentioned a while back. Their goal is to keep the outputted XHTML simple, since oftentimes users can paste or SHIFT-click their way to producing crappy HTML that "looks" good to the eye but is horrible (e.g. extra breaks, inline styles) for CMS systems.
Code | Tools | Web
February 16, 2007    Bookmark to Digg or other social bookmarking
#    Disclaimer  |  Comments [0]



 
 
I've been playing more with jQuery lately and enjoying it. It's small, quick, cross-browser, CSS-compliant, and won't conflict with any other javascript libraries (including ASP.NET AJAX). There are also a number of easy-to-use plugins that offer some nice almost-turnkey functionality w/ a few lines of javascript (e.g. tabs!).

There are other powerful javascript libraries, like prototype, script.aculo.us (which uses prototype), dojo, mootools, and a bunch of others.

It's tough keeping on top of everything in web development, since there are new tools and widgets all the time. Spend too much time checking out what's new and you never learn anything in depth or get anything built. Spend too little time learning what's new, and you miss out on huge timesavers and risk getting outmanuevered by speedy web 2.x competitors. So I try to maintain a balance, and drink a lot of coffee. :)
Code | Web
February 16, 2007    Bookmark to Digg or other social bookmarking
#    Disclaimer  |  Comments [0]



 Tuesday, February 13, 2007
 
 

One day, a friend asks you if you could help them make a simple web site. Your friend said it would be great if it could include things like a blog, photo gallery, maybe an online calendar. Maybe your friend's in a band and wants to have a mailing list and an online calendar. Or they're a budding artist and want a photo gallery to show off their work. Pretty understandable requests, and pretty common features (nowadays).

However, you have a dilemma. Your friend doesn't have a ton of cash, and you don't have a ton of time. While you could build all those features from scratch, that could take a while. You want to make sure that you don't undertake a project that could spiral from hours into days of work. But you don't want to send your friend packing, and there's got to be a lot of free or almost-free stuff out there that you can stick together, right?

Yep, there sure is. Here are some things that I found or used before:

  • Use Google Apps for Domains. It provides everything a basic site could need -- email, calendar, a page editor, and some attractive (albeit a bit generic) page templates allowing someone to build a site in a WYSIWYG way. I didn't see a way to upload a custom page template, but you can edit the HTML of the page "sections" in order to embed stuff like YouTube videos or whatever. I like WYSIWYG editors because it means that you can make your friend work on & enhance the site, instead of you having to make every tweak. Note that you can use Google Apps just for email and calendar -- you don't have to use it for web pages if you don't want to.
  • Use a cheap web host. The cheapest I've found is E-rice, but it's very no-frills. GoDaddy has basic plans for $3+/mo that include PHP, MySQL, email, and a number of ready-to-install apps (blogs, forums, CMSes, photo galleries, etc.) for Linux or Windows hosting plans (Linux has way more freebies). Dreamhost is a bit more expensive and also offers one-click installs for blogs, CMSes, wikis, photo galleries, etc. The free add-on apps available for GoDaddy and Dreamhost accounts are nice, because if you want to include those features later on, you don't have to mess with installation. If you're trying to decide between Linux and Windows, I'd suggest going with Linux/PHP plans, since there's a lot of free/open source PHP code out there that you could include in the site later. And PHP is fun. :) 
  • Use a blogging service like Blogger or Wordpress or Typepad. They offer lots of templates (althoguh you can make your own), you can have them on your own domain, they often offer embeddable widgets, and they're cheap or free. Great for a basic personal or family site. Plus, a blog-driven site means that your friend is in control of the content, which is a good thing. :)
  • If you don't want to use a pre-existing blog template, you can use open source web templates from oswd or OpenWebDesign. Some require attribution, but all are free. Andreas Viklund also linked to some open source templates here and here.
  • You can include free stock art from stock.xchng or flickr. For stock.xchng, all the stock art is free, although some photos require you get the author's permission and/or provide attribution. Note that stock.xchng often includes non-free samples from Stockxpert.com in the search results, so be careful where you click. For "free" stock art on flickr: 1) do a search, 2) click "advanced search", 3) check "only search within creative commons-licensed photos", and 4) re-perform the search. You'll see photos on flickr available under the Creative Commons license, which means you must try to obtain permission and provide attribution (e.g. a link somewhere on your site saying "city photos courtesy of Mike Smith"). There's also a "stock" group in flickr where you can find photos.
  • For photo galleries, you can include widgets & links from flickr. Photobucket has a nice photo album widget that makes it easy to add a photo album to your site. Or you could pay $40-60/year for a clicker, more integrated photo gallery from SmugMug. Or use any number of open source photo galleries (DreamHost & GoDaddy offer one-click installs if you have Linux hosting).
  • You can use Google Calendar to track and share online events (good for band, bar, etc web sites), and embed it into your site. If you're using Google Apps, embedding it is as easy and clicking the "add widget" link. Otherwise you have to go through a few more steps, but it's still easy. 30 boxes is another very nice online calendar, and they have a nice "Share" button in the upper left that makes embedding your calendar in your web site a snap (click "Add to Blog"). Nitpick to 30 boxes: maybe rename that link from "Add to Blog" to "Add to Blog / Web Site" ?
  • You can run a simple mailing list/discussion group using Google Groups or Yahoo Groups. Google Groups has added some neat new features lately.
  • You can find other easy-to-embed widgets (e.g. local weather, latest news, games, a clock(?) )for your web site at WidgetBox or Google Gadgets. Like this weather thingy:

So there's the high level bullet point deal. Now you can help your friends and neighbors put together some basic sites while minimizing the risk of it becoming an ongoing project.

Code | Web
February 13, 2007    Bookmark to Digg or other social bookmarking
#    Disclaimer  |  Comments [0]