You are here: Foswiki>Rob Web>BlogAddOnHome (20 Apr 2008, AdminUser)EditAttach

Blog AddOn

A simple weblog application.

See %TWIKIWEB%.BlogAddOn for an introduction and installation instructions.
This topic is meant for administrators and serves as introduction springboard to BlogAddOn topics. You may safely delete this topic.

Start from here

Reference for administrators

Note: Care must be taken when:

  • Renaming post topics: the comment topic needs to be renamed as well
    • The comment topic is created automatically when the first comment is submitted, using the syntax topic name + Comment.
  • Renaming categories: the comment topics are not updated automatically

Putting the blog post overview in a different topic

To put the overview in a topic, write:

%INCLUDE{"BlogPost"}%

You may set display defaults, for example for category and sort field, using additional parameters. Possible values are:

Parameter Possible values Default value
category Finished, Unfinished (categories can be defined in BlogCategory) none
sort formfield(Title), formfield(Category), formfield(Author), created, modified none
limit any number no limit
sortdirection ascending, descending ascending

For example, to show latest 10 posts, sorted latest post on top, write:

%INCLUDE{"BlogPost" sortdirection="descending" sort="created" limit="10"}%

This will generate:

Sort by:  Title   Category   Author   Date   Last modified

Limit to: 
Category:   Subscribe


CreatingAnInternetBusiness

25 Apr 2008 - 18:51 in Unfinished
 

Introduction

Yesterday, I was scheduled to give a talk on how to start an internet business to my Tech Entrepenuership class with Dr. Brian Lilly. 3 minutes into the presentation though, the projector turned off and the computer shut down.

A couple of people in the class expressed interest in my presentation though, so I thought I would write down my notes and my thoughts here and send them the link. If you're one of those people I hope you enjoy.

Caveat: I am by no means an expert in this area. I've never even started an internet business. Still, I have some experience in programming and IT issues, so I can help with some guiding advice.

By the end of this page, you should know all you really need to know in order to get started with your internet business.

Finding a programmer

Before you find a programmer, you first have to understand that programmers are expensive. To see an example of why, consider the following images:

S5-gs_exploded.jpg

The above image is an exploded schematic for an engine. Notice all the fiddly parts that are needed to keep the engine running and running well. If a single engineer could hold the entire system in his head at one time and understood how each part worked, they would be extremely sought after.

Now, look at this class diagram taken from http://thedailywtf.com, taken from a software system that helps manage customer billing:

stateModel.gif

When a programmer is working with a software system, they need to be able to keep all this information in their head at one time. The real enemy of software programmers is complexity. I often joke with friends that 50% of programming is being a textfile janitor-- you take complicated messes of text and clean them up.

Interesting facts about managing programmers

  • Good coders work 10 times faster than bad coders - (Steve McConnel?, Rapid Development) The programmer who costs twice as much may be 10 times as productive. This is why big software companies go out of their way to get the best programmers. Programmers are NOT interchangeable.
  • Over at codinghorror.com, I've seen references that the average programmer produces 20 lines of production code a day. While I don't think this number is particularly accurate, it's often quoted to show people that programming is slow. All the complexity of modern systems really gets in the way of doing your work. I'll sometimes spend days reading and thinking without writing a single line of code.
  • Software estimation is the hardest part of writing software. - By necessity, every software project requires that the programmer to solve a problem they nothing about and have never done before. If a programmer gives you an estimate for a software project of any size immediately after hearing your problem, they are either naive or lying.
  • Adding people to a late project makes it later - This is well documented by Fred Brook's infamous Mythical Man-Month. Basically, as you add people to a project, the communication overhead increases, which causes organizational chaos and slows things down.

If you want a programmer for your website, you want someone who:

  • Communicates well and often - Communication is the root of all problems in software engineering. Not only do you need someone who can explain things clearly, those who can explain things clearly often make the best coders. After all, the best programs express their instructions in such a way that both computers and humans can understand them.
  • Doesn't give immediate estimates - really, this shows sophistication. Planning a software project of any size is doomed to error. At the beginning of a software project, you really have no idea what you are getting yourself into. You can make general plans, but DO NOT set them in stone.
    • For example, let's say you wanted to build a bridge on Mars. Would you trust any one who gave you an estimate off the top of their head? Of course not! Our information is limited, getting there is a problem, and you really have no idea what kind of issues you're going to face along the way because it's never been done before.
  • Is enthusiastic - For a start-up, you need someone who will go out of their way to make the system good. Programmers do best when they are emotionally or intellectually invested in what they are making. This is one reason that Open Source software does so well-- each project self selects for the best coders for that project.
  • Is willing to disagree with you - DO NOT hire someone who rolls over and agrees to every feature request. Often times, the features you don't really care about will take 70% of the programming time. You need someone who will explain the ramifications of what you are requesting so you can make the proper business decisions.

That said, here is my recommendation for attracting a technical person to your cause:

  • Learn how to do it yourself - If you are an engineering student, you're bright enough to program. Also, when you're the only person in the business, it's impossible to mis-understand yourself. You don't need to be an expert to get started, and the fact that you're interested in the project means that you're one of the best candidates for the job.
  • Attract someone in exchange for joint ownership - Really, if you're considering starting an internet business, you probably won't go anywhere unless you have a technical person anyhow. Promising joint ownership does a couple of things for you:
    • In ensures that you'll get someone who is invested in the project
    • It assures that you'll get the best technical advice that person can give
    • It requires no money.
  • Hire a programmer for a small task, evaluate their performance, then start a relationship - If you do need to hire someone, don't commit a huge project to someone you don't know. If you have small self-contained projects that someone can work on, farm those out first to friends and places like RentACoder?.com. Once you find someone this way that communicates well, work up to a bigger contract. If you're going to do outsourcing, this is the way to start.

Getting a domain name

If you're starting a business, you don't need to know too much about how the domain name system works, but I recommend skimming the Wikipedia article quickly. Basically all you need to know is that there are companies called registrars who will add your domain into the lists, for a fee. This entry tells the world what computer they should go to in order to get your IP address.

I strongly recommend getting your domain name and hosting provider separately. If the hosting provider forgets to pay the domain name bill, you loose the name. It's that simple. You want to be responsible for those payments so this doesn't happen. Furthermore, most domain name/hosting provider options take advantage of people without too much technical knowledge. You can get better rate on domain names and hosting if you buy them separately. Rarely does a company specialize in both.

Facts:

  • an MX entry says "Send main addresses to this IP".
  • When you get a hosting provider, you'll have to tell the registrar to that you want to use their nameservers. The hosting provider will provide you with the necessary information.
  • The data you enter in on the domain registration form can be seen through a "whois" query, so be careful what email address you select.
  • Registrars can request any domain name they want for 5 days at no cost.

Tips:

  • DON'T use Network Solutions, they abuse their registrar status by automatically requesting any domain name you search for 5 days so you can't buy it from competitors.
  • If you loose your domain name, DON'T visit the site. If a site doesn't get hits, most registrar front runners will abandon it after their free 5 day trial period.

Reference: I used GoDaddy? (recommended by a friend). 2 years: $14.30 with http://retailmenot.com coupons. The interface looks ugly, but they have good rates and are ethical, unlike registrars like Verisign and Network Solutions.

Figure out your server requirements

After you have reserved a domain name, you'll have to buy some server space. Ideally, you would be able to host the entire site from your home cable connection, but most cable providers block port 80 (the web default) unless you upgrade to a business plan which is prohibitively expensive. If you're just getting started, you'd probably be better off renting space from a hosting provider.

Alternatively, you can set up your own hosting. This gives you far more control, but you'll end up spending much more money. Furthermore, you'll need all the server hardware and someone to maintain that server, along with a fast internet connection. If you want to start up on the cheap, I highly recommend going with a hosting provider instead. For $10/month you'll have technical people who will keep the server running and answer all your questions. Furthermore, by the time you outgrow a hosting provider your business will be so successful that you'll already have technical staff and the money for hardware.

Here are a few things to keep in mind when looking at hosting providers:

  • Storage - Don't worry about it. For a static webpage, 5 GB is more than enough. Extensive databases (needed for managing thousands of customer records) can take up some space, but you likely won't need to worry about this when you are starting out. However, if you are planning on hosting mp3 files or video files, you'll need to consider your storage requirements.
  • Bandwidth - plan for 3.5K/html page and 15K/image. Start small and make sure you can upgrade. Again, if you are hosting streaming video or audio, you might need to plan for higher bandwidth. Otherwise, you shouldn't run into problems with most default bandwidth packages unless your site is enormously popular. At that point, you should be established enough that you can afford and manage an upgrade.

References:

  • This site takes up about 100 MB of storage. It has my entire life history for the last 2 years and all of my fiance's photos for 2 years.
  • Because most web-sites never come close to their storage or bandwidth allotments, most hosting sites oversell their storage and bandwidth capacities. Make sure your site can deliver what they promise in case your business grows.
  • I use A2Hosting?.com, it was recommended to me by a friend. I've heard good and bad things about dreamhost.com.
    • A2Hosting? allows me to login to the machine like it was a local computer (they give shell access).
    • I pay $8 month for 500GB storage, 500GB bandwidth. I've never come near my limits.

Making backups

Most people know they should back up their computers, but hardly anyone I know does. For your personal computer, this is ill-advised but OK. In the worst case, you will loose your personal data. By spending exorbitant amounts of money you can recover data that you can't live without.

For an internet business however, backups are absolutely mandatory. Backups can mean the difference between success and going out of business. Without backups, you can't recover from disasters quickly. Without backups, you run the risk of loosing customer records. Without backups, one glitch from you or the hosting company can permanently destroy everything you've built. Not backing up your internet business amounts to pure negligence, and if you don't do it you deserve to go out of business.

Treat backups like business insurance-- for a low upfront cost, you can save yourself from the worst catastrophes.

Recommendations and tips:

For small sites, I recommend Amazon S3. This is a pay-as-you-go storage service, and it's prices are ridiculously cheap for a small website. Figuring out how much it will cost you can be challenging because they charge you for uploading, downloading, and storage per month. However, if you run nightly backups, you're looking at a cost of about $0.80/GB/month. That's right, I pay less than 25 cents per month to back up this entire site. Furthermore, Amazon S3 is massively redundant. Your data will be mirrored on computers in data centers and bunkers across the united states. For small sites, it is absolutely the best option available.

I have another page on SettingUpNightlyBackupsWithAmazonS3 , if you want a full walk-through of my solution.

For larger sites with lots of media, and for your personal computers, I recommend backing up your data onto external drives. Specifically, I highly recommend the Thermaltake Blacx for backing up your data.

blacx.gif

This wonderful device allows you to plug in a hard drive like a video game cartridge and connects it to your computer through USB. No special software is required. The Blacx will set you back about $40, and a 750 GB SATA hard drive currently costs about $200, with prices dropping all the time. When you fill up that hard drive, you can buy another and swap them out. The Blacx effectively turns hard drives into 1 TB diskettes you can buy anywhere.

Collecting market research

Server logs tell you
  • Where people are coming from
  • What links they are clicking
  • Country and State

Recommendations

  • Google analytics: free
  • Piwik: free

Getting paid: ads

Auto-generated context ads: Google AdSense?
  • No payments until $100 reached
  • Can’t host other ads
  • Infraction=banned for life
  • Best case scenario: $500/mo

Affiliate programs

  • Varies per site.

Offer advertising directly…

Getting paid: credit cards

Using services
  • Charge flat fee + % of sale
  • Paypal, Yahoo, Google Checkout all less than 2% of sale.

Making your own: Not worth it initially…

  • Secure SSL cert: $100/yr
  • Credit card software: $200
  • Need merchant account through bank
  • VISA: $30-$60/mo

Advertising

Search Engine Optimization
  • 40%-60% of people only click on the first page of results
  • Can be seedy
  • Link to good sites,
  • submit your site to social websites (del.ico.us, Digg, …)

Advertising on the Internet

  • Google AdWords?
  • Affiliate programs

Summary

Advantages

  • extremely low capital expenses
  • modest time investment
  • no distribution problems
Disadvantages
  • labor can be expensive
  • can't live off advertising alone.

Minimum steps needed to start an electronic business

  • Get a domain name
  • Figure out your server requirements
  • Set up backups
  • Develop the website
  • Prepare analysis tools
  • Get Paid:
    • Set up ads
    • Set up payments
  • Advertise your site
    • SEO and google rank
    • Impact from ads
    • word of mouth

Get a Domain name Figure out your server requirements Set up backups


How we moved from Illinois to Baltimore: lessons learned.

23 May 2008 - 22:42 in Unfinished
  • get started early
  • Go to salvation army instead of goodwill
  • give away big items on freecycle
  • getting moving boxes
    • UIUC printing services, mail room
    • Walmart
    • neighbors
  • Price breakdown for a truck versus pods versus moving companies
  • mover's wrap

SettingUpNightlyBackupsWithAmazonS3

23 May 2008 - 04:07 in Unfinished
This page is all about how to set up nightly backups to Amazon S3 in five minutes. By the end of this document, you should have everything you need in order to get started.

Why Amazon S3

People are always shocked and amazed when I tell them how cheap and easy it is to back things up to Amazon S3. This website contains about 250 MB worth of data, and my monthly Amazon S3 bill for a nightly rsync backup is about $0.20/month.

How to backup

I'll put more here later. For now, look at the attached file. I've written up howtos in the zip package.


SnowplainPodcastProject

15 Jul 2008 - 02:33 in Unfinished
 

Introduction

Nathan is a good friend of mine. By day he works as a civil engineer for a Lubbock Texas planning and zoning office, but by night he's a fantasy fiction writer, and a damn good one too. He already has 10 fiction novels under his belt, one of which is a 7 book series about reincarnated mythical warriors. I don't know all the details, but I do know that he's been trying to get his books published for years now, and he's even mailed a few copies to people.

The other day, I was listening to a novel on Podiobooks, and I realized that Nathan's stories were better than the book I was listening to. These were heavy hitters in the Podiobook world, people who already had earned book deals from their podcasts. At that moment, a thought occurred to me: Why not make a podcast for Nathan? He's got the material, and I've got the technical know-how. With a bit of work, we could post his series on Podiobooks and see if he develops a following.

Project Proposal

For this project, I will
  • Create all the scripts necessary to post-process MP3s Nathan sends me in order to publish to Podiobooks
    • I need to add images,
    • descriptions,
    • proper Genre tags, etc.
  • I will create an easily updated valid RSS feed that people can use to download the podcast.
  • I will estimate the bandwidth needed to support a mirrored copy of the podcast here.
  • I will figure out everything I need to figure out in order to submit the podcast to the iTunes Store.
  • I will make Nathan a barebones web-page before releasing anything.

Build Notes


CiteULikeExtensionProject

15 Jul 2008 - 01:25 in Finished
 

Introduction

CiteULike is a wonderful service that helps researchers manage their bibliographies and keep track of what they are reading. The idea is similar to social bookmarking sites like Delicious or Reddit, except that it's for papers instead of web pages. Once you find an article that you are interested in reading, you can post that article to your CiteULike? library, tag the article with descriptive tags, and even upload your own personal PDF so you can read the article when you're not surfing from a university IP. In addition to all this, the real hook is that CiteULike? will extract all the bibliographic information about an article at the click of a button, provided that you can find the article in some fairly well known database. Between me and my closest friends, this is the real reason that we use CiteULike?. I hate crawling through articles later, trying to find a reference to something that I know I read 6 months ago in order to complete a bibliography. I've gotten to the point that I sometimes refuse to read a paper that I haven't entered into my CiteULike? database.

CiteULike? can extract the bibliography information from many websites, but not all of them. Currently, CiteULike? can't extract the bibliographic info from the following computer science websites:

  • CiteSeerX?
  • IEEE computer society digital library (CSDL)

This really frustrates me-- often times I'll find an extremely interesting article on one of these sites, but I'm afraid to make the commitment because I'm too lazy to extract the bibliographic information by hand and too scared to gleam anyone else's idea without being about to cite it later.

Project proposal

For this weekly project, I am going to write as many bibliographic extractors as I can for CiteULike?. CiteULike? has tutorials and example code detailing how to write such an extractor. Learning the system should be as simple as

  • learn how a major portal's HTML is laid out
  • write regular expressions to extract the relevant info
  • figure how to feed that information into CiteULike?'s servers.

Build notes

I spent a good 8 hours this weekend finishing up this project. It took way longer than I anticipated, but that's my fault and not the plug-in creator's fault. The plugin documentation was wonderful for this project, but there is a lot of it to read. Hopefully, you can use this page in order to build a plugin with minimal fuss.

First check out the source code from the subversion repository ( svn co http://svn.citeulike.org/svn/ citeulike ). Also, pull up the documentation, because you'll be needing it later. This documentation is very comprehensive, but you don't need to read all of it at first. Give it a scan for 10 minutes and move on to implementing the plugin.

I won't regurgitate the excellent documentation, but basically every plugin is made from a descr/plugin.tcl file and a perl/plugin.pl file ( or a python/plugin.py ) file. The two commands you'll need to know are

./driver.tcl parse URL
  Asks each plugin in turn if it is interested in the URL, you'll use this to test your plugin.
./driver.tcl test plugin
  Runs the unit tests for the plugin.  You'll run this when you are finished.

Here's my quick start guide if anyone wants to quickly make a CiteULike? plugin:

  • Copy one of the .cul files in descr, change the obvious fields in your copy
  • Make a dummy program that returns "status\terr" no matter what. Check it by running it from the command line.
  • Using this status program, adjust the regex in the .cul file so that driver.tcl parse http://url is catching all the URLs you want.
  • Change the dummy program so that it reads in one line from standard in, parse the URL entered on that line so that it gets all the unique bits needed to identify the article. Run the program manually and have it print out the unique identifiers.
  • Make your dummy plugin return
    begin_tsv
    linkout URL_UIDS
    end_tsv
    
    You can copy from another plugin or read the format for linkouts. You'll probably only need $ckey_1. Remember to use tabs instead of spaces.
  • Change the format_linkout line in the .cul file. See if running driver.tcl.parse formats the output link correctly.
  • Copy from another plugin to download the desired webpage
  • Change the plugin so it outputs "status ok" before exiting.
  • See if the database allows bibtex downloads. If so, download the bibtex and use begin_bibtex before begin_tsv. Read the HOWTO.txt for more. Test when done with driver.tcl to see if it properly parsed the bibtex.
  • Figure out regexps you can use to extract the rest of the information you couldn't get through bibtex. Run the code each time and check that you're getting good results. Test both by running your plugin manually and through driver.tcl parse.
  • take the output from driver.tcl for a couple of URLs and reformat it so it can go into the test section of your plugin. Look at other tests for examples.

Conclusion

This build took my way longer than expected, but now that I have the process down I'm fairly sure I could knock out another plugin in a matter of hours. The hardest part of implementing this project was knowing where to go if something went wrong. I started by reading the documentation, which in retrospect was a mistake-- I learned much more by copy and pasting another person's plugin and decimating it to serve my purposes.

My biggest stalls where when I ran out of ideas on how to fix my current problem. Hopefully by posting my build process, I'll make it easier for the next person who comes along.

I contributed CiteSeerX? and CSDL to the repository, and they went live on 2008-07-14. The CiteSeerX? plugin as I wrote it will only work on journal papers and conference proceedings. This is because CiteSeerX? doesn't use Bibtex of RIS or another standard format, but instead has reinvented it's own. I need to find a book chapter on CiteSeerX? in order to properly parse book chapters, so if you find one let me know.

The CSDL plugin should work on basically anything, but it might have problems parsing unicode characters in names. CSDL currently encodes the bibtex in a javascript string. I need to use a perl parser to un HTML-ify the string in order to really make it bulletproof, but I was too lazy to look up the documentation.


Topic revision: r2 - 20 Apr 2008 - 05:57:07 - AdminUser
 

This site is powered by FoswikiCopyright © by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding Foswiki? Send feedback