Textile
August 30, 2004
After an hour or so of looking for a .Net Textile port, the best I could come up with was Justin’s attempt at a .Net port.
I kept looking for a specs document or some type pseudo-code or unit test cases to see if I wanted to tackle it myself. I think the definitive source for Textile is in the source code for Textpattern. The nice thing about that version is that it has been converted to a class with many methods. The obvious drawback is that converting Perl with a huge amount of RegEx is no trivial task. It would be a great project for SwoofWare to tackle and get it’s name associated with, but not sure I’m up to it.
About the only other option is to monitor SourceForge or PyTextile and hope for something in the near future.
Popularity: 4% [?]
Standards compliant TextBox
August 30, 2004
So I’ve got an idea for a project. It’s going to require a text box for entering and formatting text. Ideally in this day and age, you would want an option that produces standards compliant code. I know WordPress uses Textile and I really like it, but my project will be built in .Net and as such, I would like to support some Microsoft solutions for the textbox.
There seem to be two popular options: FreeTextBox and Active Up’s Html TextBox. Either of these would fit my needs perfectly. Except for one thing: When you switch to the HTML view in their samples, I’m immediately assaulted by the <font />. What gives? Don’t they know that the font tag has been deprecated and banished from all self-respecting sites?
Any other suggestions? Can Textile integrate into the MS .Net world?
Popularity: 4% [?]
Designer Wannabe
August 27, 2004
I’m not much a designer. In fact, I consider myself a developer, not a designer. I’m much better at seeing something that I like and incorporating elements into my own designs. The end result usually isn’t too far from the original. I try to give credit where it is due and try to convert as much as possible to make it my own. But in the end, it usually isn’t very hard to tell that I’ve been influenced. However, I’m renovating the design direction of my personal site and someone actually called me on it.
- Friend:
- wow — look at you go with your artsy weblog. who’d you copy that from?
- Matt:
- worked on it myself
- …
- Friend:
- even got the feet at the bottom — nice! c’mon, where’d you see it?
- Matt:
- for once, a design concept that I came up with myself.
- Friend:
- LIAR! It’s too slick. No way you came up with it
Popularity: 4% [?]
Free GMail account
August 26, 2004
Want a free GMail account? I have one more GMail invitation to give away. If you are interested in receiving a free GMail invitation and account, leave a comment with your name, email address and your weblog address. The only thing I ask is that you add an entry to your blog with a link back to this site. Just looking to increase my exposure a little. The first person to leave a comment gets the invite (and until you see a comment, assume that the offer is still valid).
Popularity: 8% [?]
AdSense
August 23, 2004
Coming soon: Google’s AdSense advertisements. I completed the registration last week and when I get a chance I will begin my experimentation with incorporating the ads within the site. I know I risk alienating part of my audience by becoming yet another Google-minion, but since I have no audience yet, I don’t think it will hurt.
Popularity: 6% [?]
Compiling NAnt for the first time
August 20, 2004
I’m trying to work down the path towards having a continuous integration framework for some of the projects that I am working on for my day job. I’ve done a little with NUnit/NUnitASP and NDoc, but I have just started playing around with NAnt. My first note is that in order to compile NAnt for the first time without .Net 1.0 installed, you should take a look at Tone Engel’s entry, NAnt 0.84 installation and initial test problems. This will at least get it to where it compiles and all the test cases pass. Now to figure out what the next step is…
Popularity: 4% [?]
Asking for help
August 19, 2004
Part of the reason that I wanted to start this site is to be a resource to help people out. Ideally I would make a posting or create some piece of software and somebody would read it or try to use it. If it didn’t quite meet their needs or I left out a little bit of information, then I would fully expect the person to ping me for more information or assistance. And I would have no problem helping that person, especially if it were documented on the site and provided future value to others. Of course, that is the ideal situation. Then there is the other extreme.
I wrote an article (http://www.4guysfromrolla.com/webtech/111899-1.shtml) several years ago for www.4guysfromrolla.com. About every six months or so, I get an email from someone wanting assistance. It usually isn’t a problem and I enjoy helping the person out. However, there seems to be an annoying trend where the person doesn’t even take the time get it as close as possible to what they need (i.e. a working prototype). They just send me the specs and say that they would appreciate any help I could give them. Like this person:
The basics are, I want to create a dynamic phone list with pictures, easily editable by an even more stupid user than myself.
I have created an Access database and can quite easily get the data out with one record per line, which is pretty rubbish, it really needs to be 3/4 column’s with the data sorted together per person in each cell sorted alphabetically left to right snaking accross the page then to the next row, etc etc.
Presentation such that there picture sits to the left of the column with name, extension number, email, floor, title sitting to the right of that picture. then the next person will sit in the column to the right of that in the same format…
Granted, everyone has to start somewhere and not everyone just instantly knows how to code in whatever language or environment they have chosen or been tasked with. But there are some pretty basic steps to take to get assistance from me or others.
- Research/search before asking/posting
- In this case, I believe the person asking the question actually did his research. There aren’t many articles about formatting lists into newspaper columns/left-to-right, top-to-bottom display. Rather than blindly posting to the 4Guys forums, he used some search engine and ran across my article. Kudos to him.
- Make sure your questions are relevant to the forum category/author’s area of expertise
- This is a toss up. They knew I had experience with what they needed. However, it really seems like they wanted assistance with the whole project. Well, obviously I do have experience with creating pages that connect to a database and display the results but that isn’t what I was writing the article about. If you are having basic issues with connecting to a database and displaying/formatting records, there are plenty of other articles that go through process and other forums/authors willing to provide that level of hand-holding.
- Ask specific questions about specific issues you are encountering
- Specifications with a request for help don’t cut it. Tell me the exact line number or error message you are receiving (and you googled the error message, right?). I won’t spend 30 minutes helping you learn ASP, but I may spend 30 minutes helping you debug why every other cell is blank. But I probably wouldn’t do it without the next two items…
- Make a prototype of what you can achieve available
- OK, not everyone can post their intranet projects to the web, but you can take some steps to provide more details on what you have achieved. You could use dummy data. Or send some of the HTML source code if it is a formatting issue. Or send screen prints. If you can’t even get it that far then…
- Provide source code
- Send the exact block of code (or specify in my sample code) that your page is choking on. If I can’t see any issues with what you’ve sent, then I may ask for more. But without seeing your code and knowing exactly what you are doing, it’s hard to make even educated guesses about what may be wrong. And don’t worry, I won’t make fun of your coding practices. Mine aren’t all that great either. I may provide a little constructive criticism and suggestions for improvement, but I wouldn’t get too high and mighty. That would be too “pot calling the kettle black”. Although I have seem some pretty raggedy code that deserves some chastising.
- Provide motivation and incentive
- This one is interesting. We all like to be motivated. And the best form of motivation is to provide incentive. Call it ‘positive feedback’ if you will. As I mentioned, my one article generates about two out of the blue requests per year. No big deal, right? Not really, except for the fact that I am married with three kids. Work full-time on a day job and spend all of my spare, non-family time pursuing my own coding projects (and they move very slowly). The best incentive and motivation story I have is that a person sent me an email asking for help. They had a prototype and could tell me exactly what they were stuck on. At the time, I was also working part-time for someone and replied back to the person that it would probably be several days before I could free up to look at his issue since I had other priorities. Within an hour, I got an email from PayPal that the person had just sent me $20. His note said that my article really helped him save a lot of time from reinventing the wheel and that he just wanted to send a token of appreciation. No strings attached. Of course, after a gesture like that, I couldn’t just leave him hanging. So I worked it into my schedule and got some code back to him later that night. Why? Because I was grateful that someone had taken the time, effort, energy and their own resources to say Thanks. Now, do I expect all requests to come with $20. Nope. But every little bit helps bump it up in the priority list. I’d love to work for free helping others out, but if I were to do that, I’d want quit coding and help the elderly and handicapped - people who really need assistance. Does it always have to be monetary? Nope, how about a blog entry about my little bit of code. That works for me.
- Wave me off as soon as possible if you come up with a solution or no longer need assistance
- This one is frustrating. I helped the first few people who had requests because I had the bandwidth back then. Then I ran into a few people that asked for assistance and then I took the time to help them. When I replied back with their solution, they said that they either no longer needed the solution or had solved it themselves. Sure would have been nice to get a quick email cancelling the request for assistance. Those couple of incidences kind of burned me out from jumping up and helping people without doing a little back and forth with them first.
- Summarize for others
- This doesn’t apply too much to this site, but if you are requesting assistance on a forum and you get your answer elsewhere, kindly follow-up your original post with either a summary of the solution or a link to where you cross-posted your request. This helps everyone.
- Thank your sources
- Nothing like sending off a response to someone’s request and never hearing back from said person. A quick “Thanks” isn’t asking too much, is it?
Popularity: 4% [?]
How to be a WordPress WIMP
August 7, 2004
I’ve pretty much been a Microsoft person for my entire career and have only rarely crossed the threshhold into the Anything But Microsoft (ABM) camp. I’ve used Blogger (an online blog tool) and .Text (a .Net blog application) and was left wanting more control and a refined user experience.
Unfortunately, it appeared that the cream of the crop in web log apps ran on the LAMP platform (Linux + Apache + MySQL + Perl/PHP/Python). Since all of my experience and my site is with WISA (Windows + IIS + SQL Server + ASP.Net), I thought I was out of luck. However, a little bit more research showed that you can put together all sorts of viable combinations of acronyms. In my case, I wanted to be a WIMP (Windows + IIS + MySQL + Perl/PHP/Python).
Someday I want to learn more about Linux and Apache (and I may with Knoppix) but for now, I need to stick with Windows and IIS. So, specifically for WordPress, I needed to get MySQL and PHP installed and running on my server. This is my attempt to document this process since a lot of the given documentation doesn’t directly address being a total newbie to the WIMP platform. NOTE: The documentation that comes with and is available online for MySQL and PHP is very thorough and very good. However, it is a bit generic and can get a little confusing when all you want to do is install it and go.
Specifically, the directions in this post is directed at the following versions:
- Windows Server 2003
- IIS 6.0
- MySQL 4.0.2d
- PHP 4.3.8
Windows Server 2003 and IIS 6.0
This post assumesthat you have Windows Server 2003 and IIS 6.0 running on your machine. You will need to find some other source of instructions for configuring them if you don’t know how.
Installing and configuring MySQL database server
I’m really just pulling out the highlights from section 2.2.1 Installing MySQL on Windows but with a specific focus on the quickest path to getting it up and running.
- Go to MySQL Downloads and download MySQL 4.0 database server. Select the Windows (x86) download that comes with the installer. Save the downloads to a directory on the machine you are installing on. I wanted to keep all of my non-microsoft apps in one location, so I created a c:\ABM folder (ABM = Anything But Microsoft) and saved the file there.
- Install the MySQL database server and Administrator client. I installed to C:\ABM\MySQL.
- Once installed, create a file called my.ini and save it to C:\WINDOWS. Open this file in your favorite text editor and add the following:
Save and close the file.
- To verify that MySQL is installed correctly, open a command prompt window and run the following:
You should then see something along the lines of:
- To close the running instance of MySQL, open another command prompt window and type:
- To get MySQL running as a Windows service, type the following:
See 2.2.1.4 Selecting a Windows server for more information on which version to run. Note: You might think that you could change to the C:\ABM\MySQL\bin directory and run all of your commands successfully from there. In theory, you should be able to do that. However, I ran across an issue where I couldn’t get the service to run/install until I actually ran it with the complete path.
- Go to the Services control panel and start the MySQL service.
Installing and configuring MySQL Administrator
- Go to MySQL Downloads and download the MySQL Administrator graphical client. Select the Windows (x86) download that comes with the installer. Save the download to the same directory that you saved the MySQL database server installer to.
- Install the MySQL database server and Administrator client. I installed to C:\ABM\MySQL\GUITools\MySQL Administrator.
- Run MySQL Administrator.
- You will need to add a new Connection in order to connect to your database. Use the following settings:
- Connection: localhost
- Username: root
- Password: leave this blank, we haven’t changed the default password yet.
- Hostname: localhost
- Apply changes
- Once you are in MySQL Administrator, click on the User Administration icon.
- Click on the ‘root’ User Account below and change the password.
- Click on the ” (the guest/anonymous) User Account below and change the password.
- You will need to add a new database for your WordPress installation. Click on Catalogs. Right-click in the Schemata section, and select Create new Schema and give it a name (wordpress is good).
- You then need to create a new user to access this database. Click on User Administration. Right-click in the Users Accounts section and select Add new User. Enter a name in MySQL User field and enter the passwords. Click on Apply Changes
- Right-click on the user you just created and select Add Host from which the User can connect. Enter localhost.
- Click on the Schema Privileges tab for that user.
- You need to assign the correct privileges to your new user to be able to work with your new database. Be sure that the localhost node under your new user is selected. Then under the Schemata column, select your WordPress database. Then click the << button to assign all privileges to your new user when connecting through localhost.
- Optionally, you can also click on the top node of the user and assign the same privileges for logging in locally to MySQL administrator with that account but most likely you will be logging in with the root account anyway.
- Apply Changes
- You can close the MySQL Administrator. Don’t forget that when you come back, you will need to change the password on the initial connection you created.
Installing and configuring PHP
- Go to PHP Downloads and download the PHP 4.3.8 zip package under PHP 4.3.8 Windows Binaries. We don’t want PHP 5 because WordPress 1.2 apparently has some issue running on that version. In addition, we don’t want the Installer version because it doesn’t come with all the extensions that we may want.
- Extract the zip file to C:ABM. This should create a C:\ABM\php-4.3.8-Win32 directory structure which can be renamed to C:\ABM\PHP
- In C:\ABM\PHP, copy the php4ts.dll file to C:\WINDOWS
- In C:\ABM\PHP, rename the php.ini-recommended file to php.ini and copy it to C:\WINDOWS directory.
- Create a file called test.php and add the following line of code:
- To test if PHP is working correctly open a command prompt window and run:
You should see a lot of HTML text rendered to the command prompt window.
Configuring IIS for PHP
- Open the IIS Management Console
- Right-click on the Web Sites folder and choose Properties
- On the Home Directory tab, click the Configuration… button
- On the Mappings tab, click the Add… button
- On the Add/Edit Application Extension Mapping form, the Executable path should be C:\ABM\PHP\sapi\php4isapi.dll and the Extension should be .php
- Click OK to add the mapping and OK again to close the Application Configuration window.
- On the Documents tab, you will need to add index.php
- For best results, restart IIS.
Installing and configuring WordPress
- If you have made it this far, then we are doing pretty good. Go to WordPress > Downloads and download the latest release.
- Now the 5 Minute Installation directions should work.
Popularity: 49% [?]
Spam Filter
August 5, 2004
I’m starting a new category (Recommended) for services, applications, utilities, etc. that I would recommend without hesitation.
The first entry is for SpamStopsHere hosted anti-spam service. I’ve been using their service since December 2003 and I love it. I can’t recommend these guys high enough.
With the initial, default settings, SpamStopsHere will “out of the box” block 99% of all spam for most customers. We believe it is actually very close now to 99.5%. (I.e. we block 199 out of 200 spams.) If the Realtime Blacklists (RBLs) and Country Filtering are disabled, our service will still block 98% of spam; in this mode the false-positive rate will be less than 1 in 100,000 (i.e. 99.999% of legitimate email will pass).
I’ve had the same personal email address since mid 1998. Early on I was not that careful about using it to sign up for sites or post online. By 2003, I was getting 40-50 spam messages a day - not as many as some people, but more than I wanted to deal with. I needed a solution and looked at all of the available options. Most of the options involved Outlook plug-ins or extensions. I didn’t want to be burdened with constantly updating my local filters and that did nothing for me when I went out of town and checked email remotely. There were several services that would login to your email box and filter out the spam. These didn’t appeal to me either - seemed a little unreliable and not as clean as I wanted. I knew what I wanted: A service to pass my email through before it got to my mailbox or Outlook. I knew that those services existed at the ISP level (Brightmail and postini) but these are expensive services not meant for small domains. After a lot of digging, I finally ran across SpamStopsHere as a viable option for filtering family/small business domains.
SpamStopsHere is a server-based mail filtering application. No more do you have to manage and tweak and update some Outlook plug-in to keep spam out of your inbox. These guys take care of all that for you and are continuously updating their filters to catch the latest tricks. The other benefit is that it manages the spam filtering for the entire domain. I am providing filtering for the 9 members of my family (under their family plan) that use an email address under my personal domain. While $99 may be hard to justify for just one email address, the fact that I can cover 10 people for that is palatable.
It isn’t for everyone though. Two requirements: you need to own the domain that you use for email and you need to ability/capability to be able to modify the MX records on your domain. The MX record is responsible for routing your email traffic to the appropriate mail server. So for SpamStopsHere, you change your MX records to route incoming email through their servers which then filter the emails based on their rules and any clean emails are then forwarded on to your email server.
One other great feature: they also provide an anti-virus upgrade. So, for an extra $25/year, I can have them scan my email for viruses as it passes through their service. I added this earlier this year when there were so many email viruses going around. Sure, I had Norton locally to catcht them, but it was still a pain to get a popup from Norton each time an infected message came through.
I was a little reluctant to sign up for the service initially because I couldn’t find any other information on them since their product/service was so new at the time. A little research turned up another product, VEDIT, that the same company has been working on for 20+ years. That convinced me that I was dealing with someone with experience and long-term plans.
Popularity: 8% [?]
Where to begin?
August 3, 2004
I decided to start this site to separate my personal site from my technical interests. I’ve been wanting to start blogging for a while but wasn’t sure how best to blog about personal and technical matters in a manner that wouldn’t put off one audience or the other. The best resolution was to create my own site geared towards all the little technical tidbits that are floating around in my head waiting for the appropriate outlet. With this site, I think I’ve finally found it.
I have several primary goals for this site:
First, I want a site that I can contribute back to the developer community and have my name attached to it. I am primarily a lurker and a user when it comes to technical resources, I use it for what I need and then I move on. There have been numerous times when I’ve wanted to contribute back to a site, reply to a post, or contribute to comments, and I have, but I’ve longed for a place to call my own. Someplace where I can provide detailed (or not so detailed) comments on a particular obstacle or solution (like this one) and have it be attributed back to me. With a name like Matt Smith, your comments tend to get lost in the crowd. I hope to eventually provide a brand that people recognize and when they see references to my site, they will know that it is an above-average resource for a variety of information.
My second primary goal for this site is to provide an outlet for the many projects that I start (and then abandon). I have so many little projects that I want to do and so many ideas for them all that I tend to get paralyzed and not work on any. In addition, it’s similar to two familar sayings: “If a tree falls in the forest, does it make a sound?” and “If you build it, they will come.” I say that it is similar because if I work on a little project but have no audience for it, then is it really worth the effort? But, if I have an audience (aka a little traffic and exposure on Google), then people may run across my little projects and decide that they have a use for my little widget.
Last, I want this to be a portfolio of sorts. Why? Well, to make money of course. I’ve successfully moonlighted in the past and that was a great for three+ years but that gig has dried up. I’m pretty busy on the family front so I am a little reluctant to actively pursue something that isn’t as flexible or that gets me in over my head. However, with a family with currently only one income stream, I’m always looking for ways to bring in a little extra. So, in the future you will probably see things like AdSense, DonationWare, begging for money, and resume pushing. However, I am going to make sure that whatever I do, you get the best deal.
It’s a long road and one that probably won’t go too far, too fast. But I needed to take the first step, and this is it. Wish me luck.
Popularity: 3% [?]